This repository has been archived on 2024-04-14. You can view files and clone it, but cannot push or open issues or pull requests.
nixos-dotfiles/user/configs/wayland/hyprland/default.nix

223 lines
6.6 KiB
Nix
Raw Normal View History

2023-05-29 16:43:26 +01:00
{ config, pkgs, inputs, ... }:
let
wobsock = "/tmp/wob-vol.fifo";
modKey = "SUPER";
leftMonitor = "HDMI-A-1";
rightMonitor = "DP-1";
2023-02-26 00:49:03 +00:00
wob-voldaemon = pkgs.writeShellScriptBin "wob-volumeindicator.sh" ''
if pgrep "wob"; then
killall wob &> /dev/null
fi
if [[ -e "${wobsock}" ]]; then
rm "${wobsock}"
fi
mkfifo "${wobsock}"
tail -f "${wobsock}" | ${pkgs.wob}/bin/wob &
echo "wob: started"
'';
xwaylandSetPrimary = pkgs.writeShellScriptBin "xwayland-setprimary.sh" ''
2023-04-05 10:36:45 +01:00
while true; do
DSP=$(${pkgs.xorg.xrandr}/bin/xrandr | awk '/2560x1440/ {print $1}' | head -n 1)
if [[ ! -z DSP ]]; then
${pkgs.xorg.xrandr}/bin/xrandr --output "$DSP" --primary
fi
sleep 10
2023-04-05 10:36:45 +01:00
done
'';
2023-05-25 15:44:15 +01:00
killprocess = pkgs.writeShellScriptBin "killprocess.sh" ''hypr
2023-05-20 18:42:57 +01:00
ps -x -o pid=,comm= | column -t -o " " | ${pkgs.rofi-wayland}/bin/rofi -dmenu -p "kill process: " | awk '{print $1}' | uniq | xargs -r kill -9
'';
2023-05-21 21:21:25 +01:00
passmenu = pkgs.writeShellScriptBin "passmenu.sh" ''
shopt -s nullglob globstar
prefix=''${PASSWORD_STORE_DIR-~/.password-store}
password_files=( "$prefix"/**/*.gpg )
password_files=( "''${password_files[@]#"$prefix"/}" )
password_files=( "''${password_files[@]%.gpg}" )
password=$(printf '%s\n' "''${password_files[@]}" | ${pkgs.rofi-wayland}/bin/rofi -dmenu -p "pass: " "$@")
[[ -n $password ]] || exit
pass show -c "$password" 2>/dev/null
'';
in
{
imports = [
inputs.hyprland.homeManagerModules.default
2023-05-15 21:06:28 +01:00
../waybar
../foot
../wob
../mako
];
wayland.windowManager.hyprland = {
enable = true;
2023-05-26 02:42:33 +01:00
extraConfig = ''
monitor=${leftMonitor}, 1920x1080@60, 0x0, 1
monitor=${rightMonitor}, 2560x1440@144, 1920x0, 1
2023-05-10 13:37:18 +01:00
workspace = 1, monitor:${rightMonitor}
workspace = 2, monitor:${rightMonitor}
workspace = 3, monitor:${rightMonitor}
workspace = 4, monitor:${leftMonitor}
workspace = 5, monitor:${leftMonitor}
workspace = 6, monitor:${leftMonitor}
input {
kb_layout = us
kb_variant = altgr-intl
#mouse
accel_profile = flat
follow_mouse = 1
}
general {
2023-03-14 15:23:24 +00:00
gaps_in = 16
2023-05-21 21:21:25 +01:00
border_size = 4
2023-05-29 16:43:26 +01:00
col.active_border = rgba(665C54ff)
2023-05-26 02:42:33 +01:00
col.inactive_border = rgba(282828ff)
}
dwindle {
pseudotile = yes
preserve_split = yes
}
master {
new_is_master = true
}
misc {
2023-02-26 00:49:03 +00:00
vfr = true
vrr = 2
2023-03-14 15:23:24 +00:00
enable_swallow = true
swallow_regex = ^(foot)$
2023-01-24 14:23:45 +00:00
}
decoration {
rounding = 10
blur = yes
blur_size = 3
2023-02-26 00:49:03 +00:00
blur_passes = 2
2023-01-24 14:23:45 +00:00
blur_new_optimizations = on
drop_shadow = yes
shadow_range = 8
2023-01-24 14:23:45 +00:00
shadow_render_power = 1
2023-05-26 02:42:33 +01:00
col.shadow = rgba(282828ff)
2023-01-24 14:23:45 +00:00
}
animations {
enabled = yes
2023-03-14 15:23:24 +00:00
animation = windowsIn, 1, 8, default, slide
animation = windowsOut, 1, 8, default, slide
2023-01-24 14:23:45 +00:00
animation = border, 1, 8, default
animation = fade, 1, 5, default
animation = workspaces, 1, 4, default
}
2023-02-26 00:49:03 +00:00
exec-once = ${pkgs.openrgb}/bin/openrgb --startminimized --profile autorun.orp
exec-once = ${pkgs.blueman}/bin/blueman-applet
2023-05-10 13:37:18 +01:00
exec-once = ${pkgs.networkmanagerapplet}/bin/nm-applet --indicator
2023-04-05 10:36:45 +01:00
exec-once = ${pkgs.mullvad-vpn}/bin/mullvad-gui
exec-once = ${xwaylandSetPrimary}/bin/xwayland-setprimary.sh
2023-05-10 13:37:18 +01:00
exec-once = ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1
2023-05-21 21:21:25 +01:00
exec-once = ${pkgs.swww}/bin/swww-daemon
2023-05-25 15:44:15 +01:00
exec-once = ${pkgs.arrpc}/bin/arRPC
2023-05-10 13:37:18 +01:00
2023-05-29 16:43:26 +01:00
exec = ${wob-voldaemon}/bin/wob-volumeindicator.sh;
2023-05-10 13:37:18 +01:00
exec = pkill waybar; ${pkgs.waybar_hyprland}/bin/waybar
2023-05-29 16:43:26 +01:00
#Set cursor
exec = ${pkgs.hyprland}/bin/hyprctl setcursor "${config.gtk.cursorTheme.name}" 32 &> /dev/null
2023-05-10 13:37:18 +01:00
2023-05-25 15:44:15 +01:00
env = XCURSOR_SIZE,32
#keybinds
bind = ${modKey}, 1, workspace, 1
bind = ${modKey}, 2, workspace, 2
bind = ${modKey}, 3, workspace, 3
bind = ${modKey}, 4, workspace, 4
bind = ${modKey}, 5, workspace, 5
bind = ${modKey}, 6, workspace, 6
bind = ${modKey} SHIFT, 1, movetoworkspace, 1
bind = ${modKey} SHIFT, 2, movetoworkspace, 2
bind = ${modKey} SHIFT, 3, movetoworkspace, 3
bind = ${modKey} SHIFT, 4, movetoworkspace, 4
bind = ${modKey} SHIFT, 5, movetoworkspace, 5
bindm = ${modKey}, mouse:272, movewindow
bindm = ${modKey}, mouse:273, resizewindow
bind = ${modKey}, P, pseudo, # dwindle
bind = ${modKey}, J, togglesplit, # dwindle
bind = ${modKey} SHIFT, Space, togglefloating
bind = ${modKey}, F, fullscreen
bind = ${modKey} SHIFT, Q, killactive
2023-05-21 21:21:25 +01:00
bind = ${modKey}, D, exec, ${pkgs.rofi-wayland}/bin/rofi -show drun -show-icons
2023-05-21 21:21:25 +01:00
bind = ${modKey}, Q, exec, ${pkgs.firefox}/bin/firefox
2023-01-24 14:23:45 +00:00
bind = ${modKey}, Return, exec, ${pkgs.foot}/bin/foot
bind = , XF86AudioRaiseVolume, exec, ${pkgs.pamixer}/bin/pamixer -i 10 --get-volume > ${wobsock}
bind = , XF86AudioLowerVolume, exec, ${pkgs.pamixer}/bin/pamixer -d 10 --get-volume > ${wobsock}
bind = CTRL, Space, exec, ${pkgs.mako}/bin/makoctl dismiss
bind = CTRL, grave, exec, ${pkgs.mako}/bin/makoctl restore
2023-05-21 21:21:25 +01:00
bind = ${modKey} SHIFT, O, exec, ${killprocess}/bin/killprocess.sh
bind = ${modKey} SHIFT, P, exec, ${passmenu}/bin/passmenu.sh
bind = MOD5, F9, exec, ${pkgs.mpc-cli}/bin/mpc stop
bind = MOD5, F10, exec, ${pkgs.mpc-cli}/bin/mpc prev
bind = MOD5, F11, exec, ${pkgs.mpc-cli}/bin/mpc toggle
bind = MOD5, F12, exec, ${pkgs.mpc-cli}/bin/mpc next
2023-01-24 14:23:45 +00:00
bind = , Print, exec, ${pkgs.grimblast}/bin/grimblast -c --notify copy screen
bind = ${modKey}, Print, exec, ${pkgs.grimblast}/bin/grimblast -c --notify copy active
bind = ${modKey} SHIFT, Print, exec, ${pkgs.grimblast}/bin/grimblast -c --notify copy area
2023-05-10 13:37:18 +01:00
bind = ${modKey}, R, exec, ${pkgs.dolphin}/bin/dolphin
bind = ${modKey} SHIFT, C, exec, hyprctl reload
2023-04-05 10:36:45 +01:00
layerrule = blur, waybar
layerrule = blur, notifications
2023-02-26 00:49:03 +00:00
windowrulev2 = fullscreen, class:^(hl2_linux)$
2023-05-14 10:23:49 +01:00
windowrulev2 = float, class:^(org.kde.dolphin)$
2023-05-26 02:42:33 +01:00
'';
};
2023-05-25 15:44:15 +01:00
2023-05-21 21:21:25 +01:00
home.file.".local/share/kservices5/swww.desktop".text = ''
[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/jpeg;image/png;image/svg
Actions=setSWWWWallpaper;
Encoding=UTF-8
[Desktop Action setSWWWWallpaper]
2023-05-25 15:44:15 +01:00
Name=Set Image as Wallpaper
2023-05-21 21:21:25 +01:00
Exec=swww img "%f"
'';
home.packages = [ pkgs.wl-clipboard pkgs.wl-clipboard-x11 pkgs.hyprpicker pkgs.swww pkgs.hyprprop ];
}