diff --git a/home-manager/hyprland/config/input.nix b/home-manager/hyprland/config/input.nix deleted file mode 100644 index f784936..0000000 --- a/home-manager/hyprland/config/input.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - input = { - kb_layout = "us"; - kb_variant = ""; - kb_model = ""; - kb_options = ""; - kb_rules = ""; - - follow_mouse = 1; - - touchpad = { - natural_scroll = "no"; - }; - - sensitivity = 0; # -1.0 - 1.0, 0 means no modification. - }; - - device = { - name = "epic-mouse-v1"; - sensitivity = -0.5; - }; -} diff --git a/home-manager/hyprland/config/keybinds.nix b/home-manager/hyprland/config/keybinds.nix deleted file mode 100644 index 490fa8b..0000000 --- a/home-manager/hyprland/config/keybinds.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ - bind = - [ - "$mainMod, T, exec, $terminal" - "$mainMod, X, killactive," - "$mainMod, ESCAPE, exit," - "$mainMod, E, exec, $fileManager" - "$mainMod, F, togglefloating," - "$mainMod, R, exec, $menu" - "$mainMod, P, pseudo," # dwindle - "$mainMod, V, togglesplit," # dwindle - "$mainMod, L, exec, $lockScreen" # hyprlock - "$mainMod, period, exec, emote" - "$mainMod, B, exec, firefox" - "$mainMod CTRL, F, fullscreen" - ", PRINT, exec, grim -g \"$(slurp)\" - | swappy -f -" - - # Move focus with mainMod + arrow keys - "$mainMod, left, movefocus, l" - "$mainMod, right, movefocus, r" - "$mainMod, up, movefocus, u" - "$mainMod, down, movefocus, d" - - ############################################################################### - # Special workspaces - ############################################################################### - # Scratchpad - "CTRL SHIFT, S, togglespecialworkspace, magic" - "CTRL $mainMod, S, movetoworkspace, special:magic" - # Terminal - "CTRL SHIFT, T, togglespecialworkspace, terminal" - "CTRL $mainMod, T, movetoworkspace, special:terminal" - # Music - "CTRL SHIFT, M, togglespecialworkspace, music" - "CTRL $mainMod, M, movetoworkspace, special:music" - - # Scroll through existing workspaces with mainMod + scroll - "$mainMod, mouse_down, workspace, e+1" - "$mainMod, mouse_up, workspace, e-1" - - # Switch workspaces - "CTRL ALT, right, workspace, e+1" - "CTRL ALT, left, workspace, e-1" - - # Audio keybinds - ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+" - ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%-" - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioStop, exec," - ", XF86AudioPrev, exec, playerctl previous" - ", XF86AudioNext, exec, playerctl next" - ] - ++ ( - # workspaces - # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} - builtins.concatLists ( - builtins.genList ( - x: - let - ws = - let - c = (x + 1) / 10; - in - builtins.toString (x + 1 - (c * 10)); - in - [ - # Switch workspaces with mainMod + [0-9] - "$mainMod, ${ws}, workspace, ${toString (x + 1)}" - # Move active window to a workspace with mainMod + SHIFT + [0-9] - "$mainMod SHIFT, ${ws}, movetoworkspace, ${toString (x + 1)}" - ] - ) 10 - ) - ); - # Move/resize windows with mainMod + LMB/RMB and dragging - bindm = [ - "$mainMod, mouse:272, movewindow" - "$mainMod, mouse:273, resizewindow" - ]; -} diff --git a/home-manager/hyprland/config/look.nix b/home-manager/hyprland/config/look.nix deleted file mode 100644 index f0efe3c..0000000 --- a/home-manager/hyprland/config/look.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - general = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - gaps_in = 10; - gaps_out = 20; - border_size = 3; - "col.active_border" = "$color4 $color13 45deg"; - "col.inactive_border" = "$color0"; - - layout = "dwindle"; - - # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on - allow_tearing = true; - }; - - decoration = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - rounding = 10; - - blur = { - enabled = true; - size = 3; - passes = 1; - ignore_opacity = true; - }; - - drop_shadow = "yes"; - shadow_range = 4; - shadow_render_power = 3; - "col.shadow" = "rgba(1a1a1aee)"; - }; - - 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" - "windowsOut, 1, 7, default, popin 80%" - "border, 1, 10, default" - "borderangle, 1, 8, default" - "fade, 1, 7, default" - "workspaces, 1, 6, default" - ]; - }; - - 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 - }; - - gestures = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = "off"; - }; - - misc = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - force_default_wallpaper = 0; # Set to 0 or 1 to disable the anime mascot wallpapers - }; -} diff --git a/home-manager/hyprland/config/nvidia.nix b/home-manager/hyprland/config/nvidia.nix deleted file mode 100644 index eb4a962..0000000 --- a/home-manager/hyprland/config/nvidia.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - env = [ - "XCURSOR_SIZE,24" - "QT_QPA_PLATFORM,wayland" - "WLR_NO_HARDWARE_CURSORS,1" - "LIBVA_DRIVER_NAME,nvidia" - "XDG_SESSION_TYPE,wayland" - "GBM_BACKEND,nvidia-drm" - "__GLX_VENDOR_LIBRARY_NAME,nvidia" - - ]; -} diff --git a/home-manager/hyprland/config/rules.nix b/home-manager/hyprland/config/rules.nix deleted file mode 100644 index 29b389d..0000000 --- a/home-manager/hyprland/config/rules.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - windowrule = [ - "float, title:rofi" - "workspace special:terminal, kitty" - "workspace special:music, title:^Spotify Premium$" - "workspace 1, discord" - "opacity 0.999, discord" - "workspace 1, Caprine" - "opacity 0.999, Caprine" - "workspace 2, firefox" - "opacity 0.999, firefox" - "workspace 3, class:^(steam_app_553850)$" - "float, title:Friends List" - ]; - windowrulev2 = [ - "nomaxsize, class:.*" - "opacity 0.85 0.8, initialTitle:^Spotify Premium$" - ]; -} diff --git a/home-manager/hyprland/config/startup.nix b/home-manager/hyprland/config/startup.nix deleted file mode 100644 index 65affd9..0000000 --- a/home-manager/hyprland/config/startup.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ - exec-once = [ - '' - bash ${builtins.getEnv "PWD"}/dotfiles/home-manager/hyprland/config/scripts/start-swaync.sh - '' - "hypridle" - "swww-daemon" - '' - bash ${builtins.getEnv "PWD"}/dotfiles/home-manager/hyprland/config/scripts/start-waybar.sh - '' - "emote" - ]; -} diff --git a/home-manager/hyprland/default.nix b/home-manager/hyprland/default.nix index e5f2816..b149de6 100644 --- a/home-manager/hyprland/default.nix +++ b/home-manager/hyprland/default.nix @@ -1,11 +1,6 @@ { config, pkgs, ... }: { - imports = [ - ./gtk.nix - ./hypridle.nix - ./hyprland.nix - ./hyprlock.nix - ]; + imports = [ ./gtk.nix ]; home.pointerCursor = { gtk.enable = true; @@ -15,7 +10,21 @@ size = 24; }; + home.packages = with pkgs; [ + rofi-wayland + swaynotificationcenter + ]; + + programs.pywal.enable = true; + programs.waybar = { + enable = true; + }; + xdg.configFile = { + hypr = { + source = config.lib.file.mkOutOfStoreSymlink ../../hypr; + recursive = true; + }; rofi = { source = config.lib.file.mkOutOfStoreSymlink ../../rofi; recursive = true; diff --git a/hypr/config/environments/nvidia.conf b/hypr/config/environments/nvidia.conf new file mode 100644 index 0000000..359954b --- /dev/null +++ b/hypr/config/environments/nvidia.conf @@ -0,0 +1,16 @@ +# ----------------------------------------------------- +# Environment Variables +# name: "Nvidia" +# ----------------------------------------------------- + +# https://wiki.hyprland.org/Nvidia/ +env = XCURSOR_SIZE,24 +env = QT_QPA_PLATFORM,wayland +env = WLR_NO_HARDWARE_CURSORS,1 +env = LIBVA_DRIVER_NAME,nvidia +env = XDG_SESSION_TYPE,wayland +env = GBM_BACKEND,nvidia-drm +env = __GLX_VENDOR_LIBRARY_NAME,nvidia +# env = __GL_VRR_ALLOWED,1 +# env = WLR_DRM_NO_ATOMIC,1 + diff --git a/hypr/config/keybinds.conf b/hypr/config/keybinds.conf new file mode 100644 index 0000000..6225a25 --- /dev/null +++ b/hypr/config/keybinds.conf @@ -0,0 +1,80 @@ + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, T, exec, $terminal +bind = $mainMod, X, killactive, +bind = $mainMod, ESCAPE, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, F, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, V, togglesplit, # dwindle +bind = $mainMod, L, exec, $lockScreen # hyprlock +bind = $mainMod, period, exec, emote +bind = $mainMod, B, exec, firefox +bind = $mainMod CTRL, F, fullscreen +bind = , PRINT, exec, grim -g "$(slurp)" - | swappy -f - + +# 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 + +############################################################################### +# Special workspaces +############################################################################### +# Scratchpad +bind = CTRL SHIFT, S, togglespecialworkspace, magic +bind = CTRL $mainMod, S, movetoworkspace, special:magic +# Terminal +bind = CTRL SHIFT, T, togglespecialworkspace, terminal +bind = CTRL $mainMod, T, movetoworkspace, special:terminal +# Music +bind = CTRL SHIFT, M, togglespecialworkspace, music +bind = CTRL $mainMod, M, movetoworkspace, special:music + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Switch workspaces +bind = CTRL ALT, right, workspace, e+1 +bind = CTRL ALT, left, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + +# Audio keybinds +bind = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%+ +bind = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 1%- +bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bind = , XF86AudioPlay, exec, playerctl play-pause +bind = , XF86AudioStop, exec, +bind = , XF86AudioPrev, exec, playerctl previous +bind = , XF86AudioNext, exec, playerctl next + diff --git a/hypr/config/rules.conf b/hypr/config/rules.conf new file mode 100644 index 0000000..393d6a7 --- /dev/null +++ b/hypr/config/rules.conf @@ -0,0 +1,30 @@ + +# 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 = nomaxsize, class:.* # You'll probably like this. +# windowrulev2 = opacity 1 0.6, class:.* + + +# Apps + +windowrule = float, title:rofi + +windowrule = workspace special:terminal, kitty +windowrule = workspace special:music, title:^Spotify Premium$ +windowrulev2 = opacity 0.85 0.8, initialTitle:^Spotify Premium$ + +windowrule = workspace 1, discord +windowrule = opacity 0.999, discord + +windowrule = workspace 1, Caprine +windowrule = opacity 0.999, Caprine + +windowrule = workspace 2, firefox +windowrule = opacity 0.999, firefox + +windowrule = workspace 3, class:^(steam_app_553850)$ +windowrule = float, title:Friends List + diff --git a/hypr/config/startup.conf b/hypr/config/startup.conf new file mode 100644 index 0000000..6604289 --- /dev/null +++ b/hypr/config/startup.conf @@ -0,0 +1,11 @@ +# Notification Daemon +exec-once = bash ~/.config/hypr/scripts/start-swaync.sh +# Idle Daemon +exec-once = hypridle +# Status-bar +exec-once = bash ~/.config/hypr/scripts/start-waybar.sh +# Emotes +exec-once = emote +# Wallpaper Daemon +exec-once = swww-daemon + diff --git a/hypr/hypridle.conf b/hypr/hypridle.conf new file mode 100644 index 0000000..c82f4f9 --- /dev/null +++ b/hypr/hypridle.conf @@ -0,0 +1,35 @@ +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 = 150 # 2.5min. + on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = brightnessctl -r # monitor backlight restore. +} + +# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight. +listener { + timeout = 150 # 2.5min. + on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight. + on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight. +} + +listener { + timeout = 300 # 5min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 330 # 5.5min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired. +} + +listener { + timeout = 1800 # 30min + on-timeout = systemctl suspend # suspend pc +} + diff --git a/hypr/hyprland.conf b/hypr/hyprland.conf new file mode 100644 index 0000000..a4dbb93 --- /dev/null +++ b/hypr/hyprland.conf @@ -0,0 +1,138 @@ + +# ####################################################################################### +# AUTOGENERATED HYPR CONFIG. +# PLEASE USE THE CONFIG PROVIDED IN THE GIT REPO /examples/hypr.conf AND EDIT IT, +# OR EDIT THIS ONE ACCORDING TO THE WIKI INSTRUCTIONS. +# ####################################################################################### + +# +# Please note not all available settings / options are set here. +# For a full list, see the wiki +# + +#autogenerated = 1 # remove this line to remove the warning + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=DP-1,preferred,auto,auto + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more + +# Execute your favorite apps at launch +# exec-once = waybar & hyprpaper & firefox +source = ~/.config/hypr/config/startup.conf + +# PyWal Colors +source = ~/.cache/wal/colors-hyprland.conf + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# Set programs that you use +$terminal = kitty +$fileManager = Thunar +$menu = rofi -show drun +$lockScreen = hyprlock + +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$mainMod = SUPER + +env = XCURSOR_THEME,catpuccin-mocha-light-cursors +env = HYPRCURSOR_THEME,catpuccin-mocha-light-cursors +env = HYPRCURSOR_SIZE,24 + +source = ~/.config/hypr/config/environments/nvidia.conf +source = ~/.config/hypr/config/keybinds.conf +source = ~/.config/hypr/config/rules.conf + +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = us + kb_variant = + kb_model = + kb_options = + kb_rules = + + follow_mouse = 1 + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 10 + gaps_out = 20 + border_size = 3 + col.active_border = $color4 $color13 45deg + col.inactive_border = $color0 + + layout = dwindle + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = true +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10 + + blur { + enabled = true + size = 3 + passes = 1 + ignore_opacity = true + } + + drop_shadow = yes + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +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 +} + +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 +} + +gestures { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = off +} + +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 +} + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + diff --git a/hypr/hyprlock.conf b/hypr/hyprlock.conf new file mode 100644 index 0000000..41b7ad8 --- /dev/null +++ b/hypr/hyprlock.conf @@ -0,0 +1,52 @@ +# _ _ _ +# | |__ _ _ _ __ _ __| | ___ ___| | __ +# | '_ \| | | | '_ \| '__| |/ _ \ / __| |/ / +# | | | | |_| | |_) | | | | (_) | (__| < +# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\ +# |___/|_| +# + +background { + monitor = + #path = $HOME/dotfiles/.settings/lockscreen.png # only png supported for now + color = rgba(25, 20, 20, 1.0) + + # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations + blur_passes = 4 # 0 disables blurring + blur_size = 2 + noise = 0.0117 + contrast = 0.8916 + brightness = 0.8172 + vibrancy = 0.1696 + vibrancy_darkness = 0.0 +} + +input-field { + monitor = + size = 200, 50 + outline_thickness = 1 + dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + outer_color = rgb(000000) + inner_color = rgb(200, 200, 200) + font_color = rgb(10, 10, 10) + fade_on_empty = true + placeholder_text = Input Password... # Text rendered in the input box when it's empty. + hide_input = false + position = 0, -20 + halign = center + valign = center +} + +label { + monitor = + text = Enter your password to unlock + color = rgba(200, 200, 200, 1.0) + font_size = 25 + font_family = Noto Sans + + position = 0, 200 + halign = center + valign = center +} diff --git a/home-manager/hyprland/config/scripts/start-swaync.sh b/hypr/scripts/start-swaync.sh similarity index 100% rename from home-manager/hyprland/config/scripts/start-swaync.sh rename to hypr/scripts/start-swaync.sh diff --git a/home-manager/hyprland/config/scripts/start-waybar.sh b/hypr/scripts/start-waybar.sh similarity index 100% rename from home-manager/hyprland/config/scripts/start-waybar.sh rename to hypr/scripts/start-waybar.sh diff --git a/nixos/hyprland.nix b/nixos/hyprland.nix index 14a83d5..df7e89e 100644 --- a/nixos/hyprland.nix +++ b/nixos/hyprland.nix @@ -16,15 +16,10 @@ environment.systemPackages = with pkgs; [ hyprcursor - waybar - # Apps - rofi-wayland # Notifications - swaynotificationcenter inotify-tools # Wallpaper swww - pywal # Emoji emote # Screenshots