Programowanie > Bash, skrypty powłoki

Jak uruchomić skrypt w momencie pojawienia się pulpitu?

(1/2) > >>

groovy:
Witam szerokie grono,

W momencie uruchamiania systemu, pewna usługa uruchamia prosty skrypt, który z kolei odtwarza wybrany przeze mnie dźwięk.

Skrypt wygląda następująco:

--- Kod: ---
#!/bin/bash
sleep 4;
aplay /home/groovy/login.wav

--- Koniec kodu ---
Usługa uruchamia skrypt, ten czeka 4 sekundy i odtwarza dźwięk. U mnie trafia to na moment pojawienia się pulpitu.

Problem polega na tym, że nie podoba mi się fragment kodu z komendą sleep. Jest nieelegancki.

Najlepiej byłoby gdyby poprzez instrukcję until/do/done sprawdzał czy pulpit jest uruchomiony. Jeśli nie to niech czeka tak długo aż się załaduje.


--- Kod: ---
#!/bin/bash
until [[ $(systemctl status gdm.service | grep "active") != active ]];
do
  sleep 1;
done
aplay /home/groovy/login.wav

--- Koniec kodu ---
Powyższy kod nie działa, ponieważ gdm.service ładuje się wcześniej, odtwarza dźwięk ale pulpit pojawia się po około 4 sekundach.

Jak ustawić warunek until aby sprawdzał czy wyświetlony jest już pulpit lub ekran logowania?

robson75:
U mnie na xfce4 mam dźwięk powitalny, i używam takiego skryptu

--- Kod: ---
#!/bin/bash
sleep 15s
canberra-gtk-play -f /home/robson/.canberra/logowanie.wav
exit 0

--- Koniec kodu ---
A wartość sleep jest taka, bo najpierw musi się załadować pulpit.

EDIT.
Oczywiście aby skrypt działał, trzeba mu nadać prawa wykonywalności jako program.

1709:
Przedstawię 2 problemy:
1. GDM to menadżer logowania do systemu. Środowisko graficzne jest uruchamiane potem.
2. W systemd większość usług jest uruchamiana losowo. To znaczy że dźwięk może być uruchomiony później lub wcześniej.

Rady.
- Zwykle w środowisku graficznym można ustawić dźwięk, ale możliwe że to dotyczyło menadżera logowania,
( akurat w Ubuntu Mate aktualnie nie mogę znaleźć gdzie można to zmienić )
- Można spróbować wkleić skrypt do " autostart "  https://wiki.archlinux.org/title/XDG_Autostart
Ale może się zdarzyć że np. PulseAudio wystartuje później.

groovy:
U mnie jest akurat tak, że pomija ekran logowania i odrazu uruchamia pulpit (włączone automatyczne logowanie) Ale z tego co wiem, gdm i tak się uruchamia tyle, że poprostu loguje automatycznie i nie pokazuje tego na ekranie.

Pewnie zadziałało by to w odpowiednim czasie gdybym jednak logowanie miał włączone. (muszę to sprawdzić). Tylko co w przypadku gdy gdm jest pomijany i trwa to właśnie około 4 sekundy zanim po gdm-ie załącza się pulpit. Jaka usługa jest odpowiedzialna za załadowanie pulpitu?

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.

robson75:
Na moim xfce4 używam lightdm, i mam również włączony autologin (bez wpisywania hasła). A lightdm oraz gdm są to tylko display manager które to ładują pulpit i nie mają nic wspólnego z dźwiękami uruchamianymi podczas logowania.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

Idź do wersji pełnej