All Projects → jichu4n → Basic_wm

jichu4n / Basic_wm

An example basic X11 window manager.

Projects that are alternatives of or similar to Basic wm

x11-cr
X11 bindings for Crystal language.
Stars: ✭ 32 (-88.19%)
Mutual labels:  x11, window-manager
Hadlock
X window manager
Stars: ✭ 141 (-47.97%)
Mutual labels:  x11, window-manager
Nscde
Modern and functional CDE desktop based on FVWM
Stars: ✭ 526 (+94.1%)
Mutual labels:  x11, window-manager
Yabar
A modern and lightweight status bar for X window managers.
Stars: ✭ 646 (+138.38%)
Mutual labels:  x11, window-manager
Hypr
Hypr is a tiling window manager written in modern C++.
Stars: ✭ 659 (+143.17%)
Mutual labels:  x11, window-manager
Wmderland
🌳 X11 tiling window manager using space partitioning trees
Stars: ✭ 341 (+25.83%)
Mutual labels:  x11, window-manager
Quicktile
Adds window-tiling hotkeys to any X11 desktop. (An analogue to WinSplit Revolution for people who don't want to use Compiz Grid)
Stars: ✭ 719 (+165.31%)
Mutual labels:  x11, window-manager
Xmonad
The core of xmonad, a small but functional ICCCM-compliant tiling window manager
Stars: ✭ 2,253 (+731.37%)
Mutual labels:  x11, window-manager
shod-old
hybrid (floating and tiling) tabbed window manager
Stars: ✭ 56 (-79.34%)
Mutual labels:  x11, window-manager
shod
mouse-based window manager that can tile windows inside floating containers
Stars: ✭ 126 (-53.51%)
Mutual labels:  x11, window-manager
Dewm
A pure go autotiling window manager written with literate programming
Stars: ✭ 225 (-16.97%)
Mutual labels:  x11, window-manager
gobble
Rust rewrite of Devour
Stars: ✭ 23 (-91.51%)
Mutual labels:  x11, window-manager
katriawm
A non-reparenting, dynamic window manager with decorations
Stars: ✭ 53 (-80.44%)
Mutual labels:  x11, window-manager
eseed-window
A minimal cross-platform C++17 window management library for rendering (deprecated)
Stars: ✭ 18 (-93.36%)
Mutual labels:  x11, window-manager
vswm
A very stupid window manager.
Stars: ✭ 28 (-89.67%)
Mutual labels:  x11
mx
Framework window manager for macOS
Stars: ✭ 45 (-83.39%)
Mutual labels:  window-manager
gnome-gesture-improvements
Touchpad gesture improvements for GNOME on Wayland/X11
Stars: ✭ 53 (-80.44%)
Mutual labels:  x11
gummy
Linux brightness/temperature manager for X11
Stars: ✭ 13 (-95.2%)
Mutual labels:  x11
code
~/code – tools distributed across all of my systems
Stars: ✭ 73 (-73.06%)
Mutual labels:  x11
ModMove
Move/Resize windows using modifiers and the mouse
Stars: ✭ 86 (-68.27%)
Mutual labels:  window-manager

Basic Window Manager

basic_wm is a simple reparenting, non-compositing X window manager that demonstrates how to implement the fundamental functionality of a window manager:

  • Managing the life cycle of windows
  • Reparenting windows
  • Basic window operations (moving, resizing, closing)

It serves as a pedagogical example for my series of articles, How X Window Managers Work, And How To Write One.

Building and Running

To build this example window manager, you will need:

To run and test it, you will need:

  • Xephyr
  • xinit
  • Random X utilities such as xclock, xeyes, and xterm to play with

On Ubuntu/Debian, you can install these dependencies with:

sudo apt-get install \
    build-essential libx11-dev libgoogle-glog-dev \
    xserver-xephyr xinit x11-apps xterm

On Fedora/CentOS, you can install these with:

sudo yum install \
    make gcc gcc-c++ libX11-devel glog-devel \
    xorg-x11-server-Xephyr xorg-x11-apps xterm

On Arch Linux, you can install these with:

yaourt -S base-devel libx11 google-glog \
    xorg-server-xephyr xorg-xinit xorg-xclock xorg-xeyes xterm

Consult your own distro's documentation for how to install these.

Once you have all the dependencies, building and running it is as simple as:

./build_and_run.sh

This will launch a simple Xephyr session like in the following screenshot: Screenshot

Usage

Supported keyboard shortcuts:

  • Alt + Left Click: Move window
  • Alt + Right Click: Resize window
  • Alt + F4: Close window
  • Alt + Tab: Switch window
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].