diff --git a/man/waybar-clock.5.scd b/man/waybar-clock.5.scd
index 1b13dcb7..020cb94e 100644
--- a/man/waybar-clock.5.scd
+++ b/man/waybar-clock.5.scd
@@ -138,6 +138,11 @@ View all valid format options in *strftime(3)* or have a look https://en.cpprefe
:[ When enabled, the calendar follows the ISO 8601 standard: weeks begin on
Monday, and the first week of the year is numbered 1. The default week format is
'{:%V}'.
+|[ *first-day-of-week*
+:[ integer
+:[
+:[ The first day of the week, where 0 is Sunday and 6 is Saturday.
+ When not set, the first day of the week is determined by the locale settings.
3. Addressed by *clock: calendar: format*
[- *Option*
@@ -207,11 +212,12 @@ View all valid format options in *strftime(3)* or have a look https://en.cpprefe
"format-alt": "{:%A, %B %d, %Y (%R)} ",
"tooltip-format": "{calendar}",
"calendar": {
- "mode" : "year",
- "mode-mon-col" : 3,
- "weeks-pos" : "right",
- "on-scroll" : 1,
- "on-click-right": "mode",
+ "mode" : "year",
+ "mode-mon-col" : 3,
+ "weeks-pos" : "right",
+ "first-day-of-week": 1,
+ "on-scroll" : 1,
+ "on-click-right" : "mode",
"format": {
"months": "{}",
"days": "{}",
diff --git a/src/modules/clock.cpp b/src/modules/clock.cpp
index 97777667..cd800bd7 100644
--- a/src/modules/clock.cpp
+++ b/src/modules/clock.cpp
@@ -514,6 +514,18 @@ using deleting_unique_ptr = std::unique_ptr>;
// Computations done similarly to Linux cal utility.
auto waybar::modules::Clock::first_day_of_week() -> weekday {
+ const auto firstdow = config_[kCldPlaceholder]["first-day-of-week"];
+ if (firstdow.isInt()) {
+ const int firstDay = firstdow.asInt();
+ if (!(firstDay >= 0 && firstDay <= 6)) {
+ spdlog::warn(
+ "Clock calender configuration first-day-of-week = {0} must be in range [0, 6]. Default "
+ "value is used instead",
+ firstDay);
+ } else {
+ return weekday{static_cast(firstDay)};
+ }
+ }
if (iso8601Calendar_) {
return Monday;
}