Skip to content

Hyprland is a dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on its looks

License

Notifications You must be signed in to change notification settings

ArtemSmaznov/dotfiles-hyprland

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hyprland

Table of Contents

Dependencies

NameDescription
hyprland
hyprpaper
waybar-hyprland
sudo pacman -S hyprland hyprpaper

Apps

$myScript        = $HOME/.local/bin
$myDMScript      = $HOME/.local/bin/dm-scripts
$myHyprScript    = $HOME/.config/hypr/scripts
$myEwwScript     = $HOME/.config/eww/scripts

# cli tools
$myTerm          = alacritty
$myCliFiles      = alacritty -e vifmrun
$myCliMusic      = alacritty --class ncmpcpp -e ncmpcpp
$myCliText       = vim
$myCliSysAudio   = alsamixer
$myCliSysMonitor = btop
$myCliSysTasks   = htop

# core tools
$myWebBrowser    = qutebrowser
$myIncBrowser    = qutebrowser --target private-window
$myTorBrowser    = torbrowser-launcher
$myIde           = emacs
# $myIde           = emacsclient -ca ''
$myFiles         = pcmanfm
$myEmail         = thunderbird
$myEmailClass    = thunderbird
$mySteam         = /usr/bin/steam-runtime %U

# extra tools
$myLauncher      = wofi --show drun
$myVirtManager   = virt-manager
$myTorrent       = transmission-gtk
$myCalculator    = gnome-calculator
$myAnki          = anki
$myColorPicker   = hyprpicker -anr

# graphics tools
$myPhotoLibrary  = digikam
$myImgEditor     = gimp
$myVctEditor     = inkscape
$myVidEditor     = kdenlive

# chat apps
$myWhatsApp      = whatsapp-for-linux
# $myDiscord       = discord
# $myDiscordClass  = discord
$myDiscord       = webcord
$myDiscordClass  = WebCord

# system tools
$mySysPower      = xfce4-power-manager-settings
$mySysNetwork    = nm-connection-editor
$mySysBluetooth  = blueman-manager

# eww
$panel-monitor   = monitor
$panel-power     = powermenu-panel
$quick-settings  = quick-settings
$which-key       = which-key

Theme

source=./themes/base16.conf

$gaps_inner = 20
$gaps_outer = 40
$borders = 15
$borders_special = 10
$corners = 15

Monitors

See https://wiki.hyprland.org/Configuring/Monitors/

Extras:

  • mirror , DP-1
  • bitdepth , 10
  • vrr , 2
  • transform , 3
#       name , resolution    , position  , scale , extras
monitor=DP-1 , highrr        , 0x0       , auto
monitor=DP-2 , 1920x1080@144 , 760x-1080 , auto
# monitor=DP-2 , disable
monitor=     , preferred     , auto      , auto

Waybar

Startup

See https://wiki.hyprland.org/Configuring/Keywords/ for more

exec-once = eww open-many main-bar second-bar $quick-settings
exec-once = $myScript/auto-start.sh
exec-once = hypridle
# exec-once = swayidle

Environment Variables

Toolkit Backend Variables

env = GDK_BACKEND,wayland,x11     # GTK: Use wayland if available, fall back to x11 if not.
# env = MANGOHUD,1

Qt Variables

env = QT_QPA_PLATFORM,wayland;xcb # QT: Use wayland if available, fall back to x11 if not.
env = QT_QPA_PLATFORMTHEME,qt5ct  # Tells QT based applications to pick your theme from qt5ct, use with Kvantum.

XDG Specifications

env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland

attempt to fix dunst autostart from systemd

# env = WAYLAND_DISPLAY,wayland-0

Theming Related Variables

# env = GTK_THEME,                  # Set a GTK theme manually, for those who want to avoid appearance tools such as lxappearance or nwg-look
env = XCURSOR_THEME,breeze_cursors  # Set your cursor theme. The theme needs to be installed and readable by your user.
env = XCURSOR_SIZE,32               # Set cursor size. See here for why you might want this variable set.

# Set your cursor theme. The theme needs to be installed and readable by your user.
# env = HYPRCURSOR_THEME,capitaine-cursors
env = HYPRCURSOR_THEME,HyprBibataModernClassicSVG
env = HYPRCURSOR_SIZE,32                 # Set cursor size. See here for why you might want this variable set.

General

See https://wiki.hyprland.org/Configuring/Variables/ for more

general {
    gaps_in = $gaps_inner       # gaps between windows
    gaps_out = $gaps_outer      # gaps between windows and monitor edges
    gaps_workspaces = 20        # for animation transitions

    border_size = $borders
    col.active_border = rgba($base0Eaa) rgba($base0Dee) 45deg
    col.inactive_border = rgba($base03aa)

    # focus
    no_focus_fallback = true    # will not fall back to the next available window when moving focus in a direction where no window was found

    resize_on_border = true     # enables resizing windows by clicking and dragging on borders and gaps

    layout = dwindle
}

Window Rules

See https://wiki.hyprland.org/Configuring/Window-Rules/ for more

XWayland Windows

windowrulev2 = bordercolor rgba($base0Faa) rgb($base00),xwayland:1

Floating Windows

windowrulev2 = noborder,pinned:1
windowrulev2 = nodim,pinned:1
windowrulev2 = opacity override 0.7,pinned:1

Maximized Windows

windowrulev2 = rounding 0,fullscreen:1

Idle Inhibit

Games

windowrulev2 = idleinhibit focus,class:^steam_app
windowrulev2 = idleinhibit focus,class:x86_64$

Apps

MPV

$app_filter = ^(mpv)$

# floating
windowrulev2 = dimaround,class:$app_filter,floating:1
windowrulev2 = keepaspectratio,class:$app_filter,floating:1
windowrulev2 = stayfocused,class:$app_filter,floating:1
windowrulev2 = center,class:$app_filter,floating:1

# tiled
windowrulev2 = pseudo,class:$app_filter,floating:0

# initial state
windowrule = float,$app_filter

Steam

windowrule   = workspace 2 silent,^([Ss]team)$

# steam updater floating window
windowrulev2 = workspace 2 silent,title:^(Steam)$,floating:1
windowrulev2 = nofocus,title:^(Steam)$,floating:1

Scrcpy

windowrule = tile,^([Ss]crcpy)$

Workspaces

Workspace 1 - Internet

# windowrule = workspace 1 silent,^(firefox)$
# windowrule = workspace 1 silent,^(Tor Browser)$
# windowrule = workspace 1 silent,^(Chromium)$
# windowrule = workspace 1 silent,^(Google-chrome)$
# windowrule = workspace 1 silent,^(Brave-browser)$
# windowrule = workspace 1 silent,^(vivaldi-stable)$
# windowrule = workspace 1 silent,^(org.qutebrowser.qutebrowser)$
# windowrule = workspace 1 silent,^(nyxt)$

Workspace 2 - Gaming

windowrule   = workspace 2 silent,^([Bb]attle.net)$
windowrule   = workspace 2 silent,^([Ww]ine)$
windowrule   = workspace 2 silent,^(dolphin-emu)$
windowrule   = workspace 2 silent,^([Ll]utris)$
windowrule   = workspace 2 silent,^(Citra)$
windowrule   = workspace 2 silent,^(SuperTuxKart)$

Workspace 3 - Coding

windowrule = workspace 3 silent,^([Ee]macs)$
windowrule = workspace 3 silent,^(Geany)$
windowrule = workspace 3 silent,^(Atom)$
windowrule = workspace 3 silent,^(Subl3)$
windowrule = workspace 3 silent,^(code-oss)$
windowrule = workspace 3 silent,^(Oomox)$
windowrule = workspace 3 silent,^(Unity)$
windowrule = workspace 3 silent,^(UnityHub)$
windowrule = workspace 3 silent,^(jetbrains-studio)$

Workspace 4 - Computer

windowrule = workspace 4 silent,^(dolphin)$
windowrule = workspace 4 silent,^(ark)$
windowrule = workspace 4 silent,^(Pcmanfm)$
windowrule = workspace 4 silent,^(File-roller)$
windowrule = workspace 4 silent,^(googledocs)$
windowrule = workspace 4 silent,^(keep)$
windowrule = workspace 4 silent,^(calendar)$

Workspace 5 - Music

# windowrule = workspace 5 silent,^(ncmpcpp)$
windowrule = workspace 5 silent,^(Spotify)$

Workspace 6 - Graphics

windowrule = workspace 6 silent,^([Gg]imp)$
windowrule = workspace 6 silent,^(Inkscape)$
windowrule = workspace 6 silent,^(Flowblade)$
windowrule = workspace 6 silent,^(org.kde.digikam)$
windowrule = workspace 6 silent,^(obs)$
windowrule = workspace 6 silent,^(kdenlive)$

Workspace 7 - Chat

# windowrule   = workspace 7 silent,^(whatsapp-for-linux)$
# windowrule   = workspace 7 silent,^(Slack)$
# windowrule   = workspace 7 silent,^(discord)$
# windowrule   = workspace 7 silent,^(signal)$
# windowrulev2 = workspace 7 silent,class:^([Ss]team)$,title:^(Friends List)$

Workspace 8 - Sandbox

windowrule = workspace 8 silent,^(Virt-manager)$
windowrule = workspace 8 silent,^VirtualBox
windowrule = workspace 8 silent,^(Cypress)$

Workspace 9 - Monitor

windowrule = workspace 9 silent,^(btop)$

Scratchpads

Terminal

# $app_filter = ^(sp-term)$
# $workspace = sp-term
# #---------------------------------------------------
# windowrule = unset,$app_filter
# windowrule = workspace special:$workspace silent,$app_filter
# windowrule = float,$app_filter
# windowrule = size 50% 80%,$app_filter
# windowrule = center,$app_filter

Files

# $scratchpad = ^(sp-files)$
# #---------------------------------------------------
# windowrule = unset,$scratchpad
# # windowrule = workspace special silent,$scratchpad
# windowrule = float,$scratchpad
# windowrule = size 50% 70%,$scratchpad
# windowrule = center,$scratchpad

Torrent

$scratchpad = ^(com.transmissionbt.transmission*)
#---------------------------------------------------
windowrule = unset,$scratchpad
# windowrule = workspace special silent,$scratchpad
windowrule = size 30% 80%,$scratchpad
windowrule = float,$scratchpad
windowrule = center,$scratchpad

Anki

$scratchpad = ^(anki)$
#---------------------------------------------------
windowrule = unset,$scratchpad
windowrule = float,$scratchpad
windowrule = size 20% 70%,$scratchpad
windowrule = center,$scratchpad
windowrule = dimaround,$scratchpad

VM

$scratchpad = ^(virt-manager)$
#---------------------------------------------------
windowrule = unset,$scratchpad
windowrule = workspace special:vm silent,$scratchpad
windowrule = float,$scratchpad
windowrule = size 20% 50%,$scratchpad
windowrule = move 10% 10%,$scratchpad

Htop

$scratchpad = ^(sp-htop)$
#---------------------------------------------------
# windowrule = float,$scratchpad
# windowrule = size 80% 80%,$scratchpad
# windowrule = center,$scratchpad
windowrule = stayfocused,$scratchpad
windowrule = dimaround,$scratchpad

Calculator

$scratchpad = ^(org.gnome.Calculator)$
#---------------------------------------------------
windowrule = unset,$scratchpad
# windowrule = workspace special silent,$scratchpad
windowrule = float,$scratchpad
windowrule = size 15% 50%,$scratchpad
windowrule = move 82% 5%,$scratchpad

Workspace Rules

Workspaces

workspace = 1, persistent:true, monitor:DP-1, default:true
workspace = 2, persistent:true, monitor:DP-1
workspace = 3, persistent:true, monitor:DP-1
workspace = 4, persistent:true, monitor:DP-1
workspace = 5, persistent:true, monitor:DP-2
workspace = 6, persistent:true, monitor:DP-1
workspace = 7, persistent:true, monitor:DP-1
workspace = 8, persistent:true, monitor:DP-1
workspace = 9, persistent:true, monitor:DP-1
# workspace = name:star, persistent:true, monitor:DP-1

Special Workspaces

workspace = special:term       , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:files      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:music      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:email      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:chats      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:audio      , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:torrent    , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:anki       , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:vm         , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:calculator , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:htop       , bordersize:$borders_special , gapsin:50 , gapsout:125
workspace = special:btop       , bordersize:$borders_special , gapsin:50 , gapsout:125

Native Scratchpad

  • compare with toggle script
# workspace = special:foo, on-created-empty:alacritty -e ncmpcpp
# bind = SUPER CTRL , d , togglespecialworkspace , foo

Layer Rules

LayerRole
3overlay
2top
1bottom
0background
layerrule = blur, waybar

eww

# default windows
$namespace = gtk-layer-shell
layerrule = blur, $namespace
layerrule = ignorealpha 0, $namespace
layerrule = animation slide, $namespace

# monitor
layerrule = blur, $panel-monitor
layerrule = ignorealpha 0, $panel-monitor
layerrule = animation slide, $panel-monitor

# quick-settings
layerrule = blur, $quick-settings
layerrule = ignorealpha 0, $quick-settings
layerrule = animation slide, $quick-settings

# which-key
layerrule = blur, $which-key
layerrule = ignorealpha 0, $which-key
layerrule = animation slide, $which-key

wofi

layerrule = blur, wofi
layerrule = ignorealpha 0, wofi

Decoration

See https://wiki.hyprland.org/Configuring/Variables/ for more

decoration {
    rounding = $corners

    drop_shadow = yes                     # enable drop shadows on windows
    shadow_range = 40                     # Shadow range (“size”) in layout px
    shadow_render_power = 3               # in what power to render the falloff (more power, the faster the falloff) [1 - 4]
    shadow_ignore_window = true           # if true, the shadow will not be rendered behind the window itself, only around it.

    col.shadow = rgba($base0E70)          # shadow’s color. Alpha dictates shadow’s opacity.
    col.shadow_inactive = rgba($base00cc) # inactive shadow color. (if not set, will fall back to col.shadow) color unset

    # shadow_offset = [0, 0]                # shadow’s rendering offset. vec2 [0, 0]
    shadow_scale = 1.0                    # shadow’s scale. [0.0 - 1.0]

    blur {
        enabled = true
        size = 10
        passes = 3
        ignore_opacity = true
        new_optimizations = true
        xray = false
        noise = 0.03
        special = false
    }

    dim_inactive = false
}

Input

For all categories, see https://wiki.hyprland.org/Configuring/Variables/

input {
    kb_layout = us,ru,jp
    kb_variant =
    kb_model =
    # kb_options = grp:lalt_lshift_toggle
    kb_options =
    kb_rules =

    # focus
    # Specify if and how cursor movement should affect window focus
    # 0 - Cursor movement will not change focus.
    # 1 - Cursor movement will always change focus to the window under the cursor.
    # 2 - Cursor focus will be detached from keyboard focus. Clicking on a window will move keyboard focus to that window.
    # 3 - Cursor focus will be completely separate from keyboard focus. Clicking on a window will not change keyboard focus.
    #
    follow_mouse = 2

    # If disabled, mouse focus won’t switch to the hovered window unless the mouse crosses a window boundary when follow_mouse=1.
    mouse_refocus = false

    # 0 - Cursor movement will not change focus.
    # 1 - focus will change to the window under the cursor when changing from tiled-to-floating and vice versa.
    # 2 - focus will also follow mouse on float-to-float switches.
    float_switch_override_focus = 0

    repeat_rate = 25   # The repeat rate for held-down keys, in repeats per second.
    repeat_delay = 300 # Delay before a held-down key is repeated, in milliseconds.

    # scroll_factor = 0.5
    natural_scroll = false

    touchpad {
        natural_scroll = false
    }

    sensitivity = 0    # -1.0 - 1.0, 0 means no modification.
}

Misc

misc {
    disable_hyprland_logo = false
    disable_autoreload = false

    # focus
    mouse_move_focuses_monitor = false
    focus_on_activate = false           # Whether Hyprland should focus an app that requests to be focused
    layers_hog_keyboard_focus = true

    animate_manual_resizes = true       # will animate manual window resizes/moves	bool	false
    animate_mouse_windowdragging = true # will animate windows being dragged by mouse, note that this can cause weird behavior on some curves

    enable_swallow = false              # Enable window swallowing

    # allow_session_lock_restore = true   # will allow you to restart a lockscreen app in case it crashes

    vrr = 2                             # controls the VRR (Adaptive Sync) of your monitors. 0 - off, 1 - on, 2 - fullscreen only

    mouse_move_enables_dpms = true     # If DPMS is set to off, wake up the monitors if the mouse moves.
    key_press_enables_dpms = true      # If DPMS is set to off, wake up the monitors if a key is pressed.
}

Cursor

cursor {
    inactive_timeout = 0 # after how many seconds of cursor’s inactivity to hide it. Set to 0 for never.
    no_warps = true      # will not warp the cursor in many cases (focusing, keybinds, etc)
    enable_hyprcursor = true
}

Binds

binds {
    workspace_back_and_forth = true     # an attempt to switch to the currently focused workspace will instead switch to the previous workspace
    allow_workspace_cycles = true       # If enabled, workspaces don’t forget their previous workspace, so cycles can be created by switching to the first workspace in a sequence, then endlessly going to the previous workspace.

    # sets the preferred focus finding method when using focuswindow/movewindow/etc with a direction.
    # 0 - history (recent have priority)
    # 1 - length (longer shared edges have priority)
    focus_preferred_method = 0

    movefocus_cycles_fullscreen = false # If enabled, when on a fullscreen window, movefocus will cycle fullscreen, if not, it will move the focus in a direction.
}

Animations

Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

animations {
    enabled = yes
    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 7, myBezier
    animation = windowsOut, 1, 7, myBezier, popin 80%

    animation = layers, 1, 7, myBezier, popin 80%

    animation = workspaces, 1, 7, myBezier, fade
    animation = specialWorkspace, 1, 7, myBezier, slidefadevert -10%

    animation = border, 1, 10, myBezier
    animation = borderangle, 1, 80, myBezier

    animation = fade, 1, 7, myBezier
}

Layouts

Dwindle

See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more

dwindle {
    pseudotile = true         # master switch for pseudotiling. Pseudotiled windows retain their floating size when tiled.
    force_split = 2           # 0 - mouse; 1 - left; 2 - right
    preserve_split = true     # if enabled, the split (side/top) will not change regardless of what happens to the container.
    no_gaps_when_only = false # whether to apply gaps when there is only one window on a workspace, aka. smart gaps.
}

Master

See https://wiki.hyprland.org/Configuring/Master-Layout/ for more

master {
    new_status = slave
    no_gaps_when_only = false # whether to apply gaps when there is only one window on a workspace, aka. smart gaps.
}

Gestures

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = false
}

Devices

Mouse

Example per-device config See https://wiki.hyprland.org/Configuring/Keywords/#executing for more

# device:logitech-mx-master-3-1 {
#     sensitivity = 0
# }

Keybindings

Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more

System

bind = SUPER CTRL , q     , exit                ,                          # quit hyprland
bind = SUPER CTRL , r     , forcerendererreload ,                          # restart hyprland
bind = SHIFT      , ALT_L , exec                , $myScript/toggle-lang.sh # switch language

Windows

States

bind = SUPER       , q   , killactive     ,   # close focused window
bind = SUPER SHIFT , F11 , fakefullscreen , 0 # toggle fullscreen
bind = SUPER       , F11 , fullscreen     , 0 # toggle fullscreen
bind = SUPER SHIFT , f   , fullscreen     , 0 # toggle fullscreen
bind = SUPER       , m   , fullscreen     , 1 # toggle maximize
bind = SUPER       , f   , togglefloating ,   # toggle floating
bind = SUPER CTRL  , f   , pin            ,   # toggle pinnned
bind = SUPER SHIFT , p   , pseudo         ,   # toggle pseudo
bind = SUPER SHIFT , m   , togglesplit    ,   # mirror layout

Focus

bind = ALT       , tab , cyclenext ,      # focus next window
bind = ALT SHIFT , tab , cyclenext , prev # focus prev window
bind = SUPER     , h   , movefocus , l    # focus left window
bind = SUPER     , j   , movefocus , d    # focus below window
bind = SUPER     , k   , movefocus , u    # focus above window
bind = SUPER     , l   , movefocus , r    # focus right window

Resizing windows

bind = SUPER , equal , splitratio , exact 1    # reset fucused window size

binde = SUPER CTRL , h , resizeactive , -20 0  # grow focused window left
binde = SUPER CTRL , j , resizeactive ,  0 20  # grow focused window down
binde = SUPER CTRL , k , resizeactive ,  0 -20 # grow focused window up
binde = SUPER CTRL , l , resizeactive , 20 0   # grow focused window right

Swapping tiled windows

bind = SUPER SHIFT , h , swapwindow , l # swap focused window with left window
bind = SUPER SHIFT , j , swapwindow , d # swap focused window with below window
bind = SUPER SHIFT , k , swapwindow , u # swap focused window with above window
bind = SUPER SHIFT , l , swapwindow , r # swap focused window with right window

Move floating windows

binde = SUPER CTRL  , c     , centerwindow
binde = SUPER       , equal , centerwindow ,        # center floating window
binde = SUPER SHIFT , h     , moveactive   , -20 0  # move floating window left
binde = SUPER SHIFT , j     , moveactive   ,  0 20  # move floating window down
binde = SUPER SHIFT , k     , moveactive   ,  0 -20 # move floating window up
binde = SUPER SHIFT , l     , moveactive   , 20 0   # move floating window right

Special Moving windows

bind = SUPER ALT , h , movewindow , l # move focused window left
bind = SUPER ALT , j , movewindow , d # move focused window below
bind = SUPER ALT , k , movewindow , u # move focused window above
bind = SUPER ALT , l , movewindow , r # move focused window right

Masters


Monitors

Focus

bind = SUPER , F1     , focusmonitor , 0 # move focus to monitor 1
bind = SUPER , F2     , focusmonitor , 1 # move focus to monitor 2
bind = SUPER , F3     , focusmonitor , 2 # move focus to monitor 3

bind = SUPER , comma  , focusmonitor , d # move focus to below monitor
bind = SUPER , period , focusmonitor , u # move focus to above monitor

Moving Windows

bind = SUPER SHIFT , comma  , movewindow , mon:d # move window to below monitor
bind = SUPER SHIFT , period , movewindow , mon:u # move window to above monitor

Swapping

bind = SUPER SHIFT , F1 , movewindow , mon:0 # move window to monitor 1
bind = SUPER SHIFT , F2 , movewindow , mon:1 # move window to monitor 2
bind = SUPER SHIFT , F3 , movewindow , mon:2 # move window to monitor 3

Layouts

Dwindle

bind = SUPER , space , exec , $myHyprScript/toggle-layout.sh # switch layouts

Workspaces

Focus

bind = SUPER , tab , focusworkspaceoncurrentmonitor , previous # toggle last workspace
bind = SUPER , 1   , focusworkspaceoncurrentmonitor , 1 # switch to workspace 1
bind = SUPER , 2   , focusworkspaceoncurrentmonitor , 2 # switch to workspace 2
bind = SUPER , 3   , focusworkspaceoncurrentmonitor , 3 # switch to workspace 3
bind = SUPER , 4   , focusworkspaceoncurrentmonitor , 4 # switch to workspace 4
bind = SUPER , 5   , focusworkspaceoncurrentmonitor , 5 # switch to workspace 5
bind = SUPER , 6   , focusworkspaceoncurrentmonitor , 6 # switch to workspace 6
bind = SUPER , 7   , focusworkspaceoncurrentmonitor , 7 # switch to workspace 7
bind = SUPER , 8   , focusworkspaceoncurrentmonitor , 8 # switch to workspace 8
bind = SUPER , 9   , focusworkspaceoncurrentmonitor , 9 # switch to workspace 9
bind = SUPER , 0   , focusworkspaceoncurrentmonitor , name:star # switch to workspace star

Moving Windows

bind = SUPER SHIFT , 1 , movetoworkspacesilent , 1 # move window to workspace 1
bind = SUPER SHIFT , 2 , movetoworkspacesilent , 2 # move window to workspace 2
bind = SUPER SHIFT , 3 , movetoworkspacesilent , 3 # move window to workspace 3
bind = SUPER SHIFT , 4 , movetoworkspacesilent , 4 # move window to workspace 4
bind = SUPER SHIFT , 5 , movetoworkspacesilent , 5 # move window to workspace 5
bind = SUPER SHIFT , 6 , movetoworkspacesilent , 6 # move window to workspace 6
bind = SUPER SHIFT , 7 , movetoworkspacesilent , 7 # move window to workspace 7
bind = SUPER SHIFT , 8 , movetoworkspacesilent , 8 # move window to workspace 8
bind = SUPER SHIFT , 9 , movetoworkspacesilent , 9 # move window to workspace 9
bind = SUPER SHIFT , 0 , movetoworkspacesilent , name:star # move window to workspace star

Moving Windows with switching Workspace

bind = SUPER SHIFT CTRL , 1 , moveworkspacetomonitor , 1 current # move window to workspace 1 with switch
bind = SUPER SHIFT CTRL , 2 , moveworkspacetomonitor , 2 current # move window to workspace 2 with switch
bind = SUPER SHIFT CTRL , 3 , moveworkspacetomonitor , 3 current # move window to workspace 3 with switch
bind = SUPER SHIFT CTRL , 4 , moveworkspacetomonitor , 4 current # move window to workspace 4 with switch
bind = SUPER SHIFT CTRL , 5 , moveworkspacetomonitor , 5 current # move window to workspace 5 with switch
bind = SUPER SHIFT CTRL , 6 , moveworkspacetomonitor , 6 current # move window to workspace 6 with switch
bind = SUPER SHIFT CTRL , 7 , moveworkspacetomonitor , 7 current # move window to workspace 7 with switch
bind = SUPER SHIFT CTRL , 8 , moveworkspacetomonitor , 8 current # move window to workspace 8 with switch
bind = SUPER SHIFT CTRL , 9 , moveworkspacetomonitor , 9 current # move window to workspace 9 with switch

bind = SUPER SHIFT CTRL , 1 , movetoworkspace , 1
bind = SUPER SHIFT CTRL , 2 , movetoworkspace , 2
bind = SUPER SHIFT CTRL , 3 , movetoworkspace , 3
bind = SUPER SHIFT CTRL , 4 , movetoworkspace , 4
bind = SUPER SHIFT CTRL , 5 , movetoworkspace , 5
bind = SUPER SHIFT CTRL , 6 , movetoworkspace , 6
bind = SUPER SHIFT CTRL , 7 , movetoworkspace , 7
bind = SUPER SHIFT CTRL , 8 , movetoworkspace , 8
bind = SUPER SHIFT CTRL , 9 , movetoworkspace , 9

Special Workspaces

Toggle

bind = SUPER ALT , grave , togglespecialworkspace , term  # toggle special workspace term
bind = SUPER ALT , 1     , togglespecialworkspace , 1     # toggle special workspace 1
bind = SUPER ALT , 2     , togglespecialworkspace , 2     # toggle special workspace 2
bind = SUPER ALT , 3     , togglespecialworkspace , 3     # toggle special workspace 3
bind = SUPER ALT , 4     , togglespecialworkspace , 4     # toggle special workspace 4
bind = SUPER ALT , 5     , togglespecialworkspace , 5     # toggle special workspace 5
bind = SUPER ALT , m     , togglespecialworkspace , music # toggle special workspace music
bind = SUPER ALT , a     , togglespecialworkspace , audio # toggle special workspace audio
bind = SUPER ALT , c     , togglespecialworkspace , chats # toggle special workspace chats
bind = SUPER ALT , v     , togglespecialworkspace , vm    # toggle special workspace vm

Moving Windows

bind = SUPER ALT SHIFT , grave , movetoworkspacesilent , term          # move window to special workspace term
bind = SUPER ALT SHIFT , 1     , movetoworkspacesilent , special:1     # move window to special workspace 1
bind = SUPER ALT SHIFT , 2     , movetoworkspacesilent , special:2     # move window to special workspace 2
bind = SUPER ALT SHIFT , 3     , movetoworkspacesilent , special:3     # move window to special workspace 3
bind = SUPER ALT SHIFT , 4     , movetoworkspacesilent , special:4     # move window to special workspace 4
bind = SUPER ALT SHIFT , 5     , movetoworkspacesilent , special:5     # move window to special workspace 5
bind = SUPER ALT SHIFT , m     , movetoworkspacesilent , special:music # move window to special workspace music
bind = SUPER ALT SHIFT , a     , movetoworkspacesilent , special:audio # move window to special workspace audio
bind = SUPER ALT SHIFT , c     , movetoworkspacesilent , special:chats # move window to special workspace chats
bind = SUPER ALT SHIFT , v     , movetoworkspacesilent , special:vm    # move window to special workspace vm

Launching Apps

bind = SUPER , grave , exec , $myHyprScript/toggle-special-workspace.sh "term"  "sp-term"  "alacritty --class sp-term"          # toggle terminal
bind = SUPER , e     , exec , $myHyprScript/toggle-special-workspace.sh "files" "sp-files" "alacritty --class sp-files -e vifm" # toggle file manager

bind = SUPER       , r      , exec , $myLauncher   # launch launcher
bind = SUPER       , return , exec , $myTerm       # launch terminal
bind = SUPER       , c      , exec , $myIde        # launch ide
bind = SUPER SHIFT , e      , exec , $myCliFiles   # launch file manager
bind = SUPER       , b      , exec , $myWebBrowser # launch web browser
bind = SUPER       , i      , exec , $myIncBrowser # launch web browser in incognito mode

CTRL ALT

bind = CTRL ALT , delete , exec                   , $myHyprScript/toggle-special-workspace.sh "htop"  "sp-htop"  "alacritty --class sp-htop -e htop"
bind = CTRL ALT , end    , exec                   , $myHyprScript/toggle-special-workspace.sh "btop"  "sp-btop"  "alacritty --class sp-btop -e btop"
bind = CTRL ALT , t      , exec                   , $myTerm

bind = CTRL ALT , a      , togglespecialworkspace , audio
bind = CTRL ALT , a      , exec                   , [workspace special:audio] pavucontrol
bind = CTRL ALT , a      , exec                   , [workspace special:audio] qpwgraph
# bind = CTRL ALT , v      , exec                   , $myHyprScript/toggle-special-workspace.sh "volume" "pavucontrol" "pavucontrol"
# bind = CTRL ALT , v      , exec                   , $myHyprScript/toggle-special-workspace.sh "volume" "pavucontrol" "pavucontrol & qpwgraph"

media keys

System audio

bindl = , XF86AudioRaiseVolume , exec , $myScript/set-volume.sh + 2 # increase system volume
bindl = , XF86AudioLowerVolume , exec , $myScript/set-volume.sh - 2 # decrease system volume
bindl = , XF86AudioMute        , exec , $myScript/toggle-mute.sh    # toggle mute

Player audio

bindl =      , XF86AudioPrev        , exec , $myScript/playerctl.sh prev     # player prev
bindl =      , XF86AudioNext        , exec , $myScript/playerctl.sh next     # player next
bindl =      , XF86AudioPlay        , exec , $myScript/playerctl.sh toggle   # player play/pause
bindl =      , XF86AudioStop        , exec , $myScript/playerctl.sh stop     # player stop
bindl = CTRL , XF86AudioPlay        , exec , $myScript/musictl.sh single     # music [s] single mode
bindl = CTRL , XF86AudioStop        , exec , $myScript/musictl.sh random     # music [z] shuffle mode

print screen

bind =             , print , exec , $myScript/screenshot.sh monitor # Fullscreen Screenshot
bind = SUPER SHIFT , print , exec , $myScript/screenshot.sh area    # Selection Area Screenshot
bind = ALT         , print , exec , $myScript/screenshot.sh window  # Active Window Screenshot
bind = SUPER       , print , exec , $myScript/screenshot.sh desktop # Full Desktop Screenshot

backslash dm-notify

bind = SUPER , backslash , exec   , $myEwwScript/which-key.sh dm-notify
bind = SUPER , backslash , submap , dm-notify

submap = dm-notify
bind =       , backspace , exec , $myDMScript/dm-notify close   # clear last notification
bind = SUPER , backslash , exec , $myDMScript/dm-notify recent  # show last notification
bind =       , backslash , exec , $myDMScript/dm-notify recent  # show last notification
bind = SHIFT , BACKSLASH , exec , $myDMScript/dm-notify recents # show recent notifications
bind =       , a         , exec , $myDMScript/dm-notify context # open last notification
bind =       , c         , exec , $myDMScript/dm-notify close   # clear last notification
bind = SHIFT , C         , exec , $myDMScript/dm-notify clear   # clear all notifications
bind =       , r         , exec , $myDMScript/dm-notify recents # show recent notifications

bindr =       , catchall  , exec , $myHyprScript/reset-submap.sh
bind  =       , backspace , exec , $myHyprScript/reset-submap.sh
bind  =       , a         , exec , $myHyprScript/reset-submap.sh
bind  = SHIFT , c         , exec , $myHyprScript/reset-submap.sh

submap = reset

d dm-scripts

bind = SUPER , d , exec   , $myEwwScript/which-key.sh dm-global
bind = SUPER , d , submap , dm-global

submap = dm-global
bind =       , backslash , exec , $myDMScript/dm-notify     # dm-notify
bind =       , b         , exec , $myDMScript/dm-bookman    # dm-bookman
bind = SUPER , d         , exec , $myDMScript/dm-master     # dm-master
bind =       , k         , exec , $myDMScript/dm-keys       # dm-keys
bind =       , n         , exec , $myDMScript/dm-notify     # dm-notify
bind =       , p         , exec , $myDMScript/dm-player     # dm-player
bind =       , r         , exec , $myDMScript/dm-record     # dm-record
bind =       , s         , exec , $myDMScript/dm-screenshot # dm-screenshot
bind =       , t         , exec , $myDMScript/dm-theme      # dm-theme
bind =       , w         , exec , $myDMScript/dm-wallpaper  # dm-wallpaper
bind =       , z         , exec , $myDMScript/dm-power      # dm-power

bindr =       , catchall  , exec , $myHyprScript/reset-submap.sh
bind  =       , backslash , exec , $myHyprScript/reset-submap.sh
bind  =       , b         , exec , $myHyprScript/reset-submap.sh
bind  = SUPER , d         , exec , $myHyprScript/reset-submap.sh
bind  =       , k         , exec , $myHyprScript/reset-submap.sh
bind  =       , n         , exec , $myHyprScript/reset-submap.sh
bind  =       , p         , exec , $myHyprScript/reset-submap.sh
bind  =       , r         , exec , $myHyprScript/reset-submap.sh
bind  =       , s         , exec , $myHyprScript/reset-submap.sh
bind  =       , t         , exec , $myHyprScript/reset-submap.sh
bind  =       , w         , exec , $myHyprScript/reset-submap.sh
bind  =       , z         , exec , $myHyprScript/reset-submap.sh

submap = reset

o open

bind = SUPER , o , exec   , $myEwwScript/which-key.sh open
bind = SUPER , o , submap , open

submap = open
bind =       , c , exec   , $myColorPicker                                                                              # color picker
bind =       , d , exec   , $myHyprScript/toggle-special-workspace.sh "chats" $myDiscordClass $myDiscord                # toggle chats
bind =       , e , exec   , $myEmail                                                                                    # email client
bind =       , g , exec   , $myEwwScript/which-key.sh games open
bind =       , g , submap , games                                                                                       # +games
bind =       , i , exec   , vimiv $XDG_PICTURES_DIR                                                                     # image viewer
bind =       , m , exec   , $myCliMusic                                                                                 # music player
bind = SHIFT , M , exec   , [workspace 5 silent] $myCliMusic                                                            # music player on default workspace
bind =       , t , exec   , $myTorBrowser                                                                               # tor browser
bind =       , w , exec   , $myHyprScript/toggle-special-workspace.sh "chats" "whatsapp-for-linux" "whatsapp-for-linux" # toggle whatsapp

bindr =       , catchall , exec , $myHyprScript/reset-submap.sh
bind  =       , c        , exec , $myHyprScript/reset-submap.sh
bind  =       , d        , exec , $myHyprScript/reset-submap.sh
bind  =       , e        , exec , $myHyprScript/reset-submap.sh
bind  =       , i        , exec , $myHyprScript/reset-submap.sh
bind  =       , m        , exec , $myHyprScript/reset-submap.sh
bind  = SHIFT , M        , exec , $myHyprScript/reset-submap.sh
bind  =       , t        , exec , $myHyprScript/reset-submap.sh
bind  =       , v        , exec , $myHyprScript/reset-submap.sh
bind  =       , w        , exec , $myHyprScript/reset-submap.sh

submap = reset

g games

submap = games
bind = , f , exec , fheroes2     # fheroes homm
bind = , g , exec , gamehub      # gamehub
bind = , h , exec , heroic       # heroic
bind = , l , exec , lutris       # lutris
bind = , s , exec , $mySteam     # steam
bind = , v , exec , vcmilauncher # vcmi homm launcher

bindr = , catchall  , exec   , $myHyprScript/reset-submap.sh
bind  = , backspace , exec   , $myEwwScript/which-key.sh open
bind  = , backspace , submap , open
bind  = , f         , exec   , $myHyprScript/reset-submap.sh
bind  = , g         , exec   , $myHyprScript/reset-submap.sh
bind  = , h         , exec   , $myHyprScript/reset-submap.sh
bind  = , l         , exec   , $myHyprScript/reset-submap.sh
bind  = , s         , exec   , $myHyprScript/reset-submap.sh
bind  = , v         , exec   , $myHyprScript/reset-submap.sh

submap = reset

p pass

bind = SUPER , p , exec   , $myEwwScript/which-key.sh pass
bind = SUPER , p , submap , pass

submap = pass
bind = , c , exec , wofi-pass --squash # copy field
bind = , p , exec , wofi-pass --squash --type # fill field
bind = , a , exec , wofi-pass --squash --type --autotype # autofill password

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , c        , exec , $myHyprScript/reset-submap.sh
bind  = , p        , exec , $myHyprScript/reset-submap.sh
bind  = , a        , exec , $myHyprScript/reset-submap.sh

submap = reset

s scratchpad

bind = SUPER , s , exec   , $myEwwScript/which-key.sh scratchpad
bind = SUPER , s , submap , scratchpad
#                                                            | workspace  | class                            | command
submap = scratchpad
bind = , a , exec , $myHyprScript/toggle-special-workspace.sh "anki"        "anki"                             "anki"                                  # anki
bind = , c , exec , $myHyprScript/toggle-special-workspace.sh "calculator"  "org.gnome.Calculator"             "gnome-calculator"                      # calculator
bind = , d , exec , $myHyprScript/toggle-special-workspace.sh "chats"       $myDiscordClass                    $myDiscord                              # discord
bind = , e , exec , $myHyprScript/toggle-special-workspace.sh "email"       $myEmailClass                      $myEmail                                # email client
bind = , m , exec , $myHyprScript/toggle-special-workspace.sh "music"       "sp-music"                         "alacritty --class sp-music -e ncmpcpp" # music player
bind = , t , exec , $myHyprScript/toggle-special-workspace.sh "torrent"     "com.transmissionbt.transmission"  "transmission-gtk"                      # torrent
bind = , v , exec , $myHyprScript/toggle-special-workspace.sh "vm"          "virt-manager"                     "virt-manager"                          # vm
bind = , w , exec , $myHyprScript/toggle-special-workspace.sh "chats"       "whatsapp-for-linux"               "whatsapp-for-linux"                    # whatsapp

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , a        , exec , $myHyprScript/reset-submap.sh
bind  = , c        , exec , $myHyprScript/reset-submap.sh
bind  = , d        , exec , $myHyprScript/reset-submap.sh
bind  = , e        , exec , $myHyprScript/reset-submap.sh
bind  = , m        , exec , $myHyprScript/reset-submap.sh
bind  = , t        , exec , $myHyprScript/reset-submap.sh
bind  = , v        , exec , $myHyprScript/reset-submap.sh
bind  = , w        , exec , $myHyprScript/reset-submap.sh

submap = reset

t toggle

bind = SUPER , t , exec   , $myEwwScript/which-key.sh toggle
bind = SUPER , t , submap , toggle

submap = toggle
bind = , b , exec   , $myHyprScript/toggle-borders.sh $borders                                                # window borders
bind = , c , exec   , $myHyprScript/toggle-corners.sh $corners                                                # corners
bind = , g , exec   , $myHyprScript/toggle-gaps.sh $gaps_inner                                                # gaps
bind = , p , exec   , $myEwwScript/which-key.sh panels toggle
bind = , p , submap , panels                                                                                  # +panels
bind = , q , exec   , $myEwwScript/which-key.sh quick-settings toggle
bind = , q , submap , quick-settings                                                                          # +quick-settings
bind = , s , exec   , $myHyprScript/toggle-status-bar.sh                                                      # status bar
bind = , z , exec   , $myHyprScript/toggle-zen.sh $borders $corners $gaps_inner                               # zen mode

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , b        , exec , $myHyprScript/reset-submap.sh
bind  = , c        , exec , $myHyprScript/reset-submap.sh
bind  = , g        , exec , $myHyprScript/reset-submap.sh
bind  = , s        , exec , $myHyprScript/reset-submap.sh
bind  = , z        , exec , $myHyprScript/reset-submap.sh

submap = reset

p panels

submap = panels
bind =       , m , exec , $myEwwScript/toggle-window.sh -m $($myScript/get-current-monitor.sh id) $panel-monitor  # monitor panel
bind = SHIFT , M , exec , $myEwwScript/toggle-window.sh -m 1 $panel-monitor                                       # monitor panel on secondary monitor
bind =       , q , exec , $myEwwScript/toggle-window.sh -m $($myScript/get-current-monitor.sh id) $quick-settings # quick-settings panel
bind = SHIFT , Q , exec , $myEwwScript/toggle-window.sh -m 1 $quick-settings                                      # quick-settings panel on secondary monitor

bindr =       , catchall  , exec   , $myHyprScript/reset-submap.sh
bind  =       , backspace , exec   , $myEwwScript/which-key.sh toggle
bind  =       , backspace , submap , toggle
bind  =       , m         , exec   , $myHyprScript/reset-submap.sh
bind  = SHIFT , M         , exec   , $myHyprScript/reset-submap.sh
bind  =       , q         , exec   , $myHyprScript/reset-submap.sh
bind  = SHIFT , Q         , exec   , $myHyprScript/reset-submap.sh

submap = reset

q quick-settings

submap = quick-settings
bind = , b , exec , $myScript/btctl.sh toggle           # bluetooth
bind = , e , exec , $myScript/netctl.sh toggle ethernet # ethernet
bind = , h , exec , $myScript/toggle-headphones.sh      # bluetooth headphones
bind = , s , exec , $myScript/toggle-speakers.sh        # bluetooth speakers
bind = , v , exec , $myScript/vpnctl.sh toggle          # vpn
bind = , w , exec , $myScript/netctl.sh toggle wifi     # wi-fi

bindr = , catchall  , exec   , $myHyprScript/reset-submap.sh
bind  = , backspace , exec   , $myEwwScript/which-key.sh toggle
bind  = , backspace , submap , toggle
bind  = , b         , exec   , $myHyprScript/reset-submap.sh
bind  = , e         , exec   , $myHyprScript/reset-submap.sh
bind  = , h         , exec   , $myHyprScript/reset-submap.sh
bind  = , s         , exec   , $myHyprScript/reset-submap.sh
bind  = , v         , exec   , $myHyprScript/reset-submap.sh
bind  = , w         , exec   , $myHyprScript/reset-submap.sh

submap = reset

z dm-power

bind = SUPER , z , exec   , $myEwwScript/which-key.sh dm-power
bind = SUPER , z , submap , dm-power

submap = dm-power
bind =       , c , exec , $myDMScript/dm-power controller # disconnect all controllers
bind =       , l , exec , $myDMScript/dm-power lock       # lock screen
bind =       , p , exec , $myDMScript/dm-power poweroff   # shutdown system
bind =       , r , exec , $myDMScript/dm-power reboot     # reboot system
bind =       , s , exec , $myDMScript/dm-power suspend    # suspend system
bind =       , z , exec , $myDMScript/dm-power suspend    # suspend system
bind = SUPER , z , exec , $myDMScript/dm-power suspend    # suspend system

bindr =       , catchall , exec , $myHyprScript/reset-submap.sh
bind  =       , c        , exec , $myHyprScript/reset-submap.sh
bind  =       , l        , exec , $myHyprScript/reset-submap.sh
bind  =       , p        , exec , $myHyprScript/reset-submap.sh
bind  =       , r        , exec , $myHyprScript/reset-submap.sh
bind  =       , s        , exec , $myHyprScript/reset-submap.sh
bind  =       , z        , exec , $myHyprScript/reset-submap.sh
bind  = SUPER , z        , exec , $myHyprScript/reset-submap.sh

submap = reset

ctrl-alt-o

bind = CTRL ALT , o , exec   , $myEwwScript/which-key.sh app-secondary
bind = CTRL ALT , o , submap , app-secondary

submap = app-secondary
bind = , e , exec , $myFiles        # gui file manager
bind = , g , exec , $myImgEditor    # image editor
bind = , p , exec , $myPhotoLibrary # photo library
bind = , r , exec , $myVctEditor    # vector image editor
bind = , v , exec , $myVidEditor    # video editor

bindr = , catchall , exec , $myHyprScript/reset-submap.sh
bind  = , e        , exec , $myHyprScript/reset-submap.sh
bind  = , g        , exec , $myHyprScript/reset-submap.sh
bind  = , p        , exec , $myHyprScript/reset-submap.sh
bind  = , r        , exec , $myHyprScript/reset-submap.sh
bind  = , v        , exec , $myHyprScript/reset-submap.sh

submap = reset

HOLD leader

bind = SUPER , space , submap , leader

submap = leader
bind = , escape , submap , reset

o open

bind = , o , submap , leader-open

submap = leader-open
bind = , escape , submap , reset

c chats

bind = , c , togglespecialworkspace , chats
bind = , c , submap                 , reset

leader-end

submap = reset

Mouse Bindings

# Scroll through existing workspaces with mainMod + scroll
# bind = SUPER , mouse_down , workspace , e+1
# bind = SUPER , mouse_up   , workspace , e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = SUPER , mouse:272 , movewindow
bindm = SUPER , mouse:273 , resizewindow
# bindm = , mouse:133 , movewindow

Debug

debug {
    overlay = false                # print the debug performance overlay. Disable VFR for accurate results.	bool	false
    # damage_blink = false         # (epilepsy warning!) flash areas updated with damage tracking	bool	false
    disable_logs = true            # disable logging to a file	bool	true
    # disable_time = true          # disables time logging	bool	true
    # damage_tracking = 2          # redraw only the needed bits of the display. Do not change. (default: full - 2) monitor - 1, none - 0	int	2
    # enable_stdout_logs = false   # enables logging to stdout	bool	false
    manual_crash = 0               # set to 1 and then back to 0 to crash Hyprland.	int	0
    # suppress_errors = false      # if true, do not display config file parsing errors.	bool	false
    # watchdog_timeout = 5         # sets the timeout in seconds for watchdog to abort processing of a signal of the main thread. Set to 0 to disable.	int	5
    # disable_scale_checks = false # disables verifying of the scale factors. Will result in pixel alignment and rounding errors.	bool	false
    # error_limit = 5              # limits the number of displayed config file parsing errors.	int	5
}

About

Hyprland is a dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on its looks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages