about summary refs log tree commit diff
path: root/machines/sternenseemann/desktop-sway.nix
blob: 107cfea5cdd5e8279c1d44f510d3e770618ea679 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# TODO(sterni) icons, GTK
# TODO(sterni) X11 cursor
{ config, pkgs, lib, ... }:

let
  inherit (pkgs.vuizvui.profpatsch)
    getBins
    ;

  inherit (pkgs.vuizvui.sternenseemann)
    tep
    ;

  bins = (getBins pkgs.bemenu [ "bemenu" "bemenu-run" ])
      // (getBins tep [ "tep" ])
      // (getBins pkgs.grim [ "grim" ])
      // (getBins pkgs.slurp [ "slurp" ])
      // (getBins pkgs.mako [ "makoctl" ])
      // (getBins screenshot [ "screenshot" ])
      // (getBins pkgs.foot [ "foot" ])
      // (getBins pkgs.bash [ "sh" ])
      // (getBins config.vuizvui.user.sternenseemann.programs.saneterm.package [ "saneterm" ])
      ;

  screenshot = pkgs.writers.writeDashBin "screenshot" ''
    if [ "$1" != "full" ]; then
      additionalOpts="-g '$(${bins.slurp})'"
    else
      shift
    fi

    $SHELL -c "${bins.grim} $additionalOpts $@"
  '';

  defaultFont = "Bitstream Vera Sans Mono";

in

{
  imports = [
    ./fonts.nix
  ];

  config = {
    vuizvui.user.sternenseemann.services.sway = {
      enable = true;
      additionalBinds = {
        "$mod+g" = "${bins.tep} copy -l 25 -p 'tep>' -i";
        "$mod+c" = "${bins.makoctl} dismiss -a";
        "$mod+x" = bins.screenshot;
        "$mod+Shift+Return" = "${bins.saneterm} ${bins.sh}";
      };
      term = bins.foot;
      menu = "${bins.bemenu-run} -l 10 -i";
      lockArgs = [
        "-c" "FFC0CB" "-k" "-l"
      ];
      font = {
        name = defaultFont;
        size = 10;
      };
    };

    vuizvui.programs.foot = {
      enable = true;
      settings = {
        font = [
          {
            font = defaultFont;
            options = { size = 8; };
          }
          {
            font = "Noto Color Emoji";
            options = { size = 8; };
          }
        ];

        key-bindings = {
          scrollback-up-page = "Control+Shift+Page_Up";
          scrollback-down-page = "Control+Shift+Page_Down";
          search-start = "Control+Shift+F";
          font-increase = "Control+Shift+b";
          font-decrease = "Control+Shift+t";
          font-reset = "Control+Shift+0";
        };

        mouse-bindings = {
          primary-paste = "none";
        };

        mouse = {
          alternate-scroll-mode = "yes";
        };

        scrollback = {
          lines = 10000;
          indicator-position = "none";
        };
      };
    };

    vuizvui.user.sternenseemann.programs.saneterm.enable = true;

    # notifications
    services.dbus.packages = [ pkgs.mako ];

    environment.systemPackages = with pkgs; [
      bemenu                     # better dmenu
      xwayland qt5.qtwayland
      wl-clipboard               # instead of xsel
      grim slurp screenshot      # screenshots
      mako                       # notifications
    ];

    programs.fish.shellAliases = {
      "hdmi2-above" = ''
        sway output HDMI-A-2 position 0 0 && sway output eDP-1 position 0 1440
      '';
      "workspace-move" = "sway move workspace output";
    };
  };
}