2023-01-25 16:29:53 +01:00
|
|
|
.\" Automatically generated by Pandoc 2.19.2
|
2022-11-25 20:38:44 +01:00
|
|
|
.\"
|
|
|
|
.\" Define V font for inline verbatim, using C font in formats
|
|
|
|
.\" that render this, and otherwise B font.
|
|
|
|
.ie "\f[CB]x\f[]"x" \{\
|
|
|
|
. ftr V B
|
|
|
|
. ftr VI BI
|
|
|
|
. ftr VB B
|
|
|
|
. ftr VBI BI
|
|
|
|
.\}
|
|
|
|
.el \{\
|
|
|
|
. ftr V CR
|
|
|
|
. ftr VI CI
|
|
|
|
. ftr VB CB
|
|
|
|
. ftr VBI CBI
|
|
|
|
.\}
|
2022-12-18 21:17:38 +01:00
|
|
|
.TH "speedwm" "1" "" "1.9" "speedie\[cq]s window manager."
|
2022-11-25 20:38:44 +01:00
|
|
|
.hy
|
|
|
|
.SH speedwm
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS Table of contents
|
|
|
|
.IP " 0." 4
|
|
|
|
Table of contents
|
|
|
|
.IP " 1." 4
|
|
|
|
What is speedwm?
|
|
|
|
.IP " 2." 4
|
|
|
|
Installation
|
|
|
|
.IP " 3." 4
|
|
|
|
Layouts
|
|
|
|
.IP " 4." 4
|
|
|
|
Default keybinds
|
|
|
|
.IP " 5." 4
|
|
|
|
Dependencies
|
|
|
|
.IP " 6." 4
|
|
|
|
Important
|
|
|
|
.IP " 7." 4
|
|
|
|
Configuration and .Xresources
|
|
|
|
.IP " 8." 4
|
|
|
|
Signals
|
|
|
|
.IP " 9." 4
|
|
|
|
Status bar
|
|
|
|
.IP "10." 4
|
|
|
|
Additional note on autostart
|
|
|
|
.IP "11." 4
|
|
|
|
Configuring the bar
|
|
|
|
.IP "12." 4
|
|
|
|
Keybinds
|
|
|
|
.IP "13." 4
|
|
|
|
Credits
|
2023-01-24 22:22:57 +01:00
|
|
|
.SS 1. What is speedwm?
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2023-01-18 17:53:12 +01:00
|
|
|
speedwm is a window manager forked from dwm or dynamic window manager.
|
2022-11-25 20:38:44 +01:00
|
|
|
It manages the user\[cq]s open windows and tiles them according to a set
|
|
|
|
layout (dynamic).
|
|
|
|
.PP
|
|
|
|
Just like dwm, speedwm also tries to be minimal but also has
|
|
|
|
functionality and aesthetics as a goal.
|
|
|
|
Tiling window managers (unlike floating window managers that you may be
|
|
|
|
used to) tile windows based on a set layout making them easy to get
|
|
|
|
productive on.
|
|
|
|
They also encourage the user to use their keyboard instead of the mouse
|
2023-01-16 18:51:37 +01:00
|
|
|
so that the user doesn\[cq]t have to move his hands much but there are
|
|
|
|
also mouse binds and more can be added by the user if desired.
|
2023-01-24 22:27:56 +01:00
|
|
|
.SS 2. Installation
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
In order to install this build of speedwm, all dependencies must be
|
|
|
|
installed.
|
2023-01-16 18:51:37 +01:00
|
|
|
You can see `Dependencies' for a list of all dependencies required and
|
|
|
|
optionally recommended to use speedwm.
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
git clone https://codeberg.org/speedie/speedwm
|
|
|
|
.IP \[bu] 2
|
|
|
|
cd speedwm
|
|
|
|
.IP \[bu] 2
|
|
|
|
make clean install
|
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
If any warnings/errors show up, fix it by installing the missing
|
|
|
|
dependency.
|
|
|
|
.RE
|
|
|
|
.IP \[bu] 2
|
2023-01-16 18:51:37 +01:00
|
|
|
If a .xinitrc is used, add \f[V]speedwm\f[R] to the end.
|
|
|
|
If you\[cq]re using .xinit you can also just
|
|
|
|
\f[V]startx /usr/bin/speedwm\f[R].
|
2022-11-25 20:38:44 +01:00
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
If you do not have a .xinitrc, you can add autostart commands to the
|
|
|
|
file \[ti]/.config/speedwm/autostart.sh.
|
|
|
|
.RE
|
2023-01-16 18:51:37 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
If a display manager is used, make sure it supports .desktop entries.
|
|
|
|
.IP \[bu] 2
|
|
|
|
NOTE: \f[V]ly\f[R] is known to have issues with dwm and speedwm.
|
|
|
|
.PP
|
|
|
|
If you see a bar or at least a cursor, your X server is likely working.
|
|
|
|
If you do \f[B]not\f[R] see a cursor or a bar, and no keys seem to do
|
|
|
|
anything, your X server is most likely not configured properly.
|
|
|
|
If you get sent back to the TTY, your X server is most likely not
|
|
|
|
configured properly.
|
|
|
|
In this case, see your distro\[cq]s wiki page on how to set up X11.
|
|
|
|
.PP
|
|
|
|
Note that speedwm is not and will \f[B]never\f[R] be compatible with
|
|
|
|
Wayland.
|
|
|
|
I have no interest in ever supporting or developing for it.
|
|
|
|
Please don\[cq]t create any issues regarding Wayland support.
|
|
|
|
.PP
|
|
|
|
If you\[cq]re having any issues on operating systems with the BSD
|
|
|
|
kernel, or something like NixOS, please file a bug report here.
|
2023-01-24 22:22:57 +01:00
|
|
|
.SS 3. Layouts
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
speedwm comes with the following layouts:
|
|
|
|
.IP \[bu] 2
|
|
|
|
Tile
|
|
|
|
.IP \[bu] 2
|
|
|
|
Monocle
|
|
|
|
.IP \[bu] 2
|
|
|
|
Grid
|
|
|
|
.IP \[bu] 2
|
|
|
|
Deck
|
|
|
|
.IP \[bu] 2
|
|
|
|
Centered Master
|
|
|
|
.IP \[bu] 2
|
|
|
|
Tatami
|
|
|
|
.IP \[bu] 2
|
|
|
|
Spiral
|
|
|
|
.IP \[bu] 2
|
|
|
|
Dwindle
|
|
|
|
.IP \[bu] 2
|
|
|
|
Bottom Stack
|
|
|
|
.IP \[bu] 2
|
|
|
|
Horizontal Bottom Stack
|
|
|
|
.IP \[bu] 2
|
|
|
|
Horizonal Grid
|
|
|
|
.IP \[bu] 2
|
|
|
|
Dynamic Grid
|
|
|
|
.IP \[bu] 2
|
|
|
|
Custom
|
2023-01-08 21:37:07 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Empty
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
They can be switched between using a little menu (See Keybinds for more
|
|
|
|
information) or by right clicking the Layout indicator.
|
|
|
|
The more commonly used layouts can be switched between using a quick
|
|
|
|
keybind.
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 4. Default keybinds
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
This is a full list of keybinds.
|
|
|
|
Please let me know if any keybinds are missing as these have been
|
|
|
|
manually added.
|
2023-01-24 22:27:56 +01:00
|
|
|
.SS Keybinds for regular applications
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+Enter - Opens the defined terminal (default is st)
|
|
|
|
.IP \[bu] 2
|
2023-01-20 23:50:35 +01:00
|
|
|
Super+Shift+Colon - Opens an spmenu prompt
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+s - Opens `maim' to take a screenshot and copies it to the
|
|
|
|
clipboard using `xclip' (requires speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+f - Opens the defined file manager
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+w - Opens the defined web browser
|
|
|
|
.IP \[bu] 2
|
2023-01-20 23:50:35 +01:00
|
|
|
Super+Shift+o - Opens the speedwm-dfmpeg spmenu script to record your
|
2022-11-25 20:38:44 +01:00
|
|
|
screen.
|
|
|
|
(requires speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+t - Opens the defined editor in your terminal
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+m - Kills the defined music player
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+a - Opens the defined mixer in your terminal
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+m - Opens the defined music player
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+x - Opens the defined system process viewer in your terminal
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+c - Opens the defined chat client
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+u - Opens the defined RSS reader
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+r - Opens the defined email client
|
2023-01-24 22:27:56 +01:00
|
|
|
.SS These keybinds are for navigating speedwm
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Super+f - Fullscreen the selected window
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+b - Show/hide the speedwm bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+s - Show/hide the systray
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+j/k - Move focus between visible windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+m - Moves focus to the Master window (or back if Master is already
|
|
|
|
focused)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+a/d - Increase/decrease size of each window
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+w/e - Resize the window keeping the aspect ratio of it.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+o - Hide a window
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Minus - Show the scratchpad
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Equal - Remove the scratchpad
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Enter - Switch order of windows
|
|
|
|
.IP \[bu] 2
|
2023-01-20 23:50:35 +01:00
|
|
|
Super+Colon - Open a list of desktop entries in spmenu
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Tab - Switch between windows on the same tag.
|
|
|
|
(Microsoft Windows-like Alt+Tab)
|
|
|
|
.IP \[bu] 2
|
2022-12-07 19:39:11 +01:00
|
|
|
Super+v - Center the focused window.
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
Super+0 - Reset mfact
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+r - Reset number of masters
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+y - Make the current selected window sticky
|
|
|
|
.IP \[bu] 2
|
2022-11-28 21:45:08 +01:00
|
|
|
Super+d - Focus the previous monitor.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+/ - Focus the next monitor.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+.
|
|
|
|
- Increase bar padding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+, - Decrease bar padding by 1
|
|
|
|
.IP \[bu] 2
|
2022-11-30 18:56:25 +01:00
|
|
|
Super+\ - Toggle mark on a client.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+] - Swap focused client with the marked client.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+[ - Swap focus with the marked client.
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
Super+1 - Move to tag 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+2 - Move to tag 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+3 - Move to tag 3
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+4 - Move to tag 4
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+5 - Move to tag 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+6 - Move to tag 6
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+7 - Move to tag 7
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+8 - Move to tag 8
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+9 - Move to tag 9
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+1 - Preview tag 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+2 - Preview tag 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+3 - Preview tag 3
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+4 - Preview tag 4
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+5 - Preview tag 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+6 - Preview tag 6
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+7 - Preview tag 7
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+8 - Preview tag 8
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+9 - Preview tag 9
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+q - Close the current window
|
|
|
|
.IP \[bu] 2
|
2023-01-18 16:06:58 +01:00
|
|
|
Super+Shift+\ - Kill all clients except focused.
|
|
|
|
.IP \[bu] 2
|
2022-11-28 21:45:08 +01:00
|
|
|
Super+Shift+.
|
|
|
|
- Increase bar padding and gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+, - Decrease bar padding and gaps by 1
|
|
|
|
.IP \[bu] 2
|
2022-12-11 19:57:17 +01:00
|
|
|
Super+Shift+/ - Reset bar padding and gaps
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
Super+Shift+h/j/k/l - Rotates a stack.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+Arrow - Resizes a window in floating mode
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+Escape - Ask the user if they want to shutdown or reboot or
|
|
|
|
nothing
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+Tab - Switch between windows and tags in detail.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+Equal - Toggle scratchpads
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+Minus - Hide the scratchpad
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+Space - Toggle floating windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+1 - Combine the current tag with tag 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+2 - Combine the current tag with tag 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+3 - Combine the current tag with tag 3
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+4 - Combine the current tag with tag 4
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+5 - Combine the current tag with tag 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+6 - Combine the current tag with tag 6
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+7 - Combine the current tag with tag 7
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+8 - Combine the current tag with tag 8
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+9 - Combine the current tag with tag 9
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+q - Mutes your audio
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+w - Increases your volume
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+e - Decreases your volume
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+0 - Tag all tags at once.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Enter - Mirror the layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+i - Increase stackcount by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+u - Decrease stack count by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+z/x - Increase/decrease gaps between windows by 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+j/k - Move focus between hidden windows (Can then `Show')
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Arrow - Moves a window to any corner of your screen (Arrow
|
|
|
|
key)
|
|
|
|
.IP \[bu] 2
|
2023-01-20 23:50:35 +01:00
|
|
|
Super+Control+Tab - Open a spmenu prompt asking the user what layout to
|
2022-11-25 20:38:44 +01:00
|
|
|
switch to
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+o - Show a hidden focused window
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+a/d - Move to the next/previous tag
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+o - Show all hidden windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+p - Hide all windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+z/c - Move to the next/previous tag skipping any
|
|
|
|
without windows open
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+a/d - Move between available layouts
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+1 - Move the focused window to tag 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+2 - Move the focused window to tag 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+3 - Move the focused window to tag 3
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+4 - Move the focused window to tag 4
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+5 - Move the focused window to tag 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+6 - Move the focused window to tag 6
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+7 - Move the focused window to tag 7
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+8 - Move the focused window to tag 8
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+9 - Move the focused window to tag 9
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+Esc - Open speedwm-utils (requires speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+Arrow - Resize the window to the screen size.
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+s - Set a wallpaper (requires speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+n - Connect to WLAN using iwd (requires
|
|
|
|
speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+b - Connect to a Bluetooth device using bluez
|
|
|
|
(requires speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+q - Pauses your music
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+w - Decreases your music volume
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+e - Increase your music volume
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+r - Restart speedwm
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+j/k - Change window size vertically (cfact)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+Equal - Increase bar height by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Control+Shift+Minus - Decrease bar height by 1
|
2023-01-24 22:27:56 +01:00
|
|
|
.SS Chained keybinds
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
Super+r & s - Run screenkey if its not running, otherwise kill it.
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & r - Reorganize tags and move windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & t - Toggle tag area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & y - Toggle empty tag area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & w - Toggle title area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & u - Toggle unselected title area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & s - Toggle status area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & l - Toggle layout area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & o - Toggle inactive fade
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & r - Reset all bar modules
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+t & s - Make the current selected window sticky
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+p & j/k - Increase/decrease bar padding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+p & u/d - Increase/decrease bar padding by 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+p & r - Reset bar padding to default
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+p & t - Toggle bar padding on/off
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+, & r - Reset powerline options
|
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
Super+l & q - Rotate forward in the layout axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & w - Rotate forward in the master axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & e - Rotate forward in the stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & r - Rotate forward in the secondary stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & q - Rotate backwards in the layout axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & w - Rotate backwards in the master axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & e - Rotate backwards in the stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & r - Rotate backwards in the secondary stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 1 - Set layout to layout 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 2 - Set layout to layout 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 3 - Set layout to layout 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 4 - Set layout to layout 3
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 5 - Set layout to layout 4
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 6 - Set layout to layout 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 7 - Set layout to layout 6
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 8 - Set layout to layout 7
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 9 - Set layout to layout 8
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+l & 0 - Set layout to layout 9
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
Super+Shift+g & i - Decrease inner gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+g & o - Decrease outer gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+e & a - Open the virtual keyboard
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+e & e - Open a list of all emojis and copy the selection
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+e & r - Randomize wallpaper
|
|
|
|
.IP \[bu] 2
|
|
|
|
Super+Shift+e & p - Set wallpaper to the previous
|
2023-01-24 22:27:56 +01:00
|
|
|
.SS These will only work if your keyboard has special multimedia buttons.
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Mute button - Mutes your audio
|
|
|
|
.IP \[bu] 2
|
|
|
|
Up Volume button - Increases your volume
|
|
|
|
.IP \[bu] 2
|
|
|
|
Next/Previous song button - Switch to the next/previous track
|
|
|
|
.IP \[bu] 2
|
|
|
|
Down Volume button - Decreases your volume
|
|
|
|
.IP \[bu] 2
|
|
|
|
Pause button - Pauses the current track
|
|
|
|
.IP \[bu] 2
|
|
|
|
Stop button - Stops your defined music player
|
|
|
|
.IP \[bu] 2
|
|
|
|
Browser button - Opens your defined web browser
|
|
|
|
.IP \[bu] 2
|
|
|
|
Power button - Ask if you wanna shut down, restart or lock your
|
|
|
|
computer.
|
|
|
|
(requires speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Email button - Open your defined email client
|
|
|
|
.IP \[bu] 2
|
|
|
|
System button - Open your defined status viewer in a terminal
|
|
|
|
.IP \[bu] 2
|
|
|
|
Music button - Open your defined music player
|
|
|
|
.IP \[bu] 2
|
|
|
|
WLAN button - Disconnect from WLAN (requires speedwm-extras)
|
2023-01-24 22:27:56 +01:00
|
|
|
.SS These binds can be activated using your mouse
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Tag (Left click) - Switch to tag
|
|
|
|
.IP \[bu] 2
|
|
|
|
Tag (Scrolling up/down) - Switch to the next/previous tag
|
|
|
|
.IP \[bu] 2
|
|
|
|
Layout indicator (Left click) - Switch to the next layout
|
|
|
|
.IP \[bu] 2
|
2022-12-26 22:24:02 +01:00
|
|
|
Layout indicator (Right click) - Switch to the previous layout
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-20 23:50:35 +01:00
|
|
|
Layout indicator (Middle click) - Open an spmenu list of all layouts
|
2022-11-25 20:38:44 +01:00
|
|
|
(requires speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
2022-12-18 20:39:31 +01:00
|
|
|
Layout indicator (Scrolling up/down) - Switch to the next/previous
|
|
|
|
layout
|
|
|
|
.IP \[bu] 2
|
2023-01-12 21:44:05 +01:00
|
|
|
Window title (Left click) - Show/hide the window
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
Window title (Right click) - Open speedwm-utils (requires
|
|
|
|
speedwm-extras)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Focused window (Super+Alt+Left click) - Move the focused window around
|
|
|
|
.IP \[bu] 2
|
|
|
|
Focused window (Super+Alt+Middle click) - Make the focused window
|
|
|
|
floating
|
|
|
|
.IP \[bu] 2
|
|
|
|
Focused window title (Middle click) - Rotate stack
|
|
|
|
.IP \[bu] 2
|
|
|
|
Dragging (Super+Right click) - Increase/decrease size of each window
|
|
|
|
(mfact)
|
|
|
|
.IP \[bu] 2
|
|
|
|
Dragging (SuperControl+Right click) - Increase/decrease cfact
|
|
|
|
.IP \[bu] 2
|
|
|
|
Root window (Right click) - List .desktop entries and open them
|
|
|
|
(requires j4-dmenu-desktop)
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 5. Dependencies
|
2023-01-18 17:53:12 +01:00
|
|
|
.SS Required
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
These are absolutely necessary, speedwm will NOT compile without them -
|
2023-01-18 17:53:12 +01:00
|
|
|
libxft - Used for rendering text - pango - Used to markup text -
|
|
|
|
libXinerama - Used for multi-monitor support.
|
|
|
|
- Can be disabled through editing toggle.mk if you\[cq]re not interested
|
|
|
|
in multiple monitors.
|
|
|
|
- imlib2 - Used for tag previews, window icons.
|
|
|
|
- Can be disabled through editing toggle.mk and toggle.h if you
|
|
|
|
don\[cq]t want these features.
|
|
|
|
- yajl - Used to interact with speedwm through a sock.
|
|
|
|
- Required for the IPC patch.
|
|
|
|
If the IPC patch is disabled through toggle.mk and toggle.h, you do not
|
|
|
|
need this.
|
|
|
|
- tcc - Very minimal C compiler that speedwm uses to greatly speed up
|
|
|
|
compile times.
|
|
|
|
If you do not want this dependency, edit host.mk and set CC to `cc' (or
|
|
|
|
what C99 compiler you prefer).
|
2022-11-25 20:38:44 +01:00
|
|
|
.SS Features
|
|
|
|
.PP
|
|
|
|
These are necessary for certain features and keybinds.
|
|
|
|
If you want to use an alternative, change it in options.h and/or
|
|
|
|
keybinds.h and mouse.h.
|
|
|
|
.IP \[bu] 2
|
2023-01-20 23:50:35 +01:00
|
|
|
spmenu (https://codeberg.org/speedie/spmenu)
|
2022-11-25 20:38:44 +01:00
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
2023-01-20 23:50:35 +01:00
|
|
|
As of speedwm 1.9, speedwm now expects spmenu (fork of dmenu) to be on
|
|
|
|
the system instead of dmenu.
|
|
|
|
While you can revert this change I cannot provide support due to missing
|
|
|
|
arguments.d
|
2022-11-25 20:38:44 +01:00
|
|
|
.RE
|
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
xrdb
|
2022-11-25 20:38:44 +01:00
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
xrdb is used for external speedwm configuration (ie.
|
|
|
|
after compiling).
|
|
|
|
It is \f[B]not\f[R] mandatory if you don\[cq]t need this.
|
2022-11-25 20:38:44 +01:00
|
|
|
.RE
|
|
|
|
.SS Software
|
|
|
|
.PP
|
2023-01-18 17:53:12 +01:00
|
|
|
This build of speedwm comes with keybinds for software.
|
|
|
|
You can add, change and remove keybinds by editing \f[V]keybinds.h\f[R]
|
|
|
|
and \f[V]mouse.h\f[R] and running \f[V]make clean install\f[R].
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
libspeedwm
|
2023-01-18 17:53:12 +01:00
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
Dependency for speedwm-extras allowing you to perform actions
|
|
|
|
externally.
|
|
|
|
.RE
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm-extras
|
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
Important metapackage containing extra scripts that speedwm makes use
|
|
|
|
of.
|
|
|
|
(https://codeberg.org/speedie/speedwm-extras)
|
|
|
|
.RE
|
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
st - Default terminal
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
Chromium - Default web browser
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
htop - Status monitor
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
sfeed - RSS reader
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
rssread - RSS frontend
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
cmus - Music player
|
2022-11-25 20:38:44 +01:00
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
Default status bar also has support for moc/mocp (Music On Console)
|
2022-11-25 20:38:44 +01:00
|
|
|
.RE
|
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
neovim - Text editor
|
|
|
|
.IP \[bu] 2
|
|
|
|
neomutt - Email client
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
lf - File manager
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
slock - Lock screen
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
weechat - IRC client
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
tmux - Used for the music player and IRC client
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-18 17:53:12 +01:00
|
|
|
j4-dmenu-desktop - Listing .desktop entries
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2023-01-18 17:53:12 +01:00
|
|
|
And everything under \f[V]Features\f[R].
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 6. Important
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
If you\[cq]re used to dwm, speedwm might be a little unfamiliar to you
|
|
|
|
at first.
|
|
|
|
This is because speedwm doesn\[cq]t use config.h (or config.def.h).
|
|
|
|
Instead, config.h is split into different parts to make it easier to
|
|
|
|
edit.
|
|
|
|
Instead of editing config.h you\[cq]ll want to edit:
|
|
|
|
.IP \[bu] 2
|
|
|
|
autostart.h for starting stuff right before speedwm (For example xclip,
|
|
|
|
pywal, etc.)
|
|
|
|
.IP \[bu] 2
|
|
|
|
options.h for changing colors and applications to use with keybinds.
|
|
|
|
.IP \[bu] 2
|
|
|
|
signal.h for adding fake signals
|
|
|
|
.IP \[bu] 2
|
|
|
|
colors.h for changing alpha options and color options, most users
|
|
|
|
won\[cq]t need to edit it.
|
|
|
|
.IP \[bu] 2
|
|
|
|
xresources.h for adding/removing .Xresources options
|
|
|
|
.IP \[bu] 2
|
|
|
|
rules.h for adding/removing rules
|
|
|
|
.IP \[bu] 2
|
|
|
|
keybinds.h for adding/removing keybinds.
|
|
|
|
.IP \[bu] 2
|
|
|
|
mouse.h for adding/removing mouse binds.
|
|
|
|
.IP \[bu] 2
|
2022-12-18 19:56:50 +01:00
|
|
|
status.h for adding/removing status modules and aadding/removing
|
|
|
|
statuscmd clicks.
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
ipc.h for adding/removing IPC commands.
|
|
|
|
(If support is compiled in)
|
|
|
|
.IP \[bu] 2
|
|
|
|
toggle.h for adding/removing features from getting compiled in.
|
|
|
|
.PP
|
|
|
|
After you\[cq]ve edited one of the files, you need to run `make clean
|
|
|
|
install' to reinstall speedwm.
|
|
|
|
Remember that you can change colors through your .Xresources file (see
|
|
|
|
\&.Xresources and Pywal) meaning you do not need to recompile speedwm.
|
|
|
|
.PP
|
|
|
|
Another important detail you must keep in mind is that this build comes
|
|
|
|
with a status bar simply named `speedwm_status'.
|
|
|
|
It can be found in the speedwm source code directory.
|
|
|
|
It is just a shell script which adds stuff to your status bar.
|
|
|
|
It will automatically be started when speedwm starts.
|
|
|
|
.PP
|
|
|
|
You can edit the status bar simply by editing `speedwm_stellar' or its
|
|
|
|
modules (modules_*) and running `make clean install'.
|
|
|
|
You can also configure it by editing `\[ti]/.config/speedwm/statusrc'.
|
|
|
|
.PP
|
|
|
|
If you want to change status bar, edit options.h and set `static char
|
|
|
|
status' to your status bar binary (must be in $PATH).
|
|
|
|
Alternatively, you can also set it in .Xresources (See .Xresources and
|
|
|
|
Pywal).
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 7. Configuration and .Xresources
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2022-12-14 10:47:33 +01:00
|
|
|
speedwm has .Xresources support thanks to the .Xresources patch.
|
2022-11-25 20:38:44 +01:00
|
|
|
It also has pywal support (tool which grabs colors based on your
|
|
|
|
wallpaper).
|
|
|
|
.PP
|
2022-12-14 10:47:33 +01:00
|
|
|
To configure speedwm, you may /usr/share/speedwm/example.Xresources to
|
|
|
|
either \[ti]/.speedwmrc or \[ti]/.config/speedwm/speedwmrc.
|
|
|
|
Alternatively, you can also copy the values to your .Xresources file.
|
|
|
|
.PP
|
|
|
|
\&.speedwmrc or speedwm/speedwmrc will be loaded when speedwm restarts.
|
|
|
|
If you want to load a .Xresources file you\[cq]ll need to add that to
|
|
|
|
autostart.sh.
|
|
|
|
.PP
|
2022-11-25 20:38:44 +01:00
|
|
|
Colors do not reload automatically though, you must reload them
|
|
|
|
manually.
|
|
|
|
Use a signal for this (See list of signals above) or simply `libspeedwm
|
|
|
|
\[en]perform core_wm_reload'.
|
2022-12-14 10:47:33 +01:00
|
|
|
This won\[cq]t restart speedwm, but it will reload colors.
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
To use .Xresources, make sure `xrdb' is installed.
|
|
|
|
If a .xinitrc is used, add `xrdb /path/to/.Xresources/file' before
|
|
|
|
`speedwm'.
|
|
|
|
If a .Xresources file is not used, add it to
|
|
|
|
\[ti]/.config/speedwm/autostart.sh instead.
|
|
|
|
.PP
|
|
|
|
If you don\[cq]t want to define the options manually, there is an
|
|
|
|
example .Xresources file containing speedwm default settings in
|
|
|
|
docs/example.Xresources.
|
|
|
|
You can copy this somewhere or you can simply `< docs/example.Xresources
|
|
|
|
>> \[ti]/.Xresources' to append the speedwm options to your .Xresources
|
|
|
|
file.
|
|
|
|
.PP
|
|
|
|
The magic of .Xresources is that it is a universal configuration file.
|
|
|
|
While you \f[I]can\f[R] use the col.value values, you can also use
|
|
|
|
traditional colors 0 through 15 as well.
|
|
|
|
These colors take priority over regular speedwm colors.
|
|
|
|
This is so that speedwm is compatible with Pywal and more
|
|
|
|
general/mainstream .Xresources configurations.
|
|
|
|
.PP
|
|
|
|
Below is a list of all .Xresources values you can define.
|
|
|
|
.IP \[bu] 2
|
2023-01-20 22:22:36 +01:00
|
|
|
speedwm.bar.alpha: 1
|
|
|
|
.IP \[bu] 2
|
2022-12-18 19:56:50 +01:00
|
|
|
speedwm.bar.height: 3
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.position: 1
|
|
|
|
.IP \[bu] 2
|
2023-01-08 21:37:07 +01:00
|
|
|
speedwm.bar.paddingoh: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-08 21:37:07 +01:00
|
|
|
speedwm.bar.paddingov: 0
|
2022-12-18 19:56:50 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.paddingih: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.paddingiv: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide.tags: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide.emptytags: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide.floating: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide.layout: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide.sticky: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide.status: 0
|
|
|
|
.IP \[bu] 2
|
2022-12-26 22:45:39 +01:00
|
|
|
speedwm.bar.hide.systray: 1
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-21 22:00:47 +01:00
|
|
|
speedwm.bar.hide.unselected.title: 0
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
speedwm.bar.hide.title: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.hide.icon: 0
|
|
|
|
.IP \[bu] 2
|
2022-12-07 19:39:11 +01:00
|
|
|
speedwm.bar.hide.clientindicator: 0
|
|
|
|
.IP \[bu] 2
|
2023-01-08 21:37:07 +01:00
|
|
|
speedwm.inset.x: 0
|
2022-12-02 22:48:15 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-08 21:37:07 +01:00
|
|
|
speedwm.inset.y: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-08 21:37:07 +01:00
|
|
|
speedwm.inset.w: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.inset.h: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.titleposition: 1
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.border.size: 1
|
|
|
|
.IP \[bu] 2
|
2023-01-08 21:37:07 +01:00
|
|
|
speedwm.client.map: 1
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
speedwm.client.allowurgent: 1
|
|
|
|
.IP \[bu] 2
|
2022-11-26 14:14:44 +01:00
|
|
|
speedwm.client.automove: 1
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-11-26 14:14:44 +01:00
|
|
|
speedwm.client.autofocus: 1
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-11-26 14:14:44 +01:00
|
|
|
speedwm.client.autoresize: 1
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.client.decorhints: 1
|
|
|
|
.IP \[bu] 2
|
2022-11-30 18:18:22 +01:00
|
|
|
speedwm.client.hide.border: 0
|
|
|
|
.IP \[bu] 2
|
2022-12-26 22:24:02 +01:00
|
|
|
speedwm.client.hide.unselected.border: 1
|
2022-12-21 22:00:47 +01:00
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
speedwm.client.fade.inactive: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.client.fade.windows: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.client.floatscratchpad: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.client.savefloat: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.client.swallow: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.client.swallowfloating: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.client.wmclass: 1
|
|
|
|
.IP \[bu] 2
|
2022-12-18 19:56:50 +01:00
|
|
|
speedwm.fonts.font: NotoSans Regular 9
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.layout: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.layouttext: #000000
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status0: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status1: #bf616a
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status2: #A16F9D
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status3: #68ABAA
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status4: #A89F93
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status5: #D3A99B
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status6: #AFC9AC
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status7: #eae1cb
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status8: #a39d8e
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status9: #6D5E8E
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status10: #a16f9d
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status11: #d3a99b
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status12: #afc9ac
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status13: #eae1cb
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status14: #6d5e8e
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.status15: #ffffff
|
|
|
|
.IP \[bu] 2
|
2022-12-06 22:40:34 +01:00
|
|
|
speedwm.col.powerline0: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline1: #bf616a
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline2: #A16F9D
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline3: #68ABAA
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline4: #A89F93
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline5: #D3A99B
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline6: #AFC9AC
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline7: #eae1cb
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline0_text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline1_text: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline2_text: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline3_text: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline4_text: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline5_text: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline6_text: #131210
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.powerline7_text: #131210
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
speedwm.col.systray: #222222
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag1: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag2: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag3: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag4: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag5: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag6: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag7: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag8: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag9: #99b3ff
|
|
|
|
.IP \[bu] 2
|
2022-12-18 20:30:02 +01:00
|
|
|
speedwm.col.tag1.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag2.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag3.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag4.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag5.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag6.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag7.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tag8.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
speedwm.col.tag9.text: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.tagurgent: #f0e68c
|
|
|
|
.IP \[bu] 2
|
2022-12-18 20:30:02 +01:00
|
|
|
speedwm.col.background: #222222
|
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
speedwm.col.textnorm: #bbbbbb
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.textsel: #222222
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.titlenorm: #222222
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.titlesel: #99b3ff
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.titlehid: #222222
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.windowbordernorm: #000000
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.windowbordersel: #eeeeee
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.col.windowborderurg: #f0e68c
|
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag1.empty: \[uF8A5]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag2.empty: \[uF8A8]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag3.empty: \[uF8AB]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag4.empty: \[uF8AE]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag5.empty: \[uF8B1]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag6.empty: \[uF8B4]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag7.empty: \[uF8B7]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag8.empty: \[uF8BA]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag9.empty: \[uF8BD]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag1.used: \[uF8A3]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag2.used: \[uF8A6]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag3.used: \[uF8A9]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag4.used: \[uF8AC]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag5.used: \[uF8AF]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag6.used: \[uF8B2]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag7.used: \[uF8B5]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag8.used: \[uF8B8]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.tag9.used: \[uF8BB]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout1: \[uF330]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout2: \[uF331]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout3: \[uF332]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout4: \[uF333]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout5: \[uF334]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout6: \[uF335]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout7: \[uF336]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout8: \[uF337]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout9: \[uF338]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout10: \[uF339]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout11: \[uF33A]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout12: \[uF33B]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout13: \[uF33C]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout14: \[uF33D]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
speedwm.text.layout15: \[uF33E]
|
2022-12-15 22:14:27 +01:00
|
|
|
.IP \[bu] 2
|
2022-11-25 20:38:44 +01:00
|
|
|
speedwm.color.hiddentitle: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.color.layout: 0
|
|
|
|
.IP \[bu] 2
|
2022-12-18 20:30:02 +01:00
|
|
|
speedwm.color.selectedtitle: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.bar.powerline.tag.shape: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.fullscreen.hidebar: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.fullscreen.lockfullscreen: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.fullscreen.movefullscreenmon: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.gaps.enable: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.gaps.sizeih: 10
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.gaps.sizeiv: 10
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.gaps.sizeoh: 10
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.gaps.sizeov: 10
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.gaps.smartgaps: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.gaps.smartgapsize: 0
|
|
|
|
.IP \[bu] 2
|
2023-01-08 21:37:07 +01:00
|
|
|
speedwm.icon.size: 15
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.icon.spacing: 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.layout.deck.count: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.layout.deck.format: [%d]
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.layout.monocle.clientcount: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.layout.monocle.count: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.layout.monocle.format: [%d/%d]
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.mfact: 0.50
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.mfact.lowest: 0.05
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.mouse.clicktofocus: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.mouse.mfact: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.mouse.cfact: 1
|
|
|
|
.IP \[bu] 2
|
2022-11-26 14:14:44 +01:00
|
|
|
speedwm.rule.refresh: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.stack.attachdirection: 3
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.stack.centerfloating: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.stack.i3mcount: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.stack.mastercount: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.stack.snap: 20
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.status.defaultstatus:
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.switcher.maxheight: 200
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.switcher.maxwidth: 600
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.switcher.menupositionv: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.switcher.menupositionh: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.systray.padding: 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.systray.pinning: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.systray.position: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.pertag: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.preview: 1
|
|
|
|
.IP \[bu] 2
|
2022-12-06 22:40:34 +01:00
|
|
|
speedwm.tag.preview.bar: 1
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.preview.paddingh: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.preview.paddingv: 0
|
|
|
|
.IP \[bu] 2
|
2022-12-07 22:25:15 +01:00
|
|
|
speedwm.tag.preview.scale: 4
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-11-28 21:45:08 +01:00
|
|
|
speedwm.tag.resetgaps: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-11-28 21:45:08 +01:00
|
|
|
speedwm.tag.resetlayout: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-11-28 21:45:08 +01:00
|
|
|
speedwm.tag.resetmfact: 0
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.start: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.underline: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.underlineall: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.underlinepad: 5
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.underlinestroke: 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.underlinevoffset: 0
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tag.urgentwindows: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.tiling.resizehints: 0
|
|
|
|
.IP \[bu] 2
|
2022-11-26 14:14:44 +01:00
|
|
|
speedwm.run.shell: /bin/sh
|
2022-12-19 23:27:53 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.status.hideemptymodule: 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.status.leftpadding:
|
|
|
|
.IP \[bu] 2
|
|
|
|
speedwm.status.rightpadding:
|
|
|
|
.IP \[bu] 2
|
2023-01-24 22:34:12 +01:00
|
|
|
speedwm.status.separator:
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 8. Signals
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
Thanks to the `fsignal' patch available on suckless.org\[cq]s website,
|
|
|
|
we can easily write shell scripts to interact with dwm and therefore
|
|
|
|
speedwm.
|
|
|
|
I made some changes to this patch, because it has some..
|
|
|
|
questionable behaviour in my opinion.
|
|
|
|
.PP
|
|
|
|
To use signals, you can use libspeedwm.
|
|
|
|
Previously, speedwm-utils (part of speedwm-extras) would be used but
|
|
|
|
that now depends on libspeedwm anyway.
|
|
|
|
Using libspeedwm directly is the easiest option.
|
|
|
|
.PP
|
|
|
|
If you do not have speedwm-extras or libspeedwm, you can use the speedwm
|
|
|
|
binary itself.
|
|
|
|
The syntax is speedwm -s \[lq]#cmd:\[rq] This option is not as solid
|
|
|
|
though as signums can and will likely be moved around breaking your
|
|
|
|
scripts.
|
|
|
|
Therefore I highly recommend you use libspeedwm when writing scripts.
|
|
|
|
.PP
|
|
|
|
Below is a list of all signums and what they do.
|
|
|
|
.IP \[bu] 2
|
|
|
|
1 - Switch to the Tiling layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
2 - Switch to the Floating layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
3 - Switch to the Monocle layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
4 - Switch to the Grid layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
5 - Switch to the Deck layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
6 - Switch to the Centered Master layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
7 - Switch to the Tatami layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
8 - Switch to the Fibonacci Spiral layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
9 - Switch to the Fibonacci Dwindle layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
10 - Switch to the Bottom Stack Vertical layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
11 - Switch to the Bottom Stack Horizontal layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
12 - Switch to the Horizontal Grid layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
13 - Switch to the Dynamic Grid layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
14 - Switch to the Custom layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
15 - Custom layout options
|
|
|
|
.IP \[bu] 2
|
|
|
|
16 - Switch to the next layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
17 - Switch to the previous layout
|
|
|
|
.IP \[bu] 2
|
|
|
|
18 - Increase mfact by 0.05
|
|
|
|
.IP \[bu] 2
|
|
|
|
19 - Decrease mfact by 0.05
|
|
|
|
.IP \[bu] 2
|
|
|
|
20 - Toggle sticky
|
|
|
|
.IP \[bu] 2
|
|
|
|
21 - Toggle the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
22 - Toggle fullscreen
|
|
|
|
.IP \[bu] 2
|
|
|
|
23 - Toggle floating
|
|
|
|
.IP \[bu] 2
|
|
|
|
24 - Swap the current window with the next
|
|
|
|
.IP \[bu] 2
|
|
|
|
25 - Reorganize tags (Reorder them)
|
|
|
|
.IP \[bu] 2
|
|
|
|
26 - Shutdown speedwm
|
|
|
|
.IP \[bu] 2
|
|
|
|
27 - Restart speedwm
|
|
|
|
.IP \[bu] 2
|
|
|
|
28 - Show the focused window
|
|
|
|
.IP \[bu] 2
|
|
|
|
29 - Hide the focused window
|
|
|
|
.IP \[bu] 2
|
|
|
|
30 - Kill the focused window
|
|
|
|
.IP \[bu] 2
|
|
|
|
31 - Rotate the stack up
|
|
|
|
.IP \[bu] 2
|
|
|
|
32 - Rotate the stack down
|
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
33 - Increase number of windows in the master stack
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
34 - Decrease number of windows in the master stack
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
35 - Focus the Master window
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
36 - Switch focus between windows +1
|
|
|
|
.IP \[bu] 2
|
|
|
|
37 - Switch focus between windows -1
|
|
|
|
.IP \[bu] 2
|
|
|
|
38 - Switch focus between hidden windows +1
|
|
|
|
.IP \[bu] 2
|
|
|
|
39 - Switch focus between hidden windows -1
|
|
|
|
.IP \[bu] 2
|
|
|
|
40 - Toggle opacity for windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
41 - Increase cfact by 0.05
|
|
|
|
.IP \[bu] 2
|
|
|
|
42 - Decrease cfact by 0.05
|
|
|
|
.IP \[bu] 2
|
|
|
|
43 - Switch to the previous tag
|
|
|
|
.IP \[bu] 2
|
|
|
|
44 - Switch to the next tag
|
|
|
|
.IP \[bu] 2
|
|
|
|
45 - Reset gaps to the default size
|
|
|
|
.IP \[bu] 2
|
|
|
|
46 - Toggle gaps
|
|
|
|
.IP \[bu] 2
|
|
|
|
47 - Increase gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
48 - Decrease gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
49 - Increase inner gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
50 - Decrease inner gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
51 - Increase outer gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
52 - Decrease outer gaps by 1
|
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
53 - Kill all windows except focused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
54 - Focus the next monitor
|
|
|
|
.IP \[bu] 2
|
|
|
|
55 - Focus the previous monitor
|
|
|
|
.IP \[bu] 2
|
|
|
|
56 - Show the scratchpad
|
|
|
|
.IP \[bu] 2
|
|
|
|
57 - Hide the scratchpad
|
|
|
|
.IP \[bu] 2
|
|
|
|
58 - Remove the scratchpad
|
|
|
|
.IP \[bu] 2
|
|
|
|
59 - Reset layout/mfact
|
|
|
|
.IP \[bu] 2
|
|
|
|
60 - Reset mastercount
|
|
|
|
.IP \[bu] 2
|
2022-12-07 21:21:57 +01:00
|
|
|
61 - Toggle systray
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
62 - Hide all windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
63 - Show all windows
|
|
|
|
.IP \[bu] 2
|
|
|
|
64 - Reset mfact
|
|
|
|
.IP \[bu] 2
|
|
|
|
65 - Reload .Xresources on the fly
|
|
|
|
.IP \[bu] 2
|
|
|
|
66 - Switch to the previous tag, skipping empty tags
|
|
|
|
.IP \[bu] 2
|
|
|
|
67 - Switch to the next tag, skipping empty tags
|
|
|
|
.IP \[bu] 2
|
|
|
|
68 - Toggle the tag area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
69 - Toggle the empty tags in the bar
|
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
70 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
71 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
72 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
73 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
74 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
75 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
76 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
77 - Toggle the title area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
78 - Toggle the unselected title area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
79 - Toggle the layout area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
80 - Toggle the status area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
81 - Toggle the floating indicator area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
82 - Toggle the sticky indicator area in the bar
|
|
|
|
.IP \[bu] 2
|
|
|
|
83 - Toggle the icon in the window title
|
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
84 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
85 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 21:09:25 +01:00
|
|
|
86 - Unused
|
2022-11-25 20:38:44 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
87 - Increase bar height by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
88 - Decrease bar height by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
89 - Reset bar height
|
|
|
|
.IP \[bu] 2
|
|
|
|
90 - Increase vertical barpadding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
91 - Decrease vertical barpadding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
92 - Increase horizontal barpadding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
93 - Decrease horizontal barpadding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
94 - Increase vertical and horizontal barpadding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
95 - Decrease vertical and horizontal barpadding by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
96 - Toggle vertical barpadding
|
|
|
|
.IP \[bu] 2
|
|
|
|
97 - Toggle horizontal barpadding
|
|
|
|
.IP \[bu] 2
|
|
|
|
98 - Toggle vertical and horizontal barpadding
|
|
|
|
.IP \[bu] 2
|
|
|
|
99 - Reset vertical barpadding
|
|
|
|
.IP \[bu] 2
|
|
|
|
100 - Reset horizontal barpadding
|
|
|
|
.IP \[bu] 2
|
|
|
|
101 - Reset vertical and horizontal barpadding
|
|
|
|
.IP \[bu] 2
|
|
|
|
102 - Increase stack count by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
103 - Decrease stack count by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
104 - Rotate forward in the layout axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
105 - Rotate forward in the master axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
106 - Rotate forward in the stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
107 - Rotate forward in the secondary stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
108 - Rotate backwards in the layout axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
109 - Rotate backwards in the master axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
110 - Rotate backwards in the stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
111 - Rotate backwards in the secondary stack axis
|
|
|
|
.IP \[bu] 2
|
|
|
|
112 - Mirror the layout
|
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
113 - Enter an empty layout where all windows are hidden
|
2022-11-28 21:45:08 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
114 - Increase barpadding and gaps by 1
|
|
|
|
.IP \[bu] 2
|
|
|
|
115 - Decrease barpadding and gaps by 1
|
2022-11-30 18:56:25 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
116 - Toggle mark on a window.
|
2022-11-30 18:56:25 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
117 - Swap focus with the marked window.
|
2022-11-30 18:56:25 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-11 17:16:20 +01:00
|
|
|
118 - Swap the focused window with the marked window.
|
2022-12-07 21:09:25 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
119 - Center the focused window
|
2022-12-11 17:16:20 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
120 - Toggle border for the focused window
|
|
|
|
.IP \[bu] 2
|
2023-01-20 12:50:34 +01:00
|
|
|
121 - Reset bar padding and gaps
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 9. Status bar
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2022-11-27 12:19:31 +01:00
|
|
|
speedwm has a status bar.
|
2023-01-16 18:51:37 +01:00
|
|
|
It\[cq]s the (by default) right part of the bar.
|
|
|
|
It supports:
|
|
|
|
.IP \[bu] 2
|
|
|
|
Pango markup
|
|
|
|
.IP \[bu] 2
|
|
|
|
Colored glyphs
|
|
|
|
.PP
|
|
|
|
The regular (non-powerline) bar also supports:
|
|
|
|
.IP \[bu] 2
|
|
|
|
status2d markup
|
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
This allows you to color the status bar text at any time.
|
|
|
|
.RE
|
|
|
|
.IP \[bu] 2
|
|
|
|
statuscmd markup
|
|
|
|
.RS 2
|
|
|
|
.IP \[bu] 2
|
|
|
|
This allows the status bar to have clickable modules.
|
|
|
|
.RE
|
|
|
|
.PP
|
|
|
|
as well as regular plain text and colored emojis or glyphs.
|
|
|
|
To override this status, you can use the `speedwm -s \[lq]status
|
|
|
|
text\[rq]' command.
|
|
|
|
If you prefer, you can also use \f[V]xsetroot -name\f[R] which does the
|
|
|
|
same thing.
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2022-11-27 12:19:31 +01:00
|
|
|
Bundled with speedwm is a fork of dwmblocks.
|
|
|
|
dwmblocks is a dwm status bar that handles this all for you through a
|
|
|
|
block system.
|
|
|
|
This fork has been integrated into the Makefile and is (by default)
|
|
|
|
installed when speedwm is compiled.
|
2022-12-18 19:56:50 +01:00
|
|
|
The status bar can be configured in the status.c and status.h.
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2022-11-27 12:19:31 +01:00
|
|
|
By default the status bar runs modules that are also bundled with
|
|
|
|
speedwm (see modules/ directory).
|
|
|
|
To configure these modules, you can edit \[ti]/.config/speedwm/statusrc
|
|
|
|
which should be created when a module runs.
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2022-11-27 12:19:31 +01:00
|
|
|
The bundled status bar is autostarted by speedwm if it is installed.
|
|
|
|
If you want to use your own status bar, comment out `USESTATUS' in
|
|
|
|
toggle.mk and remove /usr/bin/status if speedwm has been installed
|
|
|
|
previously.
|
|
|
|
Then simply start the status bar through autostart.h,
|
2023-01-16 18:51:37 +01:00
|
|
|
\[ti]/.config/speedwm/autostart.sh, .xinitrc or some other means of
|
|
|
|
running a program.
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 10. Additional note on autostart
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
|
|
|
If you wish to add autostart entries without recompiling, consider using
|
|
|
|
$HOME/.config/speedwm/autostart.sh.
|
|
|
|
This is a path added to autostart.h and you can fill it with anything
|
|
|
|
you want.
|
2023-01-16 18:51:37 +01:00
|
|
|
Make sure your user has permission to execute the script.
|
2022-11-25 20:38:44 +01:00
|
|
|
.PP
|
2023-01-16 18:51:37 +01:00
|
|
|
Note that this script or any other commands in autostart.h will
|
|
|
|
\f[B]not\f[R] run when speedwm is restarted, only when speedwm is first
|
|
|
|
started.
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 11. Configuring the bar
|
2023-01-24 22:07:39 +01:00
|
|
|
.PP
|
|
|
|
As of 1.8, speedwm has a module system.
|
2023-01-25 16:29:53 +01:00
|
|
|
It is based on the \f[V]barmodules\f[R] patch for dwm and allows
|
|
|
|
extensive control over the way the speedwm bar functions.
|
2023-01-24 22:07:39 +01:00
|
|
|
This control has its own header, \f[V]bar.h\f[R].
|
|
|
|
.PP
|
|
|
|
\f[V]bar.h\f[R] contains a somewhat detailed list of all possible
|
|
|
|
options here, but more importantly it contains a \f[V]barrules\f[R]
|
|
|
|
array.
|
|
|
|
This array similar to the \f[V]rules\f[R] array allows extensive control
|
|
|
|
over where each bar module is placed and how it functions.
|
|
|
|
In theory, this means you could put 22 instances of the same, boring
|
|
|
|
tags on one bar, although why would one do that?
|
|
|
|
.PP
|
|
|
|
Each module can be aligned to any part of the bar (See `Alignment' for
|
|
|
|
possible values).
|
|
|
|
If, let\[cq]s say multiple modules both align to the right next to the
|
|
|
|
center split (middle), the first module takes priority.
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS BarRule structure
|
|
|
|
.IP "1." 3
|
|
|
|
Monitor Internally: \f[V]int monitor\f[R]
|
|
|
|
.IP "2." 3
|
|
|
|
Bar Internally: \f[V]int bar\f[R]
|
|
|
|
.IP "3." 3
|
|
|
|
Alignment Internally: \f[V]int alignment\f[R]
|
|
|
|
.IP "4." 3
|
|
|
|
Width function Internally:
|
|
|
|
\f[V]int (*widthfunc)(Bar *bar, BarWidthArg *a)\f[R]
|
|
|
|
.IP "5." 3
|
|
|
|
Draw function Internally:
|
|
|
|
\f[V]int (*drawfunc)(Bar *bar, BarDrawArg *a)\f[R]
|
|
|
|
.IP "6." 3
|
|
|
|
Click function Intenrally:
|
|
|
|
\f[V]int (*clickfunc)(Bar *bar, BarClickArg *a)\f[R]
|
|
|
|
.IP "7." 3
|
|
|
|
Name Internally: \f[V]char *name\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.SS Module list
|
|
|
|
.PP
|
|
|
|
Below is a list of all modules bundled with speedwm.
|
2023-01-25 16:29:53 +01:00
|
|
|
The source code for these modules are all in \f[V]bar/\f[R] and declared
|
|
|
|
in \f[V]bar/items.c\f[R] and \f[V]bar/items.h\f[R].
|
2023-01-24 22:07:39 +01:00
|
|
|
If you want to add more, you can just declare them in the same way and
|
2023-01-25 16:29:53 +01:00
|
|
|
add them to the \f[V]barrules\f[R] array if you want to use them.
|
2023-01-24 22:07:39 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
ltsymbol: Standard, basic layout icon.
|
|
|
|
.IP \[bu] 2
|
|
|
|
tags: Basic tags, without powerlines.
|
|
|
|
.IP \[bu] 2
|
|
|
|
tags_pwl: Tags with powerlines.
|
|
|
|
.IP \[bu] 2
|
|
|
|
systray: Basic X11 system tray.
|
|
|
|
.IP \[bu] 2
|
|
|
|
status_basic: Basic status bar.
|
|
|
|
.IP \[bu] 2
|
|
|
|
status: Clickable status bar with color support through status2d.
|
|
|
|
.IP \[bu] 2
|
|
|
|
status_pwl: Non-clickable status bar with powerlines.
|
|
|
|
It supports colors by cycling through colorschemes.
|
|
|
|
.IP \[bu] 2
|
|
|
|
title: Title, shows all windows, including hidden windows.
|
|
|
|
.IP \[bu] 2
|
|
|
|
title_basic: Basic title, shows focused window.
|
|
|
|
.SS Monitor
|
|
|
|
.PP
|
|
|
|
The monitor value allows you to specify which monitor the module should
|
|
|
|
be placed on.
|
|
|
|
In addition to this, you can also choose to only draw the module on the
|
|
|
|
focused monitor.
|
|
|
|
.PP
|
|
|
|
-1: Show the module on all monitors.
|
|
|
|
0: Show on the main monitor (monitor 0).
|
|
|
|
1: Show on monitor #1 (This can be any monitor you want).
|
|
|
|
.SS Bar
|
|
|
|
.PP
|
|
|
|
This value allows you to specify which bar the module is placed on.
|
|
|
|
speedwm supports two (0 and 1) bars.
|
|
|
|
0 is the main bar, which is by default placed at the top.
|
|
|
|
1 is the second bar which is only visible if modules actively use it.
|
|
|
|
If the main bar is placed on the top, the second bar is placed on the
|
|
|
|
bottom and vice versa.
|
|
|
|
.PP
|
|
|
|
0: Place the module on the main bar 1: Place the module on the extra bar
|
|
|
|
.SS Alignment
|
|
|
|
.PP
|
|
|
|
This value allows you to specify an alignment for the module in
|
|
|
|
question.
|
|
|
|
As previously mentioned, the first module takes priority if multiple
|
|
|
|
modules have the same alignment.
|
|
|
|
The `center split' refers to the middle of the bar, and that\[cq]s where
|
|
|
|
any free space/remainder of the screen ends up for other modules to use
|
|
|
|
if desired.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_left: Force the module to be placed on the left side of the
|
|
|
|
bar if possible.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_right: Force the module to be placed on the right side of the
|
|
|
|
bar if possible.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_center: Force the module to be placed in the center of the bar
|
|
|
|
if possible.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_left_left: Force the module to be placed on the left side of
|
|
|
|
the bar next to the center split.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_left_right: Force the module to be placed on the right side of
|
|
|
|
the bar next to the center split.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_left_center: Force the module to be placed on the center in
|
|
|
|
the middle of the remaining space left of the center split on the left..
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_right_left: Force the module to be placed on the left side of
|
|
|
|
the bar next to the center split.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_right_right: Force the module to be placed on the right side
|
|
|
|
of the bar next to the center split.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_right_center: Force the module to be placed on the center in
|
|
|
|
the middle of the remaining space left of the center split on the right.
|
|
|
|
.IP \[bu] 2
|
|
|
|
bar_align_none: No specific alignment.
|
|
|
|
This will give the module the remaining space.
|
|
|
|
.SS Width
|
|
|
|
.PP
|
|
|
|
`Width' refers to the function to call which returns the width of a
|
|
|
|
module.
|
|
|
|
The syntax below applies to all default modules.
|
|
|
|
.PP
|
|
|
|
Syntax: width_ Example: width_tags_pwl
|
|
|
|
.SS Draw
|
|
|
|
.PP
|
|
|
|
`Draw' refers to the function to call which draws the module on the bar.
|
|
|
|
The syntax below applies to all default modules.
|
|
|
|
.PP
|
|
|
|
Syntax: draw_ Example: draw_tags_pwl
|
|
|
|
.SS Click
|
|
|
|
.PP
|
|
|
|
`Click' refers to the function to call which checks if you clicked on
|
|
|
|
said module.
|
|
|
|
The syntax below applies to all default modules.
|
|
|
|
.PP
|
|
|
|
Syntax: click_ Example: click_tags_pwl
|
|
|
|
.SS Module name
|
|
|
|
.PP
|
|
|
|
The module name really doesn\[cq]t mean anything at all, it is just
|
|
|
|
useful for debugging.
|
|
|
|
.SS Example module
|
|
|
|
.PP
|
|
|
|
With all that said, you should now be able to add a module.
|
|
|
|
In case you weren\[cq]t able to follow along, here is an example of how
|
|
|
|
you can add powerline tags on the focused monitor.
|
|
|
|
.IP "1." 3
|
2023-01-25 16:29:53 +01:00
|
|
|
\f[V]{ \[aq]A\[aq],\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.IP "2." 3
|
2023-01-25 16:29:53 +01:00
|
|
|
\f[V]0,\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.IP "3." 3
|
2023-01-25 16:29:53 +01:00
|
|
|
\f[V]bar_align_left,\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.IP "4." 3
|
2023-01-25 16:29:53 +01:00
|
|
|
\f[V]width_tags_pwl,\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.IP "5." 3
|
2023-01-25 16:29:53 +01:00
|
|
|
\f[V]draw_tags_pwl,\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.IP "6." 3
|
2023-01-25 16:29:53 +01:00
|
|
|
\f[V]click_tags_pwl,\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.IP "7." 3
|
2023-01-25 16:29:53 +01:00
|
|
|
\f[V]\[dq]my cool powerline tags\[dq] },\f[R]
|
|
|
|
.PP
|
|
|
|
Combined into one line:
|
|
|
|
\f[V]{ \[aq]A\[aq], 0, bar_align_left, width-tags_pwl, draw_tags_pwl, click_tags_pwl, \[dq]my cool powerline tags\[dq] },\f[R]
|
2023-01-24 22:07:39 +01:00
|
|
|
.PP
|
|
|
|
Let\[cq]s break down the above.
|
|
|
|
.IP "1." 3
|
|
|
|
`A' here refers to the focused monitor, indicating that we want to place
|
|
|
|
it on the focused monitor.
|
|
|
|
.IP "2." 3
|
|
|
|
0 here means we want to place it on the primary bar.
|
|
|
|
.IP "3." 3
|
|
|
|
bar_align_left indicates we want to align it to the left part of the
|
|
|
|
bar, you know, where tags usually are.
|
|
|
|
.IP "4." 3
|
|
|
|
width_tags_pwl is the function we call to get the width.
|
|
|
|
.IP "5." 3
|
|
|
|
draw_tags_pwl is the function we call to draw the bar.
|
|
|
|
.IP "6." 3
|
|
|
|
click_tags_pwl is the function we call to check if we clicked on that
|
|
|
|
module.
|
|
|
|
.IP "7." 3
|
|
|
|
A label for our module, it\[cq]s only useful for debugging.
|
|
|
|
.PP
|
2023-01-25 16:29:53 +01:00
|
|
|
Feel free to copy the above to \f[V]bar.h\f[R] if you want to experiment
|
|
|
|
with it.
|
2023-01-24 22:07:39 +01:00
|
|
|
Remember that you can have put any module wherever you want.
|
|
|
|
Nothing is stopping you from having your tags on the right.
|
|
|
|
This is what makes bar rules so powerful.
|
2023-01-25 16:29:53 +01:00
|
|
|
.SS 12. Keybinds
|
|
|
|
.PP
|
|
|
|
Like the bar array mentioned previously, there is a \f[V]Key keys\f[R]
|
|
|
|
array in \f[V]keybinds.h\f[R] which contains all keybinds speedwm will
|
|
|
|
recognize.
|
|
|
|
While this isn\[cq]t the only way to add keybinds in speedwm, it does
|
|
|
|
not require any additional software to be installed.
|
|
|
|
.SS Key structure
|
|
|
|
.IP "1." 3
|
|
|
|
Event Internally: \f[V]int type\f[R]
|
|
|
|
.IP "2." 3
|
|
|
|
Modifier Internally: \f[V]unsigned int mod\f[R]
|
|
|
|
.IP "3." 3
|
|
|
|
Chain key Internally: \f[V]KeySym chain\f[R]
|
|
|
|
.IP "4." 3
|
|
|
|
Key Internally: \f[V]KeySym keysym\f[R]
|
|
|
|
.IP "5." 3
|
|
|
|
Function Internally: \f[V]void (*func)(const Arg *)\f[R]
|
|
|
|
.IP "6." 3
|
|
|
|
Function arguments Internally: \f[V]const Arg arg\f[R]
|
|
|
|
.SS Event
|
|
|
|
.PP
|
|
|
|
The event value allow you to specify when a keybind is executed.
|
|
|
|
Internally this is known as \f[V]int type\f[R] and it specifies when the
|
|
|
|
function is executed.
|
|
|
|
.IP \[bu] 2
|
|
|
|
KeyPress: Activate immediately on key press.
|
|
|
|
.IP \[bu] 2
|
|
|
|
KeyRelease: Activate immediately on key release.
|
|
|
|
.SS Modifier
|
|
|
|
.PP
|
|
|
|
There are a lot of different modifiers, this list is only going to list
|
|
|
|
the ones declared in speedwm.
|
|
|
|
You can, of course declare more if necessary although it should be noted
|
|
|
|
that doing so is out of the scope of this documentation.
|
|
|
|
We will be focusing on the defined modifiers which are defined in
|
|
|
|
\f[V]speedwm.c\f[R] like this:
|
|
|
|
.PP
|
|
|
|
\f[V]/* Modifiers */ #define CONTROL ControlMask #define SHIFT ShiftMask #define ALT Mod1Mask #define ALTR Mod3Mask #define SUPER Mod4Mask #define SUPERR Mod5Mask\f[R]
|
|
|
|
.PP
|
|
|
|
Below is a list of defined modifiers:
|
|
|
|
.IP \[bu] 2
|
|
|
|
CONTROL Left Control (Ctrl) key.
|
|
|
|
.IP \[bu] 2
|
|
|
|
SHIFT Left Shift key.
|
|
|
|
.IP \[bu] 2
|
|
|
|
ALT Left Alt key.
|
|
|
|
.IP \[bu] 2
|
|
|
|
SUPER Left Super (Windows) key.
|
|
|
|
.IP \[bu] 2
|
|
|
|
SUPERR Right Super (Windows) key.
|
|
|
|
.PP
|
|
|
|
In keybinds.h, MODIFIER1 and MODIFIER2 are also defined.
|
|
|
|
MODIFIER1 is defined in order to make modifying keybinds easier.
|
|
|
|
MODIFIER1 is by default defined as SUPER or Mod4Mask.
|
|
|
|
For instance, if you want to use MODIFIER1 as your modifier,
|
|
|
|
\f[V]MODIFIER1\f[R] would be the right value here.
|
|
|
|
.PP
|
|
|
|
Do note that you can may use multiple modifiers.
|
|
|
|
Do this by adding two or more modifiers separated by a pipe
|
|
|
|
(MODIFIER1|SHIFT)
|
|
|
|
.SS Chain key
|
|
|
|
.PP
|
|
|
|
This value \f[I]is\f[R] mandatory, but it does not have to be used.
|
|
|
|
speedwm has supported chained keybinds since 0.4.
|
|
|
|
Chained keybinds allow more keybinds as like the name implies, the user
|
|
|
|
has to press multiple keys to activate it.
|
|
|
|
You can think of it as in Vim where there\[cq]s different modes.
|
|
|
|
.PP
|
|
|
|
The first key that needs to be pressed to activate a chain needs to be
|
|
|
|
the key specified here.
|
|
|
|
In order to see a list of possible keys, see
|
|
|
|
\f[V]/usr/include/X11/keysymdef.h\f[R].
|
|
|
|
If, let\[cq]s say we want to use simply the letter \f[V]a\f[R] as the
|
|
|
|
key to start a chain, the value here would be \f[V]XK_a\f[R].
|
|
|
|
.PP
|
|
|
|
If we want a normal key, one that is \f[B]not\f[R] chained, we can
|
|
|
|
accomplish that by simply setting the Chain key to \f[V]-1\f[R].
|
|
|
|
You can see this in the \f[V]keypress()\f[R] function in
|
|
|
|
\f[V]speedwm.c\f[R].
|
|
|
|
This line of code is responsible for this behavior.
|
|
|
|
.PP
|
|
|
|
\f[V]if (keysym == keys[i].keysym && keys[i].chain == -1\f[R]
|
|
|
|
.SS Key
|
|
|
|
.PP
|
|
|
|
The next value, similar to the Chain key also needs to be a keysym.
|
|
|
|
If the key is a chained key, this is the second key that needs to be
|
|
|
|
pressed.
|
|
|
|
If it isn\[cq]t a chained key, this is the key that needs to be pressed
|
|
|
|
while the Modifier is pressed.
|
|
|
|
.PP
|
|
|
|
In order to see a list of possible keys, see
|
|
|
|
\f[V]/usr/include/X11/keysymdef.h\f[R].
|
|
|
|
Note that this path may differ depending on your operating system.
|
|
|
|
.PP
|
|
|
|
There are a lot more keys technically defined, see
|
|
|
|
\f[V]/usr/include/X11/XF86keysym.h\f[R] for a list of media keys.
|
|
|
|
.SS Function
|
|
|
|
.PP
|
|
|
|
Many functions expect \f[V]const Arg *arg\f[R] to be passed to them.
|
|
|
|
However this value does require any function argument to be specified
|
|
|
|
because it simply passes the next value to the function and calls it.
|
|
|
|
.PP
|
|
|
|
There is no list of functions, but \f[V]speedwm.c\f[R] has a lot of
|
|
|
|
declared functions which you may use in keybinds provided the function
|
|
|
|
expects \f[V]const Arg *arg\f[R].
|
|
|
|
.SS Function arguments
|
|
|
|
.PP
|
|
|
|
This is the actual argument passed to the function we\[cq]re calling
|
|
|
|
when the keybind is activated.
|
|
|
|
Explaining this well would be fairly simple, but instead of doing so I
|
|
|
|
recommend you read the \f[V]typedef union Arg\f[R] in
|
|
|
|
\f[V]speedwm.c\f[R].
|
|
|
|
It looks like this:
|
|
|
|
.PP
|
|
|
|
\f[V]typedef union { long i; unsigned long ui; float f; const void *v; } Arg;\f[R]
|
|
|
|
.PP
|
|
|
|
In short, Arg is a list of different types, which may be used to set
|
|
|
|
different things in the argument.
|
|
|
|
Passing a float (such as mfact) through would mean I should override
|
|
|
|
\f[V].f\f[R], passing an integer (such as barposition) through would
|
|
|
|
mean I should override \f[V].i\f[R].
|
|
|
|
There\[cq]s also \f[V].v\f[R] for \f[V]void\f[R] and \f[V].ui\f[R] for
|
|
|
|
tags.
|
|
|
|
This is not used unless you want to mess with tag keybinds.
|
|
|
|
.PP
|
|
|
|
When you don\[cq]t care about the value given to the function, you may
|
|
|
|
simply enter a \f[V]0\f[R].
|
|
|
|
.SS Example keybind
|
|
|
|
.PP
|
|
|
|
With all that said, you probably get the idea of how it works.
|
|
|
|
But you still don\[cq]t know how to put all this knowledge together.
|
|
|
|
.IP "1." 3
|
|
|
|
\f[V]{ KeyPress,\f[R]
|
|
|
|
.IP "2." 3
|
|
|
|
\f[V]MODIFIER1|SHIFT,\f[R]
|
|
|
|
.IP "3." 3
|
|
|
|
\f[V]-1,\f[R]
|
|
|
|
.IP "4." 3
|
|
|
|
\f[V]XK_w,\f[R]
|
|
|
|
.IP "5." 3
|
|
|
|
\f[V]spawn,\f[R]
|
|
|
|
.IP "6." 3
|
|
|
|
\f[V]cmd( \[dq]firefox\[dq] ) },\f[R]
|
|
|
|
.PP
|
|
|
|
Combined into one line:
|
|
|
|
\f[V]{ KeyPress, MODIFIER1|SHIFT, -1, XK_w, spawn, cmd( \[dq]firefox\[dq] ) },\f[R]
|
|
|
|
.PP
|
|
|
|
Let\[cq]s break down the above.
|
|
|
|
.IP "1." 3
|
|
|
|
This is our type.
|
|
|
|
If it\[cq]s \f[V]KeyPress\f[R], it will be activated when the keybind is
|
|
|
|
pressed.
|
|
|
|
If it is \f[V]KeyRelease\f[R] it will be activated when the keybind is
|
|
|
|
released.
|
|
|
|
.IP "2." 3
|
|
|
|
This is our modifier.
|
|
|
|
\f[V]MODIFIER1\f[R] is defined in \f[V]keybinds.h\f[R].
|
|
|
|
We\[cq]re adding SHIFT to it, (defined in \f[V]speedwm.c\f[R]) which
|
|
|
|
means we have to press BOTH \f[V]MODIFIER1\f[R] and \f[V]SHIFT\f[R] at
|
|
|
|
the same time to activate this keybind.
|
|
|
|
.IP "3." 3
|
|
|
|
This is our \f[B]chain\f[R] key.
|
|
|
|
\f[V]-1\f[R] here indicates that we do not want it to be chained.
|
|
|
|
We want a regular keybind.
|
|
|
|
See the example below for an example \f[I]with\f[R] a chained keybind
|
|
|
|
instead.
|
|
|
|
.IP "4." 3
|
|
|
|
This is our regular key.
|
|
|
|
\f[V]XK_w\f[R] is defined in \f[V]/usr/include/X11/keysymdef.h\f[R] on
|
|
|
|
most operating systems and it means we have to press \f[V]w\f[R] on our
|
|
|
|
keyboard along with the modifier to activate this keybind.
|
|
|
|
.IP "5." 3
|
|
|
|
This is our function.
|
|
|
|
We call this, passing the next value (\f[V]const Arg *arg\f[R]) to it.
|
|
|
|
.IP "6." 3
|
|
|
|
This is our function argument.
|
|
|
|
Do note that in this case \f[V]cmd()\f[R] is a macro and it is defined
|
|
|
|
in \f[V]speedwm.c\f[R].
|
|
|
|
This macro will pass the contents of the macro to a shell it will spawn.
|
|
|
|
.PP
|
|
|
|
Feel free to copy the above to \f[V]keybinds.h\f[R] if you want to
|
|
|
|
experiment with it.
|
|
|
|
.SS Example chained keybind
|
|
|
|
.IP "1." 3
|
|
|
|
\f[V]{ KeyPress,\f[R]
|
|
|
|
.IP "2." 3
|
|
|
|
\f[V]MODIFIER1|SHIFT,\f[R]
|
|
|
|
.IP "3." 3
|
|
|
|
\f[V]XK_a,\f[R]
|
|
|
|
.IP "4." 3
|
|
|
|
\f[V]XK_w,\f[R]
|
|
|
|
.IP "5." 3
|
|
|
|
\f[V]togglebar,\f[R]
|
|
|
|
.IP "6." 3
|
|
|
|
\f[V]{0} },\f[R]
|
|
|
|
.PP
|
|
|
|
Combined into one line:
|
|
|
|
\f[V]{ KeyPress, MODIFIER1|SHIFT, XK_a, XK_w, togglebar, {0} },\f[R]
|
|
|
|
.PP
|
|
|
|
Let\[cq]s break down the above.
|
|
|
|
.IP "1." 3
|
|
|
|
This is our type.
|
|
|
|
If it\[cq]s \f[V]KeyPress\f[R], it will be activated when the keybind is
|
|
|
|
pressed.
|
|
|
|
If it is \f[V]KeyRelease\f[R] it will be activated when the keybind is
|
|
|
|
released.
|
|
|
|
.IP "2." 3
|
|
|
|
This is our modifier.
|
|
|
|
\f[V]MODIFIER1\f[R] is defined in \f[V]keybinds.h\f[R].
|
|
|
|
We\[cq]re adding SHIFT to it, (defined in \f[V]speedwm.c\f[R]) which
|
|
|
|
means we have to press BOTH \f[V]MODIFIER1\f[R] and \f[V]SHIFT\f[R] at
|
|
|
|
the same time to activate this keybind.
|
|
|
|
.IP "3." 3
|
|
|
|
This is our \f[B]chain\f[R] key.
|
|
|
|
\f[V]XK_a\f[R] here is the key we have to press along with our modifier
|
|
|
|
to activate this keybind.
|
|
|
|
\f[V]XK_a\f[R] is defined in \f[V]/usr/include/X11/keysymdef.h\f[R] on
|
|
|
|
most operating systems.
|
|
|
|
.IP "4." 3
|
|
|
|
This is our regular key.
|
|
|
|
\f[V]XK_w\f[R] is defined in \f[V]/usr/include/X11/keysymdef.h\f[R] on
|
|
|
|
most operating systems and it means we have to press \f[V]w\f[R] on our
|
|
|
|
keyboard to activate this keybind.
|
|
|
|
Note that we do \f[B]not\f[R] need to press the modifier here, because
|
|
|
|
it is a chained keybind.
|
|
|
|
.IP "5." 3
|
|
|
|
This is our function.
|
|
|
|
We call this, passing the next value (\f[V]const Arg *arg\f[R]) to it.
|
|
|
|
.IP "6." 3
|
|
|
|
This is our function argument.
|
|
|
|
We simply pass \f[V]0\f[R] here because we don\[cq]t need to pass
|
|
|
|
anything to the function, because the function does not care.
|
|
|
|
.PP
|
|
|
|
Feel free to copy the above to \f[V]keybinds.h\f[R] if you want to
|
|
|
|
experiment with it.
|
|
|
|
.PP
|
|
|
|
This should give you a brief idea of how keybinds work in speedwm.
|
|
|
|
Most of this carries over to \f[V]dwm\f[R] as well, although it does not
|
|
|
|
have some of this stuff.
|
|
|
|
It should be noted that as I mentioned previously, you don\[cq]t HAVE to
|
|
|
|
use this system.
|
|
|
|
You can use external programs to handle keybinds, and
|
|
|
|
\f[V]libspeedwm\f[R] to perform actions in speedwm.
|
|
|
|
sxkbd is one popular program for this purpose and window managers like
|
|
|
|
\f[V]bspwm\f[R] use it.
|
|
|
|
However such a solution is out of the scope of this documentation!
|
2023-01-24 22:07:39 +01:00
|
|
|
.SS Credits
|
2022-12-06 22:40:34 +01:00
|
|
|
.PP
|
|
|
|
I far from wrote this entire project myself.
|
|
|
|
Below are people who made this project what it is through submitting
|
2022-12-07 19:44:41 +01:00
|
|
|
patches to suckless or otherwise contributing code in some way in
|
|
|
|
alphabetical order.
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Adam Yuan
|
|
|
|
.IP \[bu] 2
|
|
|
|
Alex Cole
|
|
|
|
.IP \[bu] 2
|
|
|
|
Anukul Adhikari
|
|
|
|
.IP \[bu] 2
|
|
|
|
Ayoub Khater
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:39:11 +01:00
|
|
|
bakkeby
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
bit6tream
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
cd
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Chris Down
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Chris Noxz
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Daniel Bylinka
|
|
|
|
.IP \[bu] 2
|
|
|
|
Dhaval Patel
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
|
|
|
Eon S.
|
2022-12-07 19:39:11 +01:00
|
|
|
Jeon
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
explosion-mental
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Fabian Blatz
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Finn Rayment
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Georgios Oxinos
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Ivan J.
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Jan Christoph Ebersbach
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Jared
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
kleinbottle4
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Luigi Foscari
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Luke Smith
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Marius Iacob
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:39:11 +01:00
|
|
|
Markus Teich
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Mihir Lad
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
MLquest8
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
Ond\[u0159]ej Grover
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
ornx
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Patrick Steinhardt
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:39:11 +01:00
|
|
|
phi
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:39:11 +01:00
|
|
|
prx
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Rob King
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Ryan Roden-Corrent
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
sipi
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
S\[:o]nke Lambert
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
speedie
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Stefan Mark
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Stefan Matz
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
suckless.org
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2022-12-07 19:44:41 +01:00
|
|
|
Timmy Keller
|
2022-12-06 22:40:34 +01:00
|
|
|
.IP \[bu] 2
|
2023-01-25 16:29:53 +01:00
|
|
|
Viliam Kov\['a]\[u010D]
|
2022-12-06 22:40:34 +01:00
|
|
|
.PP
|
|
|
|
See Codeberg contributions for more information.
|