Skip to content

Commit a9763b4

Browse files
committedApr 9, 2024
Add empty desktop string options
Also reordered and reworded some options, changed some default colors.
1 parent c744d09 commit a9763b4

File tree

4 files changed

+75
-60
lines changed

4 files changed

+75
-60
lines changed
 

‎README.md

+42-32
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,35 @@ All options are detailed here:
6060
<td align="center">number (int)</td>
6161
</tr>
6262
<tr>
63-
<td><code>active_window_fg_color</code></td>
64-
<td>Foreground color for the currently focused window</td>
65-
<td align="center">hex color (string)</td>
63+
<td><code>name</code></td>
64+
<td>Which X window property is considered window name (label for a window)</td>
65+
<td>
66+
<ul>
67+
<li><code>"class"</code>: WM_CLASS</li>
68+
<li><code>"title"</code>: WM_NAME</li>
69+
</ul>
70+
</td>
6671
</tr>
6772
<tr>
68-
<td><code>inactive_window_fg_color</code></td>
69-
<td>Foreground color for unfocused windows</td>
70-
<td align="center">hex color (string)</td>
73+
<td><code>name_case</code></td>
74+
<td>Text case for window names</td>
75+
<td>
76+
<ul>
77+
<li><code>"none"</code>: don't change capitalization</li>
78+
<li><code>"lowercase"</code>: all lowercase</li>
79+
<li><code>"uppercase"</code>: all uppercase</li>
80+
</ul>
81+
</td>
7182
</tr>
7283
<tr>
73-
<td><code>separator_fg_color</code></td>
74-
<td>Foreground color for the string between window names</td>
75-
<td align="center">hex color (string)</td>
84+
<td><code>name_max_length</code></td>
85+
<td>Maximum length for a window name before it's truncated with <code>‥</code></td>
86+
<td align="center">number (int)</td>
7687
</tr>
7788
<tr>
78-
<td><code>overflow_fg_color</code></td>
79-
<td>Foreground color for the string that indicates max windows exceeding e.g. <code>(+3)</code></td>
80-
<td align="center">hex color (string)</td>
89+
<td><code>empty_desktop_string</code></td>
90+
<td>String to show when no windows are open</td>
91+
<td align="center">any string</td>
8192
</tr>
8293
<tr>
8394
<td><code>separator_string</code></td>
@@ -90,30 +101,29 @@ All options are detailed here:
90101
<td align="center">number (int)</td>
91102
</tr>
92103
<tr>
93-
<td><code>name</code></td>
94-
<td>Text to display</td>
95-
<td>
96-
<ul>
97-
<li><code>"class"</code>: display the window class</li>
98-
<li><code>"title"</code>: display the window title</li>
99-
</ul>
100-
</td>
104+
<td><code>active_window_fg_color</code></td>
105+
<td>Foreground color for the currently focused window</td>
106+
<td align="center">hex color (string)</td>
101107
</tr>
102108
<tr>
103-
<td><code>name_case</code></td>
104-
<td>Text case for window names</td>
105-
<td>
106-
<ul>
107-
<li><code>"none"</code>: don't change capitalization</li>
108-
<li><code>"lowercase"</code>: all lowercase</li>
109-
<li><code>"uppercase"</code>: all uppercase</li>
110-
</ul>
111-
</td>
109+
<td><code>inactive_window_fg_color</code></td>
110+
<td>Foreground color for unfocused windows</td>
111+
<td align="center">hex color (string)</td>
112112
</tr>
113113
<tr>
114-
<td><code>name_max_length</code></td>
115-
<td>Maximum length for a window name before it's truncated with <code>‥</code></td>
116-
<td align="center">number (int)</td>
114+
<td><code>empty_desktop_fg_color</code></td>
115+
<td>Foreground color for the string shown when no windows are open</td>
116+
<td align="center">hex color (string)</td>
117+
</tr>
118+
<tr>
119+
<td><code>separator_fg_color</code></td>
120+
<td>Foreground color for the string between window names</td>
121+
<td align="center">hex color (string)</td>
122+
</tr>
123+
<tr>
124+
<td><code>overflow_fg_color</code></td>
125+
<td>Foreground color for the string that indicates max windows exceeding e.g. <code>(+3)</code></td>
126+
<td align="center">hex color (string)</td>
117127
</tr>
118128
</tbody>
119129
</table>

‎config.toml

+9-12
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
sort_by = "position" # "none" | "position" | "application"
22
max_windows = 13
33

4-
active_window_fg_color = "#e0e0e0"
5-
inactive_window_fg_color = "#787878"
6-
separator_fg_color = "#787878"
7-
overflow_fg_color = "#f0c674"
8-
9-
separator_string = "·"
10-
spaces = 1
11-
124
name = "class" # "class" | "title"
135
name_case = "lowercase" # "none" | "lowercase" | "uppercase"
146
name_max_length = 30
157

16-
# TODO:
17-
# window_nicknames = [
18-
# { "TelegramDesktop", "telegram" }
19-
# ]
8+
empty_desktop_string = ""
9+
separator_string = "·"
10+
spaces = 1
11+
12+
active_window_fg_color = "#e0e0e0"
13+
inactive_window_fg_color = "#808080"
14+
empty_desktop_fg_color = "#e0e0e0"
15+
separator_fg_color = "#808080"
16+
overflow_fg_color = "#e8c47b"

‎main.c

+24-16
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,19 @@ struct configuration {
1111
char sort_by[20];
1212
int max_windows;
1313

14-
char active_window_fg_color[20];
15-
char inactive_window_fg_color[20];
16-
char separator_fg_color[20];
17-
char overflow_fg_color[20];
18-
19-
char separator_string[200];
20-
int spaces;
21-
2214
char name[20];
2315
char name_case[20];
2416
int name_max_length;
2517

26-
// TODO: window_nicknames
18+
char empty_desktop_string[200];
19+
char separator_string[200];
20+
int spaces;
21+
22+
char active_window_fg_color[20];
23+
char inactive_window_fg_color[20];
24+
char empty_desktop_fg_color[20];
25+
char separator_fg_color[20];
26+
char overflow_fg_color[20];
2727
} config;
2828

2929
void copy_config_str(toml_table_t* tbl, char* option, char* config_field) {
@@ -52,17 +52,19 @@ void parse_config(char* filename, char* executable_path) {
5252
copy_config_str(tbl, "sort_by", config.sort_by);
5353
config.max_windows = toml_table_int(tbl, "max_windows").u.i;
5454

55-
copy_config_str(tbl, "active_window_fg_color", config.active_window_fg_color);
56-
copy_config_str(tbl, "inactive_window_fg_color", config.inactive_window_fg_color);
57-
copy_config_str(tbl, "separator_fg_color", config.separator_fg_color);
58-
copy_config_str(tbl, "overflow_fg_color", config.overflow_fg_color);
55+
copy_config_str(tbl, "name", config.name);
56+
copy_config_str(tbl, "name_case", config.name_case);
57+
config.name_max_length = toml_table_int(tbl, "name_max_length").u.i;
5958

59+
copy_config_str(tbl, "empty_desktop_string", config.empty_desktop_string);
6060
copy_config_str(tbl, "separator_string", config.separator_string);
6161
config.spaces = toml_table_int(tbl, "spaces").u.i;
6262

63-
copy_config_str(tbl, "name", config.name);
64-
copy_config_str(tbl, "name_case", config.name_case);
65-
config.name_max_length = toml_table_int(tbl, "name_max_length").u.i;
63+
copy_config_str(tbl, "active_window_fg_color", config.active_window_fg_color);
64+
copy_config_str(tbl, "inactive_window_fg_color", config.inactive_window_fg_color);
65+
copy_config_str(tbl, "empty_desktop_fg_color", config.empty_desktop_fg_color);
66+
copy_config_str(tbl, "separator_fg_color", config.separator_fg_color);
67+
copy_config_str(tbl, "overflow_fg_color", config.overflow_fg_color);
6668

6769
toml_free(tbl);
6870
}
@@ -176,6 +178,12 @@ void output(struct window_props* wlist, int n, Window active_window, char* execu
176178
free(wlist[i].title);
177179
}
178180

181+
if (window_count == 0) {
182+
printf("%%{F%s}", config.empty_desktop_fg_color);
183+
printf(config.empty_desktop_string);
184+
printf("%%{F-}");
185+
}
186+
179187
if (window_count > config.max_windows) {
180188
printf("%%{F%s}", config.overflow_fg_color);
181189
printf("(+%d)", window_count - config.max_windows);

‎screenshot.png

-7 Bytes
Loading

0 commit comments

Comments
 (0)
Please sign in to comment.