From 5722a25779dd480d6862ddcd89c74279964d20c9 Mon Sep 17 00:00:00 2001 From: Ben Grande Date: Tue, 30 Apr 2024 16:04:40 +0200 Subject: [PATCH] fix: discover non-root username at runtime Useful when Dom0 has the non-default username, less useful for DomUs. Fixes: https://github.com/ben-grande/qusal/issues/43 --- salt/dom0/dotfiles.sls | 8 +++++--- salt/dom0/files/autostart/xprofile.desktop | 4 ++-- salt/dom0/gui-user.jinja | 9 +++++++++ salt/dom0/kde.sls | 12 ++++++------ salt/dom0/screenshot.sls | 8 ++++---- salt/dotfiles | 2 +- salt/utils/macros/sync-appmenus.sls | 5 +++-- 7 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 salt/dom0/gui-user.jinja diff --git a/salt/dom0/dotfiles.sls b/salt/dom0/dotfiles.sls index 4141690..bc0f142 100644 --- a/salt/dom0/dotfiles.sls +++ b/salt/dom0/dotfiles.sls @@ -6,15 +6,17 @@ SPDX-License-Identifier: AGPL-3.0-or-later {% if grains['nodename'] == 'dom0' -%} +{%- import slsdotpath ~ "/gui-user.jinja" as gui_user -%} + include: - dotfiles.copy-all "{{ slsdotpath }}-xprofile-sourcer": file.managed: - - name: /home/user/.config/autostart/xprofile.desktop + - name: {{ gui_user.gui_user_home }}/.config/autostart/xprofile.desktop - source: salt://{{ slsdotpath }}/files/autostart/xprofile.desktop - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - mode: '0644' - makedirs: True diff --git a/salt/dom0/files/autostart/xprofile.desktop b/salt/dom0/files/autostart/xprofile.desktop index a9eebba..34adabd 100644 --- a/salt/dom0/files/autostart/xprofile.desktop +++ b/salt/dom0/files/autostart/xprofile.desktop @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. +# SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. # # SPDX-License-Identifier: AGPL-3.0-or-later @@ -6,7 +6,7 @@ Name=Xprofile sourcer Comment=Source User's Xprofile Type=Application -Exec=/home/user/.config/x11/xprofile +Exec=sh -c "exec ${HOME}/.config/x11/xprofile" Terminal=false StartupNotify=false Categories=System; diff --git a/salt/dom0/gui-user.jinja b/salt/dom0/gui-user.jinja new file mode 100644 index 0000000..e723229 --- /dev/null +++ b/salt/dom0/gui-user.jinja @@ -0,0 +1,9 @@ +{# +SPDX-FileCopyrightText: 2024 Benjamin Grande M. S. + +SPDX-License-Identifier: AGPL-3.0-or-later +#} + +{% set gui_user = salt['cmd.shell']("getent group qubes | awk -F '[:,]' '{print $4}'") -%} +{% set gui_user_id = salt['cmd.shell']("getent passwd " ~ gui_user ~ " | awk -F ':' '{print $3}'") -%} +{% set gui_user_home = salt['cmd.shell']("getent passwd " ~ gui_user ~ " | awk -F ':' '{print $6}'") -%} diff --git a/salt/dom0/kde.sls b/salt/dom0/kde.sls index 4f3e3e9..4475a5b 100644 --- a/salt/dom0/kde.sls +++ b/salt/dom0/kde.sls @@ -50,19 +50,19 @@ include: "{{ slsdotpath }}-activity-notifier": file.managed: - - name: /home/user/.config/autostart-scripts/kde-activity-changed-notifier + - name: {{ gui_user.gui_user_home }}/.config/autostart-scripts/kde-activity-changed-notifier - source: salt://{{ slsdotpath }}/files/autostart-scripts/kde-activity-changed-notifier - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - mode: '0755' - makedirs: True "{{ slsdotpath }}-qubes-kde-win-rules": file.managed: - - name: /home/user/.local/bin/qubes-kde-win-rules + - name: {{ gui_user.gui_user_home }}/.local/bin/qubes-kde-win-rules - source: salt://{{ slsdotpath }}/files/bin/qubes-kde-win-rules - - user: user - - group: user + - user: {{ gui_user.gui_user }} + - group: {{ gui_user.gui_user }} - mode: '0755' - makedirs: True diff --git a/salt/dom0/screenshot.sls b/salt/dom0/screenshot.sls index f97cc94..c39b560 100644 --- a/salt/dom0/screenshot.sls +++ b/salt/dom0/screenshot.sls @@ -6,6 +6,8 @@ SPDX-License-Identifier: AGPL-3.0-or-later {% if grains['nodename'] == 'dom0' -%} +{%- import slsdotpath ~ "/gui-user.jinja" as gui_user -%} + include: - utils.tools.common.update @@ -31,16 +33,14 @@ include: - pkg: "{{ slsdotpath }}-screenshot-installed" ## TODO: KDE shortcuts -{% set gui_user = salt['cmd.shell']('groupmems -l -g qubes') -%} -{% set gui_user_id = salt['cmd.shell']('id -u ' ~ gui_user) -%} "{{ slsdotpath }}-screenshot-keyboard-shortcuts-xfce": cmd.run: - name: | - DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/{{ gui_user_id }}/bus" + DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/{{ gui_user.gui_user_id }}/bus" export DBUS_SESSION_BUS_ADDRESS xfconf-query -c xfce4-keyboard-shortcuts -p "/commands/custom/Print" -n -s "qvm-screenshot --fullscreen" xfconf-query -c xfce4-keyboard-shortcuts -p "/commands/custom/Print" -n -s "qvm-screenshot --region" - - runas: {{ gui_user }} + - runas: {{ gui_user.gui_user }} - require: - file: "{{ slsdotpath }}-screenshot-script" diff --git a/salt/dotfiles b/salt/dotfiles index 9954972..84bae87 160000 --- a/salt/dotfiles +++ b/salt/dotfiles @@ -1 +1 @@ -Subproject commit 9954972df34f5159d726c0784f7aac9f8e61daa7 +Subproject commit 84bae87dc5da48334f81501e11cf17919ff1504b diff --git a/salt/utils/macros/sync-appmenus.sls b/salt/utils/macros/sync-appmenus.sls index a926677..d4272bd 100644 --- a/salt/utils/macros/sync-appmenus.sls +++ b/salt/utils/macros/sync-appmenus.sls @@ -27,13 +27,14 @@ Usage: qvm.start: - name: {{ qube }} -{% set gui_user = salt['cmd.shell']('groupmems -l -g qubes') -%} +{% import "dom0/gui-user.jinja" as gui_user -%} + "{{ qube }}-sync-appmenus": cmd.run: - require: - qvm: {{ qube }}-start - name: qvm-sync-appmenus {{ qube }} - - runas: {{ gui_user }} + - runas: {{ gui_user.gui_user }} {% if running == 0 -%} "{{ qube }}-shutdown":