1
2
Fork
You've already forked minwm
0
[MIRROR] Extremely minimal window manager https://minwm.btxx.org
  • C 75.1%
  • Shell 24.9%
Find a file
2026年05月14日 08:53:40 -04:00
.gitignore Initial working window manager 2025年06月15日 14:20:30 -04:00
build.sh Initial Linux support, includes ability to override init target 2026年05月14日 08:49:46 -04:00
LICENSE Include README and License 2025年06月15日 14:29:49 -04:00
minwm.c Initial Linux support, includes ability to override init target 2026年05月14日 08:49:46 -04:00
README.md Update README 2026年05月14日 08:53:40 -04:00

minwm

An extremely minimal window manager.

  • 30ish LOC
  • No tiling or stacked modes
  • No status bars, titles, borders, etc.
  • Zero config files
  • Absolute bare-bones window management

Based of off mwm.

Dependencies

If you decide to copy this build exactly, you will need the following installed:

  • firefox
  • xlock (included in base)
  • xterm (included in base)

You will also need to enable apmd in order for sleep/hibernate to function properly:

doas rcctl enable apmd
doas rcctl start apmd

Installation

  1. Running OpenBSD, current user has doas privileges
  2. Clone this repo and navigate inside of it
  3. Run sh build.sh
  4. Place exec minwm inside your main ~/.xinitrc file
  5. Reboot, then run startx

Usage

  • Alt + t: Open terminal of choice (default is xterm)
  • Alt + w: Open browser of choice (default is firefox)
  • Alt + q: Close current window in focus
  • Alt + s: Lock screen and sleep (uses xlock and zzz)
  • Alt + Tab: Cycle through open windows

Help

How do I change or add program shortcuts?

Edit the minwm.c directly and then re-compile

How do I check what time it is?

Run date or uptime in your terminal

How do I check the battery status?

Run apm -v in your terminal

How do I check CPU or RAM usage?

Run top in your terminal

Linux Support

Linux is supported and should work automatically when running sh build.sh. If you hit issues, you might need to target specific parameters based on your distro and/or init system, ie:

SUSPEND="loginctl suspend" ./build.sh # OpenRC, runit, s6, dinit with elogind

or

SUDO=doas SUSPEND=zzz ./build.sh # on a Linux box that prefers doas

Extras

Adding too much to this existing window manager goes against the philosophy behind minwm. That being said, some extra functionality might be desired. (This section is a WIP)

Screenshots

Install the slop and scrot packages. Then make the following adjustments to minwm.c:

map("p", system("sh -c 'scrot -a $(slop -f \"%x,%y,%w,%h\")'"))

Also be sure to include the "p" (or any other desired key binding) alongside the other keys that are within grab.