My very messy dotfiles.
- Window manager: Hyprland
- Terminal: Foot
- Shell: Zsh
- Widgets: EWW
- Run launcher: Wofi
- Notifications: Mako/SwayOSD
- Lockscreen: Hyprlock
- Bar: Waybar
- Browser: Zen
- File manager: Thunar or PCManFM
- Really bad code
- Various application themes/configs (Zen Browser, Neovim, Vscodium, Vesktop, ncmpcpp, etc.)
- Colourscheme and wallpaper switcher
- Inbuilt screenshot and screen recording utilities
- Unified theming for GTK 2/3/4 and Qt 5/6
- A bunch of CLI utilities:
yzshell,yzconf,yzpicker,yzrecorder,yzshot,yzwallpaper,yzwidgets,base16-to-yzshell-scheme,base16-to-yzshell-template, andzenconf(run-hon them for details)
- Mod + Return: open terminal
- Mod + W: open browser
- Mod + E: open file manager
- Mod + Shift + L: lock screen
- Mod + R: open run launcher
- Mod + P: open start menu
- Mod + Shift + C: toggle calendar widget
- Mod + Shift + Q: toggle power menu
- Mod + Shift + A: toggle shell appearance settings
- Mod + Tab: toggle workspace switcher
- Mod + Shift + R: reload shell
- Mod + Shift + B: reload bar
- Mod + C: pick colour
- Mod + Shift + D: toggle do-not-disturb
- Mod + Alt + S: toggle screenshot widget
- Mod + S: take selective screenshot
- Mod + Ctrl + S: take full screenshot
- Mod + Q: close active window
- Mod + Ctrl + Q: kill active window
- Mod + X: pin window
- Mod + M: toggle maximise active window
- Mod + Shift + M: toggle fullscreen active window
- Mod + F: toggle float active window
- Mod + [1-9]: switch to workspace
- Mod + Shift + [1-9]: move active window to workspace
- Mod + Shift + S: toggle special workspace
- Mod + Ctrl + Up: move active window to special workspace
- Mod + [Left|Right|Up|Down]: focus in direction
- Mod + Shift + [Left|Right|Up|Down]: move active window in direction
- Mod + [-|=]: increase/decrease split ratio
- Mod + K: swap split
- [Up|Down]: select app
- Return: open selected app, or close if none selected
- Esc: close
- Esc: close
- L: lock screen
- S: shut down
- R: reboot
- E: exit desktop
- Esc: close
- Esc: close
- Esc: close
- [Left|Right|Up|Down]: switch to next/prev workspace
- [1-9]: switch to workspace and close
- [Esc|Tab|Return]: close
These dots are heavily centered around my preferences, but anyone can use them. A lot of options can be toggled during the installation progress, and more can be configured by editing ~/.config/yzshell/config.json (which will be autogenerated) or with the yzconf command.
Prerequisites:
- Base Arch install (I do not recommend installing on a system with any existing configs, it will just override some stuff, and also stow will complain)
- NetworkManager
- Pipewire
gitorcurl
(I haven't fully tested this method, so maybe don't yet)
bash -c $(curl -Ss https://raw.githubusercontent.com/yazoink/yzshell/refs/heads/main/install.sh --optional-deps)
git clone https://github.com/yazoink/yzshell
cd yzshell
./install.sh --local --optional-depsyzshell is configured with the yzconf command. To view all options, run
yzconf get (yzconf get <OPTION> for specific values). To set an option,
run yzconf set <OPTION> <VALUE>; and to apply the changes, run
yzconf deploy_configs --refresh, then reload the shell
(yzshell reload or Ctrl+Shift+R).
The default terminal / file manager / web browser are declared with the options:
terminal, file_manager, and web_browser, and they should be set to the
launch command of the application.
Fonts are configured with the options: sans_font, mono_font, serif_font,
and terminal_font_size. Run fc-cache -fv after changing any of the first
three.
- Show/hide the battery/backlight modules on the bar:
bar_show_battery,bar_show_backlight. - Profile image:
profile_image. - Screenshot / screen recording directories:
screenshot_dir,recording_dir. - Music directory for MPD:
music_dir. - oh-my-zsh theme:
oh_my_zsh_theme. - Papirus-Folders colour:
papirus_folders_colour - Touchpad scrolling sensitivity:
touchpad_scroll_factor.
Aside from the config options, there is no way to override the yzshell dotfiles, or add custom colourschemes or templates, aside from forking the repo. I don't intend to change this anytime soon unless other people actually start using this.
Nonetheless, if you want to fork the repo, it's pretty easy to change basic stuff.
To apply any changes, run:
./install.sh --local --no-deps
yzshell reloadfrom the root directory. This will re-copy all the necessary files.
yzshell uses its own colourscheme format, similar to base16, and written in
json. A template can be found at misc/colourscheme-template.json. A complete
scheme file would look as such:
{
"scheme": "Carob",
"author": "yazoink (https://github.com/yazoink/carob-theme)",
"polarity": "dark",
"background": "242120",
"foreground": "C8BAA4",
"red": "C65F5F",
"orange": "d08b65",
"yellow": "d9b27c",
"green": "859e82",
"cyan": "829e9b",
"blue": "728797",
"purple": "998396",
"brown": "ab9382"
}The yzshell format doesn't include background highlights because they get generated automatically during the template-building process. It doesn't include foreground highlights either because I don't really like them.
To add a scheme, place it in colourschemes/, and it will be detected
automatically (same goes for removals and modifications). The name of the file
(minus the .json) will be used as the scheme's ID.
The base16-to-yzshell-theme script can be used to convert
base16 yaml themes to the yzshell format:
base16-to-yzshell-theme --source base16-theme.yaml --polarity light
The colours of the titlebar buttons can be specified by adding:
"window_buttons": ["red", "orange", "yellow"] -- the default is
["red", "yellow", "green"].
The accent colour can be specified by adding "accent": "purple" -- defaults
to "blue".
All static dotfiles can be found in dotfiles/. All files in this directory
get copied to ~/.dotfiles and symlinked with stow as-is.
There are some other configs which are modified during the deployment process
that can be found in misc/.
yzshell uses Mustache templates for most dynamically generated configs.
The tags used in building the templates contain all yzshell configuration
options, all colourscheme values, plus more. To view all of the available tags,
run yzconf dump_mustache_data.
The colourscheme tags consist of all values declared in json, plus surface1,
surface2, surface3, and surface4 (equivalent to base[1-4]), and
window_button1, window_button2, and window_button3 (titlebar buttons).
accent is converted from the name of its colour to the colour itself, and the
tags <COL>-rgb-r, <COL>-rgb-g, <COL>-rgb-b, <COL>-hex, and
<COL>-hex-bgr are also included.
The base16-to-yzshell-template script can be used to convert
base16 templates to yzshell templates:
base16-to-yzshell-template --source template.mustache
To add a template to yzshell, copy it to templates/, and add it to
templates/templates.json:
{
...
"<TEMPLATE>": "<DESTINATION>"
}Or for multiple destinations:
{
...
"<TEMPLATE>": [
"<DESTINATION 1>",
"<DESTINATION 2>"
]
}