From 8c838bf7383f23b553efb4ee8d1acd78f0247ae3 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Tue, 26 Feb 2019 23:26:19 +0000 Subject: modules/sway: customise further --- .../workstation/windowing/sway/choose_workspace.in | 6 + modules/workstation/windowing/sway/config.in | 97 ++++++++++ modules/workstation/windowing/sway/config.nix | 214 --------------------- modules/workstation/windowing/sway/default.nix | 22 ++- .../workstation/windowing/sway/status_command.in | 22 +++ 5 files changed, 145 insertions(+), 216 deletions(-) create mode 100644 modules/workstation/windowing/sway/choose_workspace.in create mode 100644 modules/workstation/windowing/sway/config.in delete mode 100644 modules/workstation/windowing/sway/config.nix create mode 100644 modules/workstation/windowing/sway/status_command.in (limited to 'modules/workstation/windowing') diff --git a/modules/workstation/windowing/sway/choose_workspace.in b/modules/workstation/windowing/sway/choose_workspace.in new file mode 100644 index 000000000000..8b36b66b2e77 --- /dev/null +++ b/modules/workstation/windowing/sway/choose_workspace.in @@ -0,0 +1,6 @@ +#! @execline@/bin/execlineb + +pipeline { swaymsg -t get_workspaces } +pipeline { @jq@/bin/jq -r .[].name } + +choose --bind alt-enter:print-query diff --git a/modules/workstation/windowing/sway/config.in b/modules/workstation/windowing/sway/config.in new file mode 100644 index 000000000000..8c76eb877ce8 --- /dev/null +++ b/modules/workstation/windowing/sway/config.in @@ -0,0 +1,97 @@ +set $mod Mod4 +set $left h +set $down j +set $up k +set $right l +set $term alacritty + +default_border pixel +default_floating_border pixel +font monospace 12 +gaps inner 20 + +for_window '[app_id="float"]' { + floating enable +} + +input * natural_scroll enabled +output * bg #191919 solid_color + +client.focused #4c7899 #4d7b3a #ffffff #83d0a2 #4d7b3a + +bindsym $mod+Return exec alacritty +bindsym $mod+Shift+q kill +bindsym $mod+d exec swaymsg exec "$(choosebin --tiebreak=begin,length,index)" + +# Drag floating windows by holding down $mod and left mouse button. +# Resize them with right mouse button + $mod. +# Despite the name, also works for non-floating windows. +# Change normal to inverse to use left mouse button for resizing and right +# mouse button for dragging. +floating_modifier $mod normal + +# reload the configuration file +bindsym $mod+Shift+c reload + +# exit sway (logs you out of your Wayland session) +bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' + +bindsym $mod+$left focus left +bindsym $mod+$down focus down +bindsym $mod+$up focus up +bindsym $mod+$right focus right + +bindsym $mod+Shift+$left move left +bindsym $mod+Shift+$down move down +bindsym $mod+Shift+$up move up +bindsym $mod+Shift+$right move right + +bindsym $mod+g exec swaymsg workspace @choose_workspace@ +bindsym $mod+Shift+g exec swaymsg move container to workspace @choose_workspace@ + +bindsym $mod+b splith +bindsym $mod+v splitv + +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +bindsym $mod+f fullscreen + +bindsym $mod+Shift+space floating toggle +bindsym $mod+space focus mode_toggle + +bindsym $mod+a focus parent + +bindsym $mod+Shift+minus move scratchpad +bindsym $mod+minus scratchpad show + +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" + +bar { + position top + + font monospace 12 + + status_command @status_command@ + + colors { + statusline #ffffff + background #191919 + } +} + +exec swayidle \ + timeout 300 'swaylock -c 000000' \ + timeout 600 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -c 000000' diff --git a/modules/workstation/windowing/sway/config.nix b/modules/workstation/windowing/sway/config.nix deleted file mode 100644 index cbcd4c81ee71..000000000000 --- a/modules/workstation/windowing/sway/config.nix +++ /dev/null @@ -1,214 +0,0 @@ -{ sway, rofi }: - -'' -set $mod Mod4 # Super -set $left h -set $down j -set $up k -set $right l -set $term alacritty -# Your preferred application launcher -# Note: it's recommended that you pass the final command to sway -set $menu swaymsg exec ${rofi}/bin/rofi -show run - -default_border pixel - -### Output configuration -# -# Default wallpaper (more resolutions are available in ${sway}/share/backgrounds/sway/) -output * bg ${sway}/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill -# -# Example configuration: -# -# output HDMI-A-1 resolution 1920x1080 position 1920,0 -# -# You can get the names of your outputs by running: swaymsg -t get_outputs - -### Idle configuration -# -# Example configuration: -# -#exec swayidle \ -# timeout 300 'swaylock -c 000000' \ -# timeout 600 'swaymsg "output * dpms off"' \ -# resume 'swaymsg "output * dpms on"' \ -# before-sleep 'swaylock -c 000000' -# -# This will lock your screen after 300 seconds of inactivity, then turn off -# your displays after another 300 seconds, and turn your screens back on when -# resumed. It will also lock your screen before your computer goes to sleep. - -### Input configuration -# -# Example configuration: -# -# input "2:14:SynPS/2_Synaptics_TouchPad" { -# dwt enabled -# tap enabled -# natural_scroll enabled -# middle_emulation enabled -# } -# -# You can get the names of your inputs by running: swaymsg -t get_inputs -# Read `man 5 sway-input` for more information about this section. - -input * natural_scroll enabled - -### Key bindings -# -# Basics: -# - # start a terminal - bindsym $mod+Return exec $term - - # kill focused window - bindsym $mod+Shift+q kill - - # start your launcher - bindsym $mod+d exec $menu - - # Drag floating windows by holding down $mod and left mouse button. - # Resize them with right mouse button + $mod. - # Despite the name, also works for non-floating windows. - # Change normal to inverse to use left mouse button for resizing and right - # mouse button for dragging. - floating_modifier $mod normal - - # reload the configuration file - bindsym $mod+Shift+c reload - - # exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit' -# -# Moving around: -# - # Move your focus around - bindsym $mod+$left focus left - bindsym $mod+$down focus down - bindsym $mod+$up focus up - bindsym $mod+$right focus right - # or use $mod+[up|down|left|right] - bindsym $mod+Left focus left - bindsym $mod+Down focus down - bindsym $mod+Up focus up - bindsym $mod+Right focus right - - # _move_ the focused window with the same, but add Shift - bindsym $mod+Shift+$left move left - bindsym $mod+Shift+$down move down - bindsym $mod+Shift+$up move up - bindsym $mod+Shift+$right move right - # ditto, with arrow keys - bindsym $mod+Shift+Left move left - bindsym $mod+Shift+Down move down - bindsym $mod+Shift+Up move up - bindsym $mod+Shift+Right move right -# -# Workspaces: -# - # switch to workspace - bindsym $mod+1 workspace 1 - bindsym $mod+2 workspace 2 - bindsym $mod+3 workspace 3 - bindsym $mod+4 workspace 4 - bindsym $mod+5 workspace 5 - bindsym $mod+6 workspace 6 - bindsym $mod+7 workspace 7 - bindsym $mod+8 workspace 8 - bindsym $mod+9 workspace 9 - bindsym $mod+0 workspace 10 - # move focused container to workspace - bindsym $mod+Shift+1 move container to workspace 1 - bindsym $mod+Shift+2 move container to workspace 2 - bindsym $mod+Shift+3 move container to workspace 3 - bindsym $mod+Shift+4 move container to workspace 4 - bindsym $mod+Shift+5 move container to workspace 5 - bindsym $mod+Shift+6 move container to workspace 6 - bindsym $mod+Shift+7 move container to workspace 7 - bindsym $mod+Shift+8 move container to workspace 8 - bindsym $mod+Shift+9 move container to workspace 9 - bindsym $mod+Shift+0 move container to workspace 10 - # Note: workspaces can have any name you want, not just numbers. - # We just use 1-10 as the default. -# -# Layout stuff: -# - # You can "split" the current object of your focus with - # $mod+b or $mod+v, for horizontal and vertical splits - # respectively. - bindsym $mod+b splith - bindsym $mod+v splitv - - # Switch the current container between different layout styles - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+e layout toggle split - - # Make the current focus fullscreen - bindsym $mod+f fullscreen - - # Toggle the current focus between tiling and floating mode - bindsym $mod+Shift+space floating toggle - - # Swap focus between the tiling area and the floating area - bindsym $mod+space focus mode_toggle - - # move focus to the parent container - bindsym $mod+a focus parent -# -# Scratchpad: -# - # Sway has a "scratchpad", which is a bag of holding for windows. - # You can send windows there and get them back later. - - # Move the currently focused window to the scratchpad - bindsym $mod+Shift+minus move scratchpad - - # Show the next scratchpad window or hide the focused scratchpad window. - # If there are multiple scratchpad windows, this command cycles through them. - bindsym $mod+minus scratchpad show -# -# Resizing containers: -# -mode "resize" { - # left will shrink the containers width - # right will grow the containers width - # up will shrink the containers height - # down will grow the containers height - bindsym $left resize shrink width 10px - bindsym $down resize grow height 10px - bindsym $up resize shrink height 10px - bindsym $right resize grow width 10px - - # ditto, with arrow keys - bindsym Left resize shrink width 10px - bindsym Down resize grow height 10px - bindsym Up resize shrink height 10px - bindsym Right resize grow width 10px - - # return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+r mode "resize" - -# -# Status Bar: -# -# Read `man 5 sway-bar` for more information about this section. -bar { - position top - - # When the status_command prints a new line to stdout, swaybar updates. - # The default just shows the current date and time. - status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done - - colors { - statusline #ffffff - background #323232 - inactive_workspace #32323200 #32323200 #5c5c5c - } -} - -include ${sway}/etc/sway/config.d/* -'' diff --git a/modules/workstation/windowing/sway/default.nix b/modules/workstation/windowing/sway/default.nix index d3dc1daddc07..0cc69f53ab3a 100644 --- a/modules/workstation/windowing/sway/default.nix +++ b/modules/workstation/windowing/sway/default.nix @@ -1,8 +1,26 @@ { pkgs, ... }: +let + config = pkgs.runCommand "sway-config" { inherit status_command; } '' + substituteAll ${./config.in} $out + ''; + + status_command = with pkgs; + runCommand "status_command" { inherit execline; } '' + substituteAll ${./status_command.in} $out + chmod +x $out + ''; + + choose_workspace = with pkgs; + runCommand "choose_workspace" { inherit execline jq; } '' + substituteAll ${./choose_workspace.in} $out + chmod +x $out + ''; + { + environment.systemPackages = with pkgs; [ choose ]; + programs.sway-beta.enable = true; - xdg.config.users.qyliss.paths."sway/config" = - with pkgs; writeText "sway-config" (callPackage ./config.nix {}); + xdg.config.users.qyliss.paths."sway/config" = config; } diff --git a/modules/workstation/windowing/sway/status_command.in b/modules/workstation/windowing/sway/status_command.in new file mode 100644 index 000000000000..fda3ed7602e9 --- /dev/null +++ b/modules/workstation/windowing/sway/status_command.in @@ -0,0 +1,22 @@ +#! @execline@/bin/execlineb + +loopwhilex { + foreground { + backtick -i -n status { cat /sys/class/power_supply/BAT0/status } + importas -i -u status status + + ifelse { test $status = Charging } + { printf "↑" } + + printf "↓" + } + + foreground { + redirfd -r 0 /sys/class/power_supply/BAT0/capacity + tr -d "\n" + } + + foreground { printf "%% " } + + date "+%Y-%m-%d %H:%M:%S" +} -- cgit 1.4.1