X11 window manager for linux built from scratch in C++. It supports basic window management features such as tiling, floating windows, multi-monitor setups, workspaces, and more. The window manager is designed to be lightweight, efficient, and customizable. inspired by dwm ; we can say it's a love letter to dwm .
xsetroot
command.This window manager is built using the X11 library. Ensure that you have the following dependencies installed:
sudo apt-get install libx11-dev
sudo apt install libxft-dev
sudo apt-get install libxinerama-dev
sudo apt-get install libfontconfig1-dev
sudo apt install libxcursor-dev
Clone the repository:
git clone https://github.com/philopaterwaheed/pwm.git
cd pwm
Compile the window manager:
sudo make clean install
Run the window manager: You can test the window manager by launching it from a different X session:
startx ./pwm -- :1
or add it to your .xinitrc
script
you can customize the Keybindings in the config.h file
but those are the default |
Keybinding | Action |
---|---|---|
Mod + t |
Launch terminal (default: st ) |
|
Mod + ; |
Launch terminal (default: dmenu ) you also can use mine if you want launchio |
|
Mod + Arrow Keys |
Move floating window | |
Mod + Shift + Arrow Keys |
Resize floating window | |
Mod + Left Mouse Button |
Drag window | |
Mod + Right Mouse Button |
Resize window | |
Mod + 1-5 |
Switch to workspace | |
Mod + Shift + 1-5 |
Move window to workspace | |
Mod + q |
Close focused window | |
Mod + Return |
Make focuse window fullscreen | |
Mod + s |
Make focuse window sticky | |
Mod + b |
Toggle bar | |
Mod + l |
Increase master width | |
Mod + h |
Decrease master width | |
Mod + j |
Change focus to next window | |
Mod + k |
Change focus to previous window | |
Mod + Shift + j |
Swap with next window | |
Mod + Shift + k |
Swap with previous window | |
Mod + Shift + Space |
Toggle floating of focused window | |
Mod + Shift + f |
Set as master | |
Mod + Shift + l |
Increase stacked window hight | |
Mod + Shift + h |
Decrease stacked window hight | |
Mod + Alt + Space |
Switch to tiling layout | |
Mod + Alt + m |
Switch to fullscreen layout | |
Mod + Alt + c |
Switch to center master layout | |
Mod + Alt + g |
Switch to grid layout | |
Mod + , |
Focus next monitor | |
Mod + . |
Focus previous monitor | |
Mod + Shift + , |
Move focused window to next monitor | |
Mod + Shift + . |
Move focused window to previous monitor |
Mod
+ Left Click to drag a floating window.Mod
+ Right Click to resize a floating window.Mod + 1-5
to switch between workspaces. Each monitor has its own set of workspaces.Mod + Shift + [1-5]
to move a window to a different workspace.The status bar displays the active workspaces and the current status. You can update the bar by setting the root window name using the xsetroot
command. For example:
xsetroot -name "Hello, World!"
The window manager supports the following layouts:
Mod + Right Click
.Mod + Left Click
.Fonts in the bar are configured using the Fontconfig library. Ensure that you have appropriate fonts installed (e.g., awesome-font
for icons).
The status bar is divided into three sections:
note:
you can set the names of hte workspaces in the config file but please use one icone becuase the wm doesn't detect the lendth of the name right xsetroot
)You can modify the bar by editing the rendering logic in the source code.
Feel free to contribute by submitting pull requests, reporting issues, or suggesting features.
This window manager is released under the MIT License.