1712 lines
44 KiB
Groff
1712 lines
44 KiB
Groff
.\" Automatically generated by Pandoc 3.0.1
|
|
.\"
|
|
.\" 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 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
|
|
.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://git.speedie.gq/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 of the file.
|
|
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 on
|
|
Codeberg, or by emailing me.
|
|
.PP
|
|
If you have any questions, see the official speedwm
|
|
wiki (https://speedwm.speedie.gq).
|
|
.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. Default 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+w - Opens the defined web browser
|
|
.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+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+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+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+Arrow - Resize the window to the screen size.
|
|
.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+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
|
|
.SS These will only work if your keyboard has special multimedia buttons.
|
|
.IP \[bu] 2
|
|
Browser button - Opens your defined web browser
|
|
.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 (Scrolling up/down) - Move windows around in the stack.
|
|
.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
|
|
.SS 5. 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://speedie.gq/projects/spmenu.php)
|
|
.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.
|
|
.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
|
|
speedwm-extras
|
|
.RS 2
|
|
.IP \[bu] 2
|
|
Metapackage containing extra scripts that speedwm makes use of.
|
|
(https://codeberg.org/speedie/speedwm-extras)
|
|
.RE
|
|
.IP \[bu] 2
|
|
libspeedwm
|
|
.RS 2
|
|
.IP \[bu] 2
|
|
Dependency for speedwm-extras allowing you to perform actions
|
|
externally.
|
|
.RE
|
|
.IP \[bu] 2
|
|
st - Default terminal
|
|
.IP \[bu] 2
|
|
Chromium - Default web browser
|
|
.PP
|
|
And everything under \f[V]Features\f[R].
|
|
.SS 6. 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).
|
|
.PP
|
|
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
|
|
bar.h for configuring bar rules.
|
|
.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
|
|
query.h for adding/removing queries.
|
|
.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
|
|
You can edit the status bar simply by editing its modules
|
|
(modules_\&...)
|
|
and running `make clean install'.
|
|
You can also configure the modules by editing
|
|
`\[ti]/.config/speedwm/statusrc' which is configured entirely in shell
|
|
script syntax.
|
|
.SS 7. 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.layout.custom.cmd: printf \[cq]\[cq] | spmenu -i -l 10 -p `Enter
|
|
S expression:'
|
|
.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.separator: ;
|
|
.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 8. 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 9. Status bar
|
|
.PP
|
|
speedwm has a status bar module which is enabled by default.
|
|
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.
|
|
## 10.
|
|
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 11. Configuring the bar
|
|
.PP
|
|
As of 1.8, speedwm has a module system.
|
|
It is based on the \f[V]barmodules\f[R] 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 which 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 \f[V]bar/\f[R] and declared
|
|
in \f[V]bar/items.c\f[R] and \f[V]bar/items.h\f[R].
|
|
.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_basic_es: Basic status bar.
|
|
.IP \[bu] 2
|
|
status: Clickable status bar with color support through status2d.
|
|
.IP \[bu] 2
|
|
status_es: Clickable status bar with color support through status2d
|
|
(Extra status).
|
|
.IP \[bu] 2
|
|
status_pwl: Non-clickable status bar with powerlines.
|
|
It supports colors by cycling through colorschemes.
|
|
.IP \[bu] 2
|
|
status_pwl_es: Non-clickable status bar with powerlines.
|
|
It supports colors by cycling through colorschemes (Extra status).
|
|
.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.
|
|
.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
|
|
\f[V]{ \[aq]A\[aq],\f[R]
|
|
.IP "2." 3
|
|
\f[V]0,\f[R]
|
|
.IP "3." 3
|
|
\f[V]bar_align_left,\f[R]
|
|
.IP "4." 3
|
|
\f[V]width_tags_pwl,\f[R]
|
|
.IP "5." 3
|
|
\f[V]draw_tags_pwl,\f[R]
|
|
.IP "6." 3
|
|
\f[V]click_tags_pwl,\f[R]
|
|
.IP "7." 3
|
|
\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]
|
|
.PP
|
|
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 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 Event
|
|
.PP
|
|
The event value allow you to specify when a keybind 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.
|
|
.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].
|
|
.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 an argument 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.
|
|
.PP
|
|
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]
|
|
.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
|
|
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.
|
|
.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.
|