Ostatnio umieściłem xset b offna swoim .bashrc. Teraz denerwuje mnie błąd, który pojawia się, gdy loguję się przez tty lub ssh, tj. Poza sesją X.
Pierwszą rzeczą, jaka przyszła mi do głowy, było [[ -z "$SOME_VAR" ]] && xset b off(cóż, okazuje się, że ustawienie zmiennej testowej vs. bycie pustym to inne pytanie). Ale który SOME_VAR jest poprawny?
Więc różnicowałem setdane wyjściowe tty i dane wyjściowe urxvt, setaby zobaczyć, które zmienne są ustawione w X, a których brakuje w tty. Zgodnie z oczekiwaniami było całkiem sporo różnic (wymieniając tylko te, które wydawały mi się istotne):
DESKTOP_SESSIONDISPLAYGDMSESSIONSESSION_MANAGERWINDOWIDWINDOWPATHXAUTHORITYXDG_SESSION_COOKIEXDG_CONFIG_DIRSXDG_DATA_DIRSXDG_MENU_PREFIX
Który z nich jest najbardziej poprawny i uniwersalny do przetestowania w celu wykrycia, czy jestem w sesji X, czy nie? Coś, co działałoby na wielu dystrybucjach, platformach i środowiskach desktopowych, jak to możliwe?
Czy jest jeszcze lepszy sposób niż testowanie zmiennych środowiskowych?
ssh -X; działa w porządku!