diff options
Diffstat (limited to 'dotfiles/hyprland/.config/hypr/hyprland.conf')
| -rw-r--r-- | dotfiles/hyprland/.config/hypr/hyprland.conf | 287 |
1 files changed, 287 insertions, 0 deletions
diff --git a/dotfiles/hyprland/.config/hypr/hyprland.conf b/dotfiles/hyprland/.config/hypr/hyprland.conf new file mode 100644 index 0000000..ce45088 --- /dev/null +++ b/dotfiles/hyprland/.config/hypr/hyprland.conf @@ -0,0 +1,287 @@ +# Hyprland Configuration +# Translated from DWM config.def.h and sxhkdrc +# Craig Jennings <c@cjennings.net> + +# ============================================================================ +# Monitor Configuration +# ============================================================================ +monitor=,preferred,auto,auto + +# ============================================================================ +# Startup Applications +# ============================================================================ +exec-once = waybar +exec-once = swww-daemon && sleep 1 && swww img ~/pictures/wallpaper/dark-lion.jpg +exec-once = dunst +exec-once = hypridle +exec-once = gammastep +exec-once = nm-applet +exec-once = blueman-applet +exec-once = /usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +exec-once = mpd +exec-once = signal-desktop --start-in-tray --ozone-platform=wayland +exec-once = protonmail-bridge --no-window +exec-once = insync start + +# ============================================================================ +# Environment Variables +# ============================================================================ +env = XCURSOR_SIZE,24 +env = XDG_CURRENT_DESKTOP,Hyprland +env = XDG_SESSION_TYPE,wayland +env = XDG_SESSION_DESKTOP,Hyprland +env = _JAVA_AWT_WM_NONREPARENTING,1 + +# ============================================================================ +# Appearance (matching DWM colors) +# ============================================================================ +# DWM colors: gray1=#222222, gray2=#444444, gray3=#bbbbbb, gray4=#eeeeee, cyan=#daa520 + +general { + gaps_in = 5 + gaps_out = 10 + border_size = 3 + col.active_border = rgba(daa520ff) + col.inactive_border = rgba(444444ff) + layout = master + resize_on_border = true +} + +decoration { + rounding = 0 + blur { + enabled = false + } + shadow { + enabled = false + } +} + +animations { + enabled = true + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + animation = windows, 1, 3, myBezier + animation = windowsOut, 1, 3, default, popin 80% + animation = fade, 1, 3, default + animation = workspaces, 1, 3, default +} + +# ============================================================================ +# Layout (master-stack like DWM tile) +# ============================================================================ +master { + new_status = slave + mfact = 0.55 +} + +dwindle { + pseudotile = true + preserve_split = true +} + +# ============================================================================ +# Input +# ============================================================================ +input { + kb_layout = us + kb_options = ctrl:nocaps + follow_mouse = 1 + touchpad { + natural_scroll = true + } +} + +# ============================================================================ +# Misc +# ============================================================================ +misc { + force_default_wallpaper = 0 + disable_hyprland_logo = true +} + +# ============================================================================ +# XWayland +# ============================================================================ +xwayland { + force_zero_scaling = true +} + +# ============================================================================ +# Window Rules +# ============================================================================ +# Floating windows (from DWM rules) +windowrulev2 = float, class:^(Gimp)$ +windowrulev2 = float, class:^(caffeine)$ +windowrulev2 = float, class:^(blueman-services)$ +windowrulev2 = float, class:^(Blueman-manager)$ +windowrulev2 = float, class:^(qalculate-gtk)$ +windowrulev2 = float, title:^(Event Tester)$ + +# ============================================================================ +# Key Bindings +# ============================================================================ +$mod = SUPER + +# Terminal and core apps (from DWM) +bind = $mod, T, exec, st +bind = $mod, E, exec, emacsclient -c -a "" || emacs +bind = $mod, W, exec, $BROWSER +bind = $mod, P, exec, wofi --show drun + +# From sxhkdrc +bind = $mod, SPACE, exec, wofi --show drun +bind = $mod SHIFT, S, exec, wofi --show ssh +bind = $mod SHIFT, W, exec, $ALTBROWSER +bind = CTRL ALT, W, exec, tor-browser +bind = CTRL ALT, F, exec, thunar +bind = $mod, V, exec, virtualbox +bind = $mod SHIFT, L, exec, calibre +bind = $mod SHIFT, R, exec, shortwave + +# Window management (from DWM) +bind = $mod, J, layoutmsg, cyclenext +bind = $mod, K, layoutmsg, cycleprev +bind = $mod SHIFT, J, layoutmsg, swapnext +bind = $mod SHIFT, K, layoutmsg, swapprev +bind = $mod, H, resizeactive, -50 0 +bind = $mod, L, resizeactive, 50 0 +bind = $mod, RETURN, layoutmsg, swapwithmaster +bind = $mod, G, centerwindow +bind = $mod, TAB, workspace, previous +bind = $mod SHIFT, C, killactive + +# Layouts (from DWM) +bind = $mod SHIFT, M, exec, hyprctl keyword general:layout master +bind = $mod SHIFT, T, exec, hyprctl keyword general:layout master +bind = $mod SHIFT, F, togglefloating +bind = $mod SHIFT, SPACE, togglefloating + +# Master layout adjustments +bind = $mod, I, layoutmsg, addmaster +bind = $mod, D, layoutmsg, removemaster + +# Gaps (from DWM) +bind = $mod, MINUS, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq '.int') - 5 )) +bind = $mod, EQUAL, exec, hyprctl keyword general:gaps_out $(( $(hyprctl getoption general:gaps_out -j | jq '.int') + 5 )) +bind = $mod SHIFT, EQUAL, exec, hyprctl keyword general:gaps_out 10 + +# Toggle bar +bind = $mod, B, exec, killall -SIGUSR1 waybar + +# Fullscreen +bind = $mod, F11, fullscreen, 0 + +# Workspaces 1-9 (from DWM TAGKEYS) +bind = $mod, 1, workspace, 1 +bind = $mod, 2, workspace, 2 +bind = $mod, 3, workspace, 3 +bind = $mod, 4, workspace, 4 +bind = $mod, 5, workspace, 5 +bind = $mod, 6, workspace, 6 +bind = $mod, 7, workspace, 7 +bind = $mod, 8, workspace, 8 +bind = $mod, 9, workspace, 9 +bind = $mod, 0, workspace, 10 + +# Move window to workspace (from DWM tag) +bind = $mod SHIFT, 1, movetoworkspace, 1 +bind = $mod SHIFT, 2, movetoworkspace, 2 +bind = $mod SHIFT, 3, movetoworkspace, 3 +bind = $mod SHIFT, 4, movetoworkspace, 4 +bind = $mod SHIFT, 5, movetoworkspace, 5 +bind = $mod SHIFT, 6, movetoworkspace, 6 +bind = $mod SHIFT, 7, movetoworkspace, 7 +bind = $mod SHIFT, 8, movetoworkspace, 8 +bind = $mod SHIFT, 9, movetoworkspace, 9 +bind = $mod SHIFT, 0, movetoworkspace, 10 + +# Monitor focus (from DWM focusmon) +bind = $mod, COMMA, focusmonitor, -1 +bind = $mod, PERIOD, focusmonitor, +1 +bind = $mod SHIFT, COMMA, movewindow, mon:-1 +bind = $mod SHIFT, PERIOD, movewindow, mon:+1 + +# Scratchpads (from DWM togglescratch) +# Audio mixer (was MODKEY+a -> spaudio/pulsemixer) +bind = $mod, A, togglespecialworkspace, audio +bind = $mod, A, exec, [workspace special:audio] pgrep -x pulsemixer || st -n spaudio -e pulsemixer +windowrulev2 = float, class:^(st)$, title:^(spaudio)$ +windowrulev2 = size 60% 60%, class:^(st)$, title:^(spaudio)$ +windowrulev2 = center, class:^(st)$, title:^(spaudio)$ +windowrulev2 = workspace special:audio, class:^(st)$, title:^(spaudio)$ + +# System monitor (was MODKEY+m -> spmon/gotop) +bind = $mod, M, togglespecialworkspace, monitor +bind = $mod, M, exec, [workspace special:monitor] pgrep -x gotop || st -n spmon -e gotop +windowrulev2 = float, class:^(st)$, title:^(spmon)$ +windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmon)$ +windowrulev2 = workspace special:monitor, class:^(st)$, title:^(spmon)$ + +# Music player (was MODKEY+slash -> spmp/ncmpcpp) +bind = $mod, SLASH, togglespecialworkspace, music +bind = $mod, SLASH, exec, [workspace special:music] pgrep -x ncmpcpp || st -n spmp -e ncmpcpp +windowrulev2 = float, class:^(st)$, title:^(spmp)$ +windowrulev2 = size 60% 60%, class:^(st)$, title:^(spmp)$ +windowrulev2 = workspace special:music, class:^(st)$, title:^(spmp)$ + +# Terminal scratchpad (was MODKEY+Shift+Return -> spterm/tmux) +bind = $mod SHIFT, RETURN, togglespecialworkspace, term +bind = $mod SHIFT, RETURN, exec, [workspace special:term] pgrep -f "st.*spterm" || st -n spterm -e tmux +windowrulev2 = float, class:^(st)$, title:^(spterm)$ +windowrulev2 = size 60% 60%, class:^(st)$, title:^(spterm)$ +windowrulev2 = workspace special:term, class:^(st)$, title:^(spterm)$ + +# File manager (was MODKEY+f -> spfm/ranger) +bind = $mod, F, togglespecialworkspace, files +bind = $mod, F, exec, [workspace special:files] pgrep -x ranger || st -n spfm -e ranger +windowrulev2 = float, class:^(st)$, title:^(spfm)$ +windowrulev2 = size 60% 60%, class:^(st)$, title:^(spfm)$ +windowrulev2 = workspace special:files, class:^(st)$, title:^(spfm)$ + +# Calculator (was MODKEY+x or MODKEY+c -> qalculate) +bind = $mod, X, exec, qalculate-gtk +bind = $mod, C, exec, qalculate-gtk + +# Htop (was MODKEY+Shift+h -> sptop/htop) +bind = $mod SHIFT, H, togglespecialworkspace, htop +bind = $mod SHIFT, H, exec, [workspace special:htop] pgrep -x htop || st -n sptop -e htop +windowrulev2 = float, class:^(st)$, title:^(sptop)$ +windowrulev2 = size 60% 60%, class:^(st)$, title:^(sptop)$ +windowrulev2 = workspace special:htop, class:^(st)$, title:^(sptop)$ + +# Media/hardware keys +bindel = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5% +bindel = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5% +bindl = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle +bindel = , XF86MonBrightnessUp, exec, brightnessctl s +10% +bindel = , XF86MonBrightnessDown, exec, brightnessctl s 10%- + +# Microphone toggle (from sxhkdrc) +bind = CTRL ALT, SPACE, exec, amixer set Capture toggle && amixer get Capture | grep '\[off\]' && notify-send "Microphone" "Muted" || notify-send "Microphone" "On" + +# Bluetooth (from DWM and sxhkdrc) +bind = $mod SHIFT, B, exec, blueman-manager + +# Screenshots (Wayland: grim + slurp instead of maim) +bind = $mod, S, exec, grim -g "$(slurp)" ~/pictures/screenshots/$(date +%Y.%m.%d-%H%M%S).png && notify-send "Screenshot" "Saved to ~/pictures/screenshots/" +bind = , Print, exec, grim ~/pictures/screenshots/$(date +%Y.%m.%d-%H%M%S).png && notify-send "Screenshot" "Full screen saved" + +# Color picker (Wayland: hyprpicker instead of xcolor) +# bind = $mod, C, exec, hyprpicker -a # conflicts with calculator, uncomment if needed + +# Lock screen (from sxhkdrc: super+Escape) +bind = $mod, ESCAPE, exec, hyprlock + +# Touchpad toggle +bind = $mod, F9, exec, toggle-touchpad + +# Exit/session (from DWM) +bind = $mod SHIFT, Q, exec, wofi --show dmenu --prompt "Exit?" -D dmenu/exit="0" < /dev/null && hyprctl dispatch exit +bind = $mod SHIFT, BACKSPACE, exit +bind = $mod SHIFT, ESCAPE, exec, hyprctl reload + +# Mouse bindings (from DWM buttons) +bindm = $mod, mouse:272, movewindow +bindm = $mod, mouse:273, resizewindow +bindm = $mod SHIFT, mouse:272, resizewindow |
