From ad6ce14fed4be5df10c47c11bd0aeb5727e51b03 Mon Sep 17 00:00:00 2001 From: Dmitri Date: Sat, 7 Jun 2025 11:06:06 +0200 Subject: [PATCH] added hyprland --- hypr/hyprland.conf | 231 ++++++++++++++++++++++++++++++++ nvim/lua/kanopo/plugins/lsp.lua | 1 + waybar/config.jsonc | 7 + waybar/style.css | 5 + 4 files changed, 244 insertions(+) create mode 100644 hypr/hyprland.conf diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100644 index 0000000..3cd02a0 --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,231 @@ +# ~/.config/hypr/hyprland.conf +# Hyprland Configuration - Converted from Sway + +################ +### MONITORS ### +################ +# monitor=,2256x1504@60,0x0,1.33333 +monitor=,2256x1504@60,0x0,1 + +################### +### MY PROGRAMS ### +################### +$terminal = foot +$fileManager = nautilus +$menu = wofi --show drun --prompt Search --insensitive + +# set $menu wofi -S drun -p Search -I -b -i + +################# +### AUTOSTART ### +################# +exec-once = waybar +exec-once = swaybg -i ~/Nextcloud/wallpapers/laptop/hiroishi_nagasai.png -m fill +exec-once = mako +exec-once = keepassxc +exec-once = nextcloud +exec-once = wlsunset -S 08:00 -s 18:00 +exec-once = blueman-applet +exec-once = nm-applet --indicator +exec-once = wl-paste --type text --watch cliphist store +exec-once = wl-paste --type image --watch cliphist store +exec-once = /usr/lib/polkit-kde-authentication-agent-1 +exec-once = gnome-keyring-daemon --start --components=pkcs11,secrets,ssh +exec-once = swayidle -w timeout 300 'swaylock -f' timeout 600 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f' + +############################# +### ENVIRONMENT VARIABLES ### +############################# +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + +##################### +### LOOK AND FEEL ### +##################### +general { + gaps_in = 5 + gaps_out = 3 + border_size = 1 + col.active_border = rgba(d65d0eee) + col.inactive_border = rgba(282828aa) + resize_on_border = false + allow_tearing = false + layout = dwindle +} + +decoration { + rounding = 10 + active_opacity = 1.0 + inactive_opacity = 0.9 + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + blur { + enabled = true + size = 3 + passes = 1 + vibrancy = 0.1696 + } +} + +animations { + enabled = yes + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default +} + +dwindle { + pseudotile = true + preserve_split = true +} + +master { + new_status = master +} + +misc { + force_default_wallpaper = -1 + disable_hyprland_logo = true +} + +############# +### INPUT ### +############# +input { + kb_layout = us + follow_mouse = 1 + sensitivity = 0 + + touchpad { + natural_scroll = true + disable_while_typing = true + tap-to-click = true + middle_button_emulation = true + } +} + +gestures { + workspace_swipe = true +} + +################### +### KEYBINDINGS ### +################### +$mainMod = SUPER + +# Basic binds +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod SHIFT, Q, killactive +bind = $mainMod, M, exit +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating +bind = $mainMod, D, exec, $menu +bind = $mainMod, P, pseudo +bind = $mainMod, J, togglesplit +bind = $mainMod, F, fullscreen +bind = $mainMod SHIFT, C, exec, hyprctl reload + +# 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 + +# Move focus with mainMod + hjkl +bind = $mainMod, H, movefocus, l +bind = $mainMod, L, movefocus, r +bind = $mainMod, K, movefocus, u +bind = $mainMod, J, movefocus, d + +# Move windows +bind = $mainMod SHIFT, left, movewindow, l +bind = $mainMod SHIFT, right, movewindow, r +bind = $mainMod SHIFT, up, movewindow, u +bind = $mainMod SHIFT, down, movewindow, d + +bind = $mainMod SHIFT, H, movewindow, l +bind = $mainMod SHIFT, L, movewindow, r +bind = $mainMod SHIFT, K, movewindow, u +bind = $mainMod SHIFT, J, movewindow, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Scratchpad +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Audio and brightness controls +bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ +bindel = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = , XF86MonBrightnessUp, exec, brightnessctl set 10%+ +bindel = , XF86MonBrightnessDown, exec, brightnessctl set 10%- + +# Media controls +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +# Screenshots +bind = , Print, exec, grimshot copy output +bind = $mainMod, Print, exec, grimshot copy area + +# Screen recording +bind = $mainMod, XF86AudioMedia, exec, pkill wf-recorder || wf-recorder --audio --file ~/Videos/$(date +'%Y-%m-%d-%H-%M-%S').mp4 + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# Window rules +windowrule = suppressevent maximize, class:.* +windowrule = float, class:^(blueman-manager)$ +windowrule = size 40% 30%, class:^(blueman-manager)$ +windowrule = float, class:^(org.keepassxc.KeePassXC)$ +windowrule = size 70% 60%, class:^(org.keepassxc.KeePassXC)$ +windowrule = float, class:^(pavucontrol)$ +windowrule = size 60% 50%, class:^(pavucontrol)$ +windowrule = float, title:^(Picture-in-Picture)$ +windowrule = pin, title:^(Picture-in-Picture)$ diff --git a/nvim/lua/kanopo/plugins/lsp.lua b/nvim/lua/kanopo/plugins/lsp.lua index 4cc6baa..5d2337a 100644 --- a/nvim/lua/kanopo/plugins/lsp.lua +++ b/nvim/lua/kanopo/plugins/lsp.lua @@ -7,6 +7,7 @@ local lsp_servers = { "dockerls", "tailwindcss", "cssls", + "pylsp" } local tools = { diff --git a/waybar/config.jsonc b/waybar/config.jsonc index c39a923..2837c91 100644 --- a/waybar/config.jsonc +++ b/waybar/config.jsonc @@ -2,6 +2,7 @@ { "height": 30, // Waybar height (to be removed for auto height) "modules-left": [ + "hyprland/workspaces", "sway/workspaces", "sway/mode", "sway/scratchpad" @@ -27,6 +28,12 @@ "tray" // "custom/power" ], + + "hyprland/workspaces": { + "format": "{icon}", + "on-scroll-up": "hyprctl dispatch workspace e+1", + "on-scroll-down": "hyprctl dispatch workspace e-1" + }, "sway/mode": { "format": "{}" }, diff --git a/waybar/style.css b/waybar/style.css index 35bbe51..6f35cf6 100644 --- a/waybar/style.css +++ b/waybar/style.css @@ -48,6 +48,11 @@ window#waybar { color: @foreground; } +#workspaces button.active { + background-color: @orange; + color: @foreground; +} + #mode { background-color: @red; color: @foreground;