refactor(hyprland): make global hyprland module

This commit is contained in:
matt1432 2023-11-24 18:25:59 -05:00
parent 46b8f5c71f
commit acc2d647f7
10 changed files with 311 additions and 500 deletions

View file

@ -1,32 +1,12 @@
# Hypr vars # Autostart programs
$mainMod = SUPER exec-once = sleep 6; nextcloud --background
exec-once = sleep 10; tmux new-session -s gsr -d 'bash -c $HOME/.config/gsr.sh'
# TODO: add gpu-save-replay bind
# Monitors
monitor=desc:Acer Technologies Acer K212HQL T3EAA0014201, 1920x1080@60, 840x1000, 1, transform, 3
monitor=desc:BOE 0x0964, 1920x1200@60, 0x2920, 1
monitor=desc:Samsung Electric Company C27JG5x HTOM100586, 2560x1440@60, 1920x120, 1
# Desc of monitor has comma, so force its default on everything and specify everything else
monitor=, 2560x1440@165, 1920x1560, 1
# Important stuff at launch
exec-once = gnome-keyring-daemon --start --components=secrets
exec-once = wl-paste --watch cliphist store
## fix fullscreen game resolution ## fix fullscreen game resolution
exec-once = xrandr --output DP-5 --primary exec-once = xrandr --output DP-5 --primary
env = XCURSOR_SIZE,24 ## Special window apps
exec-once = hyprctl setcursor Dracula-cursors 24
# Autostart programs
exec-once = bash -c "sleep 10; tmux new-session -s gsr -d 'bash -c $HOME/.config/gsr.sh'"
# TODO: add gpu-save-replay bind
exec-once = bash -c "sleep 5; kdeconnect-indicator"
exec-once = bash -c "sleep 6; nextcloud --background"
# Special window apps
exec-once = [workspace special:thunder silent] thunderbird exec-once = [workspace special:thunder silent] thunderbird
windowrule = workspace special:thunder silent,^(thunderbird)$ windowrule = workspace special:thunder silent,^(thunderbird)$
bind = $mainMod, T, togglespecialworkspace, thunder bind = $mainMod, T, togglespecialworkspace, thunder
@ -37,22 +17,6 @@ bind = $mainMod, S, togglespecialworkspace, spot
# Input settings # Input settings
input {
kb_layout = ca
kb_variant = multix
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = yes
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
device:razer-razer-naga-pro { device:razer-razer-naga-pro {
sensitivity = -0.5 sensitivity = -0.5
accel_profile = "flat" accel_profile = "flat"
@ -60,70 +24,15 @@ device:razer-razer-naga-pro {
# Binds # Binds
bind = $mainMod, Q, exec, alacritty
bind = $mainMod, C, killactive,
bind = $mainMod SHIFT, SPACE, togglefloating,
bind = $mainMod, J, togglesplit,
bind = SUPER, F, fullscreen
bind = Alt Shift, Tab, cyclenext bind = Alt Shift, Tab, cyclenext
bind = $mainMod, D, exec, killall -r wofi || wofi --show drun bind = $mainMod, D, exec, killall -r wofi || wofi --show drun
bind = $mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy
bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -'
bind = $mainMod SHIFT, C, exec, wl-color-picker
# Volume control
binde =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+
binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bind =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
bind =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
# 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
# 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
# Rules # Rules
windowrule = tile,^(firefox)$ windowrule = tile,^(firefox)$
windowrule = noborder,^(wofi)$
# Misc # Cosmetic
misc { general {
disable_hyprland_logo = true border_size = 0
disable_splash_rendering = true
vfr = true
}
xwayland {
force_zero_scaling = true
} }

View file

@ -36,13 +36,10 @@
home-manager.users = { home-manager.users = {
matt = { matt = {
imports = [ imports = [
../../home/alacritty.nix
../../home/dconf.nix ../../home/dconf.nix
../../home/firefox ../../home/firefox
../../home/theme.nix ../../home/hyprland
../../home/wofi
./home/hyprland.nix
./home/packages.nix ./home/packages.nix
]; ];

View file

@ -1,78 +0,0 @@
{
pkgs,
config,
hyprland,
osConfig,
...
}: let
configDir = config.services.device-vars.configDir;
symlink = config.lib.file.mkOutOfStoreSymlink;
polkit = pkgs.plasma5Packages.polkit-kde-agent;
in {
wayland.windowManager.hyprland = {
enable = true;
enableNvidiaPatches = true;
package = hyprland.packages.x86_64-linux.default;
settings = {
# Nvidia stuff
env = [
"LIBVA_DRIVER_NAME, nvidia"
"XDG_SESSION_TYPE, wayland"
"GBM_BACKEND, nvidia-drm"
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
"WLR_NO_HARDWARE_CURSORS, 1"
];
exec-once = [
"${polkit}/libexec/polkit-kde-authentication-agent-1"
"${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd"
"swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png"
];
source = ["~/.config/hypr/main.conf"];
};
};
xdg.configFile = {
"hypr/main.conf".source = symlink "${configDir}/hypr/main.conf";
};
home.packages = with pkgs; [
libnotify
playerctl
bluez-tools
brightnessctl
pulseaudio
libinput
## gui
pavucontrol # TODO: replace with ags widget
networkmanagerapplet # TODO: replace with ags widget
blueberry # TODO: replace with ags widget
# Hyprland
swww
xclip
wl-clipboard
cliphist
## gui
gtklock
wl-color-picker
grim
slurp
swappy
## libs
qt5.qtwayland
qt6.qtwayland
xorg.xrandr
nvidia-vaapi-driver
libayatana-appindicator
xdg-utils
evtest
glib
];
}

View file

@ -1,95 +1,62 @@
# Plugins # Autostart programs
plugin { exec-once = sleep 3; nm-applet
touch_gestures { exec-once = sleep 4; blueberry-tray
# default sensitivity is probably too low on tablet screens, exec-once = sleep 6; nextcloud --background
# I recommend turning it up to 4.0
sensitivity = 20.0
}
}
xwayland {
force_zero_scaling = true
}
# See https://wiki.hyprland.org/Configuring/Monitors/ x y
monitor=desc:Acer Technologies Acer K212HQL T3EAA0014201, 1920x1080@60, 840x1000, 1, transform, 3
monitor=desc:BOE 0x0964, 1920x1200@60, 0x2920, 1
monitor=desc:Samsung Electric Company C27JG5x HTOM100586, 2560x1440@60, 1920x120, 1
# Desc of monitor has comma, so force its default on everything and specify everything else
monitor=, 2560x1440@165, 1920x1560, 1
# Execute your favorite apps at launch
exec-once = bash -c "sleep 3; nm-applet"
exec-once = bash -c "sleep 4; blueberry-tray"
exec-once = bash -c "sleep 5; kdeconnect-indicator"
exec-once = bash -c "sleep 6; nextcloud --background"
exec-once = ags
exec-once = gnome-keyring-daemon --start --components=secrets
exec-once = squeekboard exec-once = squeekboard
exec-once = ags
exec-once = sleep 3; ags -t applauncher
exec-once = bash -c "sleep 3; ags -t applauncher" ## Change HandleLidSwitch to lock in logind.conf
layerrule = blur, overview
layerrule = ignorealpha[0.97], overview ## don't blur corners
exec-once = wl-paste --watch cliphist store
# Change HandleLidSwitch to lock in logind.conf
exec-once = swayidle -w lock $LOCK_PATH/lock.sh exec-once = swayidle -w lock $LOCK_PATH/lock.sh
# Special window apps ## Special window apps
exec-once = [workspace special:thunder silent] thunderbird exec-once = [workspace special:thunder silent] thunderbird
windowrule = workspace special:thunder silent,^(thunderbird)$
bind = $mainMod, T, togglespecialworkspace, thunder
exec-once = [workspace special:spot silent] spotify exec-once = [workspace special:spot silent] spotify
windowrule = workspace special:spot silent,^(Spotify)$
bind = $mainMod, S, togglespecialworkspace, spot
# Some default env vars.
env = XCURSOR_SIZE,24
exec-once=hyprctl setcursor Dracula-cursors 24
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = ca
kb_variant = multix
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = yes
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
# Input settings
device:razer-razer-naga-pro-1 { device:razer-razer-naga-pro-1 {
sensitivity = -0.5 sensitivity = -0.5
accel_profile = "flat"
} }
general { gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more workspace_swipe = yes
workspace_swipe_fingers = 3
workspace_swipe_cancel_ratio = 0.15
}
# Binds
## Brightness control
binde =, XF86MonBrightnessUp, exec, ags -r 'Brightness.screen += 0.05'
binde =, XF86MonBrightnessDown, exec, ags -r 'Brightness.screen -= 0.05'
bindr = CAPS, Caps_Lock, exec, ags -r 'Brightness.fetchCapsState()'
## Ags & co
bind = $mainMod , L , exec, $LOCK_PATH/lock.sh
bindn = , Escape, exec, ags run-js 'closeAll()'
bind = $mainMod SHIFT, E , exec, ags -t powermenu
bind = $mainMod , D , exec, ags -t applauncher
bind = ALT , Tab , exec, ags -t overview
# Cosmetic
general {
gaps_in = 5 gaps_in = 5
gaps_out = 5 gaps_out = 5
border_size = 2 border_size = 2
col.active_border = rgb(411C6C) col.active_border = rgb(411C6C)
#col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
col.inactive_border = rgba(595959aa) col.inactive_border = rgba(595959aa)
layout = dwindle
}
misc {
disable_hyprland_logo = true
disable_splash_rendering = true
vfr = true
} }
decoration { decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 20 rounding = 20
blur { blur {
@ -99,9 +66,6 @@ decoration {
} }
drop_shadow = false drop_shadow = false
#shadow_range = 4
#shadow_render_power = 3
#col.shadow = rgba(1a1a1aee)
} }
animations { animations {
@ -129,35 +93,7 @@ animations {
animation = borderangle, 1, 8, default animation = borderangle, 1, 8, default
} }
dwindle { # For GParted auth
# 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
}
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = yes
workspace_swipe_fingers = 3
workspace_swipe_cancel_ratio = 0.15
#workspace_swipe_forever = yes
}
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrule = noborder,^(wofi)$
windowrule = workspace special:spot silent,^(Spotify)$
windowrule = workspace special:thunder silent,^(thunderbird)$
windowrule = float,^(org.kde.polkit-kde-authentication-agent-1)$
windowrule = size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$
windowrule = center,^(org.kde.polkit-kde-authentication-agent-1)$
windowrule = size 741 288,^(org.kde.ksshaskpass)$ windowrule = size 741 288,^(org.kde.ksshaskpass)$
windowrule = move cursor -370 -144,^(org.kde.ksshaskpass)$ windowrule = move cursor -370 -144,^(org.kde.ksshaskpass)$
@ -176,81 +112,3 @@ windowrule = size 400 581,^(com.nextcloud.desktopclient.nextcloud)$
windowrule = tile,^(photoshop.exe)$ windowrule = tile,^(photoshop.exe)$
windowrule = tile,^(libreoffice)$ windowrule = tile,^(libreoffice)$
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
bind = SUPER, F, fullscreen
bind = $mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, Q, exec, alacritty
bind = $mainMod, S, togglespecialworkspace, spot
bind = $mainMod, T, togglespecialworkspace, thunder
bind = $mainMod, C, killactive,
bind = $mainMod, L, exec, $LOCK_PATH/lock.sh
bind = $mainMod SHIFT, E, exec, ags -t powermenu
bindn =, Escape, exec, ags run-js 'closeAll()'
bind = $mainMod SHIFT, SPACE, togglefloating,
bind = $mainMod, D, exec, ags -t applauncher
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
bind = ALT, Tab, exec, ags -t overview
# 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
# 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
# Take a screenshot
bind =, Print, exec, bash -c 'grim -g "$(slurp)" - | swappy -f -'
bind = $mainMod SHIFT, C, exec, wl-color-picker
# Volume control
binde =, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+
binde =, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bind =, XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
bind =, XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindr = CAPS, Caps_Lock, exec, ags -r 'Brightness.fetchCapsState()'
# Brightness control
binde =, XF86MonBrightnessUp, exec, ags -r 'Brightness.screen += 0.05'
binde =, XF86MonBrightnessDown, exec, ags -r 'Brightness.screen -= 0.05'

View file

@ -35,15 +35,13 @@
home-manager.users = { home-manager.users = {
matt = { matt = {
imports = [ imports = [
../../home/alacritty.nix
../../home/dconf.nix ../../home/dconf.nix
../../home/firefox ../../home/firefox
../../home/theme.nix ../../home/hyprland
../../home/wofi
./home/dotfiles.nix ./home/dotfiles.nix
./home/packages.nix ./home/packages.nix
./home/hyprland.nix ./home/ags.nix
]; ];
# No touchy # No touchy

48
devices/wim/home/ags.nix Normal file
View file

@ -0,0 +1,48 @@
{
pkgs,
config,
ags,
...
}: let
configDir = config.services.device-vars.configDir;
symlink = config.lib.file.mkOutOfStoreSymlink;
in {
imports = [
ags.homeManagerModules.default
];
programs.ags = {
enable = true;
configDir = symlink "${configDir}/ags";
package = ags.packages.x86_64-linux.default;
extraPackages = [pkgs.libgudev];
};
wayland.windowManager.hyprland = {
settings = {
env = [
"AGS_PATH, ${configDir}/ags/bin"
"HYPR_PATH, ${configDir}/hypr/scripts"
"LOCK_PATH, ${configDir}/gtklock/scripts"
];
};
};
home.packages = with pkgs; [
# ags
ydotool
sassc
coloryou
libnotify
playerctl
## gui
pavucontrol # TODO: replace with ags widget
networkmanagerapplet # TODO: replace with ags widget
blueberry # TODO: replace with ags widget
# touchscreen
lisgd
squeekboard
];
}

View file

@ -1,103 +0,0 @@
{
pkgs,
config,
hyprland,
hyprgrass,
ags,
osConfig,
...
}: let
configDir = config.services.device-vars.configDir;
symlink = config.lib.file.mkOutOfStoreSymlink;
gset = pkgs.gsettings-desktop-schemas;
polkit = pkgs.plasma5Packages.polkit-kde-agent;
in {
imports = [
ags.homeManagerModules.default
];
programs.ags = {
enable = true;
configDir = symlink "${configDir}/ags";
package = ags.packages.x86_64-linux.default;
extraPackages = [pkgs.libgudev];
};
wayland.windowManager.hyprland = {
enable = true;
package = hyprland.packages.x86_64-linux.default;
plugins = [
"${hyprgrass.packages.x86_64-linux.default}/lib/libhyprgrass.so"
];
settings = {
env = [
"XDG_DATA_DIRS, ${builtins.concatStringsSep ":" [
"${gset}/share/gsettings-schemas/${gset.name}"
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
"$XDG_DATA_DIRS"
]}"
"AGS_PATH, ${configDir}/ags/bin"
"HYPR_PATH, ${configDir}/hypr/scripts"
"LOCK_PATH, ${configDir}/gtklock/scripts"
];
exec-once = [
"${polkit}/libexec/polkit-kde-authentication-agent-1"
"${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd"
"swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png"
];
source = ["~/.config/hypr/main.conf"];
};
};
xdg.configFile = {
"hypr/main.conf".source = symlink "${configDir}/hypr/main.conf";
};
home.packages = with pkgs; [
# ags
ydotool
sassc
coloryou
libnotify
playerctl
bluez-tools
brightnessctl
pulseaudio
libinput
## gui
pavucontrol # TODO: replace with ags widget
networkmanagerapplet # TODO: replace with ags widget
blueberry # TODO: replace with ags widget
# Hyprland
swww
swayidle
lisgd
squeekboard
xclip
wl-clipboard
cliphist
## gui
gtklock
wl-color-picker # TODO: add bind for this in hyprland
grim
slurp
swappy
## libs
qt5.qtwayland
qt6.qtwayland
libayatana-appindicator
xdg-utils
evtest
glib
];
}

212
home/hyprland/default.nix Normal file
View file

@ -0,0 +1,212 @@
{
config,
osConfig,
hyprland,
hyprgrass,
pkgs,
lib,
...
}: let
configDir = config.services.device-vars.configDir;
symlink = config.lib.file.mkOutOfStoreSymlink;
gset = pkgs.gsettings-desktop-schemas;
polkit = pkgs.plasma5Packages.polkit-kde-agent;
in {
imports = [
./theme.nix
../alacritty.nix
../wofi
];
xdg.configFile = lib.mkIf (configDir != null) {
"hypr/main.conf".source = symlink "${configDir}/hypr/main.conf";
};
wayland.windowManager.hyprland = {
enable = true;
package = hyprland.packages.x86_64-linux.default;
enableNvidiaPatches = osConfig.hardware.nvidia.modesetting.enable;
plugins =
[]
++ (lib.lists.optionals (osConfig.hardware.sensor.iio.enable) [
"${hyprgrass.packages.x86_64-linux.default}/lib/libhyprgrass.so"
]);
settings = {
env =
[
"XCURSOR_SIZE, 24"
"XDG_DATA_DIRS, ${builtins.concatStringsSep ":" [
"${gset}/share/gsettings-schemas/${gset.name}"
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
"$XDG_DATA_DIRS"
]}"
]
++ (lib.lists.optionals (osConfig.hardware.nvidia.modesetting.enable) [
"LIBVA_DRIVER_NAME, nvidia"
"XDG_SESSION_TYPE, wayland"
"GBM_BACKEND, nvidia-drm"
"__GLX_VENDOR_LIBRARY_NAME, nvidia"
"WLR_NO_HARDWARE_CURSORS, 1"
]);
xwayland.force_zero_scaling = true;
monitor = [
(builtins.concatStringsSep "," [
"desc:Acer Technologies Acer K212HQL T3EAA0014201"
"1920x1080@60"
"840x1000, 1, transform, 3"
])
(builtins.concatStringsSep "," [
"desc:BOE 0x0964"
"1920x1200@60"
"0x2920, 1"
])
(builtins.concatStringsSep "," [
"desc:Samsung Electric Company C27JG5x HTOM100586"
"2560x1440@60"
"1920x120, 1"
])
# Desc of main monitor has comma, so force its default
# on everything and specify everything else
",2560x1440@165, 1920x1560, 1"
];
input = {
kb_layout = osConfig.services.xserver.layout;
kb_variant = osConfig.services.xserver.xkbVariant;
follow_mouse = true;
touchpad.natural_scroll = true;
};
exec-once =
[
"hyprctl setcursor Dracula-cursors 24"
"${polkit}/libexec/polkit-kde-authentication-agent-1"
"swww init --no-cache && swww img -t none ${pkgs.dracula-theme}/wallpapers/waves.png"
"wl-paste --watch cliphist store"
]
++ (lib.lists.optionals (osConfig.programs.kdeconnect.enable) [
"${osConfig.programs.kdeconnect.package}/libexec/kdeconnectd"
"kdeconnect-indicator"
])
++ (lib.lists.optionals (osConfig.services.gnome.gnome-keyring.enable) [
"gnome-keyring-daemon --start --components=secrets"
]);
windowrule = [
"noborder,^(wofi)$"
# Polkit
"float,^(org.kde.polkit-kde-authentication-agent-1)$"
"size 741 288,^(org.kde.polkit-kde-authentication-agent-1)$"
"center,^(org.kde.polkit-kde-authentication-agent-1)$"
];
"$mainMod" = "SUPER";
bind = [
# Defaults
"$mainMod, Q, exec, alacritty"
"$mainMod, F, fullscreen"
"$mainMod, C, killactive,"
"$mainMod SHIFT, SPACE, togglefloating,"
"$mainMod, J, togglesplit,"
## Move focus with arrow keys
"$mainMod, left, movefocus, l"
"$mainMod, right, movefocus, r"
"$mainMod, up, movefocus, u"
"$mainMod, down, movefocus, d"
## Move to specific workspaces
"$mainMod, 1, workspace, 1"
"$mainMod, 2, workspace, 2"
"$mainMod, 3, workspace, 3"
"$mainMod, 4, workspace, 4"
"$mainMod, 5, workspace, 5"
"$mainMod, 6, workspace, 6"
"$mainMod, 7, workspace, 7"
"$mainMod, 8, workspace, 8"
"$mainMod, 9, workspace, 9"
"$mainMod, 0, workspace, 10"
# Move active window to a workspace
"$mainMod SHIFT, 1, movetoworkspace, 1"
"$mainMod SHIFT, 2, movetoworkspace, 2"
"$mainMod SHIFT, 3, movetoworkspace, 3"
"$mainMod SHIFT, 4, movetoworkspace, 4"
"$mainMod SHIFT, 5, movetoworkspace, 5"
"$mainMod SHIFT, 6, movetoworkspace, 6"
"$mainMod SHIFT, 7, movetoworkspace, 7"
"$mainMod SHIFT, 8, movetoworkspace, 8"
"$mainMod SHIFT, 9, movetoworkspace, 9"
"$mainMod SHIFT, 0, movetoworkspace, 10"
# Clipboard History
"$mainMod, V, exec, killall -r wofi || cliphist list | wofi --dmenu | cliphist decode | wl-copy"
",Print, exec, grim -g \"$(slurp)\" - | swappy -f -"
"$mainMod SHIFT, C, exec, wl-color-picker"
",XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle"
",XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle"
];
binde = [
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
];
# Mouse Binds
bindm = [
"$mainMod, mouse:272, movewindow"
"$mainMod, mouse:273, resizewindow"
];
misc = {
disable_hyprland_logo = true;
disable_splash_rendering = true;
vfr = true;
};
source =
[]
++ lib.lists.optionals (configDir != null) [
"~/.config/hypr/main.conf"
];
};
};
home.packages = with pkgs; [
# tools
gtklock
wl-color-picker
grim
slurp
swappy
bluez-tools
brightnessctl
pulseaudio
libinput
xclip
wl-clipboard
cliphist
swww
swayidle
## libs
qt5.qtwayland
qt6.qtwayland
libayatana-appindicator
xdg-utils
evtest
glib
xorg.xrandr
];
}

View file

@ -1,30 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
dracula-theme
];
services = {
xserver = {
enable = true;
layout = "ca";
displayManager = {
sddm = {
enable = true;
settings = {
General = {
DisplayServer = "wayland";
InputMethod = "";
};
Wayland.CompositorCommand = "${pkgs.weston}/bin/weston --shell=fullscreen-shell.so";
Theme = {
Current = "Dracula";
CursorTheme = "Dracula-cursors";
CursorSize = 24;
};
};
};
};
};
gnome.gnome-keyring.enable = true;
};
}