A fully repeatable desktop environment built on Arch using Hyprland
Welcome! My goal with this repository was to provide myself with a development desktop environment that is repeatable and managed by source control. This allows me to make changes, test them, throw them away and move them to a new machine / fresh install with minimal post-setup.
- Hyprland - nuff said...
- Full Autotiling and keyboard navigation
- Fully automated installation
- Version controlled dotfiles
- Fully pallet matched desktop environment
I strongly recommend you build this into a clean minimal installation of Arch. During your clean installation of Arch be sure to add git as an additional package, then once installation has complete and you've logged into for the first time, simply clone this repo, cd into it and run ./setup.sh
. Once complete reboot and you'll find yourself at the SDDM Login Screen.
- Fork this repository
- Install a minimal installation of Arch Linux a. Be sure to install git as an additional package
- After installation completes, clone your forked version of this repo
- cd into the directory and run
./setup.sh
- Reboot
Generally if I want to add a new tool or feature to my environment I'll start by creating a branch from main. Then I'll manually install the applications / tools or make whatever changes I want to then add it to the installation list inside setup.sh
. If it's an application install and I want to maintain the configs I'll move them under Dotfiles/
and create a ln
line for them inside setup.sh
. Once I'm happy with my changes I'll push my branch and merge into main.
You're welcome to contribute via PR but please keep in mind since these are my personal dots I'll be very picky over what i'll add / accept into main. Feel free to fork however and make them your own
I hardly use my mouse, only for things I really have to like interacting with firefox or other UI's that don't like keyboard shortcuts. For that reason my hyprland config is almost entirely designed around the following keyboad shortcuts:
Bindings are as follows:
$mainMod = Super
$mainAlt = Left Alt
$mainCtrl = Left Ctrl
Application Shortcuts
Shortcut | Action |
---|---|
$mainMod + Return | Open Terminal |
$mainMod + E | Open Thunar |
$mainMod + B | Open Firefox |
$mainMod + V | Open Code |
$mainMod + L | Lock Screen |
$mainMod + SPACE | Open Wofi / App launcher |
$mainMod + J | Toggle window split |
$mainMod + Q | Quit current focused app/window |
Navigation Shortcuts
Shortcut | Action |
---|---|
$mainMod + LEFT | Focus left window |
$mainMod + RIGHT | Focus right window |
$mainMod + UP | Focus upper window |
$mainMod + DOWN | Focus lower window |
$mainMod + # | Move to workspace # |
$mainMod + SHIFT + # | Move current window to workspace # |
$mainMod + WHEEL_UP | Move to next workspace |
$mainMod + WHEEL_Down | Move to previous workspace |
$mainMod + MOUSE_LEFT | Drags the selected window |
$mainMod + MOUSE_RIGHT | Resize the selected window |
As it currently stands, setup.sh is designed to be used on a fresh installation of Arch, whilst it is technically possible to use it to "keep your env in sync" so to speak - I haven't fully tested it yet. Ideally I'd like it to function in a similar way to how nix works where setup.sh
runs priodically to keep my system in sync. Or maybe I'll just switch to nixos as somepoint....
Compositor: Hyprland | Bar: Waybar | Application Launcher: Wofi |
---|---|---|
Login: SDDM | Notifications: Mako | File Manager: Thunar |
Terminal: Kitty | Walls: swww | Lock: Swaylock |
Currently everything is themed according to (or based off of) enkia's Tokyo Night Storm VSCode color pallet (or just Tokyo Night where storm wasn't possible) I do plan in future switching over to GruvBox or maybe even building some kind of switcher, initially probably just a branch based theme selector.
When using setup.sh
the following applications will be installed. It's possible to remove/add any application you like (see below) during installation, but once they're installed you'll have to use yay (yay -R {application name}
) to remove them
Core | Application | CLI |
---|---|---|
llinux-headers | Kitty | git |
QT5-Wayland | Swappy | JQ |
QT5CT | Grim | OpenSSH |
Hyprland | Slurp | GVFS |
Mako | Thunar | File Roller |
SWW | Thunar-Archive-Plugin | Btop |
Sway | OBS-Studio | Tree |
Swaylock | Firefox | rTorrent |
Swaylock-Effects | Visual Studio Code | Neofetch |
Swayidle | Bitwarden-Cli | |
Wofi | Wget | |
xdg-desktop-portal-hyprland | Zsh | |
Polkit-Gnome | Nano | |
Python-Requests | aws-cli-v1 | |
PA Mixer | Vault | |
PAVUControl | ||
Bluez | ||
Bluez-Utils | ||
Blueman | ||
Network-Manager Applet | ||
Network-Manager OpenVPN | ||
Pacman-Contrib | ||
LX-Apperance | ||
XFCE4-Settings | ||
SDDM | ||
QT5-SVG | ||
QT5-Quickcontrols2 | ||
QT5-GraphicalEffects |
All dots are located under Dotfiles/. I recommend you leave them in this location and rely on the symlink stage of setup.sh to link them into the correct locations. You can however move pick and chose which dots you want, if that's the case I'm going to assume you know what you're doing.