summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorArenM2022-04-28 22:22:10 -0400
committerArenM2023-04-05 21:20:25 -0400
commite39ac8fee0451598b8b9997962b935886a1cbcad (patch)
treeafde85b41017beb9a6154b67cac6e1cb51f84adf
downloadaur-e39ac8fee0451598b8b9997962b935886a1cbcad.tar.gz
initial commit
This is forked from the sxmo-utils package in danctnix https://github.com/dreemurrs-embedded/Pine64-Arch/blob/master/PKGBUILDS/sxmo/sxmo-utils/PKGBUILD Notable changes include: - Add patches to use systemd instead of superd - Disable dwm variant. None of the sxmo versions of the suckless utilities are in the aur, and I don't want to maintain aur versions of them.
-rw-r--r--.SRCINFO105
-rw-r--r--00-sxmo.rules15
-rw-r--r--0001-alias-superd-to-systemd-user.patch71
-rw-r--r--0002-Use-sh-to-resolve-hooks-in-services.patch35
-rw-r--r--0003-Use-KillMode-process-so-systemd-doesn-t-stop-apps.patch24
-rw-r--r--0004-Remove-services-that-systemd-automatically-starts-fr.patch34
-rw-r--r--0005-Separate-services-that-are-provided-by-external-pack.patch199
-rw-r--r--0006-Add-BindsTo-to-services-so-they-stop-when-the-graphi.patch216
-rw-r--r--0007-start-stop-graphical-session.target.patch64
-rw-r--r--0008-Fix-quoting-of-strings-in-service-files.patch36
-rw-r--r--0009-Simplify-handling-of-XDG_RUNTIME_DIR.patch88
-rw-r--r--10-sxmo.conf2
-rw-r--r--PKGBUILD158
-rw-r--r--sxmo-setpermissions.service6
14 files changed, 1053 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..b90771fa78ee
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,105 @@
+pkgbase = sxmo-utils-git
+ pkgdesc = Utility scripts, programs, and configs that hold the sxmo UI environment together
+ pkgver = 1.14.1.r4.e8ddbc8
+ pkgrel = 1
+ url = https://git.sr.ht/~mil/sxmo-utils
+ arch = x86_64
+ arch = aarch64
+ license = AGPL3
+ makedepends = libx11
+ makedepends = xorgproto
+ makedepends = linux-headers
+ makedepends = busybox
+ makedepends = scdoc
+ makedepends = git
+ source = git+https://git.sr.ht/~mil/sxmo-utils
+ source = 00-sxmo.rules
+ source = 10-sxmo.conf
+ source = sxmo-setpermissions.service
+ source = 0001-alias-superd-to-systemd-user.patch
+ source = 0002-Use-sh-to-resolve-hooks-in-services.patch
+ source = 0003-Use-KillMode-process-so-systemd-doesn-t-stop-apps.patch
+ source = 0004-Remove-services-that-systemd-automatically-starts-fr.patch
+ source = 0005-Separate-services-that-are-provided-by-external-pack.patch
+ source = 0006-Add-BindsTo-to-services-so-they-stop-when-the-graphi.patch
+ source = 0007-start-stop-graphical-session.target.patch
+ sha512sums = SKIP
+ sha512sums = 8a21e62b7ff0982a5406e98510a3004c62f883b9fae0cad5b63f6a7df520896b65c726321da515dab754a91ed94280922e3f424ecc983c1a33eb1ec287b268a2
+ sha512sums = b69a09f98f8a5cad8164cd48c5f6a78f2ce0e9818fb77ccf2a3e243cd0f2023e438022b20aad9e6b5edd90e1bb862326db79dc423630682d4c43e897090d3da1
+ sha512sums = 532c3045f52f872704876bdf56afbc7470c5d17e46655dd4040d545b6d3eb34a8791909e554c560471f9494c7382107839bcff1e48be242d5eea0092482165cd
+ sha512sums = 5eeb6a2d1ab9c4811b5bf602f00e2cc075b86f6a301110730b81850865443696d7a99e19432a53048017295c1d13de46dd897bd646be168903f34ee80128be37
+ sha512sums = 0a872028c1f3b9853a9c1e0c6c659612e1ecb8f1e83b6c1e3ef22e120c04d4347af9ab6987110fa22576b6fce20dd26cf5734725094df46e97bb89764a96f54e
+ sha512sums = 222696d8872dac5a6e72efb72fa058c116b6cbfbb889b727ba4abdaed5c4c5cbe64d5ff71fd1a90c16a14f4c4f9455440652b7c7a046a1b02fc1a444c3f950fb
+ sha512sums = d847b56a8a6a1f4e500f09ed1d7976a8ac7d24144e0c5265f5d72af46d211d32e676b69c33e3fd29ccbfb36080d521ea1719f41a8a06fd6a18318e01c5570ad5
+ sha512sums = c7d9317313a9333e8cb52ef55b9d427146458ff0e592004f7e11a7c0d0457da92386886fd07add0c84de89099b03db19a525705c1d9395bf2575c0be65267587
+ sha512sums = c74f51d2f6897ef0cb38f1ce7ac637352f9866f53bf491c2af86c80dbf73c4c80818dedd1d06cdb381ea73d115b875266a198f1a806ceda494ba735aade00215
+ sha512sums = f8c5674aeea993387d32672014ec7cffc8616ecfa5027c6da5e737754ffdf4b8fd00d5a99a7f5a67683b21159236d3131b93ebd70b64ecc9aa0042898f3bd020
+
+pkgname = sxmo-utils-git
+ depends = bc
+ depends = curl
+ depends = gawk
+ depends = gojq
+ depends = less
+ depends = net-tools
+ depends = pnc
+ depends = callaudiod
+ depends = opendoas
+ depends = geoclue
+ depends = inotify-tools
+ depends = mmsd-tng
+ depends = mnc
+ depends = modemmanager
+ depends = ncurses
+ depends = networkmanager
+ depends = vvmd
+ depends = xdg-user-dirs
+ depends = alsa-utils
+ depends = bluez
+ depends = bluez-utils
+ depends = libpulse
+ depends = pulseaudio
+ depends = pulseaudio-alsa
+ depends = conky
+ depends = dunst
+ depends = libnotify
+ depends = light
+ depends = lisgd
+ depends = mpv
+ depends = sxmo-ui
+ depends = ttf-dejavu-nerd
+ optdepends = bemenu-ncurses: sxmo menus over ssh
+ optdepends = bonsai: better multikey script
+ optdepends = clickclack: haptic feedback
+ optdepends = codemadness-frontends: Youtube & Reddit scripts
+ optdepends = iio-utils: proximitylock script
+ optdepends = mediainfo: sound recorder
+ optdepends = pipewire-pulse: recommended sound server
+ optdepends = sfeed: Rss and atom feeds
+ optdepends = vim: The default editor
+ optdepends = yt-dlp: Play videos from the web
+ provides = sxmo-utils
+ conflicts = sxmo-utils
+ backup = etc/doas.conf
+
+pkgname = sxmo-utils-sway-git
+ pkgdesc = Use sway as the window manager with sxmo
+ url = https://sr.ht/~mil/Sxmo/
+ arch = any
+ depends = bemenu-wayland
+ depends = foot
+ depends = grim
+ depends = mako
+ depends = slurp
+ depends = sway
+ depends = swaybg
+ depends = swayidle
+ depends = sxmo-utils-git
+ depends = wl-clipboard
+ depends = wob
+ depends = wtype
+ depends = wvkbd
+ depends = xorg-xwayland
+ optdepends = sway-git: better touch event handling
+ provides = sxmo-utils-sway
+ conflicts = sxmo-utils-sway
diff --git a/00-sxmo.rules b/00-sxmo.rules
new file mode 100644
index 000000000000..8d3bbe2b7186
--- /dev/null
+++ b/00-sxmo.rules
@@ -0,0 +1,15 @@
+polkit.addRule(function(action, subject) {
+ if (action.id.indexOf("org.freedesktop.ModemManager1.") == 0 &&
+ subject.isInGroup("network")) {
+
+ return polkit.Result.YES;
+ }
+});
+
+polkit.addRule(function(action, subject) {
+ if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 &&
+ subject.isInGroup("network")) {
+
+ return polkit.Result.YES;
+ }
+});
diff --git a/0001-alias-superd-to-systemd-user.patch b/0001-alias-superd-to-systemd-user.patch
new file mode 100644
index 000000000000..deb30825a43e
--- /dev/null
+++ b/0001-alias-superd-to-systemd-user.patch
@@ -0,0 +1,71 @@
+From fbcf02f44aeca0e0722d4c4b6732eae7179a93c5 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Wed, 16 Nov 2022 09:53:04 -0500
+Subject: [PATCH sxmo-utils 1/9] alias superd to systemd --user
+
+---
+ configs/default_hooks/sxmo_hook_contextmenu.sh | 2 +-
+ configs/default_hooks/sxmo_hook_start.sh | 7 +------
+ scripts/core/sxmo_appmenu.sh | 2 +-
+ scripts/core/sxmo_common.sh | 1 +
+ 4 files changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/configs/default_hooks/sxmo_hook_contextmenu.sh b/configs/default_hooks/sxmo_hook_contextmenu.sh
+index 07956f4..d89ac47 100755
+--- a/configs/default_hooks/sxmo_hook_contextmenu.sh
++++ b/configs/default_hooks/sxmo_hook_contextmenu.sh
+@@ -15,7 +15,7 @@ XPROPOUT="$(sxmo_wm.sh focusedwindow)"
+ WMCLASS="${1:-$(printf %s "$XPROPOUT" | grep app: | cut -d" " -f2- | tr '[:upper:]' '[:lower:]')}"
+
+ superd_service_isrunning() {
+- superctl status "$1" | grep -q started
++ systemctl --user is-active --quiet "$1" 2>/dev/null
+ }
+
+ sxmo_service_isrunning() {
+diff --git a/configs/default_hooks/sxmo_hook_start.sh b/configs/default_hooks/sxmo_hook_start.sh
+index 194814d..8140d6d 100755
+--- a/configs/default_hooks/sxmo_hook_start.sh
++++ b/configs/default_hooks/sxmo_hook_start.sh
+@@ -9,12 +9,7 @@
+ # Create xdg user directories, such as ~/Pictures
+ xdg-user-dirs-update
+
+-sxmo_daemons.sh start daemon_manager superd -v
+-
+-# let time to superd to start correctly
+-while ! superctl status > /dev/null 2>&1; do
+- sleep 0.5
+-done
++printenv | cut -d '=' -f 1 | xargs systemctl --user import-environment
+
+ # Load our sound daemons
+
+diff --git a/scripts/core/sxmo_appmenu.sh b/scripts/core/sxmo_appmenu.sh
+index e45a54c..07da1e2 100755
+--- a/scripts/core/sxmo_appmenu.sh
++++ b/scripts/core/sxmo_appmenu.sh
+@@ -19,7 +19,7 @@ confirm() {
+ }
+
+ supertoggle_daemon() {
+- if superctl status "$1" | grep -q started; then
++ if systemctl --user is-active "$1" 2>/dev/null; then
+ superctl stop "$1"
+ sxmo_notify_user.sh "$1 Stopped"
+ else
+diff --git a/scripts/core/sxmo_common.sh b/scripts/core/sxmo_common.sh
+index 16e7799..4c181d5 100755
+--- a/scripts/core/sxmo_common.sh
++++ b/scripts/core/sxmo_common.sh
+@@ -16,6 +16,7 @@ command -v shopt > /dev/null && shopt -s expand_aliases
+ alias dmenu="sxmo_dmenu.sh"
+ alias bemenu="sxmo_dmenu.sh"
+ alias jq="gojq" # better performances
++alias superctl="systemctl --user"
+
+ if ! command -v sxmobar > /dev/null; then
+ sxmobar() {
+--
+2.39.2
+
diff --git a/0002-Use-sh-to-resolve-hooks-in-services.patch b/0002-Use-sh-to-resolve-hooks-in-services.patch
new file mode 100644
index 000000000000..7ce388221259
--- /dev/null
+++ b/0002-Use-sh-to-resolve-hooks-in-services.patch
@@ -0,0 +1,35 @@
+From 4e4fa35e0538611fd4260bbd750e4367a4035be4 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Wed, 20 Apr 2022 20:37:03 -0400
+Subject: [PATCH sxmo-utils 2/9] Use sh to resolve hooks in services
+
+systemd uses a path configured at build time, so we need to use a shell
+to launch hooks in order to find them correctly.
+---
+ configs/superd/services/sxmo_desktop_widget.service | 2 +-
+ configs/superd/services/sxmo_hook_lisgd.service | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configs/superd/services/sxmo_desktop_widget.service b/configs/superd/services/sxmo_desktop_widget.service
+index c161bb1..199d9a6 100644
+--- a/configs/superd/services/sxmo_desktop_widget.service
++++ b/configs/superd/services/sxmo_desktop_widget.service
+@@ -4,4 +4,4 @@ Description=Sxmo: start desktop widget (ie. clock)
+ [Service]
+ Type=simple
+ Restart=always
+-ExecStart=sxmo_hook_desktop_widget.sh
++ExecStart=sh -c sxmo_hook_desktop_widget.sh
+diff --git a/configs/superd/services/sxmo_hook_lisgd.service b/configs/superd/services/sxmo_hook_lisgd.service
+index 202510c..182d995 100644
+--- a/configs/superd/services/sxmo_hook_lisgd.service
++++ b/configs/superd/services/sxmo_hook_lisgd.service
+@@ -4,4 +4,4 @@ Description=run user defined lisgd start hook
+ [Service]
+ Type=simple
+ Restart=always
+-ExecStart=sxmo_hook_lisgdstart.sh
++ExecStart=sh -c sxmo_hook_lisgdstart.sh
+--
+2.39.2
+
diff --git a/0003-Use-KillMode-process-so-systemd-doesn-t-stop-apps.patch b/0003-Use-KillMode-process-so-systemd-doesn-t-stop-apps.patch
new file mode 100644
index 000000000000..deb04493f32e
--- /dev/null
+++ b/0003-Use-KillMode-process-so-systemd-doesn-t-stop-apps.patch
@@ -0,0 +1,24 @@
+From 35dd52a0933be47ba01d865a89bc2a9352640702 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Sat, 23 Apr 2022 13:28:59 -0400
+Subject: [PATCH sxmo-utils 3/9] Use KillMode=process so systemd doesn't stop
+ apps
+
+Systemd kills processes by cgroup, not session, so the setsid calls in
+the inputhandler don't prevent this.
+---
+ configs/superd/services/sxmo_hook_lisgd.service | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/configs/superd/services/sxmo_hook_lisgd.service b/configs/superd/services/sxmo_hook_lisgd.service
+index 182d995..c671235 100644
+--- a/configs/superd/services/sxmo_hook_lisgd.service
++++ b/configs/superd/services/sxmo_hook_lisgd.service
+@@ -5,3 +5,4 @@ Description=run user defined lisgd start hook
+ Type=simple
+ Restart=always
+ ExecStart=sh -c sxmo_hook_lisgdstart.sh
++KillMode=process
+--
+2.39.2
+
diff --git a/0004-Remove-services-that-systemd-automatically-starts-fr.patch b/0004-Remove-services-that-systemd-automatically-starts-fr.patch
new file mode 100644
index 000000000000..8d79159b5bdc
--- /dev/null
+++ b/0004-Remove-services-that-systemd-automatically-starts-fr.patch
@@ -0,0 +1,34 @@
+From fc4aa1e203a142e46142bc6d013ae09b5bb3be9a Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Sat, 18 Feb 2023 14:40:03 -0500
+Subject: [PATCH sxmo-utils 4/9] Remove services that systemd automatically
+ starts from the start hook
+
+---
+ configs/default_hooks/sxmo_hook_start.sh | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/configs/default_hooks/sxmo_hook_start.sh b/configs/default_hooks/sxmo_hook_start.sh
+index 8140d6d..9697d8d 100755
+--- a/configs/default_hooks/sxmo_hook_start.sh
++++ b/configs/default_hooks/sxmo_hook_start.sh
+@@ -11,16 +11,6 @@ xdg-user-dirs-update
+
+ printenv | cut -d '=' -f 1 | xargs systemctl --user import-environment
+
+-# Load our sound daemons
+-
+-if [ "$(command -v pulseaudio)" ]; then
+- superctl start pulseaudio
+-elif [ "$(command -v pipewire)" ]; then
+- # pipewire-pulse will start pipewire
+- superctl start pipewire-pulse
+- superctl start wireplumber
+-fi
+-
+ # Periodically update some status bar components
+ sxmo_hook_statusbar.sh all
+ sxmo_daemons.sh start statusbar_periodics sxmo_run_aligned.sh 60 \
+--
+2.39.2
+
diff --git a/0005-Separate-services-that-are-provided-by-external-pack.patch b/0005-Separate-services-that-are-provided-by-external-pack.patch
new file mode 100644
index 000000000000..4345cf6b0c16
--- /dev/null
+++ b/0005-Separate-services-that-are-provided-by-external-pack.patch
@@ -0,0 +1,199 @@
+From 15e251ee6c53a195b8de0e699ae9dd9bf2fb6fa2 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Sat, 18 Feb 2023 15:01:06 -0500
+Subject: [PATCH sxmo-utils 5/9] Separate services that are provided by
+ external packages
+
+These services are provided by the packages for these things on distros
+that use systemd, so if the packager replaces superd with systemd they
+must be removed.
+---
+ Makefile | 15 ++++++++++++---
+ .../services => external-services}/dunst.service | 0
+ .../services => external-services}/mako.service | 0
+ .../mmsd-tng.service | 0
+ .../pipewire-pulse.service | 0
+ .../pipewire.service | 0
+ .../pulseaudio.service | 0
+ .../services => external-services}/vvmd.service | 0
+ .../wireplumber.service | 0
+ .../services/autocutsel-primary.service | 0
+ configs/{superd => }/services/autocutsel.service | 0
+ configs/{superd => }/services/bonsaid.service | 0
+ .../{superd => }/services/sxmo-x11-status.service | 0
+ .../services/sxmo_autosuspend.service | 0
+ .../services/sxmo_battery_monitor.service | 0
+ configs/{superd => }/services/sxmo_conky.service | 0
+ .../services/sxmo_desktop_widget.service | 0
+ .../{superd => }/services/sxmo_hook_lisgd.service | 0
+ .../services/sxmo_menumode_toggler.service | 0
+ .../services/sxmo_modemmonitor.service | 0
+ .../services/sxmo_networkmonitor.service | 0
+ .../services/sxmo_notificationmonitor.service | 0
+ .../services/sxmo_soundmonitor.service | 0
+ configs/{superd => }/services/sxmo_wob.service | 0
+ .../services/unclutter-xfixes.service | 0
+ configs/{superd => }/services/unclutter.service | 0
+ 26 files changed, 12 insertions(+), 3 deletions(-)
+ rename configs/{superd/services => external-services}/dunst.service (100%)
+ rename configs/{superd/services => external-services}/mako.service (100%)
+ rename configs/{superd/services => external-services}/mmsd-tng.service (100%)
+ rename configs/{superd/services => external-services}/pipewire-pulse.service (100%)
+ rename configs/{superd/services => external-services}/pipewire.service (100%)
+ rename configs/{superd/services => external-services}/pulseaudio.service (100%)
+ rename configs/{superd/services => external-services}/vvmd.service (100%)
+ rename configs/{superd/services => external-services}/wireplumber.service (100%)
+ rename configs/{superd => }/services/autocutsel-primary.service (100%)
+ rename configs/{superd => }/services/autocutsel.service (100%)
+ rename configs/{superd => }/services/bonsaid.service (100%)
+ rename configs/{superd => }/services/sxmo-x11-status.service (100%)
+ rename configs/{superd => }/services/sxmo_autosuspend.service (100%)
+ rename configs/{superd => }/services/sxmo_battery_monitor.service (100%)
+ rename configs/{superd => }/services/sxmo_conky.service (100%)
+ rename configs/{superd => }/services/sxmo_desktop_widget.service (100%)
+ rename configs/{superd => }/services/sxmo_hook_lisgd.service (100%)
+ rename configs/{superd => }/services/sxmo_menumode_toggler.service (100%)
+ rename configs/{superd => }/services/sxmo_modemmonitor.service (100%)
+ rename configs/{superd => }/services/sxmo_networkmonitor.service (100%)
+ rename configs/{superd => }/services/sxmo_notificationmonitor.service (100%)
+ rename configs/{superd => }/services/sxmo_soundmonitor.service (100%)
+ rename configs/{superd => }/services/sxmo_wob.service (100%)
+ rename configs/{superd => }/services/unclutter-xfixes.service (100%)
+ rename configs/{superd => }/services/unclutter.service (100%)
+
+diff --git a/Makefile b/Makefile
+index 0eba191..9c730fb 100644
+--- a/Makefile
++++ b/Makefile
+@@ -2,6 +2,13 @@ DESTDIR=
+ PREFIX:=/usr
+ SHAREDIR=$(PREFIX)/share
+ MANDIR=$(SHAREDIR)/man
++
++# use $(PREFIX)/lib/systemd/user for systemd integration
++SERVICEDIR:=$(PREFIX)/share/superd/services
++
++# Install services for packages outside sxmo
++EXTERNAL_SERVICES:=1
++
+ SCDOC=scdoc
+
+ .PHONY: install shellcheck
+@@ -93,9 +100,11 @@ install-scripts: $(PROGRAMS)
+ mkdir -p "$(DESTDIR)$(PREFIX)/share/sxmo/appscripts"
+ cd scripts/appscripts && find . -name 'sxmo_*.sh' | xargs -I{} ln -fs "$(PREFIX)/bin/{}" "$(DESTDIR)$(PREFIX)/share/sxmo/appscripts/{}" && cd ../..
+
+-
+- mkdir -p "$(DESTDIR)$(PREFIX)/share/superd/services"
+- install -m 0644 -t $(DESTDIR)$(PREFIX)/share/superd/services configs/superd/services/*
++ mkdir -p "$(DESTDIR)$(SERVICEDIR)"
++ install -m 0644 -t "$(DESTDIR)$(SERVICEDIR)" configs/services/*
++ if [ "$(EXTERNAL_SERVICES)" = "1" ]; then \
++ install -m 0644 -t "$(DESTDIR)$(SERVICEDIR)" configs/external-services/*; \
++ fi
+
+ @echo "-------------------------------------------------------------------">&2
+ @echo "NOTICE 1: Do not forget to add sxmo-setpermissions to your init system, e.g. for openrc: rc-update add sxmo-setpermissions default && rc-service sxmo-setpermissions start" >&2
+diff --git a/configs/superd/services/dunst.service b/configs/external-services/dunst.service
+similarity index 100%
+rename from configs/superd/services/dunst.service
+rename to configs/external-services/dunst.service
+diff --git a/configs/superd/services/mako.service b/configs/external-services/mako.service
+similarity index 100%
+rename from configs/superd/services/mako.service
+rename to configs/external-services/mako.service
+diff --git a/configs/superd/services/mmsd-tng.service b/configs/external-services/mmsd-tng.service
+similarity index 100%
+rename from configs/superd/services/mmsd-tng.service
+rename to configs/external-services/mmsd-tng.service
+diff --git a/configs/superd/services/pipewire-pulse.service b/configs/external-services/pipewire-pulse.service
+similarity index 100%
+rename from configs/superd/services/pipewire-pulse.service
+rename to configs/external-services/pipewire-pulse.service
+diff --git a/configs/superd/services/pipewire.service b/configs/external-services/pipewire.service
+similarity index 100%
+rename from configs/superd/services/pipewire.service
+rename to configs/external-services/pipewire.service
+diff --git a/configs/superd/services/pulseaudio.service b/configs/external-services/pulseaudio.service
+similarity index 100%
+rename from configs/superd/services/pulseaudio.service
+rename to configs/external-services/pulseaudio.service
+diff --git a/configs/superd/services/vvmd.service b/configs/external-services/vvmd.service
+similarity index 100%
+rename from configs/superd/services/vvmd.service
+rename to configs/external-services/vvmd.service
+diff --git a/configs/superd/services/wireplumber.service b/configs/external-services/wireplumber.service
+similarity index 100%
+rename from configs/superd/services/wireplumber.service
+rename to configs/external-services/wireplumber.service
+diff --git a/configs/superd/services/autocutsel-primary.service b/configs/services/autocutsel-primary.service
+similarity index 100%
+rename from configs/superd/services/autocutsel-primary.service
+rename to configs/services/autocutsel-primary.service
+diff --git a/configs/superd/services/autocutsel.service b/configs/services/autocutsel.service
+similarity index 100%
+rename from configs/superd/services/autocutsel.service
+rename to configs/services/autocutsel.service
+diff --git a/configs/superd/services/bonsaid.service b/configs/services/bonsaid.service
+similarity index 100%
+rename from configs/superd/services/bonsaid.service
+rename to configs/services/bonsaid.service
+diff --git a/configs/superd/services/sxmo-x11-status.service b/configs/services/sxmo-x11-status.service
+similarity index 100%
+rename from configs/superd/services/sxmo-x11-status.service
+rename to configs/services/sxmo-x11-status.service
+diff --git a/configs/superd/services/sxmo_autosuspend.service b/configs/services/sxmo_autosuspend.service
+similarity index 100%
+rename from configs/superd/services/sxmo_autosuspend.service
+rename to configs/services/sxmo_autosuspend.service
+diff --git a/configs/superd/services/sxmo_battery_monitor.service b/configs/services/sxmo_battery_monitor.service
+similarity index 100%
+rename from configs/superd/services/sxmo_battery_monitor.service
+rename to configs/services/sxmo_battery_monitor.service
+diff --git a/configs/superd/services/sxmo_conky.service b/configs/services/sxmo_conky.service
+similarity index 100%
+rename from configs/superd/services/sxmo_conky.service
+rename to configs/services/sxmo_conky.service
+diff --git a/configs/superd/services/sxmo_desktop_widget.service b/configs/services/sxmo_desktop_widget.service
+similarity index 100%
+rename from configs/superd/services/sxmo_desktop_widget.service
+rename to configs/services/sxmo_desktop_widget.service
+diff --git a/configs/superd/services/sxmo_hook_lisgd.service b/configs/services/sxmo_hook_lisgd.service
+similarity index 100%
+rename from configs/superd/services/sxmo_hook_lisgd.service
+rename to configs/services/sxmo_hook_lisgd.service
+diff --git a/configs/superd/services/sxmo_menumode_toggler.service b/configs/services/sxmo_menumode_toggler.service
+similarity index 100%
+rename from configs/superd/services/sxmo_menumode_toggler.service
+rename to configs/services/sxmo_menumode_toggler.service
+diff --git a/configs/superd/services/sxmo_modemmonitor.service b/configs/services/sxmo_modemmonitor.service
+similarity index 100%
+rename from configs/superd/services/sxmo_modemmonitor.service
+rename to configs/services/sxmo_modemmonitor.service
+diff --git a/configs/superd/services/sxmo_networkmonitor.service b/configs/services/sxmo_networkmonitor.service
+similarity index 100%
+rename from configs/superd/services/sxmo_networkmonitor.service
+rename to configs/services/sxmo_networkmonitor.service
+diff --git a/configs/superd/services/sxmo_notificationmonitor.service b/configs/services/sxmo_notificationmonitor.service
+similarity index 100%
+rename from configs/superd/services/sxmo_notificationmonitor.service
+rename to configs/services/sxmo_notificationmonitor.service
+diff --git a/configs/superd/services/sxmo_soundmonitor.service b/configs/services/sxmo_soundmonitor.service
+similarity index 100%
+rename from configs/superd/services/sxmo_soundmonitor.service
+rename to configs/services/sxmo_soundmonitor.service
+diff --git a/configs/superd/services/sxmo_wob.service b/configs/services/sxmo_wob.service
+similarity index 100%
+rename from configs/superd/services/sxmo_wob.service
+rename to configs/services/sxmo_wob.service
+diff --git a/configs/superd/services/unclutter-xfixes.service b/configs/services/unclutter-xfixes.service
+similarity index 100%
+rename from configs/superd/services/unclutter-xfixes.service
+rename to configs/services/unclutter-xfixes.service
+diff --git a/configs/superd/services/unclutter.service b/configs/services/unclutter.service
+similarity index 100%
+rename from configs/superd/services/unclutter.service
+rename to configs/services/unclutter.service
+--
+2.39.2
+
diff --git a/0006-Add-BindsTo-to-services-so-they-stop-when-the-graphi.patch b/0006-Add-BindsTo-to-services-so-they-stop-when-the-graphi.patch
new file mode 100644
index 000000000000..962d56c03746
--- /dev/null
+++ b/0006-Add-BindsTo-to-services-so-they-stop-when-the-graphi.patch
@@ -0,0 +1,216 @@
+From 70b602bca76652ee21c6807b6fefee0836cc1211 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Sat, 18 Feb 2023 15:13:53 -0500
+Subject: [PATCH sxmo-utils 6/9] Add BindsTo to services so they stop when the
+ graphical session ends
+
+---
+ configs/services/autocutsel-primary.service | 1 +
+ configs/services/autocutsel.service | 1 +
+ configs/services/bonsaid.service | 1 +
+ configs/services/sxmo-x11-status.service | 1 +
+ configs/services/sxmo_autosuspend.service | 1 +
+ configs/services/sxmo_battery_monitor.service | 1 +
+ configs/services/sxmo_conky.service | 1 +
+ configs/services/sxmo_desktop_widget.service | 1 +
+ configs/services/sxmo_hook_lisgd.service | 1 +
+ configs/services/sxmo_menumode_toggler.service | 1 +
+ configs/services/sxmo_modemmonitor.service | 1 +
+ configs/services/sxmo_networkmonitor.service | 1 +
+ configs/services/sxmo_notificationmonitor.service | 1 +
+ configs/services/sxmo_soundmonitor.service | 1 +
+ configs/services/sxmo_wob.service | 1 +
+ configs/services/unclutter-xfixes.service | 1 +
+ configs/services/unclutter.service | 1 +
+ 17 files changed, 17 insertions(+)
+
+diff --git a/configs/services/autocutsel-primary.service b/configs/services/autocutsel-primary.service
+index 9574e09..869e422 100644
+--- a/configs/services/autocutsel-primary.service
++++ b/configs/services/autocutsel-primary.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=automated xcutsel
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/autocutsel.service b/configs/services/autocutsel.service
+index c97dc64..a9ad01b 100644
+--- a/configs/services/autocutsel.service
++++ b/configs/services/autocutsel.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=automated xcutsel
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/bonsaid.service b/configs/services/bonsaid.service
+index f17fa1a..1093453 100644
+--- a/configs/services/bonsaid.service
++++ b/configs/services/bonsaid.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Bonsai daemon
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo-x11-status.service b/configs/services/sxmo-x11-status.service
+index f27a613..4934697 100644
+--- a/configs/services/sxmo-x11-status.service
++++ b/configs/services/sxmo-x11-status.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=periodically set the status bar content
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_autosuspend.service b/configs/services/sxmo_autosuspend.service
+index 86ce1bc..b1949f8 100644
+--- a/configs/services/sxmo_autosuspend.service
++++ b/configs/services/sxmo_autosuspend.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=daemon for autosuspending
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_battery_monitor.service b/configs/services/sxmo_battery_monitor.service
+index 1918ba5..54d902a 100644
+--- a/configs/services/sxmo_battery_monitor.service
++++ b/configs/services/sxmo_battery_monitor.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Sxmo: monitors the battery
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_conky.service b/configs/services/sxmo_conky.service
+index de8b83e..79b7e93 100644
+--- a/configs/services/sxmo_conky.service
++++ b/configs/services/sxmo_conky.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Conky
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_desktop_widget.service b/configs/services/sxmo_desktop_widget.service
+index 199d9a6..5322b35 100644
+--- a/configs/services/sxmo_desktop_widget.service
++++ b/configs/services/sxmo_desktop_widget.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Sxmo: start desktop widget (ie. clock)
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_hook_lisgd.service b/configs/services/sxmo_hook_lisgd.service
+index c671235..277b410 100644
+--- a/configs/services/sxmo_hook_lisgd.service
++++ b/configs/services/sxmo_hook_lisgd.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=run user defined lisgd start hook
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_menumode_toggler.service b/configs/services/sxmo_menumode_toggler.service
+index d6c949e..6264bf4 100644
+--- a/configs/services/sxmo_menumode_toggler.service
++++ b/configs/services/sxmo_menumode_toggler.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Sxmo: sets menu buttons for sway
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_modemmonitor.service b/configs/services/sxmo_modemmonitor.service
+index 53171ef..9daf547 100644
+--- a/configs/services/sxmo_modemmonitor.service
++++ b/configs/services/sxmo_modemmonitor.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=daemon for monitoring modem-related dbuses (calls, sms, mms, etc.)
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_networkmonitor.service b/configs/services/sxmo_networkmonitor.service
+index cc30f48..dcc4887 100644
+--- a/configs/services/sxmo_networkmonitor.service
++++ b/configs/services/sxmo_networkmonitor.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Sxmo: watch network changes and update the status bar
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_notificationmonitor.service b/configs/services/sxmo_notificationmonitor.service
+index 4d6033a..78d9c13 100644
+--- a/configs/services/sxmo_notificationmonitor.service
++++ b/configs/services/sxmo_notificationmonitor.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=display notifications popup messages
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_soundmonitor.service b/configs/services/sxmo_soundmonitor.service
+index 1f759f3..cf6f6c0 100644
+--- a/configs/services/sxmo_soundmonitor.service
++++ b/configs/services/sxmo_soundmonitor.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Sxmo: watch audio changes and update the status bar
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/sxmo_wob.service b/configs/services/sxmo_wob.service
+index 600646f..97a2e23 100644
+--- a/configs/services/sxmo_wob.service
++++ b/configs/services/sxmo_wob.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=A lightweight overlay volume/backlight/progress/anything bar for Wayland
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/unclutter-xfixes.service b/configs/services/unclutter-xfixes.service
+index 3125786..c6de932 100644
+--- a/configs/services/unclutter-xfixes.service
++++ b/configs/services/unclutter-xfixes.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Hides mouse pointer while not in use
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+diff --git a/configs/services/unclutter.service b/configs/services/unclutter.service
+index f987ac3..f0c262c 100644
+--- a/configs/services/unclutter.service
++++ b/configs/services/unclutter.service
+@@ -1,5 +1,6 @@
+ [Unit]
+ Description=Hides mouse pointer while not in use
++BindsTo=graphical-session.target
+
+ [Service]
+ Type=simple
+--
+2.39.2
+
diff --git a/0007-start-stop-graphical-session.target.patch b/0007-start-stop-graphical-session.target.patch
new file mode 100644
index 000000000000..7c8697ac572e
--- /dev/null
+++ b/0007-start-stop-graphical-session.target.patch
@@ -0,0 +1,64 @@
+From 42b25bdd8c5c44305d5a78f498f2b61e87fccd13 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Fri, 22 Apr 2022 18:24:27 -0400
+Subject: [PATCH sxmo-utils 7/9] start / stop graphical-session.target
+
+---
+ configs/default_hooks/sxmo_hook_start.sh | 1 +
+ configs/services/sxmo-session.target | 6 ++++++
+ scripts/core/sxmo_winit.sh | 1 +
+ scripts/core/sxmo_xinit.sh | 1 +
+ 4 files changed, 9 insertions(+)
+ create mode 100644 configs/services/sxmo-session.target
+
+diff --git a/configs/default_hooks/sxmo_hook_start.sh b/configs/default_hooks/sxmo_hook_start.sh
+index 9697d8d..74443e4 100755
+--- a/configs/default_hooks/sxmo_hook_start.sh
++++ b/configs/default_hooks/sxmo_hook_start.sh
+@@ -10,6 +10,7 @@
+ xdg-user-dirs-update
+
+ printenv | cut -d '=' -f 1 | xargs systemctl --user import-environment
++systemctl --user start sxmo-session.target
+
+ # Periodically update some status bar components
+ sxmo_hook_statusbar.sh all
+diff --git a/configs/services/sxmo-session.target b/configs/services/sxmo-session.target
+new file mode 100644
+index 0000000..1bea6c3
+--- /dev/null
++++ b/configs/services/sxmo-session.target
+@@ -0,0 +1,6 @@
++[Unit]
++Description=Graphical sxmo session
++Documentation=man:systemd.special
++BindsTo=graphical-session.target
++Wants=graphical-session-pre.target
++After=graphical-session-pre.target
+diff --git a/scripts/core/sxmo_winit.sh b/scripts/core/sxmo_winit.sh
+index fa78061..b160f84 100755
+--- a/scripts/core/sxmo_winit.sh
++++ b/scripts/core/sxmo_winit.sh
+@@ -35,6 +35,7 @@ start() {
+ }
+
+ cleanup() {
++ systemctl --user stop graphical-session.target sxmo-session.target
+ sxmo_daemons.sh stop all
+ pkill bemenu
+ pkill wvkbd
+diff --git a/scripts/core/sxmo_xinit.sh b/scripts/core/sxmo_xinit.sh
+index 4a71c48..cfa1921 100755
+--- a/scripts/core/sxmo_xinit.sh
++++ b/scripts/core/sxmo_xinit.sh
+@@ -57,6 +57,7 @@ start() {
+ }
+
+ cleanup() {
++ systemctl --user stop graphical-session.target sxmo-session.target
+ sxmo_daemons.sh stop all
+ pkill svkbd
+ pkill dmenu
+--
+2.39.2
+
diff --git a/0008-Fix-quoting-of-strings-in-service-files.patch b/0008-Fix-quoting-of-strings-in-service-files.patch
new file mode 100644
index 000000000000..1d5b3d84fa41
--- /dev/null
+++ b/0008-Fix-quoting-of-strings-in-service-files.patch
@@ -0,0 +1,36 @@
+From 2734e9a561ad5c192acb45d21335c1f64a3a2db3 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Wed, 5 Apr 2023 17:42:36 -0400
+Subject: [PATCH sxmo-utils 8/9] Fix quoting of strings in service files
+
+Systemd doesn't like these variables without curly braces around them.
+---
+ configs/services/bonsaid.service | 4 ++--
+ configs/services/sxmo_conky.service | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/configs/services/bonsaid.service b/configs/services/bonsaid.service
+index 1093453..cc474f5 100644
+--- a/configs/services/bonsaid.service
++++ b/configs/services/bonsaid.service
+@@ -5,5 +5,5 @@ BindsTo=graphical-session.target
+ [Service]
+ Type=simple
+ Restart=always
+-ExecStartPre=rm -f $XDG_RUNTIME_DIR/bonsai
+-ExecStart=bonsaid -t $XDG_CONFIG_HOME/sxmo/bonsai_tree.json
++ExecStartPre=rm -f ${XDG_RUNTIME_DIR}/bonsai
++ExecStart=bonsaid -t ${XDG_CONFIG_HOME}/sxmo/bonsai_tree.json
+diff --git a/configs/services/sxmo_conky.service b/configs/services/sxmo_conky.service
+index 79b7e93..15160ac 100644
+--- a/configs/services/sxmo_conky.service
++++ b/configs/services/sxmo_conky.service
+@@ -5,4 +5,4 @@ BindsTo=graphical-session.target
+ [Service]
+ Type=simple
+ Restart=always
+-ExecStart=conky -c "$XDG_CONFIG_HOME"/sxmo/conky.conf
++ExecStart=conky -c "${XDG_CONFIG_HOME}/sxmo/conky.conf"
+--
+2.39.2
+
diff --git a/0009-Simplify-handling-of-XDG_RUNTIME_DIR.patch b/0009-Simplify-handling-of-XDG_RUNTIME_DIR.patch
new file mode 100644
index 000000000000..0dbeb28e1bbc
--- /dev/null
+++ b/0009-Simplify-handling-of-XDG_RUNTIME_DIR.patch
@@ -0,0 +1,88 @@
+From ad6b44cda0c8cc509abaff2634196b6edea66e13 Mon Sep 17 00:00:00 2001
+From: ArenM <aren@peacevolution.org>
+Date: Wed, 5 Apr 2023 18:55:53 -0400
+Subject: [PATCH sxmo-utils 9/9] Simplify handling of XDG_RUNTIME_DIR
+
+Previously if this detected that sxmo was not running, it would unset
+XDG_RUNTIME_DIR. This would prevent anyone from having sxmo installed
+but not using it.
+---
+ configs/profile.d/sxmo_init.sh | 36 +++++++++++++---------------------
+ 1 file changed, 14 insertions(+), 22 deletions(-)
+
+diff --git a/configs/profile.d/sxmo_init.sh b/configs/profile.d/sxmo_init.sh
+index fdf5dd9..a8bb2e2 100644
+--- a/configs/profile.d/sxmo_init.sh
++++ b/configs/profile.d/sxmo_init.sh
+@@ -9,9 +9,9 @@
+ _sxmo_is_running() {
+ unset SXMO_WM
+
+- if [ -f "${XDG_RUNTIME_DIR}"/sxmo.swaysock ]; then
++ if [ -f "${_RUNTIME_DIR}"/sxmo.swaysock ]; then
+ unset SWAYSOCK
+- if SWAYSOCK="$(cat "${XDG_RUNTIME_DIR}"/sxmo.swaysock)" \
++ if SWAYSOCK="$(cat "${_RUNTIME_DIR}"/sxmo.swaysock)" \
+ swaymsg 2>/dev/null; then
+ printf "Detected the Sway environment\n" >&2
+ export SXMO_WM=sway
+@@ -29,22 +29,6 @@ _sxmo_is_running() {
+ return 1
+ }
+
+-_sxmo_find_runtime_dir() {
+- # Take what we gave to you
+- if [ -n "$XDG_RUNTIME_DIR" ]; then
+- printf %s "$XDG_RUNTIME_DIR"
+- return
+- fi
+-
+- if [ -d "/var/run/user/$(id -u)" ]; then
+- printf "/var/run/user/%s" "$(id -u)"
+- return
+- fi
+-
+- # Fallback to a shared memory location
+- printf "/dev/shm/user/%s" "$(id -u)"
+-}
+-
+ _sxmo_load_environments() {
+ # Determine current operating system see os-release(5)
+ # https://www.linux.org/docs/man5/os-release.html
+@@ -60,7 +44,6 @@ _sxmo_load_environments() {
+ export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
+ export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
+ export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+- XDG_RUNTIME_DIR="$(_sxmo_find_runtime_dir)"
+ export XDG_RUNTIME_DIR
+ export XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
+ export XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
+@@ -124,13 +107,22 @@ $PATH"
+ }
+
+ _sxmo_grab_session() {
+- XDG_RUNTIME_DIR="$(_sxmo_find_runtime_dir)"
+- export XDG_RUNTIME_DIR
++ if [ -n "$XDG_RUNTIME_DIR" ]; then
++ _RUNTIME_DIR="$XDG_RUNTIME_DIR"
++ elif [ -d "/var/run/user/$(id -u)" ]; then
++ _RUNTIME_DIR="/var/run/user/%s" "$(id -u)"
++ else
++ _RUNTIME_DIR="/dev/shm/user/%s" "$(id -u)"
++ fi
++
+ if ! _sxmo_is_running; then
+- unset XDG_RUNTIME_DIR
++ unset _RUNTIME_DIR
+ return
+ fi
+
++ export XDG_RUNTIME_DIR="$_RUNTIME_DIR"
++ unset _RUNTIME_DIR
++
+ _sxmo_load_environments
+
+ if [ -f "$XDG_RUNTIME_DIR"/dbus.bus ]; then
+--
+2.39.2
+
diff --git a/10-sxmo.conf b/10-sxmo.conf
new file mode 100644
index 000000000000..d86b866292f6
--- /dev/null
+++ b/10-sxmo.conf
@@ -0,0 +1,2 @@
+[Login]
+HandlePowerKey=ignore
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..a68599acc4a8
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,158 @@
+# Maintainer: Aren <rn+aur@peacevolution.org>
+# Contributor: dni <office@dnilabs.com>
+
+pkgname=('sxmo-utils-git' 'sxmo-utils-sway-git')
+pkgver=1.14.1.r4.e8ddbc8
+pkgrel=1
+pkgdesc="Utility scripts, programs, and configs that hold the sxmo UI environment together"
+url="https://git.sr.ht/~mil/sxmo-utils"
+arch=('x86_64' 'aarch64')
+license=('AGPL3')
+makedepends=('libx11' 'xorgproto' 'linux-headers' 'busybox' 'scdoc' 'git')
+source=("git+https://git.sr.ht/~mil/sxmo-utils"
+ '00-sxmo.rules'
+ '10-sxmo.conf'
+ 'sxmo-setpermissions.service'
+ '0001-alias-superd-to-systemd-user.patch'
+ '0002-Use-sh-to-resolve-hooks-in-services.patch'
+ '0003-Use-KillMode-process-so-systemd-doesn-t-stop-apps.patch'
+ '0004-Remove-services-that-systemd-automatically-starts-fr.patch'
+ '0005-Separate-services-that-are-provided-by-external-pack.patch'
+ '0006-Add-BindsTo-to-services-so-they-stop-when-the-graphi.patch'
+ '0007-start-stop-graphical-session.target.patch')
+sha512sums=('SKIP'
+ '8a21e62b7ff0982a5406e98510a3004c62f883b9fae0cad5b63f6a7df520896b65c726321da515dab754a91ed94280922e3f424ecc983c1a33eb1ec287b268a2'
+ 'b69a09f98f8a5cad8164cd48c5f6a78f2ce0e9818fb77ccf2a3e243cd0f2023e438022b20aad9e6b5edd90e1bb862326db79dc423630682d4c43e897090d3da1'
+ '532c3045f52f872704876bdf56afbc7470c5d17e46655dd4040d545b6d3eb34a8791909e554c560471f9494c7382107839bcff1e48be242d5eea0092482165cd'
+ '5eeb6a2d1ab9c4811b5bf602f00e2cc075b86f6a301110730b81850865443696d7a99e19432a53048017295c1d13de46dd897bd646be168903f34ee80128be37'
+ '0a872028c1f3b9853a9c1e0c6c659612e1ecb8f1e83b6c1e3ef22e120c04d4347af9ab6987110fa22576b6fce20dd26cf5734725094df46e97bb89764a96f54e'
+ '222696d8872dac5a6e72efb72fa058c116b6cbfbb889b727ba4abdaed5c4c5cbe64d5ff71fd1a90c16a14f4c4f9455440652b7c7a046a1b02fc1a444c3f950fb'
+ 'd847b56a8a6a1f4e500f09ed1d7976a8ac7d24144e0c5265f5d72af46d211d32e676b69c33e3fd29ccbfb36080d521ea1719f41a8a06fd6a18318e01c5570ad5'
+ 'c7d9317313a9333e8cb52ef55b9d427146458ff0e592004f7e11a7c0d0457da92386886fd07add0c84de89099b03db19a525705c1d9395bf2575c0be65267587'
+ 'c74f51d2f6897ef0cb38f1ce7ac637352f9866f53bf491c2af86c80dbf73c4c80818dedd1d06cdb381ea73d115b875266a198f1a806ceda494ba735aade00215'
+ 'f8c5674aeea993387d32672014ec7cffc8616ecfa5027c6da5e737754ffdf4b8fd00d5a99a7f5a67683b21159236d3131b93ebd70b64ecc9aa0042898f3bd020')
+
+pkgver() {
+ cd "sxmo-utils"
+ printf "%s" "$(git describe --long --tags | sed 's/\([^-]*-\)g/r\1/;s/-/./g')"
+}
+
+prepare() {
+ cd "sxmo-utils"
+
+ for patch in ../*.patch; do
+ echo "applying: $patch"
+ patch -p1 < "$patch"
+ done
+}
+
+build() {
+ cd "sxmo-utils"
+
+ make
+}
+
+package_sxmo-utils-git() {
+ backup=('etc/doas.conf')
+ depends=(
+ # Shell utilities
+ 'bc'
+ 'curl'
+ 'gawk'
+ 'gojq'
+ 'less'
+ 'net-tools' # netstat command
+ 'pnc'
+
+ # Core dependcies
+ 'callaudiod'
+ 'opendoas'
+ 'geoclue'
+ 'inotify-tools'
+ 'mmsd-tng'
+ 'mnc' # for suspend
+ 'modemmanager'
+ 'ncurses' # for the weather script
+ 'networkmanager'
+ 'vvmd'
+ 'xdg-user-dirs'
+
+ # Audio
+ 'alsa-utils'
+ 'bluez'
+ 'bluez-utils'
+ 'libpulse'
+ 'pulseaudio'
+ 'pulseaudio-alsa'
+
+ # Core GUI dependencies
+ 'conky'
+ 'dunst'
+ 'libnotify'
+ 'light'
+ 'lisgd'
+ 'mpv'
+ 'sxmo-ui'
+ 'ttf-dejavu-nerd')
+ optdepends=('bemenu-ncurses: sxmo menus over ssh'
+ 'bonsai: better multikey script'
+ 'clickclack: haptic feedback'
+ 'codemadness-frontends: Youtube & Reddit scripts'
+ 'iio-utils: proximitylock script'
+ 'mediainfo: sound recorder'
+ 'pipewire-pulse: recommended sound server'
+ 'sfeed: Rss and atom feeds'
+ 'vim: The default editor'
+ 'yt-dlp: Play videos from the web')
+ provides=('sxmo-utils')
+ conflicts=('sxmo-utils')
+
+ make -C "sxmo-utils" \
+ OPENRC=0 \
+ DESTDIR="$pkgdir" \
+ EXTERNAL_SERVICES=0 \
+ SERVICEDIR=/usr/lib/systemd/user \
+ install-scripts
+
+ # Allow access to ModemManager and NetworkManager
+ install -Dm644 -t "$pkgdir/usr/share/polkit-1/rules.d" "00-sxmo.rules"
+
+ # Prevent logind from handling the power button
+ install -Dm644 -t "$pkgdir/etc/systemd/logind.conf.d" "10-sxmo.conf"
+
+ # Fixup mode to match polkit
+ install -d -o root -g 102 -m 750 "$pkgdir/usr/share/polkit-1/rules.d"
+
+ # fix directory permissions, TODO this should be done upstream
+ chmod 750 "$pkgdir/etc/doas.d"
+
+ # HACK: doas is built without --with-doas-confdir so install the sxmo config directly
+ install -Dm640 "$pkgdir/etc/doas.d/sxmo.conf" "$pkgdir/etc/doas.conf"
+
+ install -Dm644 "$srcdir/sxmo-setpermissions.service" "$pkgdir/usr/lib/systemd/system/sxmo-setpermissions.service"
+}
+
+package_sxmo-utils-sway-git() {
+ pkgdesc="Use sway as the window manager with sxmo"
+ url="https://sr.ht/~mil/Sxmo/"
+ arch=('any')
+ provides=('sxmo-utils-sway')
+ conflicts=('sxmo-utils-sway')
+ depends=('bemenu-wayland'
+ 'foot'
+ 'grim'
+ 'mako'
+ 'slurp'
+ 'sway'
+ 'swaybg'
+ 'swayidle'
+ 'sxmo-utils-git'
+ 'wl-clipboard'
+ 'wob'
+ 'wtype'
+ 'wvkbd'
+ 'xorg-xwayland')
+ optdepends=('sway-git: better touch event handling')
+
+ make -C "sxmo-utils" DESTDIR="$pkgdir" install-sway
+}
diff --git a/sxmo-setpermissions.service b/sxmo-setpermissions.service
new file mode 100644
index 000000000000..2686158f70c2
--- /dev/null
+++ b/sxmo-setpermissions.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=sxmo-pinephone
+[Service]
+ExecStart=/usr/bin/sxmo_setpermissions.sh
+[Install]
+WantedBy=multi-user.target