Screen Too Small

This course material requires a larger screen to properly display the terminal and editor interfaces.

Please use a tablet, laptop, or desktop computer for the best learning experience.

You can continue browsing, but the experience will be significantly limited.

2/3
Free Trial: 4 lessons remaining
Unlock Full Access

Tools for Hyprland

Estimated time: 5 minutes

Hyprland is great, but...

Hyprland is a great piece of technology, but a base install of hyprland lacks a lot of essential tooling for day-to-day workflows.

But you see, that is kind of the point of Linux, and Hyprland in general. This is not the walled garden of Apple. This is not a Neovim configuration that is fully-baked like NvChad. The point is to give you a tiling WM and you can figure it however you want.

That's Hyprland.

Just like Neovim for Newbs, I'm not going to give you something to copy and paste. We're going to show you the how of configuration so you can make Hyprland sing your tune.

So buckle up, I'm going to show you the programs that I think are essential in any Hyprland installation. And spoiler alert, I use all of these myself.

BUT FIRST

Before we go installing some of the extras, let's update the Hyprland config. These updates make it feel a lot better to me. So let's dig in and modify the config.

You can easily go to the config by opening kitty with $mainMod + R and searching for kitty. After opening kitty, we can use neovim to open our config.

 nvim ~/.config/hypr/hyprland.conf

Edit that config

Changing our file manager.

Let's do a little house cleaning, shall we? The first thing I want to do is change my $fileManager to something that is actually installed on my system. You see, I started with gnome as a base, and I have nautilus installed as my file manager. So let's change that.

$fileManager = nautilus

Make our terminal open with $mainmod + return

By default, our terminal shortcut is a little... how should I say, non-ergonomic? So let's change that. We can improve it with a simple configuration change.

bind = $mainMod, return, exec, $terminal

Change our launcher to something more ergonomic

I like the mac OS days of using $mainMod + space to open my launcher. So let's update that as well.

bind = $mainMod, space, exec, $menu

Last but not least, vim keys for navigation

We can't be vim nerds and use our arrows to navigate between active windows in this setup.

# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d

ahhhh, that's better

Let's make this config Shine

We need some programs that Hyprland doesn't come installed with. These tools will allow us to make this config a daily driver. Let's start with something that might sound weird at first, but we'll build on it. Let's start with a screenshot tool.

hyprshot

hyprshot is an amazing screenshot tool that provides us with a lot of functionality at little cost. Under the hood, hyprshot uses grim to take images and slurp for selecting the thing to take a screenshot of.

Together, this makes for a great tool.

First, we'll need to install it. If you remember, I use Arch (btw), so I'll use yay to add it.

yay -S hyprshot

Next, we can test hyprshot with a simple command.

hyprshot -m window

When you run this command, you'll see the mouse has a newfound ability to select a window. And when this window is selected, you'll have a screenshot saved! This is fantastic. Before we move on, we'll add a keybinding to our config.

bind = , Print, exec, hyprshot -m window
bind = shift, Print, exec, hyprshot -m region

Keybinding for Hyprshot

💡
The second line will allow us to select a region by dragging our mouse!

This is great and all, but you know what? I don’t see any notification that a screenshot was taken. Which brings me to my next program on the list.

swaync

swaync is a notification daemon for wayland. The way swaync works with hyprland is amazing. It also looks pretty great out of the box.

To use swaync, we'll need a companion program. You see, swaynv is really just a daemon that waits for notification events, and displays these notifications in wayland systems. We need the program that actually sends the notifications.

Thankfully, libnotify is pretty ubiquitous on all linux systems. In fact, libnotify should be installed on your system already. If it isn't, check your base system's notification program.

Installation of Swaync

yay -S swaync  

Once installed, we can run swaync in our terminal by just typing swaync. Next, open up another terminal, and test that swaync is running correctly. We can send a notification to swaync using libnotify by running the notify-send command, like so:

notify-send "hey this is a notification"

Test your notifications!

there it is, notifications!

Next, we are going to want to make sure our notification daemon is running whenever we load hyprland. To do so, we'll add this to our config.

exec-once = swaync

Adding swaync on startup

hyprlock

hyprlock is part of the hypr ecosystem. This is a group of tools that work very well with hyprland and add a lot of functionality on top of the base install. For example, it adds the ability to have a lockscreen. Like everything else here, it's highly configurable. First, let's check out the basic usage.

Installation of Hyprlock

You can install hyprlock just like all other packages in this tutorial.

yay -S hyprlock

Installation

For hyprlock to run, you'll need a configuration. Create it easily with a touch command.

touch ~/.config/hypr/hyprlock.conf

Just like with hyprland, you need to configure it to make it really useful. The good news is, there is a solid base configuration that enables hyprlock to show a basic login form. Once it's locked, you'll see it. You should definitely read the docs for hyprlock but in the meanwhile, here is a basic config for showing the login screen.

" ~/.config/hypr/hyprland.conf
input-field {
monitor =
size = 200, 50
outline_thickness = 3
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.15 # Scale of dots' absolute size, -1.0 - 1.0
dots_center = false
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
dots_fade_time = 200 # Milliseconds until a dot fully fades in
dots_text_format = # Text character used for the input indicator. Leave empty for a rectangle that will be rounded via dots_rounding (default).
outer_color = rgb(151515)
inner_color = rgb(200, 200, 200)
font_color = rgb(10, 10, 10)
font_family = Noto Sans # Font used for placeholder_text, fail_text and dots_text_format.
fade_on_empty = true
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
hide_input = false
rounding = -1 # -1 means complete rounding (circle/oval)
check_color = rgb(204, 136, 34)
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
fail_timeout = 2000 # milliseconds before fail_text and fail_color disappears
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
capslock_color = -1
numlock_color = -1
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
invert_numlock = false # change color if numlock is off
swap_font_color = false # see below

position = 0, -20
halign = center
valign = center

}

The above ☝️code will show a basic input form when your screen is locked. Try it out by running hyprlock. It is cool, albeit barebones.

We'll add a keybinding to our config now so it's easy to lock our machine whenever we go outside to touch grass.

bind = $SUPER_SHIFT, l, exec, hyprlock

hypridle

Another basic thing that any system really needs is some power-saving and auto-sleep features. Another tool in the hypr ecosystem is hypridle. It gives us all that we need VERY easily.

Install Hypridle

yay -S hypridle

Installation

Hypridle has a very interesting and powerful convention for its configuration. Just like with hyprlock, we'll create our config first.

mkdir -p ~/.config/hypr && touch ~/.config/hypr/hypridle.conf

hypridle relies on "listener" blocks to control how and when it runs certain things. You can test this out with a basic configuration

listener {
timeout = 5 # in seconds
in-timeout = send-notify "You're timing out!!"
on-resume = send-notify "You have resumed!!"
}

Basic config

To test it, just run hypridle in your terminal.

☝️will send a notification (to swaync I hope) in 5 seconds that you are about to time out! When you move your mouse, it will tell you that you've resumed. Now you have tested that hypridle is working! Here is a better example of a config you can use moving forward:

general {
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}

listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = brightnessctl -r # monitor backlight restore.
}

turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.

listener {
timeout = 150 # 2.5min.
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
}

listener {
timeout = 300 # 5min
on-timeout = loginctl lock-session # lock screen when timeout has passed
}

listener {
timeout = 330 # 5.5min
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
}

listener {
timeout = 1800 # 30min
on-timeout = systemctl suspend # suspend pc
}

You know what's coming next. It's adding a line to the configuration of hyprland so this launches on load.

exec-once = hypridle

Conclusion

We’ve covered a ton of ground in this episode of Hyprland for Newbs, and our configuration is now well on its way to being more ergonomic, more functional, and ready for day-to-day use. But we’re just getting started. Hyprland’s minimalism allows for some incredible customization, and we’ve only scratched the surface with tools like Hyprshot, Swaync, and Hyprlock.

What’s next? We’ll be diving into the aesthetics that transform Hyprland from a simple tiling window manager into an environment that not only works the way you want but looks incredible while doing it. We’re talking sleek bar setups, dynamic wallpapers, and personalized themes that make your desktop sing. Your Hyprland install is about to look as good as it feels.

So, stay tuned. If you thought this episode added essential functionality, Episode 3 is going to blow your mind. You won’t want to miss it—Hyprland is about to become your dream setup.

You've completed this lesson!

You completed this lesson less than a minute ago.