-
Notifications
You must be signed in to change notification settings - Fork 1
License
luo216/dwm
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
dwm (scroll fork)
=================
This fork keeps the minimal core of dwm but replaces the standard master/stack
tiling with a horizontal scroll layout and a custom status bar. It ships a
gruvbox-material palette, Nerd Font glyphs, a tuned system tray, and several
built-in status widgets (CPU, per-core load, memory, network, temperature,
battery, clock, notifications and a user menu).
Requirements
------------
- Xlib/Xft/Xinerama headers and libraries, fontconfig, freetype, pthreads
- Nerd Font that contains the symbols used by the bar (defaults to Hack Nerd Font)
- Runtime tools used by keybindings and the bar: rofi, nixGLIntel + kitty,
pactl (PulseAudio/PipeWire), brightnessctl, dunstctl, dunstify, mate-system-monitor,
script-menu.sh in $PATH, and the WenQuanYi Zen Hei font for CJK
fallback
Installation
------------
Edit `config.mk` to match your system, then build and install (root may be
required):
make clean install
You can also spin up a Xephyr test session if `Xephyr` is installed:
dwm-test
Nix Development
---------------
For Nix users, a `flake.nix` is provided to set up a complete development
environment:
nix develop
To compile and run tests in the Nix environment:
nix develop -c make clean install
nix develop -c dwm-test # Start Xephyr virtual display for testing
Running
-------
Add the following to `.xinitrc`:
exec dwm
Tags and layouts
----------------
- Nine tags (1-9). Each client belongs to exactly one tag; one tag is shown per
monitor.
- Layouts: a horizontal scroll layout (default) and floating.
- Scroll layout: tiled clients are placed in a horizontal strip. Use `Mod+j/k`
to focus the next/previous tiled client (floats are skipped); use the mouse
wheel on the tab area/title to pan. Floating clients stay on top. When only
one tiled client is present, `Mod+space` toggles between full fill and a
centered 3:2 window. With multiple tiled clients, each client uses its own
`mfact` value (tuned with `Mod+h/l`) to set its width.
Status bar and tray
-------------------
- Left side: super icon, focused window class (fallback text when unfocused),
tags, layout glyph, and per-client tabs for the active tag.
- Right side: custom status widgets (notify/battery/clock/net/cpu/cores/temp/
mem/more) and a scaled system tray (icon height is a fraction of bar height).
- Status drawing runs in its own thread and does not use `xsetroot`.
Key bindings (Mod1 == Alt by default)
-------------------------------------
- `Mod+p` launch rofi
- `Mod+Shift+Return` launch terminal (nixGLIntel + kitty)
- `Mod+b` toggle bar
- `Mod+Tab` view tag 1
- `Mod+Shift+c` kill focused client
- `Mod+h` / `Mod+l` adjust per-client mfact value
- `Mod+j` / `Mod+k` focus next/prev tiled client in current tag (skip floats)
- `Mod+Shift+j/k` focus next/prev tiled client and ensure it is visible
- `Mod+Return` ensure focused client is scrolled into view
- `Mod+space` toggle single-window fill mode (scroll layout)
- `Mod+Shift+space` toggle floating for focused client
- `Mod+[1..9]` view tag
- `Mod+Shift+[1..9]` move focused client to tag
- `Mod+Shift+q` quit dwm
Mouse bindings
--------------
- Super icon: Button1 toggles highlight.
- Window class label: Button1 opens rofi; Button3 opens the terminal.
- Tags: Button1 view tag; Mod+Button1 move focused client to tag.
- Layout symbol: Button1 toggles between scroll and floating.
- Client tabs/title: Button1 focus client; Button4/5 pan the scroll layout.
- Status area: each widget handles Button1-Button5 (see below).
- Client window: Mod+Button1 move, Mod+Button2 toggle floating,
Mod+Button3 resize.
Status widget actions
---------------------
- Notify: Button1 pops last 5 notifications; Button3 clears; Button4 pops one;
Button5 closes.
- Battery: display only.
- Clock: display only (12h with AM/PM).
- Net: Button1 cycles interfaces in `interface_name` and shows a notification.
- CPU graph: Button1/5 volume down 5%/1%; Button3 volume up 5%; Button4 volume
up 1%; Button2 toggle mute.
- Cores bar: Button1 brightness -5%; Button3 brightness +5%;
Button4 brightness +1%; Button5 brightness -1%.
- Temp: Button1 cycles thermal zones and notifies.
- Mem: Button1 opens `mate-system-monitor`.
- More: Button1 runs `script-menu.sh`.
Configuration
-------------
Adjust colors, fonts, commands, gaps, tray sizing and helpers in
`config.def.h`, then rebuild to apply changes.
About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Releases
No releases published