From 49f0b5d590ebfc54c0a84b8809f216bfb0167672 Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Sun, 7 Feb 2021 16:41:40 +0100 Subject: modules/user/sternenseemann: add sway service module machines/sternenseemann/wolfgang: refactor using new sway module --- machines/sternenseemann/desktop-sway.nix | 290 +++++-------------------------- 1 file changed, 41 insertions(+), 249 deletions(-) (limited to 'machines/sternenseemann/desktop-sway.nix') diff --git a/machines/sternenseemann/desktop-sway.nix b/machines/sternenseemann/desktop-sway.nix index 57040cec..57d9d7ee 100644 --- a/machines/sternenseemann/desktop-sway.nix +++ b/machines/sternenseemann/desktop-sway.nix @@ -7,44 +7,31 @@ let getBins ; - inherit (pkgs.writers) - writeDashBin + inherit (pkgs.vuizvui.sternenseemann) + tep ; - bins = (getBins pkgs.systemd [ "systemctl" ]) - // (getBins pkgs.xurls [ "xurls" ]) - // (getBins pkgs.bemenu [ "bemenu" ]) - // (getBins pkgs.dbus [ "dbus-run-session" ]) - // (getBins pkgs.sway [ "sway" "swaymsg" ]) + bins = (getBins pkgs.xurls [ "xurls" ]) + // (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" ]) ; - # manual start script - startSway = writeDashBin "start-sway" '' - ${bins.systemctl} --user import-environment - ${bins.systemctl} --user start sway.service - ''; - - # sway scripts for systemd - swayService = writeDashBin "sway-service" '' - ${bins.dbus-run-session} -- "${pkgs.sway}/bin/sway" - ''; + screenshot = pkgs.writers.writeDashBin "screenshot" '' + if [ "$1" != "full" ]; then + additionalOpts='-g "$(${bins.slurp})"' + shift + fi - exitSway = writeDashBin "exit-sway" '' - ${bins.swaymsg} exit - ${bins.systemctl} --user unset-environment WAYLAND_DISPLAY - ${bins.systemctl} --user unset-environment DISPLAY + ${bins.grim} $additionalOpts -c -t png ''; - # reduce repition in sway config by generating workspace switches - wsConfig = lib.concatMapStringsSep "\n" (n: '' - bindsym $mod+${toString n} workspace number ${toString n} - bindsym $mod+Shift+${toString n} move container to workspace number ${toString n} - '') [1 2 3 4 5 6 7 8 9]; + defaultFont = "Bitstream Vera Sans Mono"; - # .Xresources file to fix DPI issues in Xwayland - xResources = pkgs.writeText "Xresources" '' - Xft.dpi: 96 - ''; in { @@ -53,201 +40,32 @@ in ]; config = { - programs.sway = { + vuizvui.user.sternenseemann.services.sway = { enable = true; - extraPackages = with pkgs; [ - vuizvui.sternenseemann.tep # emoji picker - bemenu # better dmenu - xwayland qt5.qtwayland - wl-clipboard # instead of xsel - grim slurp # screenshots - mako # notifications - ]; - wrapperFeatures = { - gtk = true; - base = true; + additionalBinds = { + "$mod+g" = "${bins.tep} copy -l 25 -p 'tep>' -i"; + "$mod+c" = "${bins.makoctl} dismiss -a"; + "$mod+x" = bins.screenshot; }; - }; - - environment.sessionVariables = { - # TODO(sterni) get screen capture working in firefox - XDG_SESSION_TYPE = "wayland"; - XDG_CURRENT_DESKTOP = "sway"; - MOZ_ENABLE_WAYLAND = "1"; - # SDL - SDL_VIDEODRIVER = "wayland"; - # QT - QT_QPA_PLATFORM = "wayland"; - QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; - }; - - services.dbus.packages = [ pkgs.mako ]; - - services.pipewire.enable = true; - xdg.portal = { - enable = true; - extraPortals = with pkgs; [ - xdg-desktop-portal-wlr - xdg-desktop-portal-gtk + term = bins.foot; + menu = "${bins.bemenu-run} -l 10 -i"; + lockArgs = [ + "-c" "FFC0CB" "-k" "-l" ]; - gtkUsePortal = true; - }; - - environment.etc = { - "sway/config".text = '' - # correct DPI after hotplugging - exec ${pkgs.xorg.xrdb}/bin/xrdb -load ${xResources} - - set $mod Mod4 - #set $term ${pkgs.kitty}/bin/kitty - set $term ${pkgs.foot}/bin/foot - set $menu ${pkgs.bemenu}/bin/bemenu-run -l 5 -i - set $makoctl ${pkgs.mako}/bin/makoctl - - # neo arrow keys - set $left i - set $right e - set $up l - set $down a - - bindsym $mod+Shift+c reload - - bindsym $mod+Return exec $term - bindsym $mod+d exec $menu - - bindsym $mod+c exec $makoctl dismiss -a - - bindsym $mod+g exec ${pkgs.vuizvui.sternenseemann.tep}/bin/tep copy -l 25 -p 'tep>' -i - - bindsym $mod+Shift+q kill - - bindsym $mod+h splith - bindsym $mod+v splitv - - bindsym $mod+s layout stacking - bindsym $mod+t layout tabbed - bindsym $mod+n layout toggle split - - bindsym $mod+f fullscreen - - bindsym $mod+Shift+space floating toggle - bindsym $mod+space focus mode_toggle - floating_modifier $mod normal - - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right - - bindsym $mod+p focus parent - - bindsym $mod+Shift+$left move left - bindsym $mod+Shift+$down move down - bindsym $mod+Shift+$up move up - bindsym $mod+Shift+$right move right - - mode "resize" { - bindsym $left resize shrink width 10px - bindsym $down resize grow height 10px - bindsym $up resize shrink height 10px - bindsym $right resize grow width 10px - - bindsym Return mode "default" - bindsym Escape mode "default" - } - bindsym $mod+r mode "resize" - - # workspace shortcuts - ${wsConfig} - - set $pactl ${config.hardware.pulseaudio.package}/bin/pactl - bindsym XF86AudioRaiseVolume exec $pactl set-sink-volume @DEFAULT_SINK@ +5% - bindsym XF86AudioLowerVolume exec $pactl set-sink-volume @DEFAULT_SINK@ -5% - bindsym XF86AudioMute exec $pactl set-sink-mute @DEFAULT_SINK@ toggle - bindsym XF86AudioMicMute exec $pactl set-source-mute @DEFAULT_SOURCE@ toggle - - set $brightnessctl ${pkgs.brightnessctl}/bin/brightnessctl - bindsym XF86MonBrightnessDown exec $brightnessctl set 5%- - bindsym XF86MonBrightnessUp exec $brightnessctl set +5% - - bindsym $mod+0 exec ${pkgs.swaylock}/bin/swaylock -c FFC0CB -k -l - - font "DejaVu Sans Mono normal 10" - - gaps inner 10 - - output * bg #000000 solid_color - - # class border backgr. text indicator - client.focused #ffffff #ffffff #000000 #d0d0d0 - client.focused_inactive #000000 #000000 #ffffff #000000 - client.unfocused #000000 #000000 #ffffff #000000 - client.urgent #900000 #900000 #ffffff #900000 - - bar { - status_command ${pkgs.i3status}/bin/i3status - position top - colors { - font "DejaVu Sans Mono normal 10" - statusline #ffffff - background #000000 - focused_workspace #ffffff #ffffff #000000 - active_workspace #ffffff #ffffff #c4c4c4 - inactive_workspace #000000 #000000 #ffffff - urgent_workspace #900000 #900000 #ffffff - } - } - ''; - "xdg/i3status/config".text = '' - # TODO(sterni) replace i3status? - general { - output_format = "i3bar" - colors = true - interval = 1 - } - - order += "volume master" - order += "battery all" - order += "tztime dotdate" - order += "tztime dottime" - order += "tztime offset" - - volume master { - format = "๐Ÿ”Š: %volume" - format_muted = "๐Ÿ”ˆ: %volume" - device = "pulse" - } - - battery all { - format = "%status: %percentage" - status_chr = "โšก" - status_bat = "๐Ÿ”‹" - status_unk = "โ“" - status_full = "๐Ÿ’ฏ" - low_threshold = 10 - } - - tztime dotdate { - timezone = "UTC" - format = "%Y-%m-%d" - } - - tztime dottime { - timezone = "UTC" - format = "%Hยท%M" - } - - tztime offset { - format = "%z" - } - ''; + font = { + name = defaultFont; + size = 10; + }; }; vuizvui.programs.foot = { enable = true; settings = { font = [ - "Bitstream Vera Sans Mono" + { + font = defaultFont; + options = { size = 8; }; + } { font = "Noto Color Emoji"; options = { size = 8; }; @@ -287,41 +105,15 @@ in }; }; - environment.variables = { - XKB_DEFAULT_LAYOUT = "de"; - XKB_DEFAULT_VARIANT = "neo"; - # TODO(sterni) user env? - SWAYSOCK = "/run/user/${toString config.users.users.lukas.uid}/sway.sock"; - }; + # notifications + services.dbus.packages = [ pkgs.mako ]; environment.systemPackages = with pkgs; [ - startSway - xdg_utils - networkmanagerapplet # for nm-connection-ediotr - imv zathura - foot - gnome3.nautilus + bemenu # better dmenu + xwayland qt5.qtwayland + wl-clipboard # instead of xsel + grim slurp screenshot # screenshots + mako # notifications ]; - - # allow ydotool to use /dev/uinput - # services.udev.extraRules = '' - # KERNEL=="uinput", GROUP:="uinput", MODE:="0660" - # ''; - # users.groups.uinput = {}; - # users.users.lukas.extraGroups = [ "uinput" ]; - - # based on https://nixos.wiki/Sway - systemd.user = { - services.sway = { - bindsTo = [ "graphical-session.target" ]; - wants = [ "graphical-session-pre.target" ]; - after = [ "graphical-session-pre.target" ]; - serviceConfig = { - Type = "simple"; - ExecStart = "${swayService}/bin/sway-service"; - ExecStop = "${exitSway}/bin/exit-sway"; - }; - }; - }; }; } -- cgit 1.4.1