From 9c2fc570e64600da6e8217bb157cbce008af4097 Mon Sep 17 00:00:00 2001 From: purian23 Date: Fri, 31 Oct 2025 21:08:47 -0400 Subject: [PATCH] feat: Add Fedora Copr Systemd Support - Updated distro filestructure --- .github/workflows/copr-release.yml | 4 +++ README.md | 35 +++++++++++++++++++ assets/systemd/dms.service | 1 + .../fedora/dms-greeter.spec | 0 dms.spec => distro/fedora/dms.spec | 5 +++ 5 files changed, 45 insertions(+) rename dms-greeter.spec => distro/fedora/dms-greeter.spec (100%) rename dms.spec => distro/fedora/dms.spec (97%) diff --git a/.github/workflows/copr-release.yml b/.github/workflows/copr-release.yml index fd45cb7e..d7925ab8 100644 --- a/.github/workflows/copr-release.yml +++ b/.github/workflows/copr-release.yml @@ -86,6 +86,7 @@ jobs: BuildRequires: gzip BuildRequires: wget + BuildRequires: systemd-rpm-macros Requires: (quickshell or quickshell-git) Requires: accountsservice @@ -171,6 +172,8 @@ jobs: install -Dm755 %{_builddir}/dms-cli %{buildroot}%{_bindir}/dms install -Dm755 %{_builddir}/dgop %{buildroot}%{_bindir}/dgop + install -Dm644 %{_builddir}/dms-qml/assets/systemd/dms.service %{buildroot}%{_userunitdir}/dms.service + install -dm755 %{buildroot}%{_datadir}/quickshell/dms cp -r %{_builddir}/dms-qml/* %{buildroot}%{_datadir}/quickshell/dms/ @@ -224,6 +227,7 @@ jobs: %license LICENSE %doc README.md CONTRIBUTING.md %{_datadir}/quickshell/dms/ + %{_userunitdir}/dms.service %files -n dms-cli %{_bindir}/dms diff --git a/README.md b/README.md index 657eeb21..cc6a1d1c 100644 --- a/README.md +++ b/README.md @@ -342,6 +342,41 @@ sudo sh -c "curl -L https://github.com/AvengeMedia/dgop/releases/latest/download A lot of options are subject to personal preference, but the below sets a good starting point for most features. +### Systemd Autostart + +**Alternative to compositor-specific autostart**: If you installed DMS from the Fedora Copr repository, you can use systemd to manage DMS autostart instead of adding `dms run` to your compositor config. + +**Benefits:** +- Works across all Wayland compositors (niri, Hyprland, sway, dwl, etc.) +- Centralized control via systemctl +- Automatic restart on failure +- Integrated logging via journalctl + +**Enable autostart:** +```bash +systemctl --user enable dms.service +``` + +**Manual control:** +```bash +# Start DMS now +systemctl --user start dms.service + +# Check status +systemctl --user status dms.service + +# View logs +journalctl --user -u dms.service -f + +# Restart DMS +systemctl --user restart dms.service + +# Disable autostart +systemctl --user disable dms.service +``` + +**Note:** If using systemd autostart, remove `dms run` / `spawn "dms" "run"` from your compositor's configuration to avoid running DMS twice. + ### niri Integration Add to your niri config diff --git a/assets/systemd/dms.service b/assets/systemd/dms.service index c14412ee..d1a6f4cc 100644 --- a/assets/systemd/dms.service +++ b/assets/systemd/dms.service @@ -3,6 +3,7 @@ Description=Dank Material Shell (DMS) PartOf=graphical-session.target After=graphical-session-pre.target Wants=graphical-session-pre.target +Requisite=graphical-session.target [Service] Type=simple diff --git a/dms-greeter.spec b/distro/fedora/dms-greeter.spec similarity index 100% rename from dms-greeter.spec rename to distro/fedora/dms-greeter.spec diff --git a/dms.spec b/distro/fedora/dms.spec similarity index 97% rename from dms.spec rename to distro/fedora/dms.spec index bd52e032..527b4572 100644 --- a/dms.spec +++ b/distro/fedora/dms.spec @@ -24,6 +24,7 @@ BuildRequires: gzip BuildRequires: golang >= 1.24 BuildRequires: make BuildRequires: wget +BuildRequires: systemd-rpm-macros # Core requirements Requires: (quickshell-git or quickshell) @@ -126,6 +127,9 @@ install -Dm755 %{_builddir}/danklinux-master/bin/${DMS_BINARY} %{buildroot}%{_bi # Install dgop binary install -Dm755 %{_builddir}/dgop %{buildroot}%{_bindir}/dgop +# Install systemd user service +install -Dm644 assets/systemd/dms.service %{buildroot}%{_userunitdir}/dms.service + # Install shell files to shared data location install -dm755 %{buildroot}%{_datadir}/quickshell/dms cp -r * %{buildroot}%{_datadir}/quickshell/dms/ @@ -181,6 +185,7 @@ fi %license LICENSE %doc README.md CONTRIBUTING.md %{_datadir}/quickshell/dms/ +%{_userunitdir}/dms.service %files -n dms-cli %{_bindir}/dms