Hello all Garudians ,
I recently switched from sway to hyprland and after using it for a while i felt like it is worth to try out ,
So here I am simply trying to make a guide so that those are interested in hyprland can start using it without doing too much adjustments and without need of smashing their head on keyboard for long hours of coding and configuring it …
So let’s begin…
step 1 : install Garuda sway on your system
step 2 : install necessary packages
copy this command and execute :
sudo pacman -Sy hyprland-git waybar-hyprland-git
yay -Sy xdg-desktop-hyprland-git polkit-kde-git
step 3 : copy and paste some of things
first :
make a file for it’s launching , for this make a file on ~/.local/bin/
named as wrappedhl
following command will do it for you :
cd ~/.local/
mkdir bin
cd bin
touch wrappedhl
and paste this in the file created :
#!/bin/sh
cd ~
# Log WLR errors and logs to the hyprland log. Recommended
export HYPRLAND_LOG_WLR=1
# Tell XWayland to use a cursor theme
export XCURSOR_THEME=Bibata-Modern-Classic
# Set a cursor size
export XCURSOR_SIZE=24
# Example IME Support: fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
export GLFW_IM_MODULE=ibus
exec Hyprland
copy the hyprland config file :
########################################################################################
AUTOGENERATED HYPR CONFIG.
PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT,
OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS.
########################################################################################
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
#autogenerated = 1 # remove this line to remove the warning
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,1920x1080@30,auto,1
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = yes
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 5
gaps_out = 10
border_size = 2
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa)
layout = dwindle
}
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 10
blur = yes
blur_size = 5
blur_passes = 1
blur_new_optimizations = on
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
animations {
enabled = yes
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = on
}
misc {
disable_hyprland_logo = true
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
device:epic mouse V1 {
sensitivity = -0.5
}
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, 36, exec, alacritty
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, E, exec, nwgbar
bind = $mainMod, N, exec, thunar
bind = $mainMod SHIFT, 65, togglefloating,
bind = $mainMod, D, exec, wofi --show drun --allow-images
bind = $mainMod SHIFT, D, exec, nwg-drawer
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# my config
#for studying
exec-once = wlsunset -t 2300 -T 2500
#for normal
#exec-once = wlsunset -t 3000 -T 3000
#background
exec-once = wpaperd
#status bar
exec-once = waybar
blurls = waybar
# set volume (laptops only and may or may not work on PCs)
bind = ,122, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%
bind = ,123, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%
bind = ,121, exec, pactl set-sink-volume @DEFAULT_SINK@ 0%
#other bindings
bind = $mainMod, O, exec, firefox
bind =,Print,exec,grim
bind = $mainMod, F, fullscreen
bind = $mainMod SHIFT, F, fakefullscreen
bind = ,232,exec,brightnessctl -c backlight set 5%-
bind = ,233,exec,brightnessctl -c backlight set +5%
# for resizing window
# will switch to a submap called resize
bind=$mainMod,R,submap,resize
# will start a submap called "resize"
submap=resize
# sets repeatable binds for resizing the active window
binde=,right,resizeactive,10 0
binde=,left,resizeactive,-10 0
binde=,up,resizeactive,0 -10
binde=,down,resizeactive,0 10
# use reset to go back to the global submap
bind=,escape,submap,reset
# will reset the submap, meaning end the current one and return to the global one
submap=reset
# to move window
bind = $mainMod SHIFT,up, movewindow, u
bind = $mainMod SHIFT,down, movewindow, d
bind = $mainMod SHIFT,left, movewindow, l
bind = $mainMod SHIFT,right, movewindow, r
# other blurings
blurls = wofi
blurls = thunar
blurls = gedit
blurls = gtk-layer-shell # for nwg-drawer
blurls = catfish
# window rules
windowrule = opacity 0.85 override 0.85 override,^(thunar)$
windowrule = opacity 0.85 override 0.85 override,^(gedit)$
windowrule = opacity 0.85 override 0.85 override,^(catfish)$
#window rules with evaluation
windowrulev2 = opacity 0.85 0.85,floating:1
#executions which i am not certainly sure that will work for every one yeah they are also not that much important but if work then setup will become great!!
exec-once = mako
exec-once=/usr/lib/polkit-kde-authentication-agent-1
to the file : ~/.config/hypr/hyprland.conf
now configure nwg-waybar :
paste this :
{
"layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 30,
//"width": 1350, // Waybar width
// Choose the order of the modules idle_inhibitor
"modules-left": ["custom/launcher","wlr/workspaces", "wlr/mode", "wlr/taskbar"],
"modules-right": ["custom/pacman", "backlight", "custom/keyboard-layout", "cpu", "memory", "battery", "network", "pulseaudio","tray", "idle_inhibitor", "clock","custom/power"],
// Modules configuration
"wlr/workspaces": {
"disable-scroll": true,
"all-outputs": true,
"format": "{icon}",
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10",
}
},
"wlr/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"wlr/taskbar": {
"format": "{icon}",
"all-output":false,
"active-first":true
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
"icon-size": 14,
"spacing": 5
},
"clock": {
"tooltip-format": "{:%A %B %d %Y | %H:%M}",
"format": " {:%a %d %b %I:%M %p}", //12 hour format
//"format": " {:%a %d %b %H:%M}", //24 hour format
"format-alt": " {:%d/%m/%Y %H:%M:%S}",
//"timezones": [ "Kolkata" ],
//"max-length": 200
"interval": 1
},
"cpu": {
"format": " {usage: >3}%",
"on-click": "alacritty -e htop"
},
"memory": {
"format": " {: >3}%",
"on-click": "alacritty -e htop"
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C ",
"format": "{temperatureC}°C "
},
"backlight": {
// "device": "acpi_video1",
"format": "{icon} {percent: >3}%",
"format-icons": ["", ""],
"on-scroll-down": "brightnessctl -c backlight set 1%-",
"on-scroll-up": "brightnessctl -c backlight set +1%"
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity: >3}%",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
//"format-icons": ["", "", "", "", "", "", "", "", "", ""]
},
"network": {
// "interface": "wlp2s0", // (Optional) To force the use of this interface
"format": "⚠ Disabled",
"format-wifi": " {essid}",
"format-ethernet": " {ifname}: {ipaddr}/{cidr}",
"format-disconnected": "⚠ Disconnected",
"on-click": "alacritty -e nmtui"
},
"pulseaudio": {
"scroll-step": 5,
"format": "{icon} {volume: >3}%",
"format-bluetooth": "{icon} {volume: >3}%",
"format-muted":" muted",
"format-icons": {
"headphones": "",
"handsfree": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", ""]
},
"on-click": "pavucontrol"
},
"custom/pacman": {
"format": " {}",
"interval": 7200, // every two hours
"exec": "i=$(checkupdates); echo \"$i\" |wc -l; echo \"$i\" |column -t |tr '\n' '\r'", // # of updates and tooltip details
"exec-if": "exit 0", // always run; consider advanced run conditions
"on-click": "alacritty -e sudo pacman -Syu", // update system
"signal": 8
},
"custom/power": {
"format":"⏻",
"on-click": "nwg-bar",
"tooltip": false,
},
"custom/keyboard-layout": {
"exec": "swaymsg -t get_inputs | grep -m1 'xkb_active_layout_name' | cut -d '\"' -f4",
// Interval set only as a fallback, as the value is updated by signal
"interval": 30,
"format": " {}", // Icon: keyboard
// Signal sent by Sway key binding (~/.config/sway/key-bindings)
"signal": 1, // SIGHUP
"tooltip": false,
"on-click": "~/.config/waybar/scripts/keyhint.sh",
},
"custom/launcher": {
"format":" ",
"on-click": "exec nwg-drawer -c 7 -is 70 -spacing 23",
"tooltip": false,
},
}
in the file :
~/.config/waybar/config
now let’s do something for wallpapers
install wpaperd through yay :
yay wpaperd
now paste these :
[default]
path = "your background folder path "
duration = "5m"
in file : ~/.config/wpaperd/output.conf
for example here is mine :
[default]
path = "/home/ankur/Desktop/backgrounds"
duration = "5m"
it will change the wallpapers in every five minutes
if you don’t want it and just want to have a static wallpaper , then you just don’t need to do this :
use the default background software provided by garuda and if that doesn’t work then add a swaybg command in hyprland config file like this :
exec-once = your swaybg command
now nothing more is needed to configure just restart and switch the session to hyprland from sway
and login normally
for theming you can follow my older one topic that will work for hyprland too :
tips:
- don’t install hyprland-garuda-settings as it has some problems keep garuda-sway-settings as it will work for hyprland very well
- garuda apps will not work well so you need to run them through terminal as sudo user like this :
sudo -E garuda-assistant
(2nd tip is of no use as this had been solved in new edit now no need to do that for garuda applications , please see step 2 of installing packages and hyprland confing file)
things i am still not able to short out :
- not able to get the name of focused window on waybar
- not able to make blurring effect in nwg-drawer (solved see the hyperland config file)
- there is no key bindings for managing floating windows as i wasn’t able to find how to do it (solved mod+shift+space keybinding is used for that thing)
this all from my side , i made this as i thought that it’s worth trying but many people including me doesn’t wanted to read wiki and smash their head in configuring a config file on the keyboard, but that was the only option to try it out
if someone finds the solutions of problem to mention here then please share
Thank you
you guys can tell me if i missed some essential step in this guide