2024-08-03 06:13:37 +00:00
< div align = "center" >
< picture >
< source srcset = "./assets/logo-dark.png" media = "(prefers-color-scheme: dark)" >
< source srcset = "./assets/logo-light.png" media = "(prefers-color-scheme: light)" >
< img src = "assets/logo-dark.png" alt = "neodotfiles" width = "415" >
< / picture >
< h4 > My custom suckless based desktop focused on absolute productivity and workflow control.< / h4 >
< / div >
2024-03-28 21:00:58 +00:00
2024-03-28 23:00:37 +00:00
![screenshot ](./assets/screenshot.png )
2024-03-28 21:00:58 +00:00
## Key Features
2024-03-28 22:55:20 +00:00
### dwm features
2024-03-28 21:40:01 +00:00
* **A bunch of extra layouts**
2024-03-28 21:00:58 +00:00
- *Default ones:*
- master & stack.
- floating.
- monocle
- *Added ones:*
- dwindle.
- spiral.
- centered master (also known as three column).
- centered floating master (master window floating at the center of the screen, stack on the back).
- grid.
2024-03-28 21:40:01 +00:00
* **Keychord based keybindings:** Just like emacs, you can have chained keybindings, which exponentially extends the amount of keybindings you can have.
* **Scratchpad support:** Convenient scratchpad functionality for storing and retrieving frequently used applications.
* **Tag based workflow**
2024-03-28 21:00:58 +00:00
- Each tag (also called workspaces) is meant to have it's purpose, this is achieved with an extensive set of window rules:
- *Tag 1:* Coding
- *Tag 2:* Testing
- *Tag 3:* Web browsing
- *Tag 4:* Chatting
- *Tag 5:* Audio tools
- *Tag 6:* Video tools
- *Tag 7:* Graphic tools
- *Tag 8:* Office & Document tools
- *Tag 9:* Gaming
2024-03-28 22:55:20 +00:00
### Other suckless utilities included
2024-08-03 06:13:37 +00:00
2024-03-28 23:20:58 +00:00
* *dmenu:* the best run launcher. This build includes some very useful scripts for things like wifi, bluetooth and wallpaper configuration, drive mounting, etc.
2024-08-03 06:13:37 +00:00
* *herbe & tiramisu:* a minimal and fast notification daemon (tiramisu is the daemon, herbe is the notification window, I bundled them together).
2024-03-28 23:20:58 +00:00
* *st:* the fastest terminal emulator ever, [siduck's build ](https://github.com/siduck/st ).
* *slock:* simple and efficient lock screen with fingerprint reader support.
* *dwbmlocks:* what enables you to customize dwm's status area in the bar. This build includes some cool & customizable status scripts.
### Config files
Other configuration files included in this project are available at the config folder. These are:
* `.bash_profile & .bashrc` : Bash configuration files, the profile is neccesary to start up dwm on tty login.
2024-03-28 23:23:37 +00:00
* `.config/btop` : [btop ](https://github.com/aristocratos/btop ) is a system monitoring utility, cooler than htop. Accesible from dwm via a scratchpad.
2024-08-03 06:13:37 +00:00
* `.config/gtk-2.0` & `.config/gtk-3.0` : GTK theeming files, I use the Cantarell font, the [Gruvbox-Dark-BL ](https://github.com/Fausto-Korpsvart/Gruvbox-GTK-Theme ) theme and the [Simp1e-Gruvbox-Dark ](https://gitlab.com/cursors/simp1e ) cursor theme.
2024-03-28 23:20:58 +00:00
* `.config/Kvantum` : Qt theeming via Kvantum, Gruvbox theme is included here too.
* `.config/lvim` : [Lunarvim ](https://www.lunarvim.org/ ) configuration files, this is a neovim distribution and my text editor of choice.
* `.config/mpv` : Mpv config files, mainly just for vim-like keybindings.
* `.config/newsboat` : [Newsboat ](https://github.com/newsboat/newsboat ) is an awesome RSS/Atom feeds reader for the terminal. Also accesible from dwm via a scratchpad. The config file is for vim-like keybindings and also my collection of RSS & YouTube subscriptions feeds (you can open any video in mpv hitting first comma and then v).
2024-03-28 23:23:37 +00:00
* `.config/picom` : The only X compositor that actually works, responsible of transparency and some animations.
2024-08-03 06:13:37 +00:00
* `.config/qutebrowser` : Sometimes I like using a minimal browser, and qutebrowser is the best one.
2024-03-28 23:20:58 +00:00
* `.config/X11` : This is where I put the xinitrc file, responsible of starting up dwm properly.
2024-08-03 06:13:37 +00:00
* `.config/vifm` : [vifm ](https://vifm.info/ ) is the best terminal file manager with everything you will and may need, with vim-like keybindings and image previews (with ueberzug).
2024-03-28 23:20:58 +00:00
* `.config/zathura` : [zathura ](https://git.pwmt.org/pwmt/zathura ) is my document viewer of choice, also with vim-like keybindings.
2024-03-28 21:00:58 +00:00
2024-08-03 06:35:58 +00:00
## Dependencies
2024-03-28 21:00:58 +00:00
2024-08-03 06:13:37 +00:00
Make sure to have these dependencies installed in your system, in this case package names are from Void Linux, you'll have to look for the package names in your distribution:
2024-03-28 21:00:58 +00:00
2024-03-28 21:40:01 +00:00
* **Build dependencies**
2024-03-28 21:00:58 +00:00
```
libX11-devel
libXft-devel
libXrender-devel
libXinerama-devel
2024-03-28 21:40:01 +00:00
libXrandr-devel
libXext-devel
2024-03-28 21:00:58 +00:00
imlib2-devel
2024-03-28 21:40:01 +00:00
harfbuzz-devel
2024-03-28 21:00:58 +00:00
fontconfig-devel
2024-03-28 21:40:01 +00:00
gd-devel
pam-devel
libnotify
2024-03-28 21:00:58 +00:00
xinit
2024-08-03 06:13:37 +00:00
setxkbmap
brightnessctl
2024-03-28 21:00:58 +00:00
make
gcc
2024-03-28 21:40:01 +00:00
vala
```
2024-03-28 23:20:58 +00:00
* **Runtime dependencies** (required for dmenu scripts & dwm)
2024-03-28 21:40:01 +00:00
```
2024-08-03 06:13:37 +00:00
fd-find
2024-03-28 21:40:01 +00:00
feh
xdpyinfo
2024-03-28 21:49:24 +00:00
xdotool
2024-08-03 06:44:25 +00:00
xclip
2024-03-28 21:40:01 +00:00
ffmpeg
maim
slop
udisks2
2024-08-03 06:13:37 +00:00
bluez
2024-03-28 21:40:01 +00:00
j4-dmenu-desktop
NetworkManager
power-profiles-daemon
2024-08-03 06:13:37 +00:00
polkit-gnome
2024-03-28 23:20:58 +00:00
unclutter-xfixes
gnome-keyring
picom
2024-08-03 06:13:37 +00:00
ueberzug
2024-03-28 21:00:58 +00:00
```
2024-08-03 06:13:37 +00:00
* **Other dependencies** (scratchpads)
- `bitwarden` : launched with flatpak by default
- `btop`
- `pulsemixer`
2024-08-03 06:35:58 +00:00
- `alsa-utils`
2024-08-03 06:13:37 +00:00
- `newsboat`
- `arandr`
2024-08-03 06:35:58 +00:00
- `mpv`
- `zathura`
2024-08-03 06:36:41 +00:00
- `nsxiv`
2024-08-03 06:44:25 +00:00
- `cmus`
- `cmus-flac`
2024-08-03 06:13:37 +00:00
- `qalculate-gtk` : launched with flatpak by default
- `ytfzf` : [download here ](https://github.com/pystardust/ytfzf )
- `ani-cli` : [download here ](https://github.com/pystardust/ani-cli )
- `flix-cli` : [download here ](https://github.com/d4r1us-drk/flix-cli )
2024-08-03 06:35:58 +00:00
### System stuff (just here to keep track on stuff I need to rebuild the system)
* **System dependencies** (stuff required for the main installation)
```
2024-08-03 06:42:12 +00:00
NetworkManager
dhcpcd
wpa_supplicant
grub-x86_64-efi
efibootmgr
lvm2
cryptsetup
vim
elogind
polkit
dbus
2024-08-03 06:35:58 +00:00
xorg-server
xf86-input-libinput
pipewire
wireplumber
alsa-pipewire
gstreamer1
gstreamermm
gstreamer-vaapi
gst-plugins-bad1
gst-plugins-good1
gst-plugins-base1
gst-plugins-ugly1
bluez
bluez-alsa
libspa-alsa
libspa-bluetooth
mesa
mesa-vaapi
```
* **Intel stuff** (I mainly use intel devices)
```
xf86-video-intel
mesa-intel-dri
mesa-vulkan-intel
intel-media-driver
libva-intel-driver
```
## Installation & How To Modify
2024-03-28 21:00:58 +00:00
After installing them with your package manager of choice, you can do the following to get the source code and start to modify it to your liking.
```bash
# Clone this repository
2024-03-28 22:55:20 +00:00
$ git clone https://github.com/d4r1us-drk/neodotfiles.git
2024-03-28 21:00:58 +00:00
# Go into the repository
2024-03-28 22:55:20 +00:00
$ cd neodotfiles
2024-03-28 21:00:58 +00:00
2024-03-28 21:40:01 +00:00
# Select which project to compile & install (dwm in this case)
2024-03-28 22:55:20 +00:00
$ cd source/dwm
2024-03-28 21:00:58 +00:00
# To install
$ sudo make install & & make clean
```
2024-03-28 21:40:01 +00:00
This repository is not a tutorial on how to modify or configure dwm or any of the included suckless tools, you obviusly don't need to learn C to do this, with this build you can start with an usable base and you wont even need to patch anything. If you want to add a patch though, you will need to do this manually, because most patching utilities like `patch` and `git apply` will fail due to how much of the code base I modified myself.
2024-03-28 21:00:58 +00:00
2024-03-28 21:40:01 +00:00
To configure my build, the only file you really need to modify is the `config.h` file in each tool, which has everything commented and explained. Of course this being *my* build, it is already configured for my needs.
2024-03-28 21:00:58 +00:00
2024-03-28 22:59:18 +00:00
## dwm patch list
2024-03-28 21:00:58 +00:00
2024-03-28 21:40:01 +00:00
These are the patches I applied to this dwm build (some of them I modified):
2024-03-28 21:00:58 +00:00
- adjacenttag
- alpha
- alwayscenter
- attachbottom
- autostart
- barpadding
- centeredmaster
- clientindicators
- combo
- cyclelayouts
- fibonacci
- focusmaster-return
- fullscreen
- gridmode
- keychord
- movestack
- pertag
- restartsig
- rmaster
- scratchpads
- statuspadding
- sticky
- stickyindicator
- tag-preview
- tapresize
- truecenteredtitle
- warp
- winicon
## Credits
2024-03-28 21:40:01 +00:00
- dwm and the suckless tools available here are made by the suckless guys at [https://suckless.org ](https://suckless.org ).
- herbe is made by dudik and available [here ](https://github.com/dudik/herbe ).
- tiramisu is made by Sweets and available [here ](https://github.com/Sweets/tiramisu ).
2024-03-28 21:47:49 +00:00
- dwmblocks is made by torrinfail and available [here ](https://github.com/torrinfail/dwmblocks )
2024-03-28 21:00:58 +00:00
## License
This project is licenced under the MIT License