░█░░░░█░░█░▄▀▀▄░█▀▀▄░█░░█▀▀▄░█▀▀▄░█▀▄░░░░█▀▄░▄▀▀▄░▀█▀░█▀▀
░█▀▀█░█▄▄█░█▄▄█░█▄▄▀░█░░█▄▄█░█░▒█░█░█░▀▀░█░█░█░░█░░█░░▀▀▄
░▀░░▀░▄▄▄▀░█░░░░▀░▀▀░▀▀░▀░░▀░▀░░▀░▀▀░░░░░▀▀░░░▀▀░░░▀░░▀▀▀
~/dotfiles/hyprland-dots
this setup uses these programs:
Here is a quick showcase of my setup:
The actual dotfiles are in my dotfiles repo, github.com/maxhu08/dotfiles, under the hyprland-dots branch. Keep in mind the file strucuture in the dotfiles repo are not the exact structure you should have on your system. Most of these files should go in the .config directory. I kept like it this to keep it simple so all you have to set everything is copy and paste some configs. For heavier stuff like my neovim setup I have a separate repo and I guide on how to set it up. For that, check out my neovim-zen page.
# getting-startedIf you want to follow along exactly, install EndeavourOS, but any arch based distro should work. I used EndeavourOS because it works well with nvidia and is less hassle to set up.
# installing-hyprlandOnce you have EndeavourOS installed, boot into it and press CTRL+ALT+F2 to open the tty. The first thing to install is Hyprland which is going to be the DE. To install Hyprland just run:
$ sudo pacman -S hyprland
Then run this command to start hyprland:
$ Hyprland
# hyprland-troubleshooting
If your cursor isn't showing up and you're using a NVIDIA graphics card, follow the fish setup instructions and use my config, which sets the WLR_NO_HARDWARE_CURSORS env var to be 1 to fix this. For more info, see wiki.hyprland.orgThen reboot.
$ reboot
# configuring-hyprland
I have a hyprland.conf in my dotfiles repo but I don't recommend to copy everything because some things might not work for you, such my monitors setup. For monitors use something like xrandr or hyprctl monitors to help you.
You will also need to install some programs like kitty (terminal emulator), nemo (file manager), and wofi (app launcher) so exit hyprland with SUPER+M and install:
$ sudo pacman -S kitty nemo wofi
You will also need to update your hyprland.conf so it knows to use these programs. To do this just copy my hyprland.conf in my dotfiles github repo under the hyprland-dots branch in hypr/hyprland.conf
If you have multiple monitors and want to have separate workspaces for each monitor you can use a program called hyprsome by sopa0, see here:github.com/sopa0/hyprsome.
# hyprland-screenshottingYou will also probably want to setup screenshotting. To do so just install grim and slurp
$ sudo pacman -S grim slurp
Then add these lines to your hyprland.conf
# screenshot keybind (change DP-1 to your display name)
# also make sure you created a directory called screenshots in Pictures/ otherwise the screenshots won't appear anywhere
bind = $mainMod, S, exec, grim -o DP-1 "${HOME}/Pictures/screenshots/screenshot-$(date +%F-%T).png"
# screenshot + crop keybind
bind = $mainMod SHIFT, S, exec, grim -g "$(slurp)" "${HOME}/Pictures/screenshots/screenshot-$(date +%F-%T).png"
...
# Example special workspace (scratchpad) COMMENT THIS OUT FOR SCREENSHOT KEYBIND
# bind = $mainMod, S, togglespecialworkspace, magic
# bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# setting-wallpapers
To set a wallpapers, I used a program called hyprpaper, which works well with hyprland
$ sudo pacman -S hyprpaper
To actually set the wallpaper, edit the hyprpaper.conf file in ~/.config/hypr, you may need to create this file yourself. set preload to and wallpaper to whatever you named your wallpaper file. you can also choose a wallpaper to set for each monitor.
# make sure you to change the wallpaper location to be where you put your wallpaper
preload = ~/.wallpapers/wall0.jpg
wallpaper = DP-1,~/.wallpapers/wall0.jpg
wallpaper = DP-2,~/.wallpapers/wall0.jpg
# ... more monitors
# disable messages on bottom
splash = false
# fully disable ipc
# ipc = off
After, just add this line in your hyprland.conf to execute hyprpaper as hyprland starts
exec-once = hyprpaper
# configuring-wofi
To configure wofi copy my config and style.css from my dotfiles repo into ~/.config/wofi/config and ~/.config/wofi/style.css.
$ cd ~/.config
$ mkdir -p waybar
$ touch config
$ touch style.css
The wofi window should automatically change when pressing SUPER+R or whatever you set the keybind to, no need to refresh.
# installing-waybarFor the taskbar, I used waybar which works well with hyprland
$ sudo pacman -S waybar
Now run waybar with
$ waybar
Or add it to your exec-once in your hyprland.conf
exec-once = waybar
# configuring-waybar
To use my dotfiles for waybar, copy my config and style.css
$ cd ~/.config
$ mkdir -p waybar
$ touch config
$ touch style.css
Then copy the configs in waybar from the dotfiles on my github in branch alpha
It would also be good to install a font since some of the icons might not render properly if you don't have it installed. You should also install wlogout to get a logout menu from the power button. Need aur helper like yay or paru installed
$ paru -S ttf-firacode-nerd
$ sudo pacman -S wlogout
Then you can reboot to see changes
$ reboot
After this, most of the desktop environment stuff is setup
# fishSetting up fish is pretty simple. First install fish
$ sudo pacman -S fish
Then set fish as default shell
$ chsh -s /usr/bin/fish
To get my fish setup, which includes vim mode through keybind kj, tokyonight colorscheme, custom prompt, and more. It also sets some env vars for wayland. Just copy the config.fish file from my dotfiles repo. The fish config should be located in ~/.config/fish/config.fish. That's it.
# kittyYou should already have kitty installed from setting up hyprland. For kitty, my setup is pretty simple, just a config file. Copy my kitty.conf from my dotfiles file into your ~/.config/kitty/kitty.conf. My kitty.conf file just sets font size, transparency, and colorscheme
# vscodeSetting up VSCode should be pretty simple, first run this command to install:
$ paru -S visual-studio-code-bin
VSCode should not automatically appear in the wofi menu. The top bar may also look a little different than normal, don't worry it should be fixed after copying my configs
To get my configs just copy the settings.json and keybindings.json file from my dotfiles repo in vscode.
To set the settings.json file press CTRL+SHIFT+P > Preferences: Open User Settings (JSON)
To set the keybindings.json file press CTRL+SHIFT+P > Preferences: Open Keyboards Shortcuts (JSON)
If VSCode feels laggy or your cursor is off, VSCode may not be using wayland
To fix that, create a code-flags.conf in .config, then add this to it
# put in ~/.config/code-flags.conf
--enable-features=UseOzonePlatform
--ozone-platform=wayland
Lastly, installing the extensions on VSCode should be pretty easy, just search for extensions in VSCode and install them
# chromeInstalling chrome should be pretty simple just use your aur helper
$ paru -S google-chrome
I thought I would mention you should go to the url, chrome://flags, there you can set ozone layer to wayland to make things run smoother
# themingTo set up themes for stuff like nemo install a gtk theme. I'm using the catpuccin theme from
catppuccin-gtk-theme-mochaFor my folder icons I used papirus folders along with the catpuccin papirus folders to color them.
papirus-folderscatppuccin-papirus-folders# obsuse wlrobs-hg which is less laggy than pipewire and select `Wayland
output(dmabuf)`