aboutsummaryrefslogtreecommitdiff
path: root/sway-de
diff options
context:
space:
mode:
Diffstat (limited to 'sway-de')
-rw-r--r--sway-de/config/foot/foot.ini162
-rw-r--r--sway-de/config/mako/config4
-rw-r--r--sway-de/config/sway/config263
-rw-r--r--sway-de/config/swaylock/config2
-rw-r--r--sway-de/config/waybar/config81
-rw-r--r--sway-de/config/waybar/style.css77
-rw-r--r--sway-de/config/wob/wob.ini6
-rw-r--r--sway-de/config/wofi/style.css41
-rwxr-xr-xsway-de/install.sh56
-rwxr-xr-xsway-de/local/bin/dmenu-wl5
-rwxr-xr-xsway-de/local/bin/dnf-needs-restarting26
-rwxr-xr-xsway-de/local/bin/setbright30
-rwxr-xr-xsway-de/local/bin/setvol30
-rw-r--r--sway-de/local/share/systemd/user/lxpolkit.service15
-rw-r--r--sway-de/local/share/systemd/user/mako.service19
-rw-r--r--sway-de/local/share/systemd/user/udiskie.service15
-rw-r--r--sway-de/local/share/systemd/user/wob.service13
-rw-r--r--sway-de/local/share/systemd/user/wob.socket9
18 files changed, 854 insertions, 0 deletions
diff --git a/sway-de/config/foot/foot.ini b/sway-de/config/foot/foot.ini
new file mode 100644
index 0000000..ece9c04
--- /dev/null
+++ b/sway-de/config/foot/foot.ini
@@ -0,0 +1,162 @@
+# -*- conf -*-
+
+# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
+# term=foot (or xterm-256color if built with -Dterminfo=disabled)
+# login-shell=no
+
+font=Cascadia Mono PL Light:size=9
+font-bold=Cascadia Mono PL:size=9
+# font-bold=<bold variant of regular font>
+# font-italic=<italic variant of regular font>
+# font-bold-italic=<bold+italic variant of regular font>
+# line-height=<font metrics>
+# letter-spacing=0
+# horizontal-letter-offset=0
+# vertical-letter-offset=0
+# box-drawings-uses-font-glyphs=no
+dpi-aware=yes
+
+# initial-window-size-pixels=700x500 # Or,
+# initial-window-size-chars=<COLSxROWS>
+# initial-window-mode=windowed
+# pad=2x2 # optionally append 'center'
+# resize-delay-ms=100
+
+# notify=notify-send -a foot -i foot ${title} ${body}
+# url-launch=xdg-open ${url}
+
+# bold-text-in-bright=no
+# bell=none
+# word-delimiters=,│`|:"'()[]{}<>
+# jump-label-letters=sadfjklewcmpgh
+# selection-target=primary
+# workers=<number of logical CPUs>
+# osc8-underline=url-mode
+
+[scrollback]
+# lines=1000
+# multiplier=3.0
+# indicator-position=relative
+# indicator-format=
+
+[cursor]
+# style=block
+# color=111111 dcdccc
+# blink=no
+
+[mouse]
+hide-when-typing=yes
+# alternate-scroll-mode=yes
+
+[colors]
+# alpha=1.0
+background=0xeff0f2
+foreground=0x4a4b4e
+regular0=0x4a4b4e
+regular1=0xa32a3a
+regular2=0x206620
+regular3=0x745300
+regular4=0x4b529a
+regular5=0x8d377e
+regular6=0x086784
+regular7=0xdee2e0
+bright0=0x676364
+bright1=0xa64822
+bright2=0x187408
+bright3=0x8b590a
+bright4=0x5c59b2
+bright5=0x8e45a8
+bright6=0x3f649c
+bright7=0xeff0f2
+
+background=0xffffff
+foreground=0x4a484d
+regular0=0x4a484d
+regular1=0xa50000
+regular2=0x005d26
+regular3=0x714700
+regular4=0x1d3ccf
+regular5=0x88267a
+regular6=0x185570
+regular7=0xefefef
+bright0=0x5e4b4f
+bright1=0x992030
+bright2=0x4a5500
+bright3=0x8a3600
+bright4=0x2d45b0
+bright5=0x700dc9
+bright6=0x005289
+bright7=0xffffff
+
+
+# selection-foreground=<inverse foreground/background>
+# selection-background=<inverse foreground/background>
+# jump-labels=<regular0> <regular3>
+# urls=<regular3>
+
+[csd]
+# preferred=server
+# size=26
+# color=<foreground color>
+# button-width=26
+# button-minimize-color=<regular4>
+# button-maximize-color=<regular2>
+# button-close-color=<regular1>
+
+[key-bindings]
+# scrollback-up-page=Shift+Page_Up
+# scrollback-up-half-page=none
+# scrollback-up-line=none
+# scrollback-down-page=Shift+Page_Down
+# scrollback-down-half-page=none
+# scrollback-down-line=none
+# clipboard-copy=Control+Shift+c
+# clipboard-paste=Control+Shift+v
+# primary-paste=Shift+Insert
+# search-start=Control+Shift+r
+# font-increase=Control+plus Control+equal Control+KP_Add
+# font-decrease=Control+minus Control+KP_Subtract
+# font-reset=Control+0 Control+KP_0
+# spawn-terminal=Control+Shift+n
+# minimize=none
+# maximize=none
+# fullscreen=none
+# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
+# pipe-selected=[xargs -r firefox] none
+# show-urls-launch=Control+Shift+u
+# show-urls-copy=none
+
+[search-bindings]
+# cancel=Control+g Escape
+# commit=Return
+# find-prev=Control+r
+# find-next=Control+s
+# cursor-left=Left Control+b
+# cursor-left-word=Control+Left Mod1+b
+# cursor-right=Right Control+f
+# cursor-right-word=Control+Right Mod1+f
+# cursor-home=Home Control+a
+# cursor-end=End Control+e
+# delete-prev=BackSpace
+# delete-prev-word=Mod1+BackSpace Control+BackSpace
+# delete-next=Delete
+# delete-next-word=Mod1+d Control+Delete
+# extend-to-word-boundary=Control+w
+# extend-to-next-whitespace=Control+Shift+w
+# clipboard-paste=Control+v Control+y
+# primary-paste=Shift+Insert
+
+#[url-bindings]
+# cancel=Control+g Control+d Escape
+# toggle-url-visible=t
+
+[mouse-bindings]
+# primary-paste=BTN_MIDDLE
+# select-begin=BTN_LEFT
+# select-begin-block=Control+BTN_LEFT
+# select-extend=BTN_RIGHT
+# select-extend-character-wise=Control+BTN_RIGHT
+# select-word=BTN_LEFT-2
+# select-word-whitespace=Control+BTN_LEFT-2
+# select-row=BTN_LEFT-3
diff --git a/sway-de/config/mako/config b/sway-de/config/mako/config
new file mode 100644
index 0000000..44d0f83
--- /dev/null
+++ b/sway-de/config/mako/config
@@ -0,0 +1,4 @@
+font=Noto Sans 10
+background-color=#efefef
+text-color=#4a484d
+border-color=#005289
diff --git a/sway-de/config/sway/config b/sway-de/config/sway/config
new file mode 100644
index 0000000..daca478
--- /dev/null
+++ b/sway-de/config/sway/config
@@ -0,0 +1,263 @@
+### 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 foot
+# Your preferred application launcher
+# Note: pass the final command to swaymsg so that the resulting window can be opened
+# on the original workspace that the command was run on.
+#set $menu dmenu_path | dmenu | xargs swaymsg exec --
+set $menu wofi --show=drun | xargs swaymsg exec --
+
+font Noto Sans 9
+default_border pixel 1
+smart_borders on
+
+### Output configuration
+#
+output * background ~/.local/share/backgrounds/default 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 -w \
+# timeout 300 'swaylock -f -c 000000' \
+# timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
+# before-sleep 'swaylock -f -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.
+
+ exec swayidle -w \
+ timeout 300 'swaylock -f' \
+ timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
+ before-sleep 'swaylock -f'
+
+### 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 "type:keyboard" {
+ xkb_options ctrl:nocaps
+ }
+
+### 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'
+ bindsym $mod+Shift+i exec swaylock
+
+ # Media keys
+ bindsym XF86AudioRaiseVolume exec ~/.local/bin/setvol up
+ bindsym XF86AudioLowerVolume exec ~/.local/bin/setvol down
+ bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
+ bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
+ bindsym XF86MonBrightnessDown exec ~/.local/bin/setbright down
+ bindsym XF86MonBrightnessUp exec ~/.local/bin/setbright up
+ #bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
+ #bindsym XF86MonBrightnessUp exec brightnessctl set +5%
+ #bindsym XF86AudioPlay exec playerctl play-pause
+ #bindsym XF86AudioNext exec playerctl next
+ #bindsym XF86AudioPrev exec playerctl previous
+
+#
+# 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 number 1
+ bindsym $mod+2 workspace number 2
+ bindsym $mod+3 workspace number 3
+ bindsym $mod+4 workspace number 4
+ bindsym $mod+5 workspace number 5
+ bindsym $mod+6 workspace number 6
+ bindsym $mod+7 workspace number 7
+ bindsym $mod+8 workspace number 8
+ bindsym $mod+9 workspace number 9
+ bindsym $mod+0 workspace number 10
+ # Move focused container to workspace
+ bindsym $mod+Shift+1 move container to workspace number 1
+ bindsym $mod+Shift+2 move container to workspace number 2
+ bindsym $mod+Shift+3 move container to workspace number 3
+ bindsym $mod+Shift+4 move container to workspace number 4
+ bindsym $mod+Shift+5 move container to workspace number 5
+ bindsym $mod+Shift+6 move container to workspace number 6
+ bindsym $mod+Shift+7 move container to workspace number 7
+ bindsym $mod+Shift+8 move container to workspace number 8
+ bindsym $mod+Shift+9 move container to workspace number 9
+ bindsym $mod+Shift+0 move container to workspace number 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"
+
+#
+# Theme Colors
+#
+# derived from tempus totus
+# https://gitlab.com/protesilaos/tempus-themes
+#
+# efefef : white
+# 4a484d : black
+# 005289 : bright cyan
+# 992030 : bright red
+
+# border bg text ind c_border
+client.focused #005289 #efefef #4a484d #992030 #005289
+client.focused_inactive #efefef #efefef #4a484d #992030 #efefef
+client.unfocused #efefef #efefef #4a484d #992030 #efefef
+
+#
+# Status Bar: waybar
+#
+
+bar {
+ swaybar_command waybar
+}
+
+#
+# System sway config
+#
+
+include /etc/sway/config.d/*.conf
+
+#
+# Apps
+#
+
+for_window [app_id="firefox"] inhibit_idle fullscreen
+assign [app_id="firefox"] workspace number 1
+
+workspace 2
+exec $term
+exec firefox &
+
+bindsym $mod+comma exec PATH=~/.local/bin:$PATH /usr/bin/passmenu
+
diff --git a/sway-de/config/swaylock/config b/sway-de/config/swaylock/config
new file mode 100644
index 0000000..f8ceefc
--- /dev/null
+++ b/sway-de/config/swaylock/config
@@ -0,0 +1,2 @@
+image=~/.local/share/backgrounds/default
+ignore-empty-password
diff --git a/sway-de/config/waybar/config b/sway-de/config/waybar/config
new file mode 100644
index 0000000..17bade2
--- /dev/null
+++ b/sway-de/config/waybar/config
@@ -0,0 +1,81 @@
+[
+ {
+ "name": "topbar",
+ "layer": "bottom",
+ "position": "top",
+ "height": 0,
+ "modules-left": ["sway/workspaces", "sway/mode"],
+ "modules-center": [],
+ "modules-right": ["tray", "custom/reboot", "network#wifi", "pulseaudio", "battery#bat1", "temperature", "idle_inhibitor", "clock#local"],
+ "sway/workspaces": {
+ "format": "{icon}",
+ "format-icons": {
+ "1": "",
+ "2": ""
+ }
+ },
+ "clock#local": {
+ "interval": 1,
+ "format": "{:%a %d %b %I:%M %p}",
+ "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
+ "today-format": "<b>{}</b>"
+ },
+ "temperature": {
+ "critical-threshold": 80,
+ "format": "{icon}",
+ "format-icons": ["", "", "", "", ""],
+ "tooltip-format": "Temperature: {temperatureC}°C"
+ },
+ "battery#bat1": {
+ "bat": "BAT0",
+ "adapter": "AC",
+ "interval": 60,
+ "states": {
+ "5": 100,
+ "4": 80,
+ "3": 60,
+ "2": 40,
+ "1": 20,
+ "0": 5
+ },
+ "format": "{icon}",
+ "format-charging": "",
+ "format-icons": ["", "", "", "", ""],
+ "tooltip-format": "Battery: {capacity}%\n{timeTo}"
+ },
+ "network#wifi": {
+ "interface": "wlp*",
+ "format-ethernet": "",
+ "format-wifi": "",
+ "format-linked": "",
+ "format-disconnected": "",
+ "tooltip-format": "Signal: {signalStrength}%\n{essid}\n{ifname}: {ipaddr}/{cidr}",
+ "on-click": "gnome-control-center wifi"
+ },
+ "pulseaudio": {
+ "scroll-step": 1,
+ "format": "{icon}",
+ "format-muted": "",
+ "format-icons": {
+ "headphone": "",
+ "default": ["", ""]
+ },
+ "tooltip-format": "Volume: {volume}%\n{desc}",
+ "on-click": "gnome-control-center sound"
+ },
+ "idle_inhibitor": {
+ "format": "{icon}",
+ "format-icons": {
+ "activated": "",
+ "deactivated": ""
+ },
+ "tooltip": false
+ },
+ "custom/reboot": {
+ "format": "{}",
+ "exec": "~/.local/bin/dnf-needs-restarting",
+ "return-type": "json",
+ "interval": 60
+ }
+ }
+]
diff --git a/sway-de/config/waybar/style.css b/sway-de/config/waybar/style.css
new file mode 100644
index 0000000..3866d6f
--- /dev/null
+++ b/sway-de/config/waybar/style.css
@@ -0,0 +1,77 @@
+* {
+ border-radius: 0;
+ border: 0;
+ font-family: "Noto Sans", "Font Awesome 5 Free";
+ font-size: 11pt;
+ text-shadow: none;
+}
+
+window#waybar {
+ background: #ffffff;
+ color: #4a484d;
+ border-bottom: 1px solid #efefef;
+ border-left: 5px solid black;
+ border-right: 5px solid black;
+}
+
+.modules-left, .modules-center, .modules-right {
+ background: #ffffff;
+ border-bottom: 1px solid #efefef;
+}
+
+.modules-left {
+ border-radius: 5px 0 0 0;
+ padding-left: 5px;
+}
+
+.modules-right {
+ border-radius: 0 5px 0 0;
+}
+
+tooltip {
+ background: alpha(#fafafa, 0.95);
+ border: 1px solid #ddd;
+}
+
+tooltip label {
+ color: #4a484d;
+}
+
+label {
+ padding: 2px 10px;
+ margin: 0;
+}
+
+#workspaces label {
+ padding: 0;
+}
+
+#workspaces button {
+ padding: 0 6px;
+ font-weight: normal;
+}
+
+#workspaces button:hover {
+ box-shadow: inherit;
+ text-shadow: inherit;
+ background: #ffffff;
+}
+
+#workspaces button.focused {
+ background: #efefef;
+}
+
+#idle_inhibitor {
+ margin: 0;
+ padding: 2px 12px 2px 6px;
+}
+
+#idle_inhibitor.activated {
+ color: #ffffff;
+ background: #a50000;
+ text-shadow: 1px 1px 0 #992030;
+}
+
+#custom-reboot {
+ color: #a50000;
+}
diff --git a/sway-de/config/wob/wob.ini b/sway-de/config/wob/wob.ini
new file mode 100644
index 0000000..ab4ffcb
--- /dev/null
+++ b/sway-de/config/wob/wob.ini
@@ -0,0 +1,6 @@
+border_color=5e4b4f
+background_color=efefef
+bar_color=5e4b4f
+border_offset=0
+border_size=1
+bar_padding=5
diff --git a/sway-de/config/wofi/style.css b/sway-de/config/wofi/style.css
new file mode 100644
index 0000000..5cfaf6c
--- /dev/null
+++ b/sway-de/config/wofi/style.css
@@ -0,0 +1,41 @@
+window {
+ background: #efefef;
+ color: #4a484d;
+ font-family: Noto Sans;
+ font-size: 11pt;
+ border: 1px solid #5e4b4f;
+}
+
+#input {
+ padding: 2px;
+ margin: 5px;
+ border: 0;
+ border-radius: 0;
+}
+
+#input:active {
+ border: 0;
+}
+
+#inner-box {
+}
+
+#outer-box {
+}
+
+#scroll {
+ padding: 2px;
+ margin: 5px;
+}
+
+#text {
+ color: #4a484d;
+}
+
+#entry:selected #text{
+ color: #ffffff;
+}
+
+#entry:selected {
+ background: #2d45b0;
+}
diff --git a/sway-de/install.sh b/sway-de/install.sh
new file mode 100755
index 0000000..62ab544
--- /dev/null
+++ b/sway-de/install.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+#
+# Designed for Fedora Workstation
+#
+# Installs and configures sway and related tools to provide a richer
+# "desktop environment" style session. Relies on systemd for running
+# services as much as possible.
+
+set -euo pipefail
+
+while [[ $# -gt 0 ]]; do
+ case $1 in
+ --skip-packages)
+ skip_packages=1
+ shift
+ ;;
+ *)
+ shift
+ ;;
+ esac
+done
+
+if ! command -v dnf > /dev/null !! [ ! -f /etc/fedora-release ]; then
+ echo "doesn't seem to be fedora workstation"
+ exit 1
+fi
+
+if [ -z "$skip_packages" ]; then
+
+ # install rpmfusion if it's not already installed
+ repos_installed=$(dnf --cacheonly repolist | tail -n+2 | cut -f1 -d' ' | egrep -x 'rpmfusion-free|rpmfusion-nonfree' | wc -l)
+ if [ "$repos_installed" -lt "2" ]; then
+ sudo dnf install \
+ https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
+ https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
+ fi
+
+ # install packages
+ sudo dnf install \
+ sway waybar wob wofi foot lxpolkit mako cascadia-mono-pl-fonts \
+ udiskie libappindicator-gtk3 duplicity python3-b2sdk pass passmenu \
+ brightnessctl vlc unzip vim wget git zsh stow
+
+fi
+
+# use stow to install config files
+stow \
+ --verbose \
+ --dir /home/matt/.dotfiles/sway-de \
+ --target /home/matt/.config \
+ --stow config
+stow \
+ --verbose \
+ --dir /home/matt/.dotfiles/sway-de \
+ --target /home/matt/.local \
+ --stow local
diff --git a/sway-de/local/bin/dmenu-wl b/sway-de/local/bin/dmenu-wl
new file mode 100755
index 0000000..7ac2273
--- /dev/null
+++ b/sway-de/local/bin/dmenu-wl
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+set -euo pipefail
+
+wofi -d "$@"
diff --git a/sway-de/local/bin/dnf-needs-restarting b/sway-de/local/bin/dnf-needs-restarting
new file mode 100755
index 0000000..a080649
--- /dev/null
+++ b/sway-de/local/bin/dnf-needs-restarting
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+set -eo pipefail
+
+if command -v dnf > /dev/null; then
+ DNFCMD="dnf"
+fi
+if command -v jq > /dev/null; then
+ JQCMD="jq"
+fi
+if [ -z "$DNFCMD" ] || [ -z "$JQCMD" ]; then
+ echo "{\"tooltip\": \"requires 'jq' and 'dnf'\", \"text\": \"\"}"
+ exit 1
+fi
+
+set -u
+
+if ! output="$($DNFCMD needs-restarting -r)"; then
+ icon=""
+else
+ icon=""
+fi
+
+# this is a literal expression for `jq`
+# shellcheck disable=SC2016
+$JQCMD --unbuffered -n -c '{tooltip: $ARGS.positional[0], text: $ARGS.positional[1]}' --args "$output" "$icon"
diff --git a/sway-de/local/bin/setbright b/sway-de/local/bin/setbright
new file mode 100755
index 0000000..7d2784a
--- /dev/null
+++ b/sway-de/local/bin/setbright
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+set -euo pipefail
+
+wobsock="$XDG_RUNTIME_DIR/wob.sock"
+if [ ! -p "$wobsock" ]; then
+ echo $wobsock
+ echo "communication socket not found"
+ exit 2
+fi
+
+current=$(brightnessctl -m info | cut -d, -f4 | tr --delete '%')
+case $1 in
+ up)
+ increment=$(( 5 - ( current % 5 ) ))
+ new=$(( current + increment ))
+ if [ $new -gt 100 ]; then
+ new=100
+ fi
+ brightnessctl set $new% > /dev/null 2>&1
+ echo $new > $wobsock;;
+ down)
+ increment=$(( ( ( current - 1 ) % 5 ) + 1 ))
+ new=$(( current - increment ))
+ if [ $new -lt 0 ]; then
+ new=0
+ fi
+ brightnessctl set $new% > /dev/null 2>&1
+ echo $new > $wobsock;;
+esac
diff --git a/sway-de/local/bin/setvol b/sway-de/local/bin/setvol
new file mode 100755
index 0000000..f8bb4df
--- /dev/null
+++ b/sway-de/local/bin/setvol
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+set -euo pipefail
+
+wobsock="$XDG_RUNTIME_DIR/wob.sock"
+if [ ! -p "$wobsock" ]; then
+ echo $wobsock
+ echo "communication socket not found"
+ exit 2
+fi
+
+current_volume=$(pactl get-sink-volume @DEFAULT_SINK@ | grep Volume | sed -e 's/.* \([0-9][0-9]*\)%.*/\1/')
+case $1 in
+ up)
+ increment=$(( 5 - ( current_volume % 5 ) ))
+ newvol=$(( current_volume + increment ))
+ if [ $newvol -gt 100 ]; then
+ newvol=100
+ fi
+ pactl set-sink-volume @DEFAULT_SINK@ $newvol%
+ echo $newvol > $wobsock;;
+ down)
+ increment=$(( ( ( current_volume - 1 ) % 5 ) + 1 ))
+ newvol=$(( current_volume - increment ))
+ if [ $newvol -lt 0 ]; then
+ newvol=0
+ fi
+ pactl set-sink-volume @DEFAULT_SINK@ $newvol%
+ echo $newvol > $wobsock;;
+esac
diff --git a/sway-de/local/share/systemd/user/lxpolkit.service b/sway-de/local/share/systemd/user/lxpolkit.service
new file mode 100644
index 0000000..98697d7
--- /dev/null
+++ b/sway-de/local/share/systemd/user/lxpolkit.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Simple PolicyKit authentication agent developed for LXDE
+PartOf=sway-session.target
+After=sway-session.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/lxpolkit
+ExecStop=/bin/kill -2 $MAINPID
+Restart=on-failure
+RestartSec=1
+TimeoutStopSec=10
+
+[Install]
+WantedBy=sway-session.target
diff --git a/sway-de/local/share/systemd/user/mako.service b/sway-de/local/share/systemd/user/mako.service
new file mode 100644
index 0000000..c05b06b
--- /dev/null
+++ b/sway-de/local/share/systemd/user/mako.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=Lightweight Wayland notification daemon
+Documentation=man:mako(1)
+PartOf=sway-session.target
+After=sway-session.target
+
+[Service]
+Type=dbus
+BusName=org.freedesktop.Notifications
+ExecCondition=/bin/sh -c '[ -n "$WAYLAND_DISPLAY" ]'
+ExecStart=/usr/bin/mako
+ExecReload=/usr/bin/makoctl reload
+ExecStop=/bin/kill -2 $MAINPID
+Restart=on-failure
+RestartSec=1
+TimeoutStopSec=10
+
+[Install]
+WantedBy=sway-session.target
diff --git a/sway-de/local/share/systemd/user/udiskie.service b/sway-de/local/share/systemd/user/udiskie.service
new file mode 100644
index 0000000..ba7e7f0
--- /dev/null
+++ b/sway-de/local/share/systemd/user/udiskie.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Handle automounting of usb devices
+Documentation=man:udiskie(1)
+PartOf=sway-session.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/udiskie -s
+ExecStop=/bin/kill -2 $MAINPID
+Restart=on-failure
+RestartSec=1
+TimeoutStopSec=10
+
+[Install]
+WantedBy=sway-session.target
diff --git a/sway-de/local/share/systemd/user/wob.service b/sway-de/local/share/systemd/user/wob.service
new file mode 100644
index 0000000..1193b30
--- /dev/null
+++ b/sway-de/local/share/systemd/user/wob.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=A lightweight overlay volume/backlight/progress/anything bar for Wayland
+Documentation=man:wob(1)
+PartOf=sway-session.target
+After=sway-session.target
+ConditionEnvironment=WAYLAND_DISPLAY
+
+[Service]
+StandardInput=socket
+ExecStart=/usr/bin/wob
+
+[Install]
+WantedBy=sway-session.target
diff --git a/sway-de/local/share/systemd/user/wob.socket b/sway-de/local/share/systemd/user/wob.socket
new file mode 100644
index 0000000..01296d8
--- /dev/null
+++ b/sway-de/local/share/systemd/user/wob.socket
@@ -0,0 +1,9 @@
+[Socket]
+ListenFIFO=%t/wob.sock
+SocketMode=0600
+RemoveOnStop=on
+# If wob exits on invalid input, systemd should NOT shove following input right back into it after it restarts
+FlushPending=yes
+
+[Install]
+WantedBy=sockets.target