{ pkgs, ... }: { imports = [ ../profiles/wayland-desktop.nix ]; services = { gnome-keyring.enable = false; blueman-applet.enable = true; flameshot.enable = true; pasystray.enable = true; }; # TODO: remove this comment once i'm sure everything works # xdg.configFile."autostart/gnome-keyring-ssh.desktop".text = '' # [Desktop Entry] # Type=Application # Hidden=true # ''; services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3; dconf.settings = let manualKeybindings = [ { binding = "Print"; command = "flameshot gui"; name = "flameshot"; } { binding = "t"; command = "alacritty"; name = "alacritty"; } ]; numWorkspaces = 10; customKeybindingBaseName = "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom"; customKeybindingsNames = builtins.genList (i: "/${customKeybindingBaseName}${toString i}/") ( (builtins.length manualKeybindings) + numWorkspaces # for sending to the workspace ); workspacesKeyBindingsOffset = builtins.length manualKeybindings; # with this we can make use of all number keys [0-9] mapToNumber = i: if i < 10 then i else if i == 10 then 0 else throw "i exceeds 10: ${i}"; in { "org/gnome/settings-daemon/plugins/media-keys" = { custom-keybindings = customKeybindingsNames; screenreader = "@as []"; screensaver = [ "l" ]; }; # disable the builtin [1-9] functionality "org/gnome/shell/keybindings" = builtins.listToAttrs ( (builtins.genList (i: { name = "switch-to-application-${toString (i + 1)}"; value = [ ]; }) numWorkspaces) ++ [ { name = "toggle-overview"; value = [ ]; } ] ); # remap it to switching to the workspaces "org/gnome/desktop/wm/keybindings" = builtins.listToAttrs ( builtins.genList (i: { name = "switch-to-workspace-${toString (i + 1)}"; value = [ "${toString (mapToNumber (i + 1))}" ]; }) numWorkspaces ); } // builtins.listToAttrs ( builtins.genList (i: { name = "${customKeybindingBaseName}${toString i}"; value = builtins.elemAt manualKeybindings i; }) (builtins.length manualKeybindings) ) // builtins.listToAttrs ( builtins.genList (i: { name = "${customKeybindingBaseName}${toString (workspacesKeyBindingsOffset + i)}"; value = { binding = "${toString (mapToNumber (i + 1))}"; command = "wmctrl -r :ACTIVE: -t ${toString i}"; name = "Send to workspace ${toString (i + 1)}"; }; }) numWorkspaces ); }