nix-dotfiles/programs/sway.nix
vorboyvo 4fd19a9ba2 Refactored packages slightly to add let-ins instead of clogging up the space
there.
Also moved around some categories.
Installed texlab as an LSP for LaTeX.
Installed Haskell and tools.
Installed fonts rubik and archivo, the latter creating a flake and derivation
for it.
Added a desktop entry for kakoune.
Added a GeoGuessr Join search tool for Firefox.
Changed background to kuwait boat image; kept bord around.
Added dunst notifications toggle key but I don't think it works yet.
Disabled scroll to change volume in waybar volume module.
2024-03-19 23:07:41 -04:00

86 lines
3.6 KiB
Nix

{ scripts, extra, config, lib, pkgs, terminal, ... }@inputs:
let
dynscreenshot = pkgs.writeShellScript "dynscreenshot" (builtins.readFile "${scripts}/dynscreenshot.sh");
changebrightness = pkgs.writeShellScript "changebrightness" (builtins.readFile "${scripts}/changebrightness.sh");
mod = config.wayland.windowManager.sway.config.modifier;
dmenuCommand = builtins.readFile "${scripts}/dmenu.sh";
shutdownMenu = pkgs.writeShellScript "shutdownmenu" (builtins.readFile "${scripts}/shutdownmenu.sh");
backgroundImage = "${extra}/kuwaitboat.jpg";
in {
enable = true;
config = rec {
terminal = "${pkgs.lib.getExe inputs.terminal}";
modifier = "Mod4";
fonts = {
names = [ "Red Hat Display" ];
style = "Regular";
size = 12.0;
};
input."type:touchpad" = {
natural_scroll = "disabled";
dwt = "disabled";
click_method = "clickfinger";
scroll_factor = "0.5";
};
bars = let config = config; in [{
command = "${pkgs.lib.getExe pkgs.waybar}";
position = "top";
inherit fonts;
}];
window = {
border = 2;
titlebar = true;
};
keybindings = let screenshotPath = "Pictures/Screenshots/screenshot`date +%Y%m%d%H%M%S`.png"; in lib.mkOptionDefault ({ # Screenshot keybinds
"Print" = "exec grim - | wl-copy && wl-paste > ${screenshotPath}"; # Take screenshot of whole screen, save it, and copy it to clipboard
"Shift+Print" = "exec swaymsg -t get_tree | jq -r '.. | select(.focused?) | .rect | \"\\(.x),\\(.y) \\(.width)x\\(.height)\"' | grim -g - | wl-copy && wl-paste > ${screenshotPath}"; # Take screenshot of current window, save it, and copy it to clipboard
"Ctrl+Print" = "exec bash ${dynscreenshot}"; # Take screenshot of selection, save it, and copy it to clipboard
} // { # Function Media Keys
XF86MonBrightnessUp = "exec bash ${changebrightness} 1";
XF86MonBrightnessDown = "exec bash ${changebrightness} -1";
XF86AudioMute = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
"${mod}+XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
XF86AudioRaiseVolume = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+";
XF86AudioLowerVolume = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-";
"${mod}+XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.05+";
"${mod}+XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 0.05-";
"${mod}+Shift+e" = null;
XF86AudioMedia = "dunstctl set-paused toggle; dunstify -a 'dunst_mute_key' -u low -h string:x-dunst-stack-tag:dunst_mute_key 'Notifications mute toggled'";
XF86PowerOff = "exec DMENU_COMMAND='${dmenuCommand}' bash ${shutdownMenu}";
} // {
"${mod}+space" = "exec fcitx5-remote -t";
} // {
});
menu = "j4-dmenu-desktop --no-generic --term=${pkgs.lib.getExe inputs.terminal} --dmenu='${dmenuCommand}'";
focus.followMouse = false;
};
extraConfig =
''
output 'eDP-1' scale 1.50
'' + # Fractional scaling to 1.50
''
exec fcitx5
'' + # Fcitx5 enables input method switching
''
exec dunst
'' + # Enable notifications
''
bindgesture swipe:4:up focus parent
bindgesture swipe:4:left workspace prev
bindgesture swipe:4:right workspace next
bindgesture swipe:3:up focus up
bindgesture swipe:3:down focus down
bindgesture swipe:3:left focus left
bindgesture swipe:3:right focus right
'' + # Multi-touch touchpad gestures
''
exec swaybg -i ${backgroundImage}
'' + # Background image
''
focus_on_window_activation focus
'' + # Focus on window activation lol
"";
}