From 770dc8f0b2c22e50310d872eeaf678c7c4afb55d Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Tue, 30 Oct 2018 13:00:27 +0100 Subject: [sway] add inital sway config --- config/sway/config | 301 ++++++++++++++++++++++++++++++++++++++++++++++ config/sway/conky-swaybar | 13 ++ config/sway/conkyrc.json | 107 ++++++++++++++++ setup.py | 3 + 4 files changed, 424 insertions(+) create mode 100644 config/sway/config create mode 100755 config/sway/conky-swaybar create mode 100644 config/sway/conkyrc.json diff --git a/config/sway/config b/config/sway/config new file mode 100644 index 0000000..04d7f63 --- /dev/null +++ b/config/sway/config @@ -0,0 +1,301 @@ +# Default config for sway +# +# Copy this to ~/.config/sway/config and edit it to your liking. +# +# Read `man 5 sway` for a complete reference. + +### Variables +# +# Logo key. Use Mod1 for Alt. +set $mod Mod4 + +# Home row direction keys, like vim +set $left h +set $down j +set $up k +set $right l +# Your preferred terminal emulator +set $term termite +# Your preferred application launcher +# Note: it's recommended that you pass the final command to sway +set $menu dmenu_path | dmenu | xargs swaymsg exec + +### Output configuration +# +# Default wallpaper (more resolutions are available in __DATADIR__/backgrounds/sway/) +output * bg $DOTFILES_LOCATION/wallpapers/nsa_wallpaper.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 +output HDMI-A-1 resolution 1920x1080 position 1920,0 +output eDP-1 resolution 1920x1080 position 0,0 + +### 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 600 seconds, and turn your screens back on when +# resumed. It will also lock your screen before your computer goes to sleep. +exec swayidle \ + timeout 300 'swaylock -c 000000' \ + timeout 600 'swaymsg "output * dpms off"' \ + resume 'swaymsg "output * dpms on"' \ + before-sleep 'swaylock -c 000000' + +### 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 "1739:10036:Synaptics_s3203" { + dwt enabled + tap enabled + natural_scroll enabled + middle_emulation enabled +} +input "5426:512:Razer_Reclusa_Keyboard" { + xkb_layout de + xkb_variant nodeadkeys + xkb_options grp:alt_shift_toggle + xkb_options caps:escape +} +input "1:1:AT_Translated_Set_2_keyboard" { + xkb_layout de + xkb_variant nodeadkeys + xkb_options grp:alt_shift_toggle + xkb_options caps:escape +} + +### 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:www + bindsym $mod+3 workspace 3:work + 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:mail + bindsym $mod+9 workspace 9:music + 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:www + bindsym $mod+Shift+3 move container to workspace 3:work + 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:mail + bindsym $mod+Shift+9 move container to workspace 9:music + 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. + + assign [class=qutebrowser] "2:www" + + assign [class=Signal] 7 + assign [title=lumail2] "8:mail" + # Maybe this works someday + assign [class=Spotify] "9:music" + + # Assign workspaces to screens + workspace 1 output HDMI-A-1 + workspace "2 www" output HDMI-A-1 + workspace "3:work" output HDMI-A-1 + workspace "7" output eDP-1 + workspace "8:mail" output eDP-1 + workspace "9:music" output eDP-1 + +# +# 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" + +# +# Audio shortcuts +# +# Volume +bindsym --locked XF86AudioLowerVolume exec $DOTFILES_LOCATION/scripts/audio_control.sh -5 +bindsym --locked XF86AudioRaiseVolume exec $DOTFILES_LOCATION/scripts/audio_control.sh +5 +bindsym --locked XF86AudioMute exec $DOTFILES_LOCATION/scripts/audio_control.sh toggle +# Music +bindsym --locked XF86AudioPrev exec $DOTFILES_LOCATION/scripts/media_control.sh prev +bindsym --locked XF86AudioPlay exec $DOTFILES_LOCATION/scripts/media_control.sh toggle +bindsym --locked XF86AudioNext exec $DOTFILES_LOCATION/scripts/media_control.sh next + +# Suspend +bindsym $mod+F7 exec systemctl suspend + +#hide borders +new_window pixel 3 +hide_edge_borders smart + +# +# Status bar +# +# Read `man 5 sway-bar` for more information about this section. +bar { + position bottom + + # 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 + } + status_command $HOME/.config/sway/conky-swaybar +} + +# +# Session +# + +# Unlock GPG key +exec --no-startup-id bash -c "echo | gpg -s > /dev/null" + +# Start notification service +exec --no-startup-id mako + +# Start notification service +# exec --no-startup-id nextcloud + +# Start touchpad daemon +exec --no-startup-id syndaemon -i 1 -d + +# Start email sync +exec --no-startup-id systemctl --user start offlineimap@FAU.service +exec --no-startup-id systemctl --user start offlineimap@MUHQ.service +exec --no-startup-id systemctl --user start offlineimap@SNFMT.service + +include /etc/sway/config.d/* diff --git a/config/sway/conky-swaybar b/config/sway/conky-swaybar new file mode 100755 index 0000000..56159c3 --- /dev/null +++ b/config/sway/conky-swaybar @@ -0,0 +1,13 @@ +#!/bin/sh + +# Send the header so that i3bar knows we want to use JSON: +echo '{"version":1}' + +# Begin the endless array. +echo '[' + +# We send an empty first array of blocks to make the loop simpler: +echo '[],' + +# Now send blocks with information forever: +exec conky -c $HOME/.config/i3/conkyrc.json diff --git a/config/sway/conkyrc.json b/config/sway/conkyrc.json new file mode 100644 index 0000000..1c45da2 --- /dev/null +++ b/config/sway/conkyrc.json @@ -0,0 +1,107 @@ +conky.config = { + background = false, + out_to_x = false, + out_to_console = true, + update_interval = 1, + mpd_port = 6601, + + -- Network interface must have an ip address to be considered up + if_up_strictness = "address" +} + +conky.text = [[ +[ + #{"name": "uptime", "color":"\#ffffff", "full_text":"${uptime_short}"}, + + ################## cpu ################# + + #{"name": "cpuTemperature", "full_text": "${exec sensors | grep -A 1 'temp1' | cut -c13-16 | sed '/^$/d'}C"}, + + {"name": "cpuStart", "color" : "\#ffffff", "full_text": "CPU: [", "separator": false}, + + {"name": "cpu1", "color": ${if_match ${cpu cpu1}<89}"\#ffffff"${else}"\#ff0000"${endif}, + "full_text": "${cpu cpu1}%,", "separator": false}, + + {"name": "cpu2", "color": ${if_match ${cpu cpu2}<89}"\#ffffff"${else}"\#ff0000"${endif}, + + "full_text": "${cpu cpu2}%,", "separator": false}, + + {"name": "cpu3", "color": ${if_match ${cpu cpu3}<89}"\#ffffff"${else}"\#ff0000"${endif}, + "full_text": "${cpu cpu3}%,", "separator": false}, + + {"name": "cpu4", "color": ${if_match ${cpu cpu4}<89}"\#ffffff"${else}"\#ff0000"${endif}, + "full_text": "${cpu cpu4}%", "separator": false}, + + {"name": "cpuEnd", "color": "\#ffffff", "full_text": "]"}, + + + ################ memory ######################### + + {"name": "memory", "color": ${if_match ${memperc}<80}"\#ffffff"${else}"\#ff0000"${endif}, + "full_text": "RAM: ${memperc}%"}, + + #{"name": "disk", "color": "\#ffffff", "full_text": " ${fs_used_perc /}%"}, + + + ############### music/ spotify/ mpd ################### + + ${if_match "${nodename_short}"!="fishbowl"} + {"name":"music", "color": "\#ffffff", "full_text": "${exec $DOTFILES_LOCATION/scripts/media_status.sh}"}, + ${endif} + + + ########### networking ######################## + + ${if_up wlp2s0} + {"name":"wifi", "color": ${if_match ${wireless_link_qual_perc wlp2s0}>60}"\#339966"${else}"\#FF9200"${endif}, + "full_text": "${addr wlp2s0} ${wireless_link_qual_perc wlp2s0}%"}, + {"name":"download", "color":"\#ffffff", "full_text": "⤋: ${downspeed wlp2s0}"}, + + ${else} ${if_up enp0s20u1} + {"name":"ethernet", "color": "\#339966", "full_text": "IP: ${addr enp0s20u1} "}, + {"name":"download", "color":"\#ffffff", "full_text": "⤋: ${downspeed enp0s20u1}"}, + + ${else} ${if_up eth0} + {"name":"ethernet", "color": "\#339966", "full_text": "IP: ${addr eth0} "}, + {"name":"download", "color":"\#ffffff", "full_text": "⤋: ${downspeed eth0}"}, + + ${else} + {"name":"nonet", "full_text": "no connection" }, + ${endif} + ${endif} + ${endif} + + + ################ Volume ######################## + + {"name": "volume status", "color": "\#ffffff", "full_text": + "${exec $DOTFILES_LOCATION/scripts/audio_status.sh}"}, + + + ################# Battery #################### + + {"name": "battery","color": + ${if_match ${battery_percent BAT0}<50} + ${if_match ${battery_percent BAT0}<25}"\#ff0000" + ${else}"\#ff9200" + ${endif} + ${else}"\#ffffff" + ${endif}, "full_text": "${battery BAT0}"}, + + {"name": "battery","color": + ${if_match ${battery_percent BAT1}<50} + ${if_match ${battery_percent BAT1}<25}"\#ff0000" + ${else}"\#ff9200" + ${endif} + ${else}"\#ffffff" + ${endif}, "full_text": "${battery BAT1}"}, + + + ############### Time ################## + ${if_match "${nodename_short}"!="fishbowl"} + {"name": "marks", "color": "\#FFFFFF", + "full_text": "${exec fish -c 'mark get -r=3'}", "separator": false}, + ${endif} + {"name": "time", "color": "\#CFCFCF", "full_text": "${time %d/%m/%y} ${time %H:%M}"} +], +]] diff --git a/setup.py b/setup.py index 716cc43..d38b8f0 100755 --- a/setup.py +++ b/setup.py @@ -87,6 +87,9 @@ targets = { "i3": [("config/i3", config_dir + "/i3"), dotfile_loc_helper], + "sway": + [("config/sway", config_dir + "/sway"), + dotfile_loc_helper], "dir_colors": [("dir_colors", home_dir + "/.dir_colors")], "fish": -- cgit v1.2.3