Есть некий стартаповый скрипт, который выполняет задание и пользуется штатными нотифиерами (notify-send, kdialog) для уведомления о проделанном.
Так вот, каким образом определить скрипту в какой графической оболочке работает пользователь?
Определение графической оболочки рабочего стола (KDE, Unity, Gnome)
Модератор: Модераторы разделов
-
ReSeR
- Сообщения: 383
- ОС: GNU Debian
Определение графической оболочки рабочего стола
Бэкап - акт проявления трусости.
-
Bizdelnick
- Модератор
- Сообщения: 21455
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Определение графической оболочки рабочего стола
А зачем? Есть notify-send - используйте его. Он во всех DE должен работать. Нет его - проверяйте, что есть.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
ReSeR
- Сообщения: 383
- ОС: GNU Debian
Re: Определение графической оболочки рабочего стола
Да, но с KDE он ведь не идёт по умолчанию, по крайней мере в Kubuntu 13.04.
Та и вообще, на будущее.
Та и вообще, на будущее.
Бэкап - акт проявления трусости.
-
Bizdelnick
- Модератор
- Сообщения: 21455
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Определение графической оболочки рабочего стола
Я и говорю - проверяйте его наличие
Код: Выделить всё
if which notify-send > /dev/null ; then
notify-send blabla
elif which kdialog > /dev/null ; then
kdialog blabla
fiПишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Ism
- Сообщения: 1261
- Статус: Никто, по сути быдло
Re: Определение графической оболочки рабочего стола
У меня целая тема была, вот результат
Костыль, но почти работает. На тот момент был не доделан, надо проверять.
Выдает имя DE
Костыль, но почти работает. На тот момент был не доделан, надо проверять.
Выдает имя DE
Код: Выделить всё
#/bin/sh
detectDE()
{
# see https://bugs.freedesktop.org/show_bug.cgi?id=34164
unset GREP_OPTIONS
if [ -n "${XDG_CURRENT_DESKTOP}" ]; then
case "${XDG_CURRENT_DESKTOP}" in
GNOME)
DE=gnome;
;;
KDE)
DE=kde;
;;
LXDE)
DE=lxde;
;;
XFCE)
DE=xfce
;;
Unity|UNITY|unity)
DE=unity;
;;
esac
fi
if [ x"$DE" = x"" ]; then
# classic fallbacks
if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde;
elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome;
elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome;
elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce;
elif xprop -root 2> /dev/null | grep -i '^xfce_desktop_window' >/dev/null 2>&1; then DE=xfce
fi
fi
if [ x"$DE" = x"" ]; then
# fallback to checking $DESKTOP_SESSION
case "$DESKTOP_SESSION" in
gnome)
DE=gnome;
;;
LXDE)
DE=lxde;
;;
xfce|xfce4)
DE=xfce;
;;
esac
fi
if [ x"$DE" = x"" ]; then
# fallback to uname output for other platforms
case "$(uname 2>/dev/null)" in
Darwin)
DE=darwin;
;;
esac
fi
if [ x"$DE" = x"gnome" ]; then
# gnome-default-applications-properties is only available in GNOME 2.x
# but not in GNOME 3.x
which gnome-default-applications-properties > /dev/null 2>&1 || DE="gnome3"
fi
echo $DE
}
detectDE
exit 0У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: Определение графической оболочки рабочего стола
Если подходит Python, то можно взять последний скрипт отсюда и использовать как-то так: ./notify.py -i firefox Header "Body of the notification". Конечно, при условии, что поддерживается org.freedesktop.Notifications.