1
Bash, skrypty powłoki / Odp: Jak uruchomić skrypt w momencie pojawienia się pulpitu?
« dnia: Wczoraj o 20:23:46 »Cytuj
Ale z tego co wiem, gdm i tak się uruchamia tyle, że po prostu loguje automatycznie i nie pokazuje tego na ekranie.To prawda. Pomija proces logowania i uruchamia środowisko graficzne.
Gdybyś miał kilka zainstalowanych środowisk graficznych i włączone logowanie się,
to właśnie z niego możesz wybrać środowisko.
Cytuj
To nie może odbywać się losowo ponieważ często jedna usługa jest zależna od innej. Np. właśnie załadowanie pulpitu jest zależne od gdm, którzy przecież musi załadować się pierwszy.Napisałem " W systemd większość usług jest uruchamiana losowo. "
Są pewne wyjątki w systemd.
Natomiast środowisko graficzne nie jest uruchamiane przez systemd, a przez display menadżera np. gdm, lightdm , itd.
Także jeśli uparcie chcesz sprawdzić czy środowisko się uruchomiło,
to chyba najlepiej spytać się developerów środowiska którego używasz.
Przykładowo mógłbym sprawdzać czy powstał już proces środowiska graficznego.
U mnie to jest " mate-session " ,
ten fragment drzewa po uruchomieniu komendy pstree ( wyświetla drzewo procesów )
Kod: [Zaznacz]
├─lightdm─┬─Xorg───{Xorg}
│ ├─lightdm─┬─mate-session─┬─caja───4*[{caja}]
Tylko że sprawdzanie co sekundę czy proces już istnieje, to zjada zasoby komputera.
Trochę jak odliczanie sleep.
Powinno się używać inotifywait, ale na razie to działa tylko na plikach i folderach.
Jeśli założymy, że plik $HOME/.xsession-errors powstaje po uruchomieniu się środowiska,
to można by go obserwować czy się zmienił , np.
Kod: [Zaznacz]
while inotifywait -q -e modify,delete_self,move_self $HOME/.xsession-errors &>/dev/null ; do
if [ ! -f '$HOME/.xsession-errors' ]; then
echo "Error: Brak pliku $HOME/.xsession-errors ."
echo " "
exit 0
fi
aplay /home/groovy/login.wav ; exit
done
Druga sprawa to tego dźwięku, ale też byś musiał sprawdzić.
U mnie odnośnie tego dźwięku pierw powinna wystartować alsa, a później pulseaudio ( ponieważ pulseaudio jest nakładką na alsę )
W systemd znalazłem tylko
Kod: [Zaznacz]
$ systemd-analyze blame | grep alsa
59ms alsa-restore.service
Natomiast pulse audio startuje wraz ze środowiskiem graficznym,
czyli w moim przypadku środowisko uruchamia skrypt z /etc/xdg/autostart/pulseaudio.desktop
( Podałem wyżej link to XDG Autostart )
Które pierwsze się uruchomi?
Środowisko graficzne, czy Pulseaudio?
W sumie to nie istotne, zawsze możesz sprawdzić oba procesy.
Czy dzwięk również zadziała, gdy Alsa się uruchomiła, ale Pulse Audio jeszcze nie ?
Pozostawię Tobie to do sprawdzenia.