Nachdem
dieses Problem gelöst ist und ich das schlimmste Chaos, das ich in meinem Skript angerichtet habe, wieder beseitigt habe, sehe ich mich in der Lage, die aktuelle Version meines Skriptes herzuzeigen:
Code: Alles auswählen
#!/bin/bash
# simple wrapper for man to display manpages in yelp if X is detected
if test $# -eq 2; then
ARGS="$2($1)"
else
ARGS="$1"
fi
if ! man $@ > /dev/null || test $# -gt 2; then
>&2 echo "usage: $(basename $0) [section] manpage"
exit 5
elif test "x$1" = "x-h" || test "x$1" = "x--help" || test "x$2" = "x-h" || test "x$2" = "x--help"; then
>&2 echo "usage: $(basename $0) [section] manpage"
else
if ! type yelp > /dev/null; then
>&2 echo "yelp not found, calling man..."
man $@
elif test ${SSH_CLIENT}; then
>&2 echo "ssh-session detected, calling man..."
man $@
elif test ${UID} -ne 0; then
if ! test ${DISPLAY}; then
>&2 echo "no x-server found, calling man..."
man $@
else
THEME=$(gsettings get org.gnome.desktop.interface gtk-theme)
(env GTK_THEME="${THEME//\'}:dark" yelp "man:${ARGS}" &> /dev/null &)
fi
else
for SESSIONID in $(loginctl --no-legend list-sessions | awk '{print $1}'); do
SESSION=$(loginctl show-session ${SESSIONID})
USERNAME=$(echo "${SESSION}" | sed -ne 's/^Name=//p')
DISPLAY=$(echo "${SESSION}" | sed -ne 's/^Display=//p')
TYPE=$(echo "${SESSION}" | sed -ne 's/^Type=//p')
REMOTE=$(echo "${SESSION}" | sed -ne 's/^Remote=//p')
ACTIVE=$(echo "${SESSION}" | sed -ne 's/^Active=//p')
if test ${ACTIVE} = "yes" && test ${TYPE} = "x11" && test ${REMOTE} = "no"; then
THEME=$(su - ${USERNAME} -c "env \
XAUTHORITY=\"$(getent passwd ${USERNAME} | cut -d: -f6)/.Xauthority\" \
DISPLAY=${DISPLAY} \
gsettings get org.gnome.desktop.interface gtk-theme")
su - ${USERNAME} -c "env \
XAUTHORITY=\"$(getent passwd ${USERNAME} | cut -d: -f6)/.Xauthority\" \
DISPLAY=${DISPLAY} \
GTK_THEME=\"${THEME//\'}:dark\" \
yelp \"man:${ARGS}\" &> /dev/null" &
exit
fi
done
>&2 echo "no active x-session found, calling man..."
man $@
fi
fi
Das schöne ist, dass jetzt, auch wenn mit su gerade als root am lokalen Rechner arbeitet, yelp mit der Manpage in X für den gerade aktiven Nutzer des Systems gestartet wird.
____
Alternativ zu yelp habe ich auch versucht die Manpage mit dem Browser anzeigen zu lassen, so in der Art
aber daraufhin zeigt mir mein Browser nur
Error opening file: No such file or directory
und er hat recht - es sieht so aus als würde man die html-Datei zwar erstellen, aber sie gleich wieder löschen, noch bevor sie der Browser überhaupt laden kann.