Skip to content
su8Public

About

Tiling WM, port of monsterwm to xcb

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

 

History

583 Commits

Folders and files

Repository files navigation

hellxcb

→ tiny(!) and monsterous!

This is xcb port of monsterwm tiling window manager. For more detailed README refer to monsterwm

The code editor in the picture above is Microsoft Visual Code Editor -- not Studio Editor

Installation

Open up config.h and edit to suit your needs. Build and install.

$ $EDITOR_OF_CHOICE config.h
$ make -j8 # where 8 are CPU cores
# make install

To have mouse cursor, open up .xinitrc and append somewhere before the case label the following xsetroot -cursor_name left_ptr

The statusline in the picture above is made of https://github.com/su8/doomy . You can use sed to make a named tag/workspace from /tmp/hellxcb.txt , just use while true; do cat /tmp/hellxcb.txt | sed -E 's/tag: 1/tag: web/g; s/tag: 2/tag: dev/g; s/tag: 3/tag: misc/g; s/tag: 4/tag: float/g; s/tag 1/web/g; s/tag 2/dev/g; s/tag 3/misc/g; s/tag 4/float/g;' > /tmp/doomy.txt; sleep 1; done & if you use https://github.com/su8/doomy

Super+z shows and hides a drop-down terminal; the first press starts it. Set its command (dropdowncmd), DROPDOWN_WIDTH and DROPDOWN_HEIGHT (percent of the screen) in config.h. The window is found by its class or instance name hellxcb-dropdown, so other terminals need their own flag for it, e.g. st -c hellxcb-dropdown, urxvt -name hellxcb-dropdown or alacritty --class hellxcb-dropdown.

Alt+Shift+f switches the desktop to floating mode: windows keep the place and size they ask for.

make check runs a smoke test on a virtual X server. It needs Xvfb, xdotool, xterm and xwininfo.

For shadows, fading and window animations, run picom (v12 or newer for animations) next to hellxcb. Start it in .xinitrc with picom -b right after exec hellxcb. Example ~/.config/picom/picom.conf:

backend = "glx";
vsync = true;
shadow = true;
fading = true;
fade-delta = 5;
inactive-opacity = 0.95;

animations = (
  { triggers = [ "open", "show" ];   preset = "appear";          duration = 0.2; },
  { triggers = [ "close", "hide" ];  preset = "disappear";       duration = 0.15; },
  { triggers = [ "geometry" ];       preset = "geometry-change"; duration = 0.2; },
);

rules = (
  # the drop-down terminal (Super+z) slides down from the top
  { match = "class_g = 'hellxcb-dropdown'";
    animations = (
      { triggers = [ "open", "show" ]; preset = "slide-in";  direction = "down"; duration = 0.2; },
      { triggers = [ "close", "hide" ]; preset = "slide-out"; direction = "up";   duration = 0.2; },
    );
  },
);

Other presets: fly-in/fly-out, and slide-in/slide-out with direction = "left", "right", "up" or "down". Wobbly windows need compiz, which is a window manager itself and cannot run next to hellxcb.

The packages needed for example would be libxcb xcb-util xcb-util-wm xcb-util-keysym gcc make xorg [ pkg-config or pkgconfigor pkgconf ]

The packages in Debian are: libxcb-randr0 libxcb-randr0-dev libxcb-ewmh libxcb-ewmh2 xorg-dev xserver-xorg-dev libxcb-icccm4 libxcb-icccm4-dev gcc make xorg pkg-config git libxcb-keysyms1 libxcb-keysyms1-dev libxcb-util-wm libxcb-util-dev xcb-util libxcb1-deb libxcb-dev

For FreeBSD the packages are gcc xorg gmake chromium git gawk libxcb xcb-util xcb-util-wm xcb-util-keysyms pkgconf

For NetBSD the packages are clang gmake firefox git gawk xcb xcb-util xcb-util-wm xcb-util-keysyms pkg-config and full desktop with X11 installed on your system.

Bugs

I have fixed - Cloudef/monsterwm-xcb#8 . An open dialog keeps the focus while the mouse moves over other windows, until it is closed.

Fill bugs only on hellxcb, when you are sure the bug doesn't occur on monsterwm.

monsterwm issues

Thanks

Cloudef for monsterwm-xcb, the suckless team for dwm, moetunes for dminiwm, pyknite for catwm, c00kiemonster for monsterwm

About

Tiling WM, port of monsterwm to xcb

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages