1681 lines
44 KiB
Groff
1681 lines
44 KiB
Groff
.\" Automatically generated by Pandoc 3.0
|
|
.\"
|
|
.\" 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
|
|
.\}
|
|
.TH "speedwm" "1" "" "1.9" "speedie\[cq]s window manager."
|
|
.hy
|
|
.SH speedwm
|
|
.SS 1. What is speedwm?
|
|
.PP
|
|
speedwm is a window manager forked from dwm or dynamic window manager.
|
|
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
|
|
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.
|
|
.SS 2. Installation
|
|
.PP
|
|
In order to install this build of speedwm, all dependencies must be
|
|
installed.
|
|
You can see `Dependencies' for a list of all dependencies required and
|
|
optionally recommended to use speedwm.
|
|
.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
|
|
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].
|
|
.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
|
|
.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.
|
|
.SS 3. Layouts
|
|
.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
|
|
.IP \[bu] 2
|
|
Empty
|
|
.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.
|
|
.SS 4. Keybinds
|
|
.PP
|
|
This is a full list of keybinds.
|
|
Please let me know if any keybinds are missing as these have been
|
|
manually added.
|
|
.SS Keybinds for regular applications
|
|
.IP \[bu] 2
|
|
Super+Shift+Enter - Opens the defined terminal (default is st)
|
|
.IP \[bu] 2
|
|
Super+Shift+Colon - Opens an spmenu prompt
|
|
.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
|
|
Super+Shift+o - Opens the speedwm-dfmpeg spmenu script to record your
|
|
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+d - Opens iron in the terminal if it is installed
|
|
.IP \[bu] 2
|
|
Super+Shift+u - Opens the defined RSS reader
|
|
.IP \[bu] 2
|
|
Super+Shift+r - Opens the defined email client
|
|
.SS These keybinds are for navigating speedwm
|
|
.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
|
|
Super+Colon - Open a list of desktop entries in spmenu
|
|
.IP \[bu] 2
|
|
Super+Tab - Switch between windows on the same tag.
|
|
(Microsoft Windows-like Alt+Tab)
|
|
.IP \[bu] 2
|
|
Super+v - Center the focused window.
|
|
.IP \[bu] 2
|
|
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
|
|
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
|
|
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
|
|
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
|
|
Super+Shift+\ - Kill all clients except focused.
|
|
.IP \[bu] 2
|
|
Super+Shift+.
|
|
- Increase bar padding and gaps by 1
|
|
.IP \[bu] 2
|
|
Super+Shift+, - Decrease bar padding and gaps by 1
|
|
.IP \[bu] 2
|
|
Super+Shift+/ - Reset bar padding and gaps
|
|
.IP \[bu] 2
|
|
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
|
|
Super+Control+Tab - Open a spmenu prompt asking the user what layout to
|
|
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
|
|
.SS Chained keybinds
|
|
.IP \[bu] 2
|
|
Super+r & s - Run screenkey if its not running, otherwise kill it.
|
|
.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
|
|
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
|
|
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
|
|
.SS These will only work if your keyboard has special multimedia buttons.
|
|
.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)
|
|
.SS These binds can be activated using your mouse
|
|
.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
|
|
Layout indicator (Right click) - Switch to the previous layout
|
|
.IP \[bu] 2
|
|
Layout indicator (Middle click) - Open an spmenu list of all layouts
|
|
(requires speedwm-extras)
|
|
.IP \[bu] 2
|
|
Layout indicator (Scrolling up/down) - Switch to the next/previous
|
|
layout
|
|
.IP \[bu] 2
|
|
Window title (Left click) - Show/hide the window
|
|
.IP \[bu] 2
|
|
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)
|
|
.SS Dependencies
|
|
.SS Required
|
|
.PP
|
|
These are absolutely necessary, speedwm will NOT compile without them -
|
|
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).
|
|
.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
|
|
spmenu (https://codeberg.org/speedie/spmenu)
|
|
.RS 2
|
|
.IP \[bu] 2
|
|
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
|
|
.RE
|
|
.IP \[bu] 2
|
|
xrdb
|
|
.RS 2
|
|
.IP \[bu] 2
|
|
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.
|
|
.RE
|
|
.SS Software
|
|
.PP
|
|
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].
|
|
.IP \[bu] 2
|
|
libspeedwm
|
|
.RS 2
|
|
.IP \[bu] 2
|
|
Dependency for speedwm-extras allowing you to perform actions
|
|
externally.
|
|
.RE
|
|
.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
|
|
st - Default terminal
|
|
.IP \[bu] 2
|
|
Chromium - Default web browser
|
|
.IP \[bu] 2
|
|
htop - Status monitor
|
|
.IP \[bu] 2
|
|
sfeed - RSS reader
|
|
.IP \[bu] 2
|
|
rssread - RSS frontend
|
|
.IP \[bu] 2
|
|
cmus - Music player
|
|
.RS 2
|
|
.IP \[bu] 2
|
|
Default status bar also has support for moc/mocp (Music On Console)
|
|
.RE
|
|
.IP \[bu] 2
|
|
neovim - Text editor
|
|
.IP \[bu] 2
|
|
neomutt - Email client
|
|
.IP \[bu] 2
|
|
lf - File manager
|
|
.IP \[bu] 2
|
|
slock - Lock screen
|
|
.IP \[bu] 2
|
|
weechat - IRC client
|
|
.IP \[bu] 2
|
|
tmux - Used for the music player and IRC client
|
|
.IP \[bu] 2
|
|
j4-dmenu-desktop - Listing .desktop entries
|
|
.PP
|
|
And everything under \f[V]Features\f[R].
|
|
.SS 5. Important
|
|
.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
|
|
status.h for adding/removing status modules and aadding/removing
|
|
statuscmd clicks.
|
|
.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).
|
|
.SS 6. Configuration and .Xresources
|
|
.PP
|
|
speedwm has .Xresources support thanks to the .Xresources patch.
|
|
It also has pywal support (tool which grabs colors based on your
|
|
wallpaper).
|
|
.PP
|
|
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
|
|
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'.
|
|
This won\[cq]t restart speedwm, but it will reload colors.
|
|
.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
|
|
speedwm.bar.alpha: 1
|
|
.IP \[bu] 2
|
|
speedwm.bar.height: 3
|
|
.IP \[bu] 2
|
|
speedwm.bar.position: 1
|
|
.IP \[bu] 2
|
|
speedwm.bar.paddingoh: 0
|
|
.IP \[bu] 2
|
|
speedwm.bar.paddingov: 0
|
|
.IP \[bu] 2
|
|
speedwm.bar.paddingih: 0
|
|
.IP \[bu] 2
|
|
speedwm.bar.paddingiv: 0
|
|
.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
|
|
speedwm.bar.hide.systray: 1
|
|
.IP \[bu] 2
|
|
speedwm.bar.hide.unselected.title: 0
|
|
.IP \[bu] 2
|
|
speedwm.bar.hide.title: 0
|
|
.IP \[bu] 2
|
|
speedwm.bar.hide.icon: 0
|
|
.IP \[bu] 2
|
|
speedwm.bar.hide.clientindicator: 0
|
|
.IP \[bu] 2
|
|
speedwm.inset.x: 0
|
|
.IP \[bu] 2
|
|
speedwm.inset.y: 0
|
|
.IP \[bu] 2
|
|
speedwm.inset.w: 0
|
|
.IP \[bu] 2
|
|
speedwm.inset.h: 0
|
|
.IP \[bu] 2
|
|
speedwm.bar.titleposition: 1
|
|
.IP \[bu] 2
|
|
speedwm.border.size: 1
|
|
.IP \[bu] 2
|
|
speedwm.client.map: 1
|
|
.IP \[bu] 2
|
|
speedwm.client.allowurgent: 1
|
|
.IP \[bu] 2
|
|
speedwm.client.automove: 1
|
|
.IP \[bu] 2
|
|
speedwm.client.autofocus: 1
|
|
.IP \[bu] 2
|
|
speedwm.client.autoresize: 1
|
|
.IP \[bu] 2
|
|
speedwm.client.decorhints: 1
|
|
.IP \[bu] 2
|
|
speedwm.client.hide.border: 0
|
|
.IP \[bu] 2
|
|
speedwm.client.hide.unselected.border: 1
|
|
.IP \[bu] 2
|
|
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
|
|
speedwm.fonts.font: NotoSans Regular 9
|
|
.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
|
|
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
|
|
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
|
|
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
|
|
speedwm.col.tag9.text: #eeeeee
|
|
.IP \[bu] 2
|
|
speedwm.col.tagurgent: #f0e68c
|
|
.IP \[bu] 2
|
|
speedwm.col.background: #222222
|
|
.IP \[bu] 2
|
|
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
|
|
speedwm.text.tag1.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag2.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag3.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag4.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag5.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag6.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag7.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag8.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag9.empty:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag1.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag2.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag3.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag4.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag5.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag6.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag7.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag8.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.tag9.used:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout1:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout2:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout3:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout4:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout5:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout6:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout7:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout8:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout9:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout10:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout11:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout12:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout13:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout14:
|
|
.IP \[bu] 2
|
|
speedwm.text.layout15:
|
|
.IP \[bu] 2
|
|
speedwm.color.hiddentitle: 1
|
|
.IP \[bu] 2
|
|
speedwm.color.layout: 0
|
|
.IP \[bu] 2
|
|
speedwm.color.selectedtitle: 0
|
|
.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
|
|
speedwm.icon.size: 15
|
|
.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
|
|
speedwm.rule.refresh: 0
|
|
.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
|
|
speedwm.tag.preview.bar: 1
|
|
.IP \[bu] 2
|
|
speedwm.tag.preview.paddingh: 0
|
|
.IP \[bu] 2
|
|
speedwm.tag.preview.paddingv: 0
|
|
.IP \[bu] 2
|
|
speedwm.tag.preview.scale: 4
|
|
.IP \[bu] 2
|
|
speedwm.tag.resetgaps: 0
|
|
.IP \[bu] 2
|
|
speedwm.tag.resetlayout: 0
|
|
.IP \[bu] 2
|
|
speedwm.tag.resetmfact: 0
|
|
.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
|
|
speedwm.run.shell: /bin/sh
|
|
.IP \[bu] 2
|
|
speedwm.status.hideemptymodule: 1
|
|
.IP \[bu] 2
|
|
speedwm.status.leftpadding:
|
|
.IP \[bu] 2
|
|
speedwm.status.rightpadding:
|
|
.IP \[bu] 2
|
|
speedwm.status.separator:
|
|
.SS 7. Signals
|
|
.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
|
|
33 - Increase number of windows in the master stack
|
|
.IP \[bu] 2
|
|
34 - Decrease number of windows in the master stack
|
|
.IP \[bu] 2
|
|
35 - Focus the Master window
|
|
.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
|
|
53 - Kill all windows except focused
|
|
.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
|
|
61 - Toggle systray
|
|
.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
|
|
70 - Unused
|
|
.IP \[bu] 2
|
|
71 - Unused
|
|
.IP \[bu] 2
|
|
72 - Unused
|
|
.IP \[bu] 2
|
|
73 - Unused
|
|
.IP \[bu] 2
|
|
74 - Unused
|
|
.IP \[bu] 2
|
|
75 - Unused
|
|
.IP \[bu] 2
|
|
76 - Unused
|
|
.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
|
|
84 - Unused
|
|
.IP \[bu] 2
|
|
85 - Unused
|
|
.IP \[bu] 2
|
|
86 - Unused
|
|
.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
|
|
113 - Enter an empty layout where all windows are hidden
|
|
.IP \[bu] 2
|
|
114 - Increase barpadding and gaps by 1
|
|
.IP \[bu] 2
|
|
115 - Decrease barpadding and gaps by 1
|
|
.IP \[bu] 2
|
|
116 - Toggle mark on a window.
|
|
.IP \[bu] 2
|
|
117 - Swap focus with the marked window.
|
|
.IP \[bu] 2
|
|
118 - Swap the focused window with the marked window.
|
|
.IP \[bu] 2
|
|
119 - Center the focused window
|
|
.IP \[bu] 2
|
|
120 - Toggle border for the focused window
|
|
.IP \[bu] 2
|
|
121 - Reset bar padding and gaps
|
|
.SS 8. Status bar
|
|
.PP
|
|
speedwm has a status bar.
|
|
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.
|
|
.PP
|
|
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.
|
|
The status bar can be configured in the status.c and status.h.
|
|
.PP
|
|
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.
|
|
.PP
|
|
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,
|
|
\[ti]/.config/speedwm/autostart.sh, .xinitrc or some other means of
|
|
running a program.
|
|
.SS 9. Additional note on autostart
|
|
.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.
|
|
Make sure your user has permission to execute the script.
|
|
.PP
|
|
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.
|
|
.SS 10. Configuring the bar
|
|
.PP
|
|
As of 1.8, speedwm has a module system.
|
|
It is based on the barmodules patch for dwm and allows extensive control
|
|
over the way the speedwm bar functions.
|
|
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.
|
|
.SS Module list
|
|
.PP
|
|
Below is a list of all modules bundled with speedwm.
|
|
The source code for these modules are all in bar/ and declared in
|
|
bar/items.c and bar/items.h.
|
|
If you want to add more, you can just declare them in the same way and
|
|
add them to the barrules array if you want to use them.
|
|
.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
|
|
\[ga]{ `A',
|
|
.IP "2." 3
|
|
0,
|
|
.IP "3." 3
|
|
bar_align_left,
|
|
.IP "4." 3
|
|
width_tags_pwl,
|
|
.IP "5." 3
|
|
draw_tags_pwl,
|
|
.IP "6." 3
|
|
click_tags_pwl,
|
|
.IP "7." 3
|
|
\[lq]my cool powerline tags\[rq] },\[ga]
|
|
.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
|
|
Feel free to copy the above to bar.h if you want to experiment with it.
|
|
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.
|
|
.SS Credits
|
|
.PP
|
|
I far from wrote this entire project myself.
|
|
Below are people who made this project what it is through submitting
|
|
patches to suckless or otherwise contributing code in some way in
|
|
alphabetical order.
|
|
.IP \[bu] 2
|
|
Adam Yuan
|
|
.IP \[bu] 2
|
|
Alex Cole
|
|
.IP \[bu] 2
|
|
Anukul Adhikari
|
|
.IP \[bu] 2
|
|
Ayoub Khater
|
|
.IP \[bu] 2
|
|
bakkeby
|
|
.IP \[bu] 2
|
|
bit6tream
|
|
.IP \[bu] 2
|
|
cd
|
|
.IP \[bu] 2
|
|
Chris Down
|
|
.IP \[bu] 2
|
|
Chris Noxz
|
|
.IP \[bu] 2
|
|
Daniel Bylinka
|
|
.IP \[bu] 2
|
|
Dhaval Patel
|
|
.IP \[bu] 2
|
|
Eon S.
|
|
Jeon
|
|
.IP \[bu] 2
|
|
explosion-mental
|
|
.IP \[bu] 2
|
|
Fabian Blatz
|
|
.IP \[bu] 2
|
|
Finn Rayment
|
|
.IP \[bu] 2
|
|
Georgios Oxinos
|
|
.IP \[bu] 2
|
|
Ivan J.
|
|
.IP \[bu] 2
|
|
Jan Christoph Ebersbach
|
|
.IP \[bu] 2
|
|
Jared
|
|
.IP \[bu] 2
|
|
kleinbottle4
|
|
.IP \[bu] 2
|
|
Luigi Foscari
|
|
.IP \[bu] 2
|
|
Luke Smith
|
|
.IP \[bu] 2
|
|
Marius Iacob
|
|
.IP \[bu] 2
|
|
Markus Teich
|
|
.IP \[bu] 2
|
|
Mihir Lad
|
|
.IP \[bu] 2
|
|
MLquest8
|
|
.IP \[bu] 2
|
|
Ondřej Grover
|
|
.IP \[bu] 2
|
|
ornx
|
|
.IP \[bu] 2
|
|
Patrick Steinhardt
|
|
.IP \[bu] 2
|
|
phi
|
|
.IP \[bu] 2
|
|
prx
|
|
.IP \[bu] 2
|
|
Rob King
|
|
.IP \[bu] 2
|
|
Ryan Roden-Corrent
|
|
.IP \[bu] 2
|
|
sipi
|
|
.IP \[bu] 2
|
|
Sönke Lambert
|
|
.IP \[bu] 2
|
|
speedie
|
|
.IP \[bu] 2
|
|
Stefan Mark
|
|
.IP \[bu] 2
|
|
Stefan Matz
|
|
.IP \[bu] 2
|
|
suckless.org
|
|
.IP \[bu] 2
|
|
Timmy Keller
|
|
.IP \[bu] 2
|
|
Viliam Kováč
|
|
.PP
|
|
See Codeberg contributions for more information.
|