https://github.com/dheerajshenoy/customwm
Window manager written in c++ with Xlib library
https://github.com/dheerajshenoy/customwm
Last synced: 5 months ago
JSON representation
Window manager written in c++ with Xlib library
- Host: GitHub
- URL: https://github.com/dheerajshenoy/customwm
- Owner: dheerajshenoy
- Created: 2021-04-08T08:36:31.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-05-01T06:12:30.000Z (over 4 years ago)
- Last Synced: 2025-06-17T09:05:02.294Z (5 months ago)
- Language: C++
- Size: 1.32 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CustomWM - A dynamic tiling window manager written in C++


# Why ?
* Being a window manager enthusiast and a user, I wanted to learn how they actually worked and how they're written.
# Pros of writing your own WM
* Memory management
* Window management (Obviously)
* Data structures
* Configuration strategies
* It's fun
# Cons
* It's tedious
* Xlib documentation is not well documented
* Time consuming
# Installation
* Libraries required : Xlib
* Clone this repo and run `` sudo make clean install ``
# Features of CustomWM
* Layouts - Tiling, Monocle
* Configuration using INI file
* Toggle window modes - floating, tiling
* Move and resize floating windows with key press
* Corner floating windows
* Fullscreen windows
* Partial EWMH & ICCCM support
* Workspaces with per-workspace properties
* sloppy focus (buggy)
* Show Desktop Mode (Hide all clients)
* Autostart apps
* Works with panel like [Polybar](https://github.com/polybar/polybar)
# TODO
[TODO](https://github.com/dheerajshenoy/customwm/blob/master/todo.md)
# Configuration
The WM is configured using ini file, which gets parsed at run-time (using my very own [INI parser](https://github.com/dheerajshenoy/iniparser) (not well documented)). Check [CONFIG.md](https://github.com/dheerajshenoy/customwm/blob/master/CONFIG.md) file for more info about configuration.
# WM's I took help from
* [BerryWM](https://berrywm.org/)
* [tinyWM](https://github.com/mackstann/tinywm)
* [SimpleWM](https://github.com/kcirick/simplewm)
* [catWM](https://github.com/pyknite/catwm)
* [dwm](https://dwm.suckless.org/)