~/dotfiles/hyprland-dots


# info

this setup uses these programs:

Distro
└──
DE/WM/Compositor
└──
Terminal Emulator
└──
Shell
└──
App Launcher
└──
Taskbar
└──
File Manager
└──
Editor
└──
Editor
└──

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-started

If 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-hyprland

Once 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-screenshotting

You 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-waybar

For 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

# fish

Setting 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.

# kitty

You 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

# vscode

Setting 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

# chrome

Installing 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

# theming

To set up themes for stuff like nemo install a gtk theme. I'm using the catpuccin theme from

catppuccin-gtk-theme-mocha

For my folder icons I used papirus folders along with the catpuccin papirus folders to color them.

papirus-folderscatppuccin-papirus-folders
# obs

use wlrobs-hg which is less laggy than pipewire and select `Wayland

output(dmabuf)`