Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/saloniamatteo/dwm
Matteo Salonia's build of dwm + dwmblocks + slock + included scripts
https://github.com/saloniamatteo/dwm
dwm dwm-config dwm-configuration dwm-dwmblocks dwm-rice dwm-suckless dwm-systray dwmblocks slock suckless systray
Last synced: about 21 hours ago
JSON representation
Matteo Salonia's build of dwm + dwmblocks + slock + included scripts
- Host: GitHub
- URL: https://github.com/saloniamatteo/dwm
- Owner: saloniamatteo
- Created: 2020-11-22T10:13:09.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-11-22T21:19:21.000Z (about 2 months ago)
- Last Synced: 2024-11-22T21:32:56.753Z (about 2 months ago)
- Topics: dwm, dwm-config, dwm-configuration, dwm-dwmblocks, dwm-rice, dwm-suckless, dwm-systray, dwmblocks, slock, suckless, systray
- Language: C
- Homepage:
- Size: 12.4 MB
- Stars: 37
- Watchers: 1
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Matteo Salonia's dwm
This is my personalised build of [dwm](https://dwm.suckless.org) **6.5**.I applied several quality-of-life patches, as well as some fixes here and there. Note that some of these patches may not apply correctly for a new dwm build, and may need to patch them yourself.
NOTE: to apply the `statuscmd` patch, I had to modify `dwm.c`, in particular the `drawbar()` function: since the patch does not account for the systray, I had to make space for it, otherwhise `dwmblocks` would draw under it.
## Donate
Support this project: [salonia.it/donate](https://salonia.it/donate)## Screenshots
![1](Screenshots/1.png)
![2](Screenshots/2.png)
![3](Screenshots/3.png)## Getting started
To get started, compile dwm:```bash
cd dwm
make
sudo make install
```It will be available under `/usr/local/bin/dwm`.
## dwmblocks
This repo also contains my build of dwmblocks.To obtain the scripts, you can:
- Get them from my [dotfiles](https://github.com/saloniamatteo/dotfiles) repo, under `scripts/.local/bin`
- Pull the `dotfiles` submodule, which links to the repo above.The other scripts (`scripts/.config/scripts`) are launched by dwm, not dwmblocks.
## slock
This repo also contains my build of slock.The following patches have been applied:
- slock-capscolor-20220921-35633d4.diff
- slock-colormessage-20200210-35633d4.diff
- slock-dpms-20231017-4f04554.diff
- slock-git-20161012-control-clear.diffThese patches make slock more user-friendly, allowing us to show a message,
as well as updating the bg color whenever a key is pressed, showing
whether it's the caps-lock, shift, or any other.In addition, the monitor is automatically blanked after 30 seconds.
## libXft-bgra & fonts
Glyph support in libXft was [finally fixed](https://gitlab.freedesktop.org/xorg/lib/libxft/-/merge_requests/12)
in 2022, after two and a half years. Better late than never?It is not necessary anymore to manually patch libXft. Yay!
### Fonts
We need to set fallback fonts, otherwise things will get ugly.Make sure you have at least one of the following fonts.
- Serif & Sans-serif: IBM Plex, Iosevka
- Emojis: JoyPixels, Noto Color EmojiYou can choose whichever you like most.. or choose all of them!
Modify `.config/fontconfig/fonts.conf`, and add the following:
```xml
serif
IBM Plex Serif
Iosevka
JoyPixels
Noto Color Emoji
sans-serif
IBM Plex Sans
Iosevka
JoyPixels
Noto Color Emoji
sans
IBM Plex Sans
Iosevka
JoyPixels
Noto Color Emoji
monospace
IBM Plex Mono
Iosevka Term
~/.fonts```
This will set the following font preferences:
- Serif: IBM Plex Serif, Iosevka, JoyPixels, Noto Color Emoji
- Sans Serif: IBM Plex Sans, Iosevka, JoyPixels, Noto Color Emoji
- Sans: IBM Plex Sans, Iosevka, JoyPixels, Noto Color Emoji
- Monospace: IBM Plex Mono, Iosevka Term## Keybindings
The default action key is the ALT key.The Shift key will be referred to as S.
The Super key (also known as "windows" key) will be referred to as WIN.
### Actions
- Toggle statusbar: ALTb
- Make window fullscreen: ALTf
- Kill client: ALTSc
- Restart dwm: ALTSr
- Quit dwm: ALTSq### Layouts
- Tile layout: ALTt
- Monocle layout: ALTSt
- Spiral layout: ALTy
- Dwindle layout: ALTSy
- Deck layout: ALTu
- Bstack layout: ALTSu
- Bstack-horiz layout: ALTi
- Grid layout: ALTSi
- Nrowgrid layout: ALTo
- Horizontal grid layout: ALTSo
- Gapless grid layout: ALTp
- Centeredmaster layout: ALTSp
- Make window floating: ALTSSPACE### Gaps
- Toggle gaps: ALTWIN0
- Reset gaps: ALTWINS0
- Increase gaps: ALTWIN1
- Decrease gaps: ALTWINS1All the other keybindings can be found in `config.h`.
### Window actions
- Move window left: ALTSh
- Move window down: ALTSj
- Move window up: ALTSk
- Move window right: ALTSl
- Decrease window width: ALTh
- Increase window width: ALTl
- Focus window down/anti-clockwise: ALTj
- Focus window up/clockwise: ALTkAll the other keybindings can be found in `config.h`.
### Tags
- Toggle scratchpad: ALT0
- Go to last tag: ALTTAB.
- Go to tag `x`: ALT`x` (`x` is a value between `1` and `9`)
- Move selected window to tag `x`: ALTSx.### Programs
- Terminal (`/usr/local/bin/st`): ALTENTER
- Terminal in scratchpad: ALTSENTER
- Rofi: ALTd
- Dmenu: ALTSd
- File manager (`dolphin`): ALTSf
- Web browser (`librewolf-bin`): ALTSW### Others
The "Print screen" key is referred to as PrntScr.- Take a screenshot: PrntScr
- Select area to screenshot: ALTPrntScrThe screenshot will be taken using `scrot`, saving it under `$HOME/Pictures`.
Some XF86 action keys are already mapped, so your keyboard's audio & brightness controls should work without any issues. Audio controls use `pactl`, while brightness controls use `xbacklight`.
NOTE: on Gentoo, the `XF86keysym.h` header (required for XF86 keys to work) is provided by the package `xorg-proto`.
### Scripts
NOTE: to launch these scripts, or even add your own, make sure you setup the correct directory! In `config.h`, look for `S_PATH`, which is set to `.config/scripts` by default. Change it only if the path to the scripts is different! You do not need to specify your home directory.If you have any doubts, just inspect the scripts yourself.
NOTE 2: `TERMCMD` (which is `/usr/local/bin/st` by default) will be used to launch these scripts. Change it if your path is different, or you want to use a different terminal! (Example: `urxvt`)
To use the `set-fan` script, you need a ThinkPad. Even then, you need to configure `thinkpad_acpi` to allow writing custom fan speeds to `/proc/acpi/ibm/fan`. This is well explained [here](https://github.com/saloniamatteo/tp-xfan#requirements). Use your own script/program if you don't.
To use the `screenlock` script, you need `slock`.
To use the `screenrecord` script, you need `ffmpeg`. No, OBS is not used.
To use the `toggletouchpad` script, make sure you have a `synaptics` file in `/etc/X11/xorg.conf.d`! If you don't, you can copy one from your distro's defaults:
```bash
cp /usr/share/X11/xorg.conf.d/*0-synaptics.conf /etc/X11/xorg.conf.d/
```To use the `randomwall-now` script, you need `hsetroot`. Wallpapers will be loaded from `~/wallpapers`.
The `randomwall` script, which is included but not ran by dwm, will set a random wallpaper immediately, and change it every 3 minutes. This script will run indefinitely.
- Detect and select displays: WINd
- Set fan speed: WINf
- Move mouse automatically, periodically: WINi
- Lock the screen: WINl
- Mount drives: WINm
- Record the screen: WINr
- Toggle touchpad: WINt
- Unmount drives: WINu
- Set random wallpaper: WINw
- Safe mode: WINSb
- Emoji chooser: WINSe
- Script launcher: WINSl
- Set a reminder: WINSr
- See disk usage: WINSu
- Downloader: XF86Search ("Search" icon on your keyboard)## Patches
Here the patches are explained in more detail.The following patches are applied:
- dwm-alpha-systray-6.3_full
- dwm-centeredsizehints-6.5
- dwm-cfacts-vanitygaps-6.5_full
- dwm-dragmfact-6.5
- dwm-focusfollowmouse-6.5
- dwm-inplacerotate-6.2
- dwm-netclientliststacking-6.5
- dwm-placemouse-6.5
- dwm-r1615-selfrestart
- dwm-resizecorners-6.3.diff
- dwm-scratchpad-20240321-061e9fe.diff
- dwm-sortscreens-6.5
- dwm-statuscmd-20210405-67d76bd
- dwm-swallow-6.5
- dwm-togglefullscreen-6.5
- dwm-xresources-6.2### dwm-alpha-systray-6.3_full
Add translucent bars to dwm, while also adding a system tray (systray).Patch downloaded from [bakkeby]
### dwm-centeredsizehints-6.5
Center clients based on size hints.Patch downloaded from [bakkeby]
### dwm-cfacts-vanitygaps-6.5_full
Make windows resizeable (cfacts), and add inner & outer gaps (vanitygaps).Patch downloaded from [bakkeby]
### dwm-dragmfact-6.5
Resize windows with the mouse.Patch downloaded from [bakkeby]
### dwm-focusfollowmouse-6.5
Focus follows the mousePatch downloaded from [bakkeby]
### dwm-inplacerotate-6.2
Move windows up/down the stackPatch downloaded from [suckless]
### dwm-netclientliststacking-6.5
Add the _NET_CLIENT_LIST_STACKING property which may be needed by some applications, for example "zoom" for screen sharingPatch downloaded from [bakkeby]
### dwm-placemouse-6.5
Move window onto another window's location, effectively "swapping" their position and sizes.Patch downloaded from [bakkeby]
### dwm-r1615-selfrestart
Restart dwm in place.Patch downloaded from [suckless]
### dwm-resizecorners-6.3
Resize window from the nearest corner, instead of warping the mouse to the bottom-right corner of the window. (NOTE: this was chosen instead of resizepoint because of several patching issues)Patch downloaded from [suckless]
### dwm-scratchpad-20240321-061e9fe
Spawn a terminal in the scratchpad, and toggle the scratchpad.Patch downloaded from [suckless]
### dwm-sortscreens-6.5
Multi-monitor fixesPatch downloaded from [bakkeby]
### dwm-statuscmd-20210405-67d76bd
Signaling for dwmblocks, also fixes weird `[]` shapesPatch downloaded from [suckless]
### dwm-swallow-6.5
Swallow terminal windowsPatch downloaded from [bakkeby]
### dwm-togglefullscreen-6.5
Toggle fullscreenPatch downloaded from [bakkeby]
[bakkeby]: https://github.com/bakkeby/patches
[suckless]: https://dwm.suckless.org/patches