1howlc(1) -- client to control the howl compositor
2=================================================
3
4## SYNOPSIS
5
6`howlc` <cmd> [<args>...]
7
8## DESCRIPTION
9
10**howlc** is a client that controls the howl(1) compositor.
11
12## COMMANDS
13
14Most of the following (can be deduced logically) can take an optional window ID argument, e.g.: `move 20 20 4`, where the first 2 arguments given to `move` are the coordinates and the third one is the window ID. If no window ID is given, then the currently focused window will be targeted (if it exists).
15
16 * `move`, `move_absolute`:
17 Will move the window relative to either its current position or to the top
18 left corner of the screen. Arguments are in the form of pairs of x and y
19 integer coordinates.
20
21 Example:
22
23 $ howlc move 20 -40
24
25 $ howlc move_absolute 300 300
26
27 * `resize`, `resize_absolute`:
28 Will resize the window relative to either its current position or the top
29 left corner of the screen. Arguments are in the form of pairs of w and h
30 integers.
31
32 Example:
33
34 $ howlc resize 20 -40
35
36 $ howlc resize_absolute 300 300
37
38 * `teleport`:
39 Will "teleport" (move and resize) the window to the coordinates specified, in
40 the format of x, y, w and h.
41
42 Example:
43
44 $ howlc teleport 50 25 200 250
45
46 * `center`:
47 Will position the window in the center of the screen.
48
49 Example:
50
51 $ howlc center
52
53 * `fullscreen`:
54 Will resize the window to the screen size.
55
56 Example:
57
58 $ howlc fullscreen
59
60 * `hide`, `show`:
61 Hide/show the window.
62
63 Example:
64
65 $ howlc hide
66
67 $ howlc show
68
69 * `focus_prev`, `focus_next`:
70 Focus the previous/next window.
71
72 Example:
73
74 $ howlc focus_prev
75
76 $ howlc focus_next
77
78 * `lower`, `raise`:
79 Lower/raise the window's stack order.
80
81 Example:
82
83 $ howlc lower
84
85 $ howlc raise
86
87 * `close`:
88 Closes the window.
89
90 Example:
91
92 $ howlc close
93
94 * `workspace`, `move_workspace`:
95 Switch, or move the window, to the specified workspace. Argument is a single
96 integer representing the workspace number.
97
98 Example:
99
100 $ howlc workspace 3
101
102 $ howlc move_workspace 6
103
104 * `get_geometry`, `get_pid`, `get_title`, `get_app_id`:
105 Print the window's geometry (in x, y, w and h), process ID, title or app ID.
106
107 Example:
108
109 $ howlc get_geometry<br>
110 327 148 620 620
111
112 $ howlc get_pid<br>
113 12345
114
115 $ howlc get_title<br>
116 Example
117
118 $ howlc get_app_id<br>
119 example
120
121 * `get_screen_geometry`:
122 Print the current screen's width and height.
123
124 Example:
125
126 $ howlc get_screen_geometry<br>
127 1920 1080
128
129 * `list_windows`:
130 Print a list of currently open windows. By default only mapped windows are listed, but `-u` can be specified as an option to list only unmapped windows, and `-a` can be specified to list all windows.
131
132 Example:
133
134 $ howlc list_windows -u<br>
135 0<br>
136 21<br>
137 25
138
139 * `bind`:
140 Create a key binding. Arguments are in the form of a list of keys and the command to execute,
141 see the [BINDINGS][] section for more info.
142
143 Example:
144
145 \# Bind modkey+Shift+g to execute "example_command"<br>
146 $ howlc bind mod+shift+g "example_command"
147
148 \# Bind Win+4 to switch to the 4th workspace<br>
149 $ howlc bind win+4 "howlc workspace 4"
150
151 * `unbind`:
152 Remove a previously registered key binding.
153
154 Example:
155
156 $ howlc unbind mod+shift+g
157
158 * `modkey`:
159 Configure the modifier key. This can be then used as an alias in keybindings, like so: `mod+key`.
160 See the [BINDINGS][] section for allowed values.
161
162 Example:
163
164 $ howlc modkey alt
165
166 $ howlc modkey win+ctrl
167
168 * `inner_focus_color`, `inner_unfocus_color`, `inner_unfocus_color`, `outer_unfocus_color`:
169 Set the inner/outer focused and unfocused colors of the window borders. Arguments are in the format of #RRGGBB,
170 where the leading pound sign is optional. Note that in the format of #RRGGBB, the argument needs to
171 be quoted, since the pound sign (#) is a special one in most shells.
172
173 Example:
174
175 $ howlc outer_focus_color "#f03937"
176
177 $ howlc inner_unfocus_color eeeeee
178
179 * `inner_border_width`, `outer_border_width`:
180 Set the inner/outer border widths of the window borders. Argument is a single integer representing the new border width.
181
182 Example:
183
184 $ howlc inner_border_width 4
185
186 $ howlc outer_border_width 0
187
188 * `title_format`:
189 Set the format for the text displayed in window titlebars. Currently accepted specifiers are:
190
191 `%t` - window title<br>
192 `%a` - window app ID<br>
193 `%p` - window PID
194
195 Example:
196
197 $ howlc title_format '%t %p'
198
199 * `set_decor`:
200 Set the current window decoration theme. Argument is a path (absolute or relative) to the directory containing the theme. See decor.c on the format of themes.
201
202 Example:
203
204 $ howlc set_decor ~/etc/decorations/theme
205
206 * `quit`:
207 Quit the compositor.
208
209 Example:
210
211 $ howlc quit
212
213## BINDINGS
214
215The format for keybindings is the following:
216
217Each key/modifier in the binding string is separated by a plus (+) sign. There can be multiple modifiers,
218but only one key. The accepted modifiers are:
219
220 * `mod`: Corresponds to the modifier key
221 * `alt`: The Alt key
222 * `win`: The Win key, sometimes the logo
223 * `ctrl`: The Ctrl key
224 * `shift`: The Shift key
225 * `any`: Any, (and) no modifiers
226
227The accepted key strings are as specified in `<xkbcommon/xkbcommon-keysyms.h>`.
228
229## BUGS
230
231The manual does not specify the names for modifiers on other platforms.
232
233Please report any other ones, which there are probably many of.
234
235## COPYRIGHT
236
237`howl` and `howlc` are (C) wf 2026 <https://sr.ht/~wf>.
238
239## SEE ALSO
240
241README.md, howl(1)