pevhs.ch ~/prog/

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.

Click to enlarge.

Features

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