diff --git a/hypr/conf.d/monitors.conf b/hypr/conf.d/monitors.conf new file mode 100644 index 00000000..2c085368 --- /dev/null +++ b/hypr/conf.d/monitors.conf @@ -0,0 +1 @@ +monitor=,preferred,auto,auto \ No newline at end of file diff --git a/hypr/config.d/monitors.conf b/hypr/config.d/monitors.conf deleted file mode 100644 index a2d8542e..00000000 --- a/hypr/config.d/monitors.conf +++ /dev/null @@ -1,2 +0,0 @@ -monitor=DP-1, 2560x1440, 0x0, 1 -monitor=HDMI-A-1, 1920x1080, 2560x0, 1 diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf index fa782580..35af7c5f 100644 --- a/hypr/hyprland.conf +++ b/hypr/hyprland.conf @@ -1,193 +1,219 @@ -# -> Variables -# --> File system -$FS_HOME = /home/jeremystartm -$FS_HYPR = $FS_HOME/.config/hypr/ -# --> Applications -$APP_TERMINAL = konsole -$APP_FM = dolphin -$APP_MENU = krunner -# --> Input settings -$INPUT_LAYOUT = de -$INPUT_VARIANT = -$INPUT_MODEL = -$INPUT_OPTIONS = ctrl:nocaps -$INPUT_RULES = -$INPUT_FOLLOW_MOUSE = 1 -$INPUT_TOUCHPAD_NATURAL_SCROLL = 1 -# --> Theming -$THEMING_CURSOR_SIZE=24 -$THEMING_CURSOR_THEME=Posy_Cursor +# JeremyStarTM's Hyprland configuration -# -> Include other configs -source=$FS_HYPR/config.d/monitors.conf +############################### +### CONFIGURATION VARIABLES ### +############################### +# User directory +$dirHome = /home/jeremystartm/ +$dirHypr = $dirHome/.config/hypr/ -# -> Configuration -# --> Update flatpak permissions -exec-once = flatpak override --env=~/.themes:ro --env=~/.icons:ro --user -# --> Update cursor -env = XCURSOR_SIZE,$THEMING_CURSOR_SIZE -env = XCURSOR_THEME,$THEMING_CURSOR_THEME -# --> Set desktop +# Settings +# -> Keyboard +$settingsKeyboardNumlock = 0 +$settingsKeyboardLayout = de +$settingsKeyboardVariant = +# -> Mouse +$settingsMouseLefthanded = 0 +$settingsMouseSensitivity = 0 +$settingsMouseFocusFollow = 1 +# -> Tablet +$settingsTabletMonitor = DP-1 +$settingsTabletRegionPosition = 0 0 +$settingsTabletRegionSize = 2560 1440 +$settingsTabletRelative = 0 +$settingsTabletRotated = 0 +# -> etc +$settingsCursorSize = 24 +$settingsEnableResizeOnBorder = 0 +$settingsEnableTearing = 1 +$settingsEnableNoDirectScanout = 1 +$settingsEnableShadows = 1 +$settingsEnableBlur = 1 +$settingsEnableAnimations = 1 + +# Programs +$programsTerminal = konsole +$programsFM = dolphin +$programsBrowser = librewolf +$programsMenu = j4-dmenu-desktop --dmenu=launch-menu +$programsNotiDaemon = fnott +$programsAuthAgent = /usr/lib/polkit-kde-authentication-agent-1 +$programsBar = waybar + +# Application startup +# -> Hypr stuff +exec=pkill -9 hyprpaper; hyprpaper +# -> Programs +exec=pkill -9 $programsNotiDaemon; $programsNotiDaemon +exec=pkill -9 $programsAuthAgent; $programsAuthAgent +exec=pkill -9 $programsBar; $programsBar +# -> Clipboard +exec=pkill -9 wl-paste +exec=wl-paste --type text --watch cliphist store +exec=wl-paste --type image --watch cliphist store +# -> Screen sharing +exec=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +# -> Jobrunner +exec=if [ -f /tmp/jobrunner/jobrunner.pid ]; then echo EXIT > /tmp/jobrunner/jobrunner.cmd; sleep 1s; fi; exec $dirHome/.local/bin/jobrunner +# -> Autostart +exec-once=$dirHypr/scripts.d/autostart.sh + +# Env +# -> Cursor +env = XCURSOR_SIZE,$settingsCursorSize +env = HYPRCURSOR_SIZE,$settingsCursorSize +# -> XDG env = XDG_CURRENT_DESKTOP,Hyprland -env = XDG_SESSION_DESKTOP,Hyprland -# --> Enable/force wayland support env = XDG_SESSION_TYPE,wayland -env = GDK_BACKEND,wayland,x11 +env = XDG_SESSION_DESKTOP,Hyprland +# -> Qt +env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = QT_QPA_PLATFORMTHEME,qt6ct +# -> Enforce wayland backends +env = QT_QPA_PLATFORM,wayland;xcb +env = GTK_BACKEND,wayland,x11,* env = SDL_VIDEODRIVER,wayland,x11 env = CLUTTER_BACKEND,wayland -env = QT_QPA_PLATFORM,wayland;xcb -# --> Set platform theme -env = QT_QPA_PLATFORMTHEME,qt6ct -# --> Disable title bars -env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 +env = ELECTRON_OZONE_PLATFORM_HINT=wayland -input { - sensitivity = 0 - kb_layout = $INPUT_LAYOUT - kb_variant = $INPUT_VARIANT - kb_model = $INPUT_MODEL - kb_options = $INPUT_OPTIONS - kb_rules = $INPUT_RULES - follow_mouse = $INPUT_FOLLOW_MOUSE - touchpad { - natural_scroll = $INPUT_TOUCHPAD_NATURAL_SCROLL - } -} +# HYPRLAND CONFIGURATION OPTIONS +# -> Bindings +# --> Programs +bind = SUPER, SUPER_L, exec, $programsMenu +bind = SUPER, V, exec, cliphist list | launch-menu | cliphist decode | wl-copy +bind = SUPER, A, exec, $programsTerminal +bind = SUPER, S, exec, $programsFM +bind = SUPER, D, exec, $programsBrowser +# --> Window size/position manipulation +bindm = SUPER, mouse:272, movewindow +bindm = SUPER, mouse:273, resizewindow + +# --> Window state +bind = SUPER, TAB, exec, hyprctl kill +bind = SUPER, Q, exec, $dirHypr/scripts.d/kill-active.sh +bind = SUPER, W, togglefloating +bind = SUPER, F, fullscreen + +# --> Special workspace +bind = SUPER, E, togglespecialworkspace, magic +bind = SUPER, Y, movetoworkspace, special:magic +bind = SUPER_SHIFT, Y, movetoworkspace, 0 + +# --> Session management +bindt = SUPER_SHIFT, Q, exit +bindt = SUPER_SHIFT, W, exec, poweroff +bindt = SUPER_SHIFT, E, exec, reboot + +# -> Media keys +# --> Increase +binde = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +1% +binde = SHIFT, XF86AudioRaiseVolume, exec, pactl set-source-volume @DEFAULT_SOURCE@ +1% +# --> Decrease +binde = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -1% +binde = SHIFT, XF86AudioLowerVolume, exec, pactl set-source-volume @DEFAULT_SOURCE@ -1% +# --> Mute +bind = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle +bind = SHIFT, XF86AudioMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle + +# -> Window rules +# --> Supress 'maximize' +windowrulev2 = suppressevent maximize, class:.* + +# --> Fix for XWaylandVideoBridge +windowrulev2 = opacity 0.0 override,class:^(xwaylandvideobridge)$ +windowrulev2 = noanim,class:^(xwaylandvideobridge)$ +windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$ +windowrulev2 = maxsize 1 1,class:^(xwaylandvideobridge)$ +windowrulev2 = noblur,class:^(xwaylandvideobridge)$ + +# -> etc general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - gaps_in = 5 - gaps_out = 20 - border_size = 2 - col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg - col.inactive_border = rgba(595959aa) - - layout = dwindle - - # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on - allow_tearing = false + border_size = 2 + no_border_on_floating = false + + gaps_in = 10 + gaps_out = 20 + gaps_workspaces = 0 + + col.inactive_border = 0xffd60532 0xff6931fe 0 + col.active_border = 0xffffffff + col.nogroup_border = 0xff000000 + col.nogroup_border_active = 0xffffffff + + layout = dwindle + no_focus_fallback = true + resize_on_border = $settingsEnableResizeOnBorder + allow_tearing = $settingsEnableTearing } decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - rounding = 10 - - blur { - enabled = true - size = 3 - passes = 1 - } - - drop_shadow = yes - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba(1a1a1aee) + rounding = 8 + + active_opacity = 1 + inactive_opacity = 0.95 + fullscreen_opacity = 1 + + drop_shadow = $settingsEnableShadows + shadow_range = 4 + + dim_inactive = 1 + dim_strength = 0.05 + dim_special = 0.5 + + blur { + enabled = $settingsEnableBlur + ignore_opacity = 1 + xray = 1 + + noise = 0.03 # increased noise value for a slightly more "rough" look + } } animations { - enabled = yes - - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default + enabled = $settingsEnableAnimations } -dwindle { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = yes # you probably want this -} - -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_is_master = true +input { + kb_layout = $settingsKeyboardLayout + kb_variant = $settingsKeyboardVariant + follow_mouse = $settingsMouseFocusFollow + + numlock_by_default = $settingsKeyboardNumlock + left_handed = $settingsMouseLefthanded + + sensitivity = $settingsMouseSensitivity + + touchpad { + disable_while_typing = false + } + + tablet { + output = $settingsTabletMonitor + region_position = $settingsTabletRegionPosition + region_size = $settingsTabletRegionSize + relative_input = $settingsTabletRelative + left_handed = $settingsTabletRotated + } } gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = off + workspace_swipe = 0 } misc { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = 0 + disable_splash_rendering = 0 + force_default_wallpaper = 2 + font_family = Fira Code + splash_font_family = Jost + vrr = 0 + animate_manual_resizes = 1 + animate_mouse_windowdragging = 1 + disable_autoreload = 0 + focus_on_activate = 0 + no_direct_scanout = $settingsEnableNoDirectScanout } -# Example per-device config -# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more -device { - name = epic-mouse-v1 - sensitivity = -0.5 -} - -# Example windowrule v1 -# windowrule = float, ^(kitty)$ -# Example windowrule v2 -# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. - - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more -$mainMod = SUPER - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, Q, exec, $terminal -bind = $mainMod, C, killactive, -bind = $mainMod, M, exit, -bind = $mainMod, E, exec, $fileManager -bind = $mainMod, V, togglefloating, -bind = $mainMod, R, exec, $menu -bind = $mainMod, P, pseudo, # dwindle -bind = $mainMod, J, togglesplit, # dwindle - -# Move focus with mainMod + arrow keys -bind = $mainMod, left, movefocus, l -bind = $mainMod, right, movefocus, r -bind = $mainMod, up, movefocus, u -bind = $mainMod, down, movefocus, d - -# Switch workspaces with mainMod + [0-9] -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 -bind = $mainMod, 6, workspace, 6 -bind = $mainMod, 7, workspace, 7 -bind = $mainMod, 8, workspace, 8 -bind = $mainMod, 9, workspace, 9 -bind = $mainMod, 0, workspace, 10 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 -bind = $mainMod SHIFT, 6, movetoworkspace, 6 -bind = $mainMod SHIFT, 7, movetoworkspace, 7 -bind = $mainMod SHIFT, 8, movetoworkspace, 8 -bind = $mainMod SHIFT, 9, movetoworkspace, 9 -bind = $mainMod SHIFT, 0, movetoworkspace, 10 - -# Example special workspace (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 +# -> Include external configuration files +source=conf.d/monitors.conf diff --git a/hypr/hyprpaper.conf b/hypr/hyprpaper.conf new file mode 100644 index 00000000..e2a43c3a --- /dev/null +++ b/hypr/hyprpaper.conf @@ -0,0 +1,7 @@ +preload = wallpapers.d/old-hyprland-anime.png + +wallpaper = DP-1,wallpapers.d/old-hyprland-anime.png +wallpaper = HDMI-A-1,wallpapers.d/old-hyprland-anime.png + +splash = 0 +ipc = 0 diff --git a/hypr/nvidia.conf b/hypr/nvidia.conf new file mode 100644 index 00000000..c55b96d5 --- /dev/null +++ b/hypr/nvidia.conf @@ -0,0 +1,4 @@ +# NVIDIA Compatibility configuration file +# Execute this command for NVIDIA graphics card +# compatibility (will cause issues on non-NVIDIA): +# cp ~/.config/hypr/nvidia.conf.disabled ~/.config/hypr/nvidia.conf diff --git a/hypr/nvidia.conf.disabled b/hypr/nvidia.conf.disabled new file mode 100644 index 00000000..ff5b2334 --- /dev/null +++ b/hypr/nvidia.conf.disabled @@ -0,0 +1,9 @@ +# NVIDIA Compatibility configuration file +# See https://wiki.hyprland.org/Nvidia/ for what +# packages to install (or stuff might break!). + +env = GBM_BACKEND,nvidia-drm +env = __GLX_VENDOR_LIBRARY_NAME,nvidia +env = LIBVA_DRIVER_NAME,nvidia +env = __GL_VRR_ALLOWED,0 +env = NVD_BACKEND,direct diff --git a/hypr/scripts.d/autostart.sh b/hypr/scripts.d/autostart.sh new file mode 100755 index 00000000..d81e9355 --- /dev/null +++ b/hypr/scripts.d/autostart.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Autostart script + +# Programs here +# Append ' &' to all of them +companion & + +# Wait for all tasks to finish +# Do not remove this. +wait diff --git a/hypr/scripts.d/kill-active.sh b/hypr/scripts.d/kill-active.sh new file mode 100755 index 00000000..c0736f04 --- /dev/null +++ b/hypr/scripts.d/kill-active.sh @@ -0,0 +1,6 @@ +#!/bin/bash +if [ "$(hyprctl activewindow -j | jq -r ".class")" = "Steam" ]; then + xdotool getactivewindow windowunmap +else + hyprctl dispatch killactive "" +fi diff --git a/hypr/scripts/backgroundjob-eww.sh b/hypr/scripts/backgroundjob-eww.sh deleted file mode 100755 index a737f2de..00000000 --- a/hypr/scripts/backgroundjob-eww.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -function open_windows() { - sleep 1s # wait for the daemon to initialize - eww open sysinfo &>> /tmp/logs/eww.log # open the "sysinfo" window -} -pkill -x -9 eww # kill all running eww instances -open_windows & # call open_windows function, parallel execution -eww daemon --no-daemonize --config "${CONFIG_DIR}" &> /tmp/logs/eww.log # execute eww daemon in foreground diff --git a/hypr/scripts/backgroundjob-waybar.sh b/hypr/scripts/backgroundjob-waybar.sh deleted file mode 100755 index 5e65f73a..00000000 --- a/hypr/scripts/backgroundjob-waybar.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -#export "GTK_DEBUG=interactive" # uncomment for gtk debugger -pkill -x -9 waybar &> /tmp/logs/waybar.log # kill any running waybar instances -waybar --config "${CONFIG_DIR}"/config --style "${CONFIG_DIR}"/style.css -l info &>> /tmp/logs/waybar.log # start waybar diff --git a/hypr/scripts/close-window.sh b/hypr/scripts/close-window.sh deleted file mode 100755 index 0241223f..00000000 --- a/hypr/scripts/close-window.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -if [ "$(hyprctl activewindow -j | jq -r ".class")" = "Steam" ]; then # check if program is problematic - xdotool getactivewindow windowunmap # workaround, if matching -else - hyprctl dispatch killactive "" # kill window if not problematic -fi diff --git a/hypr/scripts/configure-fancy.sh b/hypr/scripts/configure-fancy.sh deleted file mode 100755 index 36b7bc19..00000000 --- a/hypr/scripts/configure-fancy.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash - -function fancy() { - case ${FANCY} in - "0") - echo "> fancy is set to zero, disabling effects" - hyprctl --batch " \ - keyword animations:enabled false; \ - keyword decoration:dim_inactive false; \ - keyword decoration:drop_shadow false; \ - keyword decoration:inactive_opacity 1; \ - keyword decoration:blur:enabled false;" - ;; - "1") - echo "> fancy is set to one, doing nothing" - ;; - "2") - echo "> fancy is set to two, enabling effects" - hyprctl --batch " \ - keyword animations:enabled true; \ - keyword decoration:dim_inactive true; \ - keyword decoration:drop_shadow true; \ - keyword decoration:inactive_opacity 0.9; \ - keyword decoration:blur:enabled true;" - ;; - *) - echo "> unknown fancy level \"${FANCY}\", doing nothing" - ;; - esac -} - -fancy &> /tmp/logs/fancy.log diff --git a/hypr/scripts/configure-wallpaper.sh b/hypr/scripts/configure-wallpaper.sh deleted file mode 100755 index 22e6d7a8..00000000 --- a/hypr/scripts/configure-wallpaper.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -pkill -9 hyprpaper &> /tmp/logs/hyprpaper.log # kill all running instances of hyprpaper -if [ "${SWI}" == "true" ]; then - hyprpaper --config "${CONF}"/hyprpaper.conf &>> /tmp/logs/hyprpaper.log # run hyprpaper if wallpaper is enabled -fi diff --git a/hypr/scripts/enforce-xdph.sh b/hypr/scripts/enforce-xdph.sh deleted file mode 100755 index 2f3240bd..00000000 --- a/hypr/scripts/enforce-xdph.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# jstm's xdpw enforcer - -sleep 1 # wait for xdg-desktop-portal to start -killall -e xdg-desktop-portal-hyprland # kill all running instances of xdph -killall -e xdg-desktop-portal-wlr # kill all running instances of xdpw -killall xdg-desktop-portal # kill all running instances of xdp -/usr/lib/xdg-desktop-portal-hyprland & # run xdph -sleep 4 # wait for xdph to start -/usr/lib/xdg-desktop-portal & # run xdp -sleep 1s # wait for xdp to start -dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP & # allow for screensharing diff --git a/hypr/scripts/performance-mode.sh b/hypr/scripts/performance-mode.sh deleted file mode 100755 index 2a7e0106..00000000 --- a/hypr/scripts/performance-mode.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# jstm's hyprland performance mode - -if [ "$(hyprctl getoption animations:enabled | awk 'NR==2{print $2}')" = 1 ] ; then # if animations are enabled, proceed - hyprctl --batch " \ # disable animations, shadows, blur, gaps window-to-window, gaps window-to-monitor, rounding and set border size to 1px - keyword animations:enabled 0; \ - keyword decoration:drop_shadow 0; \ - keyword decoration:blur:enabled 0; \ - keyword general:gaps_in 0; \ - keyword general:gaps_out 0; \ - keyword general:border_size 1; \ - keyword decoration:inactive_opacity 1; \ - keyword decoration:rounding 0" - exit # stop execution to prevent "hyprctl reload" call -fi -hyprctl reload # animations are disabled, reloading instead diff --git a/hypr/wallpapers.d/old-hyprland-anime.png b/hypr/wallpapers.d/old-hyprland-anime.png new file mode 100644 index 00000000..25c15cd7 Binary files /dev/null and b/hypr/wallpapers.d/old-hyprland-anime.png differ