Skip to content

DerjenigeUberMensch/vox-wm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Preview (Monocle)

example_image_monocle

Table of Contents

  1. Requirements
  2. Usage
  3. Compiling
  4. Uninstalling
  5. How to Run
  6. Mousebinds
  7. Keybinds
  8. Troubleshoot

This build is not fully feature ready.

Why Use this.

  • Low Memory Usage (~4-7 MiB) (When compiled in Release Mode)
  • Low CPU usage (~.1-2%) idle
  • Low CPU usage when doing expensive stuff (mapping windows) (~4-10%)

Why Not Use this.

  • Doesnt use C++
  • XCB

Requirements

Base (Required)

  • dmenu
  • st
  • xorg
  • xorg-xinit
  • libxcb
  • xcb-proto
  • xcb-util
  • xcb-util-errors
  • xcb-util-cursor
  • xcb-util-image
  • xcb-util-keysyms
  • xcb-util-wm
  • xcb-util-xrm

Multi Media Key Support. (Optional)

  • PulseAudio
  • Playerctl
  • Brightnessctl

Pacman && yay

Base (Required)

sudo pacman -S --needed dmenu xorg xorg-xinit libxcb xcb-util xcb-util-errors xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-wm xcb-util-xrm && yay -S st

Multi Media (Optional)

sudo pacman -S --needed pipewire-pulse pulseaudio playerctl brightnessctl

Usage

To use the wm you must first compile it. Afterwards you must put exec vox-wm in your ~/.xinitrc file. See Below.

Compiling

  1. Clone this repository.
git clone https://github.com/DerjenigeUberMensch/vox-wm.git
  1. Change Directory to vox-wm.
cd vox-wm
  1. Checkout the Experimental branch. (Legacy support)
git checkout origin/Experimental
  1. Configure it See Configuration (Optional)
  2. Compile using Make
make
  1. Install on system, install location '/usr/local/bin'
sudo make install
  1. Done.

Uninstalling

  1. Change Directory to vox-wm.
cd vox-wm
  1. Uninstall using Make
sudo make uninstall

How to Run

  1. Compile, See Compiling.
  2. Choose option(s) below.
  3. Locate binary
    • if installed should be "vox-wm"
    • else should be located under "bin/release/" folder as "vox-wm"

Normal Usage

  1. Put "exec YOUR_BINARY_LOCATION" in ~/.xinitrc or similiar XServer configuration.
    • if it doesnt work make sure that no window-manager/desktop manager is run before.

Xephyr (Debug/Testing Usage)

  1. Start a Xephyr server.
    • Example: Xephyr :1 -ac c 25 +xinerama -resizeable -screen 680x480 &
  2. After locating the binary location make sure you are in the correct display server.
    • Example: export DISPLAY=:1
  3. After setting the correct external xserver display variable simply run the binary file.
    • Example: ./bin/release/vox-wm or vox-wm

Configuration

Currently Configuration is not (GUI/conf file) supported in this version of vox-wm

However...

If you know a bit of C you can change dmenu colours and some keybinds under the directory vox-wm/include/keybinds.h

However...

There is limited config file support under ~/.config/vox-wm/settings.cfg

Do note that these changes only apply after a hard restart or killing and running the window manager again.

Mousebinds

These are the default mousebinds currently used within vox-wm, they are not planned to change (defaults), but will be when or if a configuration is implemented.

  • RMB: Right Mouse Button.
  • LMB: Left Mouse Button.
  • MMB: Middle Mouse Button.
Button Action
SUPER+RMB Activates Window Resizing of the Clicked Window. (Must be Held)
SUPER+ALT+RMB See above, does not apply ANY window restrictions, these include: minimum size, maximimum size, base size, inc size, etc...
SUPER+LMB Activates Window Moving of the Clicked Window. (Must be Held)

Keybinds

These are the default keybinds currently used within vox-wm, they are not currently planned to change, but will be when or if a configuration is implemented.

  • SUPER: The "Windows" key (next to fn/ctrl, usually the left side of the keyboard).
  • RETURN: The Enter key (Right above right SHIFT, Not the numlock Enter key)
Key Action
SUPER+n Debug/Unused
SUPER+d exec dmenu
SUPER+RETURN exec st
SUPER+e exec thunar
SUPER+b Hide/Show Task bar (if applicable)
SUPER+SHIFT+q Exit Current Window
CTRL+ALT+q Terminate Current Window
SUPER+w Maximize Current Window
SUPER+SHIFT+p Quit (exit window manager)
SUPER+CTRL+p Soft Restart
CTRL+ALT+p Hard Restart
SUPER+CTRL+z Make the current Window Sticky
SUPER+z Change Layout To Tiling
SUPER+x Change Layout To Floating
SUPER+c Change Layout To Monocle
SUPER+g Change Layout To Grid
SUPER+1 Set Current Desktop To 1
SUPER+2 Set Current Desktop To 2
SUPER+3 Set Current Desktop To 3
SUPER+4 Set Current Desktop To 4
SUPER+5 Set Current Desktop To 5
SUPER+6 Set Current Desktop To 6
SUPER+7 Set Current Desktop To 7
SUPER+8 Set Current Desktop To 8
SUPER+9 Set Current Desktop To 9
SUPER+0 Set Current Desktop To 10

Base Calls

These are actions that expected supporting basic keyboard support.

Key Action
F11 Fullscreen On The Current Window
Increase Volume Increase Volume Controls
Decrease Volume Decrease Volume Controls
Increase Brightness Increase Brightness Controls
Decrease Brightness Decrease Brightness Controls
Mute Sound Mute Functionality
Play Inverts Playing Status (play-pause)
Pause Inverts Playing Status (play-pause)
Next Next Audio Playback
Prev Previous Audio Playback

Troubleshoot

This is an experimental build and may contain bugs, Screen tearing can be mitigated by using a compositor or by enabling it in your driver setting

If you have any major issues with the current commit you can revert to a previous commit for a generally stabler version. Or you can open an issue about it.

Planned Features

  • Panel that user can just click buttons or type values to configure windows (kinda like a dev panel).
  • Fully Extend XCB-TRL to use other features.
  • More modularity
  • Less Complex Code Base
  • Better Documentatin (Likely when I finish implementing the usability part of the Window manager (AKA when I switch over to this.))