From 552b6de862a880422c51140d080bd647a27f6c07 Mon Sep 17 00:00:00 2001 From: Pawel Marczewski Date: Tue, 7 Jan 2020 15:45:05 +0100 Subject: [PATCH 1/3] GetAppmenus: ensure right app directories The script depends on XDG_DATA_DIRS environment variable being set up correctly, which is not the case when it is running under sudo. As a result, a post-install trigger for apt could remove application entries from other sources (Snap, Flatpak). Fixes QubesOS/qubes-issues#5477. --- qubes-rpc/qubes.GetAppmenus | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/qubes-rpc/qubes.GetAppmenus b/qubes-rpc/qubes.GetAppmenus index d417c56..ca24d2d 100755 --- a/qubes-rpc/qubes.GetAppmenus +++ b/qubes-rpc/qubes.GetAppmenus @@ -6,6 +6,15 @@ # - directories stored on /rw in case of "rw-only" persistence # - nothing, otherwise +# Reload scripts in /etc/profile.d/, in case they register additional +# directories in XDG_DATA_DIRS and we forgot them +# (e.g. because we are running under sudo). +for i in /etc/profile.d/*.sh ; do + if [ -r "$i" ]; then + . "$i" >/dev/null + fi +done + if [ -z "$XDG_DATA_HOME" ]; then XDG_DATA_HOME="$HOME/.local/share" fi From 2df17a47902c3df60dbc0f7b9a5797d5572c596b Mon Sep 17 00:00:00 2001 From: Pawel Marczewski Date: Wed, 8 Jan 2020 10:16:00 +0100 Subject: [PATCH 2/3] Silence shellcheck See https://github.com/koalaman/shellcheck/wiki/SC1090 --- qubes-rpc/qubes.GetAppmenus | 1 + 1 file changed, 1 insertion(+) diff --git a/qubes-rpc/qubes.GetAppmenus b/qubes-rpc/qubes.GetAppmenus index ca24d2d..7ba90af 100755 --- a/qubes-rpc/qubes.GetAppmenus +++ b/qubes-rpc/qubes.GetAppmenus @@ -11,6 +11,7 @@ # (e.g. because we are running under sudo). for i in /etc/profile.d/*.sh ; do if [ -r "$i" ]; then + # shellcheck disable=SC1090 . "$i" >/dev/null fi done From 418a5ec6e3088d3baeecc4d224bdfb4561fddc9b Mon Sep 17 00:00:00 2001 From: Pawel Marczewski Date: Wed, 8 Jan 2020 17:05:32 +0100 Subject: [PATCH 3/3] qubes.GetAppmenus: handle home directory properly in case of sudo --- qubes-rpc/qubes.GetAppmenus | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/qubes-rpc/qubes.GetAppmenus b/qubes-rpc/qubes.GetAppmenus index 7ba90af..0a1198a 100755 --- a/qubes-rpc/qubes.GetAppmenus +++ b/qubes-rpc/qubes.GetAppmenus @@ -17,7 +17,13 @@ for i in /etc/profile.d/*.sh ; do done if [ -z "$XDG_DATA_HOME" ]; then - XDG_DATA_HOME="$HOME/.local/share" + user="$(whoami)" + # In case we are running under sudo, use default-user. + if [ "$user" = "root" ]; then + user="$(qubesdb-read /default-user || echo user)" + fi + home="$(eval echo "~$user")" + XDG_DATA_HOME="$home/.local/share" fi if [ -z "$XDG_DATA_DIRS" ]; then XDG_DATA_DIRS="/usr/local/share/:/usr/share/"