Hyprland and Hyprland-related configuration files
Table of Contents
- Hyprland
~/.config/hypr/hypland.conf
~/.config/hypr/hypr.d/monitors.conf
~/.config/hypr/hypr.d/autostart.conf
~/.config/hypr/hypr.d/variables.conf
~/.config/hypr/hypr.d/input.conf
~/.config/hypr/hypr.d/general.conf
~/.config/hypr/hypr.d/decoration.conf
~/.config/hypr/hypr.d/animations.conf
~/.config/hypr/hypr.d/dwindle.conf
~/.config/hypr/hypr.d/master.conf
~/.config/hypr/hypr.d/gestures.conf
~/.config/hypr/hypr.d/groups.conf
~/.config/hypr/hypr.d/binds.conf
~/.config/hypr/hypr.d/misc.conf
~/.config/hypr/hypr.d/devices.conf
~/.config/hypr/hypr.d/windowrule.conf
~/.config/hypr/hypr.d/workspaces.conf
~/.config/hypr/hypr.d/keybindings.conf
- waybar
- hyprpaper
- hyprshade
- hyprlock
- hypridle
- Alacritty
- Swappy
- Rofi configuration
Hyprland
~/.config/hypr/hypland.conf
- Modular configuration files
source = ./hypr.d/monitors.conf source = ./hypr.d/autostart.conf source = ./hypr.d/variables.conf source = ./hypr.d/input.conf source = ./hypr.d/general.conf source = ./hypr.d/groups.conf source = ./hypr.d/decoration.conf source = ./hypr.d/animations.conf source = ./hypr.d/dwindle.conf source = ./hypr.d/master.conf source = ./hypr.d/gestures.conf source = ./hypr.d/binds.conf source = ./hypr.d/misc.conf source = ./hypr.d/devices.conf source = ./hypr.d/windowrule.conf source = ./hypr.d/workspaces.conf source = ./hypr.d/keybindings.conf
I split the configuration file into sections, based on the section from the configuration variables.
~/.config/hypr/hypr.d/monitors.conf
# See https://wiki.hyprland.org/Configuring/Monitors/ monitor=,highrr,auto,1 # monitor=,1920x1080@60,auto,1 monitor=DP-1,preferred,auto,1 monitor=DP-2,preferred,auto,1 monitor=DP-3,preferred,auto,1 monitor=DP-4,preferred,auto,1 monitor=DP-5,preferred,auto,1 # laptop monitor = HDMI-A-1, preferred, auto, 1 # specific monitors # Samsung monitor = desc:Samsung Electric Company SMS19A100 HMAC900747, preferred, auto, 1
These are the monitors I used across all my machines.
~/.config/hypr/hypr.d/autostart.conf
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME SSH_AUTH_SOCK exec-once = dbus-update-activation-environment --systemd --all & exec-once = /usr/lib/polkit-kde-authentication-agent-1 & exec-once = gnome-keyring-daemon --components=pkcs11,secrets,ssh -r -d & exec-once = dbus-launch --sh-syntax --exit-with-session dunst -conf ~/.config/dunst/dunstrc & exec-once = pgrep hypridle || hypridle exec-once = waybar & exec-once = hyprpaper & exec-once = wl-paste --type text --watch cliphist store & exec-once = wl-paste --type image --watch cliphist store & exec-once = hyprctl setcursor Bibata-Modern-Classic 24 exec-once = hyprpm reload exec-once = hyprshade auto & # exec-once = thunar --daemon & exec-once = hypridle exec-once = emacs --daemon & exec-once = blueman-applet & exec-once = blueman-tray & exec-once = nm-applet --indicator # exec-once = /usr/lib/kdeconnectd # exec-once = kdeconnect-indicator exec-once = udiskie -t exec-once = ~/.local/bin/toggleLeds
Required packages(archlinux
):
- blueman
- network-manager-applet
- polkit-kde-agent
- gnome-keyring
- udiskie
- dunst
- kdeconnect
- hyprpaper
- wl-clipboard
- bibata-cursor-theme
- hyprshade
- thunar
- hypridle
~/.local/bin/toggleLeds is just a script for calling another python scripts (see here for the actual script) for toggling my keyboard leds. I use another bash script since I don't want to hardcode the input device location here.
#!/usr/bin/env bash if ! $(pgrep ledToggler.py) &>/dev/null; then setsid ledToggler.py /dev/input/event4 scrolllock scrolllock 1 1 fi
This is a very hacky solution, and it messes up my scrolling in Emacs. Should be removed when the leds handling is better in wayland, or buy better keyboard. And my keyboard description:
Bus 001 Device 003: ID 2a7a:9597 CASUE USB KB
- Additional GTK Settings
exec-once = gsettings set org.gnome.desktop.interface font-name "JetBrainsMonoNL Nerd Font Mono 10" exec-once = gsettings set org.gnome.desktop.interface cursor-theme Bibata-Modern-Classic exec-once = gsettings set org.gnome.desktop.interface cursor-size 24 exec-once = gsettings set org.gnome.desktop.interface gtk-theme Breeze exec-once = gsettings set org.gnome.desktop.interface gtk-key-theme Emacs exec-once = gsettings set org.gnome.desktop.interface icon-theme Papirus exec-once = gsettings set org.gnome.desktop.interface color-scheme \'prefer-dark\' exec-once = gsettings set org.gnome.desktop.interface text-scaling-factor 0.9 exec-once = gsettings set org.gnome.desktop.sound theme-name freedesktop exec-once = gsettings set org.gnome.desktop.sound input-feedback-sounds true exec-once = gsettings set org.gnome.desktop.sound allow-volume-above-100-percent true
Required packages(
archlinux
):- nerd-fonts
- breeze, breeze-gtk and breeze-icons
- Emacs
- sound-theme-freedesktop
~/.config/hypr/hypr.d/variables.conf
- Applications
$terminal = alacritty --config-file ~/.config/alacritty/alacritty-hyprland.toml $fileManager = thunar $menu = rofi -show drun -theme hyprland-menu $editor = emacsclient -c -a emacs $editor_term = emacsclient -t -a "" $mail = thunderbird $browser = google-chrome-stable
- Environment Variables
env = QT_QPA_PLATFORM,wayland env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that env = QT_AUTO_SCREEN_SCALE_FACTOR,1 env = QT_QPA_PLATFORMTHEME, qt5ct env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = SDL_VIDEODRIVER,wayland env = CLUTTER_BACKEND,wayland env = GTK_THEME,Breeze-Dark env = GTK2_RC_FILES,/usr/share/themes/Breeze-Dark/gtk-2.0 env = XCURSOR_THEME,Bibata-Modern-Classic env = XCURSOR_SIZE,24 env = HYPRCURSOR_THEME,Bibata-Modern-Classic env = HYPRCURSOR_SIZE,24
- Wallpapers
This will set the wallpaper for each workspaces. The one I used is stored at my gitlab repository.
:ID: 0aa9f011-8ece-41b9-bb18-7ab04c0f436c
$w1 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/linux-friends-4k.png" $w2 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/linux-friends-4k.png" $w3 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/keyboard.png" $w4 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/keyboard.png" $w5 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/nord_alone_tree.png" $w6 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/nord_alone_tree.png" $w7 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/wild.png" $w8 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/wild.jpg" $w9 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/nord_buildings.png" $w10 = hyprctl hyprpaper wallpaper ",~/.local/share/wallpapers/nord/nord_buildings.png"
~/.config/hypr/hypr.d/input.conf
input { kb_layout = us kb_variant = kb_model = kb_options = kb_rules = numlock_by_default = false repeat_rate = 35 repeat_delay = 250 follow_mouse = 1 touchpad { natural_scroll = true disable_while_typing = true tap-to-click = true scroll_factor = 0.5 } sensitivity = 0 # -1.0 - 1.0, 0 means no modification. special_fallthrough = true }
~/.config/hypr/hypr.d/general.conf
general { # See https://wiki.hyprland.org/Configuring/Variables/ for more gaps_in = 4 gaps_out = 5 gaps_workspaces = 50 border_size = 1 col.active_border = rgba(0DB7D4FF) col.inactive_border = rgba(31313600) #col.nogroup_border=0xff89dceb #col.nogroup_border_active=0xfff9e2af resize_on_border = true no_focus_fallback = true layout = dwindle # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on allow_tearing = true }
~/.config/hypr/hypr.d/decoration.conf
decoration { # See https://wiki.hyprland.org/Configuring/Variables/ for more rounding = 20 blur { enabled = true xray = true special = false new_optimizations = true size = 14 passes = 4 brightness = 1 noise = 0.01 contrast = 1 popups = true popups_ignorealpha = 0.6 } shadow { enabled = true ignore_window = true render_power = 4 range = 20 offset = 0 2 color = rgba(0000002A) } dim_inactive = false dim_strength = 0.1 dim_special = 0 }
~/.config/hypr/hypr.d/animations.conf
animations { enabled = true # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more bezier = linear, 0, 0, 1, 1 bezier = md3_standard, 0.2, 0, 0, 1 bezier = md3_decel, 0.05, 0.7, 0.1, 1 bezier = md3_accel, 0.3, 0, 0.8, 0.15 bezier = overshot, 0.05, 0.9, 0.1, 1.1 bezier = crazyshot, 0.1, 1.5, 0.76, 0.92 bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0 bezier = menu_decel, 0.1, 1, 0, 1 bezier = menu_accel, 0.38, 0.04, 1, 0.07 bezier = easeInOutCirc, 0.85, 0, 0.15, 1 bezier = easeOutCirc, 0, 0.55, 0.45, 1 bezier = easeOutExpo, 0.16, 1, 0.3, 1 bezier = softAcDecel, 0.26, 0.26, 0.15, 1 bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration animation = windows, 1, 3, md3_decel, popin 60% animation = windowsIn, 1, 3, md3_decel, popin 60% animation = windowsOut, 1, 3, md3_accel, popin 60% animation = border, 1, 10, default animation = fade, 1, 3, md3_decel animation = layersIn, 1, 3, menu_decel, slide animation = layersOut, 1, 1.6, menu_accel animation = fadeLayersIn, 1, 2, menu_decel animation = fadeLayersOut, 1, 4.5, menu_accel animation = workspaces, 1, 7, menu_decel, slide animation = specialWorkspace, 1, 3, md3_decel, slidevert }
~/.config/hypr/hypr.d/dwindle.conf
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 = true # you probably want this smart_split = false smart_resizing = false }
~/.config/hypr/hypr.d/master.conf
master { # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more }
~/.config/hypr/hypr.d/gestures.conf
gestures { # See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = true workspace_swipe_distance = 700 workspace_swipe_fingers = 3 workspace_swipe_cancel_ratio = 0.2 workspace_swipe_min_speed_to_force = 5 workspace_swipe_direction_lock = true workspace_swipe_direction_lock_threshold = 10 workspace_swipe_create_new = true }
~/.config/hypr/hypr.d/groups.conf
group { insert_after_current = true focus_removed_window = true col.border_active = 0x66ffff00 col.border_inactive = 0x66777700 col.border_locked_active = 0x66ff5500 col.border_locked_inactive = 0x66775500 groupbar { enabled = true font_family = "JetBrainsMonoNL Nerd Font Mono 10" font_size = 10 gradients = true height = 14 priority = 3 render_titles = true scrolling = true text_color = 0xffeceff4 # white col.active = 0x665e81ac col.inactive = 0x662e3440 col.locked_active = 0x66ebcb8b col.locked_inactive = 0x66d08770 } }
~/.config/hypr/hypr.d/binds.conf
binds { workspace_back_and_forth = false allow_workspace_cycles = true scroll_event_delay = 0 }
~/.config/hypr/hypr.d/misc.conf
misc { # See https://wiki.hyprland.org/Configuring/Variables/ for more vfr = 1 vrr = 1 focus_on_activate = false animate_manual_resizes = false animate_mouse_windowdragging = false enable_swallow = false swallow_regex = (foot|kitty|allacritty|Alacritty) force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = true disable_splash_rendering = false mouse_move_enables_dpms = true key_press_enables_dpms = true mouse_move_focuses_monitor = true new_window_takes_over_fullscreen = 2 allow_session_lock_restore = true initial_workspace_tracking = false }
~/.config/hypr/hypr.d/devices.conf
device { name = epic-mouse-v1 sensitivity = -0.5 }
~/.config/hypr/hypr.d/windowrule.conf
- For all windows
windowrule = noblur,.* windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. windowrulev2 = opacity 0.99, class:.*
pavucontrol
windowrulev2 = float,class:^(pavucontrol)$ windowrulev2 = size 50%,class:^(pavucontrol)$
pwvucontrol
windowrulev2 = float,class:^(com.saivert.pwvucontrol)$ windowrulev2 = size 50%,class:^(com.saivert.pwvucontrol)$
polkit-kde-agent
windowrulev2 = float,class:(org.kde.polkit-kde-authentication-agent-1) windowrulev2 = center,class:(org.kde.polkit-kde-authentication-agent-1)
blueman
windowrulev2 = float,class:(blueman) windowrulev2 = center,class:(blueman) windowrulev2 = size 50%,class:(blueman)
thunderbird
windowrulev2 = float,class:(thunderbird),title:(status) windowrulev2 = float,class:(thunderbird),title:(.*)(Reminders) windowrulev2 = float,class:(thunderbird),title:(Write:.*) windowrulev2 = float,class:(thunderbird),title:(Send.*) windowrulev2 = float,class:(thunderbird),title:(Inbox.*) windowrulev2 = float,class:(Msgcompose.*) windowrulev2 = float, class:(thunderbird),title(.*)(Reminders)$ windowrulev2 = workspace 4, class:(thunderbird)
firefox
windowrulev2 = idleinhibit always, class:firefox title:(.*)(- YouTube) windowrulev2 = opacity 1, class:firefox title:(.*)(- YouTube)
Qtpass
windowrulev2 = float,class:(QtPass)
zoom
windowrulev2 = float,class:(zoom) windowrulev2 = opacity 1, class:(zoom) windowrulev2 = workspace 10, class:(zoom) windowrulev2 = opacity 1, class:(zoom), title:(Settings) windowrulev2 = opacity 1, class:(zoom), title:(Zoom Meeting)
file-roller
windowrulev2 = float, class:(file-roller)
ncmpcpp
windowrulev2 = float,class:(ncmpcpp) windowrulev2 = center,class:(ncmpcpp) windowrulev2 = size 50%,class:(ncmpcpp)
khal
windowrulev2 = float, class:(khal) windowrulev2 = size 40%, class:(khal) windowrulev2 = move onscreen cursor 50% 5%, class:(khal)
astroid
windowrulev2 = workspace 4, class:(astroid) windowrulev2 = maximize, class:(astroid)
vlc
windowrulev2 = workspace 7,class:(vlc) windowrulev2 = opacity 1,class:(vlc) windowrulev2 = idleinhibit always,class:(vlc)
remmina
windowrulev2 = float, workspace 8, class:(org.remmina.Remmina)
- libvirt / virt-manager
windowrulev2 = float, workspace 9, class:(virt-manager), initialTitle:(QEMU/KVM - Connection Details) windowrulev2 = float, workspace 9, class:(virt-manager), initialTitle:(.*on QEMU/KVM)
transmission
windowrulev2 = workspace 9,class:^(com.transmissionbt.transmission).* windowrulev2 = float,title:(Torrent.*)
- dialogs
windowrule=float,title:^(Open File)(.*)$ windowrule=float,title:^(Select a File)(.*)$ windowrule=float,title:^(Choose wallpaper)(.*)$ windowrule=float,title:^(Open Folder)(.*)$ windowrule=float,title:^(Save As)(.*)$ windowrule=float,title:^(Library)(.*)$ windowrule=float,title:^(File Upload)(.*)$
thunar
windowrule = center, title:^(Open File)(.*)$ windowrule = center, title:^(Select a File)(.*)$ windowrule = center, title:^(Choose wallpaper)(.*)$ windowrule = center, title:^(Open Folder)(.*)$ windowrule = center, title:^(Save As)(.*)$ windowrule = center, title:^(Library)(.*)$ windowrule = center, title:^(File Upload)(.*)$ windowrulev2 = float, title:(File Operation Progress) windowrulev2 = float, class:(thunar),title:(Confirm to replace files)
- no tearing
windowrulev2 = noshadow,floating:0
htop
windowrulev2 = float, class:(htop) windowrulev2 = size 100% 40%, class:(htop) windowrulev2 = move 0 40, class:(htop)
nmtui
windowrulev2 = float, class:(nmtui)
vim
windowrulev2 = float, class:(vim) windowrulev2 = maximize, class:(vim)
Emacs
(in terminal mode)
windowrulev2 = maximize, class:(nw-emacs)
showmethekey
windowrulev2 = float, class:(one.alynx.showmethekey), title:(Show Me The Key) windowrulev2 = nofocus, class:(showmethekey-gtk), title:(Floating Window - Show Me The Key) windowrulev2 = opacity 0.4, class:(showmethekey-gtk), title:(Floating Window - Show Me The Key) windowrulev2 = center, class:(showmethekey-gtk), title:(Floating Window - Show Me The Key) windowrulev2 = float, class:(showmethekey-gtk), title:(Floating Window - Show Me The Key) windowrulev2 = pin, class:(showmethekey-gtk), title:(Floating Window - Show Me The Key) windowrulev2 = size 100% 10%, class:(showmethekey-gtk), title:(Floating Window - Show Me The Key) windowrulev2 = move 0 90%, class:(showmethekey-gtk), title:(Floating Window - Show Me The Key)
screenkey
windowrulev2 = float, class:(screenkey)
- steam
windowrulev2 = opacity 1, class:(steam) initialTitle:(.*) windowrulev2 = float, class:(steam) initialTitle:(.*) windowrule=immediate,.*\.exe windowrulev2=immediate,class:(steam_app)
- easyeffect
windowrulev2 = float, title:(Easy Effects) windowrulev2 = size 100% 60%, title:(Easy Effects)
- layer
layerrule = xray 1, .* # layerrule = noanim, .* layerrule = noanim, walker layerrule = noanim, selection layerrule = noanim, overview layerrule = noanim, anyrun layerrule = noanim, indicator.* layerrule = noanim, osk layerrule = noanim, hyprpicker layerrule = blur, shell:* layerrule = ignorealpha 0.6, shell:* layerrule = noanim, noanim layerrule = blur, gtk-layer-shell layerrule = ignorezero, gtk-layer-shell layerrule = blur, launcher layerrule = ignorealpha 0.5, launcher layerrule = blur, notifications layerrule = ignorealpha 0.69, notifications layerrule = animation slide top, sideleft.* layerrule = animation slide top, sideright.* layerrule = blur, session layerrule = blur, bar layerrule = ignorealpha 0.6, bar layerrule = blur, corner.* layerrule = ignorealpha 0.6, corner.* layerrule = blur, dock layerrule = ignorealpha 0.6, dock layerrule = blur, indicator.* layerrule = ignorealpha 0.6, indicator.* layerrule = blur, overview layerrule = ignorealpha 0.6, overview layerrule = blur, cheatsheet layerrule = ignorealpha 0.6, cheatsheet layerrule = blur, sideright layerrule = ignorealpha 0.6, sideright layerrule = blur, sideleft layerrule = ignorealpha 0.6, sideleft layerrule = blur, indicator* layerrule = ignorealpha 0.6, indicator* layerrule = blur, osk layerrule = ignorealpha 0.6, osk
~/.config/hypr/hypr.d/workspaces.conf
- Normal Workspaces
These workspaces are just standard workspaces, the way I set them is to have dedicated workspaces for each applications, such as web browsers, terminal emulators, etc.
workspace = 1, name:terminal, monitor: #, on-created-empty:alacritty workspace = 2, name:code, monitor: #, on-created-empty:emacsclient -c -a emacs workspace = 3, name:web, monitor: #, on-created-empty:firefox workspace = 4, name:message, monitor: workspace = 5, name:file, monitor:HDMI-A-1, monitor:DP-1, default:true workspace = 6, name:office, monitor:HDMI-A-1 workspace = 7, name:fun, monitor:HDMI-A-1 workspace = 8, name:remote, monitor:HDMI-A-1 workspace = 9, name:torrent, monitor:HDMI-A-1 workspace = 10, name:zoom, monitor:HDMI-A-1
- Special workspaces
In other window managers, a special workspace is often called scratchpad. The difference is in Hyprland we can have up to 97 of them, each with different names. The way I use it is to have one special workspace for an application, usually one that needs to always run in the background, like a music player, calculator and other. What I like from Hyprland (though I'm sure other WM also have), is the ability to only start the application when the workspace is opened. See the keybindings section for the detail.
Also to conserve resource, I tend to only have terminal based application in these workspaces.
workspace = special:music, on-created-empty:[tiled] $terminal --class ncmpcpp -e ncmpcpp workspace = special:khal, on-created-empty:[tiled] $terminal --class khal -e khal interactive workspace = special:proc, on-created-empty:[tiled] $terminal --class htop -e htop workspace = special:emacs, on-created-empty:[tiled] $terminal --class emacsclient -e $editor_term workspace = special:notmuch, on-created-empty:[tiled] $terminal --class emacsclient -e $editor_term -e '(notmuch)' workspace = special:dired, on-created-empty:[tiled] $terminal --class emacsclient -e $editor_term -e '(dired (getenv "HOME"))' workspace = special:keys, on-created-empty:[float] showmethekey-gtk workspace = special:nvim, on-created-empty:$terminal --class vim -e nvim
~/.config/hypr/hypr.d/keybindings.conf
- Set the
mainMod
variable
Super
, (orWIN
) key, is a more common mod key for window manager anyway.# See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER
- Apps keybindings
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, Return, exec, $terminal bind = $mainMod, E, exec, $fileManager bind = $mainMod, F4, exec, hyprctl kill bind = ALT, F4, killactive, bind = $mainMod, Q, exec, ~/.local/bin/rofi-logout hyprland-logout bind = $mainMod Alt, Q, exec, hyprlock bind = $mainMod, D, exec, $menu bind = $mainMod, C, exec, cliphist list | rofi -dmenu -p "Clipboard:" -theme "hyprland-clipboard" | cliphist decode | wl-copy bind = $mainMod, Comma, exec, rofi -show emoji bind = $mainMod Shift, V, exec, pwvucontrol bind = $mainMod Alt, V, exec, easyeffects #bind = $mainMod Alt, B, exec, blueman-manager # bind = $mainMod Alt, M, exec, [workspace special:music; silent; tiled] alacritty --class ncmpcpp -e ncmpcpp # bind = $mainMod Alt, H, exec, alacritty --class htop -e htop # bind = $mainMod Alt, W, exec, [float] alacritty --class nmtui -e nmtui # bind = $mainMod Alt, K, exec, alacritty --class khal -e khal interactive # bind = $mainMod Alt, V, exec, alacritty --class vim -e vim # bind = $mainMod Shift Alt, N, exec, alacritty --class nw-emacs -e emacsclient -t -a emacs # bind = $mainMod Alt, E, exec, emacsclient -c -a emacs -e '(dired (getenv "HOME"))' bind = $mainMod Alt, N, exec, $editor bind = $mainMod Alt, T, exec, $mail bind = $mainMod Alt, P, exec, rofi-pass # bind = $mainMod Alt, C, exec, rofi -show calc -modi calc -no-show-match -no-sort -theme calculator bind = $mainMod Shift, P, exec, rofi-rbw bind = $mainMod Alt, b, exec, $browser bind = $mainMod Alt, S, exec, [workspace 10; silent; float] showmethekey-gtk bind = $mainMod Alt, A, exec, hyprshade toggle # tesseract bind = SuperShift,T,exec,grim -g "$(slurp -d -c D1E5F4BB -b 1B232866 -s 00000000)" "tmp.png" && tesseract -l eng "tmp.png" - | wl-copy && rm "tmp.png" # restart waybar bind = $mainMod Shift, R, exec, killall waybar && waybar &
- window
bind = $mainMod, F, fullscreen, 0 bind = $mainMod Shift, F, fullscreen, 1 bind = $mainMod Control, F, fullscreenstate, -1 -1 bind = $mainMod, Space, togglefloating, # 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 bind = $mainMod, H, movefocus, l bind = $mainMod, L, movefocus, r bind = $mainMod, K, movefocus, u bind = $mainMod, J, movefocus, d # resize binde = $mainMod Control, H, resizeactive, -10 0 binde = $mainMod Control, J, resizeactive, 0 10 binde = $mainMod Control, K, resizeactive, 0 -10 binde = $mainMod Control, L, resizeactive, 10 0 binde = $mainMod Control, left, resizeactive, -10 0 binde = $mainMod Control, down, resizeactive, 0 10 binde = $mainMod Control, up, resizeactive, 0 -10 binde = $mainMod Control, right, resizeactive, 10 0 # move window bind = $mainMod Shift, H, movewindow, l bind = $mainMod Shift, J, movewindow, d bind = $mainMod Shift, K, movewindow, u bind = $mainMod Shift, L, movewindow, r # Window split ratio binde = Super, Minus, splitratio, -0.1 binde = Super, Equal, splitratio, 0.1 binde = Super, Semicolon, splitratio, -0.1 binde = Super, Apostrophe, splitratio, 0.1
- Mouse
# Move/resize windows with mainMod + LMB/RMB and dragging bindm = $mainMod, mouse:272, movewindow bindm = $mainMod, mouse:273, resizewindow
- Media keys
binde = , XF86AudioRaiseVolume, exec, ~/.local/bin/dunst-volume -i 1 # binde = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -1% binde = , XF86AudioLowerVolume, exec, ~/.local/bin/dunst-volume -d 1 bindl = , XF86AudioMute, exec, ~/.local/bin/dunst-volume -t # bindl = , XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous # for keyboard with no fn keys bind = $mainMod Control, Up, exec, playerctl play-pause bind = $mainMod Control, Down, exec, playerctl stop bind = $mainMod Control, Right, exec, playerctl next bind = $mainMod Control, Left, exec, playerctl previous # binde = , XF86MonBrightnessUp, exec, brightnessctl set +1% binde = , XF86MonBrightnessUp, exec, ~/.local/bin/dunst-backlight +1% binde = , XF86MonBrightnessDown, exec, ~/.local/bin/dunst-backlight 1%- # binde = , XF86MonBrightnessDown, exec, brightnessctl set 1%- bind = , Print, exec, grim "$(echo ~/Pictures/Screenshots/Screenshot1-$(date +'%Y%m%d_%H%M%S').png)" bind = Control, Print, exec, grim -g "$(slurp)" - | swappy -f - bind = Alt, Print, exec, kooha bind = $mainMod Shift, S, exec, grim -g "$(slurp)" - | swappy -f -
dunst
bind = $mainMod Alt, grave, exec, dunstctl history-pop bind = $mainMod SHIFT, grave, exec, dunstctl context bind = $mainMod, grave, exec, dunstctl action bind = $mainMod, grave, exec, dunstctl close
- Groups
- Group management
bind = $mainMod, G, submap, group submap = group bind = , T, togglegroup bind = $mainMod Control, F, changegroupactive, f bind = $mainMod Control, B, changegroupactive, b # bind = $mainMod Alt, L, lockactivegroup bind = $mainMod, G, lockgroups, toggle bind = $mainMod Alt, G, lockactivegroup, toggle bind = $mainMod Shift, left, moveintogroup, l bind = $mainMod Shift, right, moveintogroup, r bind = $mainMod Shift, up, moveintogroup, u bind = $mainMod Shift, down, moveintogroup, d bind = $mainMod Shift, H, moveintogroup, l bind = $mainMod Shift, L, moveintogroup, r bind = $mainMod Shift, K, moveintogroup, u bind = $mainMod Shift, J, moveintogroup, d bind = $mainMod Control, left, moveoutofgroup, l bind = $mainMod Control, right, moveoutofgroup, r bind = $mainMod Control, up, moveoutofgroup, u bind = $mainMod Control, down, moveoutofgroup, d bind = $mainMod Control, H, moveoutofgroup, l bind = $mainMod Control, L, moveoutofgroup, r bind = $mainMod Control, K, moveoutofgroup, u bind = $mainMod Control, J, moveoutofgroup, d bind = $mainMod, left, movefocus, l bind = $mainMod, right, movefocus, r bind = $mainMod, up, movefocus, u bind = $mainMod, down, movefocus, d bind = $mainMod, H, movefocus, l bind = $mainMod, L, movefocus, r bind = $mainMod, K, movefocus, u bind = $mainMod, J, movefocus, d bind = , escape, submap, reset bind = Control, G, submap, reset submap = reset bind = $mainMod Control, F, changegroupactive, f bind = $mainMod Control, B, changegroupactive, b
- Window Resize
# Resize bind = $mainMod, R, submap, resize submap = resize # using arrow key binde = , right, resizeactive, 10 0 binde = , left, resizeactive, -10 0 binde = , up, resizeactive, 0 -10 binde = , down, resizeactive, 0 10 # using vim key binde = , l, resizeactive, 10 0 binde = , h, resizeactive, -10 0 binde = , k, resizeactive, 0 -10 binde = , j, resizeactive, 0 10 bind = Control, G, submap, reset bind = , escape, submap, reset submap = reset
- Group management
- Hyprland
bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, S, togglesplit, # dwindle bind = Alt Control Shift, Tab, layoutmsg, swapprev
- Master layout
# master bind = $mainMod Alt, TAB, layoutmsg, swapwithmaster auto bind = $mainMod Alt, H, layoutmsg, orientationleft bind = $mainMod Alt, J, layoutmsg, orientationbottom bind = $mainMod Alt, K, layoutmsg, orientationtop bind = $mainMod Alt, L, layoutmsg, orientationright bind = Alt Shift, Tab, layoutmsg, swapnext bind = Alt, Tab, cyclenext bind = Alt Control, TAB, layoutmsg, cycleprev
- Master layout
- Workspaces
# Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 bind = $mainMod, 1, exec, $w1 bind = $mainMod, 2, workspace, 2 bind = $mainMod, 2, exec, $w2 bind = $mainMod, 3, workspace, 3 bind = $mainMod, 3, exec, $w3 bind = $mainMod, 4, workspace, 4 bind = $mainMod, 4, exec, $w4 bind = $mainMod, 5, workspace, 5 bind = $mainMod, 5, exec, $w5 bind = $mainMod, 6, workspace, 6 bind = $mainMod, 6, exec, $w6 bind = $mainMod, 7, workspace, 7 bind = $mainMod, 7, exec, $w7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 8, exec, $w8 bind = $mainMod, 9, workspace, 9 bind = $mainMod, 9, exec, $w9 bind = $mainMod, 0, workspace, 10 bind = $mainMod, 0, exec, $w10 bind = $mainMod, TAB, workspace, previous
I set the bindings for workspace to have multiple bindings, the first one is to move to the intended workspace, but also to set the wallpaper to the variable set at the variables.conf file.
- Workspace movement
# 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 bind = $mainMod SHIFT, TAB, movetoworkspace, previous bind = $mainMod Alt, H, focusmonitor, l bind = $mainMod Alt, J, focusmonitor, d bind = $mainMod Alt, K, focusmonitor, u bind = $mainMod Alt, L, focusmonitor, r bind = $mainMod Control, H, movecurrentworkspacetomonitor, l bind = $mainMod Control, J, movecurrentworkspacetomonitor, d bind = $mainMod Control, K, movecurrentworkspacetomonitor, u bind = $mainMod Control, L, movecurrentworkspacetomonitor, r # bind = $mainMod, O, toggleopaque bind = Alt, Tab, alterzorder, top bind = Alt Shift, Tab, bringactivetotop, bind = Alt Control, TAB, bringactivetotop, bind = Alt Control Shift, Tab, bringactivetotop,
- Laptops
# lid switch # trigger when the switch is toggled bindl=,switch:Lid Switch,exec,hyprlock # trigger when the switch is turning on #bindl=,switch:on:[switch name],exec,hyprctl keyword monitor ", 2560x1600, 0x0, 1" # trigger when the switch is turning off #bindl=,switch:off:[switch name],exec,hyprctl keyword monitor ", disable"
- special workspace
# 0 is fn+m (music) in my laptop bind = $mainMod Alt, 0, togglespecialworkspace, music # 1 is for htop bind = $mainMod Alt, 1, togglespecialworkspace, proc # 2 is fn+k (khal) bind = $mainMod Alt, 2, togglespecialworkspace, khal # 3 is for terminal emacsclient bind = $mainMod Alt, 3, togglespecialworkspace, emacs # 4 is for terminal notmuch (using emacsclient) bind = $mainMod Alt, 4, togglespecialworkspace, notmuch # 5 is for dired bind = $mainMod Alt, 5, togglespecialworkspace, dired # 6 is for nvim bind = $mainMod Alt, 6, togglespecialworkspace, nvim # 7 is for org-agenda (emacsclient) # bind = $mainMod Alt, 7, togglespecialworkspace, agenda # 0 is for showmethekey-gtk bind = $mainMod Alt, 9, togglespecialworkspace, keys
- mouse
# Scroll through existing workspaces with mainMod + scroll bind = $mainMod, mouse_down, workspace, e+1 bind = $mainMod, mouse_up, workspace, e-1
- Workspace movement
waybar
~/.config/waybar/config
- start config
{
- General
"layer": "top", // Waybar at top layer "output": ["eDP-1", "DP-1", "DP-2", "DP-3", "DP-4", "DP-5", "HDMI-A-1"], "position": "top", // Waybar position (top|bottom|left|right) "height": 34, // Waybar height (to be removed for auto height) // "width": 1280, // Waybar width "spacing": 4, // Gaps between modules (4px) // Choose the order of the modules
- Left Modules
"modules-left": [ "custom/launcher", "hyprland/workspaces", "hyprland/submap" // "mpris" // "custom/media" ],
- Center Modules
"modules-center": [ "hyprland/window" ],
- Right Modules
"modules-right": [ // "mpd", // "idle_inhibitor", "backlight", "pulseaudio", // "wireplumber", "network", "cpu", "memory", "temperature", "keyboard-state", // "hyprland/language", "battery", "custom/pacman", "clock#date", "clock#time", "tray", "custom/power" ],
- Modules Configuration
- mpris
"mpris": { "format": "{player_icon} {title}", "format-paused": "{status_icon} <i>{title}</i>", "player-icons": { "default": "▶", "mpv": "🎵" }, "status-icons": { "paused": "⏸" }, },
- backlight
"backlight": { "format": " {percent}%", "interval": 2, "on-scroll-up": "brightnessctl set +1%", "on-scroll-down": "brightnessctl set 1%-" },
- hyprland/workspaces
"hyprland/workspaces": { "num-tags": 6, // "format": "{id}: {icon}", // "format-icons": { // "1": "", // "2": "", // "3": "", // "4": "", // "5": "", // "6": "", // "7": "", // "8": "", // "9": "", // "10": "" // }, "active-only": false },
- hyprland/languages
"hyprland/language": { "format": "{}", "format-en": "en", "keyboard-name": "at-translated-set-2-keyboard" },
- hyprland/window
"hyprland/window": { "format": "{title}", "rewrite": { "(.*) — Mozilla Firefox": "🌎 $1", "(.*) - (GNU Emacs at.*)": "$1" }, "max-length": 80, "separate-outputs": true },
- hyprland/submap
"hyprland/submap": { "format": "{}", "max-length": 8, "tooltip": false },
- keyboard-state
"keyboard-state": { "numlock": false, "capslock": true, "format": "{name} {icon}", "format-icons": { "locked": "", "unlocked": "" } },
- mpd
"mpd": { // "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", "format": " {title} - {artist} {stateIcon} [{elapsedTime:%M:%S}/{totalTime:%M:%S}] {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}[{songPosition}/{queueLength}] [{volume}%]", "format-disconnected": "Disconnected ", "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", "unknown-tag": "N/A", "interval": 2, "consume-icons": { "on": " " }, "random-icons": { "off": "<span color=\"#f53c3c\"></span> ", "on": " " }, "repeat-icons": { "on": " " }, "single-icons": { "on": "1 " }, "state-icons": { "paused": "", "playing": "" }, "tooltip-format": "MPD (connected)", "tooltip-format-disconnected": "MPD (disconnected)" },
- idle_inhibitor
"idle_inhibitor": { "format": "{icon}", "format-icons": { "activated": "", "deactivated": "" } },
- tray
"tray": { // "icon-size": 21, "spacing": 10 },
- clock
"clock#date": { // "timezone": "America/New_York", "format": " {:%Y/%m/%d(%a)}", "on-click": "alacritty --class khal -e khal interactive", "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>" // "format-alt": "{:%Y-%m-%d}" }, "clock#time": { "interval": 1, "format": "{:%H:%M:%S}", "tooltip": false },
- cpu
"cpu": { "format": "{usage}% ", // "format": " {}%", "tooltip": true, "interval": 15 },
- memory
"memory": { "interval": 30, "format": "{}% " // "max-length": 50 },
- temperature
"temperature": { // "thermal-zone": 2, // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", "critical-threshold": 80, // "format-critical": "{temperatureC}°C {icon}", "format": "{temperatureC}°C {icon}", "format-icons": ["", "", ""] },
- battery
"battery": { "states": { // "good": 95, "warning": 30, "critical": 15 }, "format": " {icon} {capacity}%", "format-charging": " {capacity}%", "format-plugged": " {capacity}%", "format-alt": "{icon} {time}", // "format-good": "", // An empty format will hide the module // "format-full": "", "format-icons": ["", "", "", "", ""] }, "battery#bat2": { "bat": "BAT2" },
- network
"network": { // "interface": "wlp2*", // (Optional) To force the use of this interface "format": "{ifname}", "format-wifi": "{essid} ({signalStrength}%) ", "format-ethernet": "{ipaddr}/{cidr} ", "tooltip-format": "{ifname} via {gwaddr} ", "format-linked": "{ifname} (No IP) ", "format-disconnected": "Disconnected ⚠", "format-alt": "{ifname}: {ipaddr}/{cidr} ({bandwidthUpBits} - {bandwidthDownBits})" },
- wireplumber
"wireplumber": { "format": "{icon} {volume}%", "format-icons": ["", "", ""], "format-muted": "", "on-click": "helvum", "on-click-right": "pavucontrol", "scroll-step": 0.2 },
- pulseaudio
"pulseaudio": { // "scroll-step": 1, // %, can be a float "format": "{volume}% {icon} {format_source}", "format-bluetooth": "{volume}% {icon} {format_source}", "format-bluetooth-muted": " {icon} {format_source}", "format-muted": " {format_source}", "format-source": "{volume}% ", "format-source-muted": "", "format-icons": { "headphone": "", "hands-free": "", "headset": "", "phone": "", "portable": "", "car": "", "default": ["", "", ""] }, "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" },
- custom/pacman
"custom/pacman": { "format": " {} update available", "exec": "checkupdates | wc -l", "exec-if": "test $(checkupdates | wc -l) -ne 0", "interval": 3600, "on-click": "checkupdates; pkill -SIGRTMIN+8 waybar" },
- custom/launcher
"custom/launcher":{ "format": " ", "tooltip": false, "on-click": "rofi -show drun -theme hyprland-menu", "on-click-right": "killall rofi" },
- custom/power
"custom/power":{ "format": " ", "tooltip": false, "on-click": "~/.local/bin/rofi-logout hyprland-logout" },
- custom/media
"custom/media": { "format": "{icon} {}", "return-type": "json", "max-length": 40, "format-icons": { "spotify": "", "default": "🎜" }, "escape": true, "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name }
- mpris
- End config
}
~/.config/waybar/style.css
- definitions
/* Nord */ @define-color background rgba(46, 52, 64, 1); @define-color background2 rgba(46, 52, 64, 0.75); @define-color cyan rgba(136, 192, 208, 1); @define-color cyan2 rgba(136, 192, 208, 0.6); @define-color red rgba(191, 97, 106, 1); @define-color red2 rgba(191, 97, 106, 0.6); @define-color foreground rgba(216, 222, 233, 1); @define-color black #161320; @define-color green rgba(163, 190, 140, 1); @define-color green2 rgba(163, 190, 140, 0.3); @define-color yellow rgba(235, 203, 139, 1); @define-color yellow2 rgba(235, 203, 139, 0.45); @define-color blue rgba(129, 161, 193, 1); @define-color blue2 rgba(129, 161, 193, 0.45); @define-color magenta rgba(180, 142, 173, 1); @define-color magenta2 rgba(180, 142, 173, 0.5); @define-color white rgba(229, 233, 240, 1); @define-color light #D8DEE9; /*@define-color dark @nord_dark_font;*/ @define-color warning #ebcb8b; @define-color critical #BF616A; @define-color mode #434C5E; /*@define-color workspaces @bg;*/ /*@define-color workspaces @nord_dark_font;*/ /*@define-color workspacesfocused #434C5E;*/ @define-color workspacebutton @white; @define-color launcher rgba(94, 129, 172, 1); @define-color tray @workspacesfocused; @define-color sound #EBCB8B; @define-color network #5D7096; @define-color memory #546484; @define-color cpu rgba(89, 106, 141, 1); @define-color keyboard rgba(163, 190, 140, 1); @define-color battery rgba(180, 142, 173, 1); @define-color temp #4D5C78; @define-color layout rgba(94, 129, 172, 1); @define-color wireplumber #88c0d0; @define-color date rgba(136, 192, 208, 1); @define-color time rgba(180, 142, 173, 1); @define-color backlight rgba(67, 76, 94, 1); @define-color nord_bg rgba(67, 76, 94, 1); @define-color nord_bg_blue #546484; @define-color nord_light #D8DEE9; @define-color nord_light_font #D8DEE9; @define-color nord_dark_font #434C5E;
- global
* { /* `otf-font-awesome` is required to be installed for icons */ border: none; border-radius: 10px; font-family: FontAwesome, JetBrainsMonoNL Nerd Font Mono; font-size: 11px; min-height: 10px; }
- keyframes
@keyframes blink { to { background-color: @red; color: @cyan; } }
- window
window#waybar { /* background-color: @background2; */ background-color: transparent; /* border-bottom: 3px solid @cyan; */ /* color: @white; */ /* transition-property: background-color; */ /* transition-duration: .5s; */ } window#waybar.hidden { opacity: 0.2; } window#waybar.empty #window { background-color: transparent; } #window { margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; border-radius: 10px; transition: none; color: @black; background-color: @white; font-size:14px; font-weight: bold; }
- button
button { /* Use box-shadow instead of border so the text isn't offset */ /* box-shadow: inset 0 -3px transparent; */ /* Avoid rounded borders under each button name */ border: none; border-radius: 0; } /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ button:hover { background: inherit; border-top: 2px solid @red; }
- tooltip
tooltip { background: @background; border: 1px solid @cyan; } tooltip label { /* color: @white; */ } label:focus { background-color: @background; }
- modules
- cpu
#cpu { margin-top: 6px; margin-left: 8px; padding-left: 10px; margin-bottom: 0px; padding-right: 10px; border-radius: 10px; transition: none; color: @black; background: @cyan2; }
- memory
#memory { margin-top: 6px; margin-left: 8px; padding-left: 10px; margin-bottom: 0px; padding-right: 10px; border-radius: 10px; transition: none; color: @black; background: @magenta; }
- keyboard-state
#keyboard-state { margin-top: 6px; margin-left: 8px; padding-left: 10px; margin-bottom: 0px; padding-right: 10px; border-radius: 10px; transition: none; color: @black; background: @magenta; }
- temperature
#temperature { margin-top: 6px; margin-left: 8px; padding-left: 10px; margin-bottom: 0px; padding-right: 10px; border-radius: 10px; transition: none; color: @black; background: @red; }
- modules-left
.modules-left > widget:first-child > #workspaces { margin-left: 0; }
- modules-right
.modules-right > widget:last-child > #workspaces { margin-right: 0; }
- mpris
#mpris { /* padding: 0 4px; */ /* font-size: 9px; */ /* color: @warning; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @blue; }
- idle_inhibitor
#idle_inhibitor { color: @blue; } #idle_inhibitor.activated { color: @black; }
- backlight
#backlight{ /* color: @yellow; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @yellow; }
- pulseaudio
#pulseaudio { /* background-color: @magenta2; */ /* color: @wireplumber; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @blue; }
- wireplumber
#wireplumber { /* background-color: @magenta2; */ color: @black; }
- keyboard-state
#keyboard-state { background: @green; color: @black; }
- battery
#battery { /* color: @battery; */ /* background-color: @yellow2; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @magenta; } #battery.charging, #battery.plugged { /* color: @yellow; */ /* background-color: @background; */ color: @black; background-color: @magenta; } /* #battery.warning:not(.charging) { */ /* /\* background: @red; *\/ */ /* /\* color: @white; *\/ */ /* animation-name: blink; */ /* animation-duration: 0.5s; */ /* animation-timing-function: steps(12); */ /* animation-iteration-count: infinite; */ /* animation-direction: alternate; */ /* } */ #battery.critical:not(.charging) { /* background-color: @red; */ /* color: @white; */ /* animation-name: blink; */ /* animation-duration: 0.5s; */ /* animation-timing-function: linear; */ /* animation-iteration-count: infinite; */ /* animation-direction: alternate; */ background-color: @magenta; color: @black; animation-name: blink; animation-duration: 0.5s; animation-timing-function: linear; animation-iteration-count: infinite; animation-direction: alternate; }
- custom/pacman
#custom-pacman { /* color: @black; */ /* background-color: @green2; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @yellow; }
- clock
#clock.date { /* color: @date; */ /* background-color: @magenta2; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @green; } #clock.time { /* color: @time; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @yellow; }
- network
#network { /* color: @network; */ margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @black; background: @magenta; } #network.wifi { color: @black; background: @yellow; } #network.ethernet { color: @black; background: @blue; } #network.linked { color: @black; background: @green; } #network.disconnected { color: @red; background: @black; }
- custom-launcher
#custom-launcher { font-size: 24px; margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 5px; border-radius: 10px; transition: none; color: @black; background: @blue; }
- custom-power
#custom-power { font-size: 24px; margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 5px; border-radius: 10px; transition: none; color: @black; background: @blue; }
- cpu
- workspaces
#workspaces { margin-top: 6px; margin-left: 12px; font-size: 4px; margin-bottom: 0px; border-radius: 10px; background: @green; transition: none; } #workspaces button { /* color: @nord_light; */ /* padding: 0 4px; */ /* color: @workspacebutton; */ /* font-size: 14px; */ /* font-weight: bold; */ transition: none; color: @black; background: transparent; font-size: 16px; border-radius: 2px; } #workspaces button.occupied { transition: none; color: @blue; background: transparent; font-size: 4px; } #workspaces button.empty { color: @cyan; } #workspaces button.active { font-weight: bold; color: @white; } #workspaces button:hover { transition: none; /* box-shadow: inherit; */ /* text-shadow: inherit; */ color: @yellow; /* border-color: @red; */ } #workspaces button.focused { /* background-color: @black; */ /* color: @red; */ /* border-top: 2px solid @red; */ color: @green; /* border-top: 2px solid @green; */ /* border-bottom: 2px solid @green; */ } #workspaces button.focused:hover { color: @red; } #workspaces button.urgent { background-color: @red; }
- mode
#mode { color: @black; }
- submap
#submap { color: @yellow; }
- tray
#tray { margin-top: 6px; margin-left: 8px; padding-left: 10px; padding-right: 10px; margin-bottom: 0px; border-radius: 10px; transition: none; color: @white; background: @blue; } #tray > .passive { -gtk-icon-effect: dim; } #tray > .needs-attention { -gtk-icon-effect: highlight; background-color: @red; }
hyprpaper
preload = ~/.local/share/wallpapers/nord/linux-friends-4k.png preload = ~/.local/share/wallpapers/nord/keyboard.png preload = ~/.local/share/wallpapers/nord/wild.png preload = ~/.local/share/wallpapers/nord/nord_alone_tree.png preload = ~/.local/share/wallpapers/nord/nord_buildings.png splash = false # wallpaper = eDP1,~/.local/share/wallpapers/nord/ign-hevlettpackard.png #wallpaper = DP-1,~/.local/share/wallpapers/nord/ign-hevlettpackard.png #wallpaper = DP-2,~/.local/share/wallpapers/nord/ign-hevlettpackard.png #wallpaper = DP-3,~/.local/share/wallpapers/nord/ign-hevlettpackard.png #wallpaper = DP-4,~/.local/share/wallpapers/nord/ign-hevlettpackard.png #wallpaper = DP-5,~/.local/share/wallpapers/nord/ign-hevlettpackard.png #wallpaper = HDMI-A-1,~/.local/share/wallpapers/nord/ign_duaAnime.png wallpaper = ,~/.local/share/wallpapers/nord/linux-friends-4k.png
hyprshade
[[shades]] name = "vibrance" default = true # shader to use during times when there is no other shader scheduled [[shades]] name = "blue-light-filter" start_time = 19:00:00 end_time = 06:00:00 # optional if you have more than one shade with start_time
hyprlock
# -*- eval: (rainbow-mode 1) -*- $text_color = rgba(D8DEE9FF) $entry_background_color = rgba(2E344011) $entry_border_color = rgba(3B3B3B55) $entry_color = rgba(FFFFFFFF) $font_family = Rubik Light $font_family_clock = Rubik Light $font_material_symbols = Material Symbols Rounded background { monitor = #path = /home/mkncorp.com/kristian.alexander/.local/share/wallpapers/nord/linux-friends-4k.png # only png supported for now path = screenshot color = rgba(000000FF) # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations blur_passes = 1 # 0 disables blurring blur_size = 3 noise = 0.0117 contrast = 0.8916 brightness = 0.8172 vibrancy = 0.1696 vibrancy_darkness = 0.0 } label { # Greeting monitor = text = <span foreground='##D8DEE9'>Hi there,</span><span foreground='##8FBCBB'> <i>$DESC</i></span> color = rgba(BF616AFF) check_color = rgba(EBCB8BFF) fail_color = rgba(BF616AFF) # if authentication failed, changes outer_color and fail message color fail_text = <span foreground='##D8DEE9'><i>$FAIL <b>($ATTEMPTS)</b></i></span> # 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 shadow_passes = 1 shadow_boost = 0.5 color = $text_color font_size = 20 font_family = $font_family position = 0, 240 halign = center valign = center } label { # lock icon monitor = text = lock shadow_passes = 1 shadow_boost = 0.5 color = $text_color font_size = 21 font_family = $font_material_symbols position = 0, 65 halign = center valign = bottom } label { # Clock monitor = text = $TIME shadow_passes = 1 shadow_boost = 0.5 color = $text_color font_size = 65 font_family = $font_family_clock position = 0, 300 halign = center valign = center } input-field { monitor = size = 250, 50 outline_thickness = 2 dots_size = 0.1 dots_spacing = 0.3 outer_color = $entry_border_color inner_color = $entry_background_color font_color = $entry_color # fade_on_empty = true position = 0, 20 halign = center valign = center }
hypridle
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 = 180 on-timeout = loginctl lock-session # lock screen when timeout has passed } listener { timeout = 240 on-timeout = hyprctl dispatch dpms off on-resume = hyprctl dispatch dpms on } listener { timeout = 540 on-timeout = pidof steam || systemctl suspend || loginctl suspend }
Alacritty
~/.config/alacritty/alacritty-hyprland.toml
[general] import = ["~/.config/alacritty/themes/nord.toml"] live_config_reload = true [window] dynamic_padding = true decorations = "None" padding = { x = 25, y = 25 } blur = true #startup_mode = "Fullscreen" decorations_theme_variant = "Dark" [scrolling] history = 100000 multiplier = 2 [font] normal = { family = "JetBrainsMonoNL Nerd Font Mono", style = "Regular" } bold = { family = "JetBrainsMonoNL Nerd Font Mono", style = "Bold" } italic = { family = "JetBrainsMonoNL Nerd Font Mono", style = "Italic" } bold_italic = { family = "JetBrainsMonoNL Nerd Font Mono", style = "Semibold Italic" } size = 8 [bell] animation = "EaseOutCirc" duration = 1 # command = { program = "canberra-gtk-play", args = ["-i", "bell"] } [cursor] style = { shape = "Beam", blinking = "On" } vi_mode_style = { shape = "Block", blinking = "Off" } [mouse] hide_when_typing = true [selection] save_to_clipboard = true # [shell] # program = "/bin/bash" # args = ["-l"] [[hints.enabled]] command = "xdg-open" hyperlinks = true post_processing = true persist = false mouse.enabled = true binding = { key = "U", mods = "Control|Shift" } regex = "(ipfs:|ipns:|magnet:|mailto:|gemini://|gopher://|https://|http://|news:|file:|git://|ssh:|ftp://)[^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
nord theme
# -*- eval: (rainbow-mode 1) -*- # Colors (Nord) # Default colors [colors.primary] background = '#2E3440' foreground = '#D8DEE9' # Normal colors [colors.normal] black = '#3B4252' red = '#BF616A' green = '#A3BE8C' yellow = '#EBCB8B' blue = '#81A1C1' magenta = '#B48EAD' cyan = '#88C0D0' white = '#E5E9F0' # Bright colors [colors.bright] black = '#4C566A' red = '#BF616A' green = '#A3BE8C' yellow = '#EBCB8B' blue = '#81A1C1' magenta = '#B48EAD' cyan = '#8FBCBB' white = '#ECEFF4'
Swappy
Wayland native snapshot editing tools.
1: [Default] 2: save_dir=$HOME/Pictures/Screenshots 3: save_filename_format=swappy-%Y%m%d-%H%M%S.png 4: show_panel=false 5: line_size=5 6: text_size=20 7: text_font=sans-serif 8: paint_mode=brush 9: early_exit=false 10: fill_shape=false
Rofi configuration
hyprland-menu
This is the theme used when running rofi -show drun
.
1: /* -*-css -*- */ 2: @theme "nord" 3: 4: window { 5: transparency: "real"; 6: location: northwest; 7: anchor: center; 8: width: 25%; 9: x-offset: 0%; 10: y-offset: 0%; 11: fullscreen: false; 12: margin: 0px; 13: padding: 0px; 14: } 15: 16: listview { 17: columns: 1; 18: lines: 6; 19: spacing: 5px; 20: cycle: true; 21: dynamic: true; 22: scrollbar: false; 23: layout: vertical; 24: reverse: false; 25: fixed-height: true; 26: fixed-width: true; 27: } 28: 29: element { 30: spacing: 10px; 31: margin: 0px; 32: padding: 6px; 33: border: 0px solid; 34: border-radius: 0px; 35: cursor: pointer; 36: } 37: 38: element-icon { 39: background: transparent; 40: text-color: inherit; 41: size: 16px; 42: cursor: inherit; 43: } 44: 45: element-text { 46: background: transparent; 47: text-color: inherit; 48: highlight: inherit; 49: cursor: inherit; 50: /* vertical-align: 0.5; */ 51: /* horizontal-align: 0.5; */ 52: } 53: 54: textbox { 55: vertical-align: 0.5; 56: horizontal-align: 0.0; 57: highlight: none; 58: }
hyprland-logout
1: /* -*-css -*- */ 2: @theme "nord" 3: 4: window { 5: location: northeast; 6: anchor: center; 7: transparency: "screenshot"; 8: width: 10%; 9: padding: 10px; 10: border: 0px; 11: border-radius: 6px; 12: x-offset: -1%; 13: y-offset: 1%; 14: spacing: 0; 15: children: [mainbox]; 16: } 17: 18: listview { 19: columns: 1; 20: lines: 4; 21: }
hyprland-clipboard
1: /* -*-css -*- */ 2: @theme "nord" 3: 4: window { 5: location: center; 6: anchor: center; 7: width: 40%; 8: x-offset: 1%; 9: y-offset: -2%; 10: /* padding-right: 25px; */ 11: } 12: 13: listview { 14: lines: 4; 15: dynamic: true; 16: cycle: true; 17: layout: vertical; 18: }