mswm
Oh yeah, super duper extra sigma mantra coulpa wip.
This is a window manager for X.
It was created as an experiment and to try to approach my personal idea of a usable,
barebones (and boring) floating window manager. Window managment is a bit different than
"standard" WMs: they do not raise to the top of the stack upon receiving focus,
the user has to manually raise them with a special keybind (the same to
drag the windows around). The user can also move them to the top or to
the back at will when dragging them.
It only implements the features that I need, so useability in an environment other
than my own is NOT guaranteed. It only supports a handful of ewmh atoms so if you use
things like fancy docks, pagers and the like, chances are they won't mesh well with this
window manager.
Except for a few keybinds, controlling the window manager is done by sending
commands to another program, mswmc
. This is similar to
bspwm or
berry. This way, commands can be
sent from dedicated hotkey programs such as
sxhkd. Additionally, one may
have a script located at $XDG_CONFIG_HOME/mswm/rc.sh
or
$HOME/.config/mswm/rc.sh
that will be automatically launched at startup.
Here is a screenshot of mswm running on a single screen with some terminals
and the ACME editor running, using feh
to set a gray background. The default
colors and border width were changed.
Features
- "Click to focus"
- 10 virtual desktops
- Basic predefined window placements (fullscreen, maximized, top left...)
- Crashes
Keybinds
- Mouse 1
- Focus the window, do NOT raise it.
- Left ALT + Mouse 1
- Focus the window and raise it, drag the window.
- Left ALT + Mouse 1 + Mouse 3
- Send the window to the top or to the bottom of the stack.
- Left ALT + Shift + Mouse 1
- Focus the window, do NOT raise it, drag the window.
- Left ALT + Mouse 3
- Resize the window.
- Left ALT + Tab
- Open the window switcher, raise the target window.
- Left ALT + Q
- Open the window switcher, do NOT raise the target window.
mswmc commands
fullscreen_toggle
- Toggle fullscreen mode.
move_to_workspace [+|-]number
- Move the focused window to the given workspace. If the number starts with + or -, the workspace is relative to the current one.
switch_workspace [+|-]number
- Switch to the given workspace. If the number starts with + or -, the workspace is relative to the current one.
close_window
- Close the focused window.
quit
- Quit the window manager.
position_toggle mode
- Toggle the window to the desired mode. mode can be
maximized
,topleft
,bottomleft
,topright
,bottomright
,left
,right
. border_color hex
- Set the windows' unfocused border color.
border_focus_color hex
- Set the focused windows' border color.
border_width size
- Set the windows' border width.
minimum_window_width size
- Set the windows' minimum width.
minimum_window_height size
- Set the windows' minimum height.
margin_size [id] top right bottom left
- Set the screen margins. If a screen id is specified, the margins will apply only to that specific screen.
focus_window id
- Focus the given window (it needs to be managed by the window manager to work).
id is the window number, as returned by commands such as
xprop -root _NET_ACTIVE_WINDOW
. raise_window id
- Raise the given window (it needs to be managed by the window manager to work).
font name
- Specify a font name to be used by the window manager (the font is used to display window names). Use this if your window names often have characters unsupported by the default font.
Git
https://git.pevhs.ch/mswm.git