aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/ufetch/ufetch.SlackBuild11
-rw-r--r--desktop/ufetch/wm_detect.diff43
2 files changed, 53 insertions, 1 deletions
diff --git a/desktop/ufetch/ufetch.SlackBuild b/desktop/ufetch/ufetch.SlackBuild
index 115b50038c..46fcd8fbae 100644
--- a/desktop/ufetch/ufetch.SlackBuild
+++ b/desktop/ufetch/ufetch.SlackBuild
@@ -7,6 +7,13 @@
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20250129 bkw: BUILD=2.
+# - improve window manager detection for non-desktop WMs. Received
+# a report and a patch from Ricardson via email, but I patched
+# the code myself to cover all the cases Ricardson's patch
+# covered, plus a couple more (commented-out #exec icewm in .xinitrc,
+# runlevel 3 with no ~/.xinitrc at all).
+
# 20241205 bkw: update for v0.4.
# - This is a *completely meaningless* version update.
# The ufetch-slackware script in 0.4 is identical to the one from 0.3.
@@ -25,7 +32,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ufetch
VERSION=${VERSION:-0.4}
COMMIT=${COMMIT:-ff21a96c8d6d7f34b77836eeda2cf4b225e25dee}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
ARCH="noarch"
@@ -51,6 +58,8 @@ cd $PRGNAM-v$VERSION-$COMMIT
chown -R root:root .
chmod 644 *
+patch -p1 < $CWD/wm_detect.diff
+
install -D -m0755 "$PRGNAM-slackware" $PKG/usr/bin/$PRGNAM
PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/desktop/ufetch/wm_detect.diff b/desktop/ufetch/wm_detect.diff
new file mode 100644
index 0000000000..002164dc7a
--- /dev/null
+++ b/desktop/ufetch/wm_detect.diff
@@ -0,0 +1,43 @@
+diff -Naurw ufetch-v0.4-ff21a96c8d6d7f34b77836eeda2cf4b225e25dee/ufetch-slackware ufetch-v0.4-ff21a96c8d6d7f34b77836eeda2cf4b225e25dee.patched/ufetch-slackware
+--- ufetch-v0.4-ff21a96c8d6d7f34b77836eeda2cf4b225e25dee/ufetch-slackware 2024-11-23 14:18:28.000000000 -0500
++++ ufetch-v0.4-ff21a96c8d6d7f34b77836eeda2cf4b225e25dee.patched/ufetch-slackware 2025-01-30 01:12:54.278769708 -0500
+@@ -16,12 +16,21 @@
+
+ parse_rcs() {
+ for f in "${@}"; do
+- wm="$(tail -n 1 "${f}" 2> /dev/null | cut -d ' ' -f 2)"
++ wm="$(sed -n 's/^\s*exec\s\+\(\S\+\).*/\1/p' "$f" 2>/dev/null | head -n 1)"
+ [ -n "${wm}" ] && echo "${wm}" && return
+ done
+ }
+
++sys_ui_type() {
++ case "$syswm" in
++ kde|lxde|gnome|xfce)
++ echo 'DE' ;;
++ *) echo 'WM' ;;
++ esac
++}
++
+ rcwm="$(parse_rcs "${HOME}/.xinitrc" "${HOME}/.xsession")"
++syswm="$(realpath /etc/X11/xinit/xinitrc 2>/dev/null | rev | cut -d. -f1 | rev)"
+
+ ui='unknown'
+ uitype='UI'
+@@ -37,11 +46,14 @@
+ elif [ -n "${DESKTOP_SESSION}" ]; then
+ ui="${DESKTOP_SESSION}"
+ uitype='DE'
++elif [ -n "${XDG_SESSION_TYPE}" ]; then
++ ui="${XDG_SESSION_TYPE}"
+ elif [ -n "${rcwm}" ]; then
+ ui="${rcwm}"
+ uitype='WM'
+-elif [ -n "${XDG_SESSION_TYPE}" ]; then
+- ui="${XDG_SESSION_TYPE}"
++elif [ -n "${syswm}" ]; then
++ ui="${syswm}"
++ uitype="$(sys_ui_type)"
+ fi
+
+ ui="$(basename "${ui}")"