aboutsummaryrefslogtreecommitdiff
path: root/modules/desktop/hjem/wm/sway.nix
blob: f3a544f1afe4e8fdac334945460b0d6e28b66312 (plain)
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
{
  pkgs,
  config,
  lib,
  ...
}: let
  cfg = config.collinux.desktop.wm.sway;

  colors = ''
    set $rosewater #f5e0dc
    set $flamingo #f2cdcd
    set $pink #f5c2e7
    set $mauve #cba6f7
    set $red #f38ba8
    set $maroon #eba0ac
    set $peach #fab387
    set $yellow #f9e2af
    set $green #a6e3a1
    set $teal #94e2d5
    set $sky #89dceb
    set $sapphire #74c7ec
    set $blue #89b4fa
    set $lavender #b4befe
    set $text #cdd6f4
    set $subtext1 #bac2de
    set $subtext0 #a6adc8
    set $overlay2 #9399b2
    set $overlay1 #7f849c
    set $overlay0 #6c7086
    set $surface2 #585b70
    set $surface1 #45475a
    set $surface0 #313244
    set $base #1e1e2e
    set $mantle #181825
    set $crust #11111b
  '';

  settings = ''
    exec ${config.collinux.desktop.wallpaper_cmd}
    exec ${pkgs.dunst}/bin/dunst

    include catppuccin-mocha

    # target                 title     bg    text   indicator  border
    client.focused           $lavender $base $text  $rosewater $lavender
    client.focused_inactive  $overlay0 $base $text  $rosewater $overlay0
    client.unfocused         $overlay0 $base $text  $rosewater $overlay0
    client.urgent            $peach    $base $peach $overlay0  $peach
    client.placeholder       $overlay0 $base $text  $overlay0  $overlay0
    client.background        $base

    input type:keyboard {
      xkb_options caps:none
    }

    bindsym Mod4+1 workspace number 1
    bindsym Mod4+2 workspace number 2
    bindsym Mod4+3 workspace number 3
    bindsym Mod4+4 workspace number 4
    bindsym Mod4+5 workspace number 5
    bindsym Mod4+6 workspace number 6
    bindsym Mod4+7 workspace number 7
    bindsym Mod4+8 workspace number 8
    bindsym Mod4+9 workspace number 9

    bindsym Mod4+Shift+1 move container to workspace number 1
    bindsym Mod4+Shift+2 move container to workspace number 2
    bindsym Mod4+Shift+3 move container to workspace number 3
    bindsym Mod4+Shift+4 move container to workspace number 4
    bindsym Mod4+Shift+5 move container to workspace number 5
    bindsym Mod4+Shift+6 move container to workspace number 6
    bindsym Mod4+Shift+7 move container to workspace number 7
    bindsym Mod4+Shift+8 move container to workspace number 8
    bindsym Mod4+Shift+9 move container to workspace number 9

    bindsym Mod4+Return       exec ${pkgs.foot}/bin/foot
    bindsym Mod4+Space        exec ${pkgs.fuzzel}/bin/fuzzel
    bindsym Mod4+b            exec ${pkgs.firefox}/bin/firefox
    bindsym Mod4+Shift+b      exec ${pkgs.qutebrowser}/bin/qutebrowser
    bindsym Mod4+q kill

    bindsym Mod4+Shift+s exec '${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/$(date +"%s_grim.png")'
    bindsym Mod4+Alt+s exec '${pkgs.hyprpicker}/bin/hyprpicker'

    bindsym XF86AudioRaiseVolume  exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"'
    bindsym XF86AudioLowerVolume  exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"'

    bindsym XF86MonBrightnessUp   exec 'brightnessctl set 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"'
    bindsym XF86MonBrightnessDown exec 'brightnessctl set 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"'

    bindsym Home   exec 'playerctl previous'
    bindsym End    exec 'playerctl play-pause'
    bindsym Insert exec 'playerctl next'

    default_border pixel 2
    smart_borders on
    smart_gaps on
  '';
in
  lib.mkIf cfg.enable {
    files = {
      ".config/sway/config".text = settings;
      ".config/sway/catppuccin-mocha".text = colors;
    };

    packages = with pkgs; [
      sway
      brightnessctl
      playerctl
      wl-clipboard
    ];
  }