2023-10-10 07:25:31 +00:00
|
|
|
{
|
2023-11-04 10:14:42 +00:00
|
|
|
config,
|
|
|
|
pkgs,
|
2023-11-04 12:52:55 +00:00
|
|
|
lib,
|
2023-11-04 10:14:42 +00:00
|
|
|
...
|
|
|
|
}: {
|
2023-11-06 06:34:57 +00:00
|
|
|
imports = [
|
2023-12-08 15:44:35 +00:00
|
|
|
../cliphist
|
2023-11-28 05:40:22 +00:00
|
|
|
../dunst
|
|
|
|
../rofi
|
|
|
|
../swayidle
|
|
|
|
../swaylock
|
|
|
|
../udiskie
|
|
|
|
../waybar
|
2023-11-06 06:34:57 +00:00
|
|
|
];
|
|
|
|
|
2023-11-04 12:52:55 +00:00
|
|
|
home.sessionVariables = {
|
2023-11-14 03:22:17 +00:00
|
|
|
GTK_IM_MODULE = lib.mkForce "wayland"; # use text-input-v3
|
2023-12-18 18:01:26 +00:00
|
|
|
NIXOS_OZONE_WL = "1"; # let electron applications use wayland
|
2023-11-04 12:52:55 +00:00
|
|
|
};
|
|
|
|
|
2023-12-03 12:01:38 +00:00
|
|
|
dconf.settings = {
|
|
|
|
"org/gnome/desktop/wm/preferences" = {
|
|
|
|
"button-layout" = "icon,appmenu:"; # remove csd window buttons
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2023-11-05 12:50:08 +00:00
|
|
|
home.packages = with pkgs; [
|
|
|
|
pamixer
|
|
|
|
brightnessctl
|
|
|
|
playerctl
|
|
|
|
pavucontrol
|
|
|
|
wl-clipboard
|
|
|
|
cliphist
|
|
|
|
grim
|
|
|
|
slurp
|
|
|
|
swappy
|
|
|
|
#mpvpaper
|
|
|
|
libnotify
|
|
|
|
jq
|
|
|
|
];
|
|
|
|
|
2023-10-10 07:25:31 +00:00
|
|
|
wayland.windowManager.sway = {
|
|
|
|
enable = true;
|
2023-12-08 15:44:35 +00:00
|
|
|
extraOptions = ["--unsupported-gpu" "-Dnoscanout"];
|
2023-10-10 07:25:31 +00:00
|
|
|
wrapperFeatures.gtk = true;
|
2023-12-08 15:44:35 +00:00
|
|
|
systemd.enable = true;
|
|
|
|
systemd.xdgAutostart = true;
|
2023-10-10 07:25:31 +00:00
|
|
|
config = {
|
|
|
|
### Default Applications
|
2023-12-16 14:48:27 +00:00
|
|
|
terminal = lib.getExe pkgs.alacritty;
|
|
|
|
menu = lib.getExe config.programs.rofi.package;
|
2023-10-10 07:25:31 +00:00
|
|
|
|
|
|
|
### Visuals
|
2023-12-08 15:44:35 +00:00
|
|
|
#window.titlebar = false;
|
|
|
|
bars = [
|
|
|
|
{
|
2023-12-16 14:48:27 +00:00
|
|
|
command = lib.getExe pkgs.waybar;
|
2023-12-08 15:44:35 +00:00
|
|
|
}
|
|
|
|
#{
|
|
|
|
# statusCommand = "${lib.getExe pkgs.i3status-rust} $HOME/.config/i3status-rust/config-default.toml";
|
|
|
|
# position = "top";
|
|
|
|
#}
|
|
|
|
];
|
2023-10-10 07:25:31 +00:00
|
|
|
gaps = {
|
|
|
|
inner = 4;
|
|
|
|
outer = 4;
|
|
|
|
#smartGaps = true;
|
|
|
|
};
|
2023-11-05 06:34:27 +00:00
|
|
|
output = {
|
|
|
|
eDP-1 = {
|
2023-12-11 09:12:35 +00:00
|
|
|
bg = "~/.local/share/backgrounds/aqua.png fill";
|
2023-11-05 06:34:27 +00:00
|
|
|
};
|
|
|
|
};
|
2023-10-10 07:25:31 +00:00
|
|
|
|
|
|
|
### Inputs
|
|
|
|
input = {
|
|
|
|
"*" = {
|
|
|
|
accel_profile = "flat";
|
|
|
|
natural_scroll = "enabled";
|
|
|
|
|
|
|
|
# touchpad
|
|
|
|
tap = "enabled";
|
|
|
|
drag = "enabled";
|
|
|
|
dwt = "disabled";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
### Autostarts
|
2023-12-08 15:44:35 +00:00
|
|
|
startup = [];
|
2023-10-10 07:25:31 +00:00
|
|
|
|
|
|
|
### Keybinds
|
|
|
|
modifier = "Mod4";
|
|
|
|
modes = {};
|
2023-11-04 10:14:42 +00:00
|
|
|
keybindings = let
|
2023-12-02 10:42:59 +00:00
|
|
|
inherit (config.wayland.windowManager.sway.config) modifier;
|
2023-12-08 15:44:35 +00:00
|
|
|
inherit (config.wayland.windowManager.sway.config) terminal;
|
|
|
|
inherit (config.wayland.windowManager.sway.config) menu;
|
2023-11-04 10:14:42 +00:00
|
|
|
setBrightness = "/home/guanranwang/.local/bin/wrapped-brightnessctl";
|
|
|
|
setVolume = "/home/guanranwang/.local/bin/wrapped-pamixer";
|
2023-12-05 07:48:54 +00:00
|
|
|
screenshot = "/home/guanranwang/.local/bin/screenshot";
|
2023-11-04 10:14:42 +00:00
|
|
|
in {
|
2023-10-10 07:25:31 +00:00
|
|
|
### Sway itself
|
|
|
|
# Window
|
2023-11-04 10:14:42 +00:00
|
|
|
"${modifier}+s" = "split toggle";
|
|
|
|
"${modifier}+v" = "floating toggle";
|
|
|
|
"${modifier}+f" = "fullscreen";
|
|
|
|
"${modifier}+q" = "kill";
|
2023-10-12 08:40:58 +00:00
|
|
|
"${modifier}+Shift+e" = "exec ${pkgs.sway}/bin/swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' '${pkgs.sway}/bin/swaymsg exit'";
|
2023-10-10 07:25:31 +00:00
|
|
|
|
|
|
|
# Move around
|
|
|
|
"${modifier}+h" = "focus left";
|
|
|
|
"${modifier}+j" = "focus down";
|
|
|
|
"${modifier}+k" = "focus up";
|
|
|
|
"${modifier}+l" = "focus right";
|
|
|
|
|
|
|
|
# Workspaces
|
|
|
|
# Switch to workspace
|
|
|
|
"${modifier}+1" = "workspace 1";
|
|
|
|
"${modifier}+2" = "workspace 2";
|
|
|
|
"${modifier}+3" = "workspace 3";
|
|
|
|
"${modifier}+4" = "workspace 4";
|
|
|
|
"${modifier}+5" = "workspace 5";
|
|
|
|
"${modifier}+6" = "workspace 6";
|
|
|
|
"${modifier}+7" = "workspace 7";
|
|
|
|
"${modifier}+8" = "workspace 8";
|
|
|
|
"${modifier}+9" = "workspace 9";
|
|
|
|
# Move focused Window to workspace
|
|
|
|
"${modifier}+Shift+1" = "move container to workspace 1";
|
|
|
|
"${modifier}+Shift+2" = "move container to workspace 2";
|
|
|
|
"${modifier}+Shift+3" = "move container to workspace 3";
|
|
|
|
"${modifier}+Shift+4" = "move container to workspace 4";
|
|
|
|
"${modifier}+Shift+5" = "move container to workspace 5";
|
|
|
|
"${modifier}+Shift+6" = "move container to workspace 6";
|
|
|
|
"${modifier}+Shift+7" = "move container to workspace 7";
|
|
|
|
"${modifier}+Shift+8" = "move container to workspace 8";
|
|
|
|
"${modifier}+Shift+9" = "move container to workspace 9";
|
|
|
|
|
|
|
|
### Execute other stuff
|
|
|
|
# Launch applications
|
2023-12-08 15:44:35 +00:00
|
|
|
"${modifier}+Return" = "exec ${terminal}";
|
2023-11-04 10:14:42 +00:00
|
|
|
"${modifier}+w" = "exec ${pkgs.xdg-utils}/bin/xdg-open http:";
|
|
|
|
"${modifier}+e" = "exec ${pkgs.xdg-utils}/bin/xdg-open ~";
|
2023-10-10 07:25:31 +00:00
|
|
|
|
|
|
|
# Rofi
|
2023-12-08 15:44:35 +00:00
|
|
|
"${modifier}+d" = "exec ${menu} -show drun -show-icons -icon-theme ${config.gtk.iconTheme.name}";
|
2023-12-16 14:48:27 +00:00
|
|
|
"${modifier}+Shift+d" = "exec ${lib.getExe pkgs.cliphist} list | ${menu} -dmenu | ${lib.getExe pkgs.cliphist} decode | ${pkgs.wl-clipboard}/bin/wl-copy";
|
2023-12-08 15:44:35 +00:00
|
|
|
"${modifier}+Shift+l" = ''exec ${menu} -modi "power-menu:rofi-power-menu --confirm=reboot/shutdown" -show power-menu'';
|
2023-10-10 07:25:31 +00:00
|
|
|
|
|
|
|
# Screenshot
|
2023-11-04 10:14:42 +00:00
|
|
|
"${modifier}+Shift+s" = "exec ${screenshot} region";
|
|
|
|
"Print" = "exec ${screenshot} fullscreen";
|
2023-12-05 07:48:54 +00:00
|
|
|
"Print+Control" = "exec ${screenshot} swappy";
|
2023-10-10 07:25:31 +00:00
|
|
|
|
|
|
|
# Fn keys
|
2023-11-04 10:14:42 +00:00
|
|
|
"XF86MonBrightnessUp" = "exec ${setBrightness} up";
|
2023-10-10 07:25:31 +00:00
|
|
|
"XF86MonBrightnessDown" = "exec ${setBrightness} down";
|
2023-11-04 10:14:42 +00:00
|
|
|
"XF86AudioRaiseVolume" = "exec ${setVolume} up";
|
|
|
|
"XF86AudioLowerVolume" = "exec ${setVolume} down";
|
|
|
|
"XF86AudioMute" = "exec ${setVolume} mute";
|
2023-12-16 14:48:27 +00:00
|
|
|
"XF86AudioPlay" = "exec ${lib.getExe pkgs.playerctl} play-pause";
|
|
|
|
"XF86AudioPause" = "exec ${lib.getExe pkgs.playerctl} play-pause";
|
|
|
|
"XF86AudioPrev" = "exec ${lib.getExe pkgs.playerctl} previous";
|
|
|
|
"XF86AudioNext" = "exec ${lib.getExe pkgs.playerctl} next";
|
|
|
|
"XF86AudioStop" = "exec ${lib.getExe pkgs.playerctl} stop";
|
|
|
|
"XF86AudioMedia" = "exec ${lib.getExe pkgs.playerctl} play-pause";
|
2023-10-10 07:25:31 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2023-11-04 10:14:42 +00:00
|
|
|
}
|