refactor(hyprland): make global hyprland module
This commit is contained in:
parent
46b8f5c71f
commit
acc2d647f7
10 changed files with 311 additions and 500 deletions
|
@ -1,32 +1,12 @@
|
|||
# Hypr vars
|
||||
$mainMod = SUPER
|
||||
# Autostart programs
|
||||
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
|
||||
exec-once = xrandr --output DP-5 --primary
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
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
|
||||
## Special window apps
|
||||
exec-once = [workspace special:thunder silent] thunderbird
|
||||
windowrule = workspace special:thunder silent,^(thunderbird)$
|
||||
bind = $mainMod, T, togglespecialworkspace, thunder
|
||||
|
@ -37,22 +17,6 @@ bind = $mainMod, S, togglespecialworkspace, spot
|
|||
|
||||
|
||||
# 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 {
|
||||
sensitivity = -0.5
|
||||
accel_profile = "flat"
|
||||
|
@ -60,70 +24,15 @@ device:razer-razer-naga-pro {
|
|||
|
||||
|
||||
# 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 = $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
|
||||
windowrule = tile,^(firefox)$
|
||||
windowrule = noborder,^(wofi)$
|
||||
|
||||
|
||||
# Misc
|
||||
misc {
|
||||
disable_hyprland_logo = true
|
||||
disable_splash_rendering = true
|
||||
vfr = true
|
||||
}
|
||||
|
||||
xwayland {
|
||||
force_zero_scaling = true
|
||||
# Cosmetic
|
||||
general {
|
||||
border_size = 0
|
||||
}
|
||||
|
|
|
@ -36,13 +36,10 @@
|
|||
home-manager.users = {
|
||||
matt = {
|
||||
imports = [
|
||||
../../home/alacritty.nix
|
||||
../../home/dconf.nix
|
||||
../../home/firefox
|
||||
../../home/theme.nix
|
||||
../../home/wofi
|
||||
../../home/hyprland
|
||||
|
||||
./home/hyprland.nix
|
||||
./home/packages.nix
|
||||
];
|
||||
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
|
@ -1,95 +1,62 @@
|
|||
# Plugins
|
||||
plugin {
|
||||
touch_gestures {
|
||||
# default sensitivity is probably too low on tablet screens,
|
||||
# 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
|
||||
# Autostart programs
|
||||
exec-once = sleep 3; nm-applet
|
||||
exec-once = sleep 4; blueberry-tray
|
||||
exec-once = sleep 6; nextcloud --background
|
||||
exec-once = squeekboard
|
||||
exec-once = ags
|
||||
exec-once = sleep 3; ags -t applauncher
|
||||
|
||||
exec-once = bash -c "sleep 3; ags -t applauncher"
|
||||
|
||||
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
|
||||
## Change HandleLidSwitch to lock in logind.conf
|
||||
exec-once = swayidle -w lock $LOCK_PATH/lock.sh
|
||||
|
||||
# Special window apps
|
||||
## Special window apps
|
||||
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
|
||||
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 {
|
||||
sensitivity = -0.5
|
||||
accel_profile = "flat"
|
||||
}
|
||||
|
||||
general {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
gestures {
|
||||
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_out = 5
|
||||
border_size = 2
|
||||
col.active_border = rgb(411C6C)
|
||||
#col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
misc {
|
||||
disable_hyprland_logo = true
|
||||
disable_splash_rendering = true
|
||||
vfr = true
|
||||
}
|
||||
|
||||
decoration {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
rounding = 20
|
||||
|
||||
blur {
|
||||
|
@ -99,9 +66,6 @@ decoration {
|
|||
}
|
||||
|
||||
drop_shadow = false
|
||||
#shadow_range = 4
|
||||
#shadow_render_power = 3
|
||||
#col.shadow = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
animations {
|
||||
|
@ -129,35 +93,7 @@ animations {
|
|||
animation = borderangle, 1, 8, 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
|
||||
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)$
|
||||
|
||||
# For GParted auth
|
||||
windowrule = size 741 288,^(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,^(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'
|
||||
|
|
|
@ -35,15 +35,13 @@
|
|||
home-manager.users = {
|
||||
matt = {
|
||||
imports = [
|
||||
../../home/alacritty.nix
|
||||
../../home/dconf.nix
|
||||
../../home/firefox
|
||||
../../home/theme.nix
|
||||
../../home/wofi
|
||||
../../home/hyprland
|
||||
|
||||
./home/dotfiles.nix
|
||||
./home/packages.nix
|
||||
./home/hyprland.nix
|
||||
./home/ags.nix
|
||||
];
|
||||
|
||||
# No touchy
|
||||
|
|
48
devices/wim/home/ags.nix
Normal file
48
devices/wim/home/ags.nix
Normal 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
|
||||
];
|
||||
}
|
|
@ -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
212
home/hyprland/default.nix
Normal 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
|
||||
];
|
||||
}
|
|
@ -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;
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue