Czy można dodać ikony do górnego panelu ekranu logowania?

10

Czy można dodać ikony (inne niż domyślne) do górnego panelu ekranu logowania?

wprowadź opis zdjęcia tutaj

Jeśli tak, to które ikony aplikacji zostaną dodane do górnego panelu ekranu logowania inne niż domyślne (na pokładzie, dźwięk, menedżer sieci itp. ). Jak mogę to dodać?

Używam Ubuntu 13.10

Avinash Raj
źródło
Jest to menedżer logowania lightdm, więc będziesz musiał /usr/sharebezpośrednio edytować jego pliki . Myślę, że istniał dostosowywanie lightdm, które pozwoliło na to i zmieniło tło, ale nie robię tego, jeśli nadal działa.
Wilf
1
czy mogę dostać tę tapetę?
@Utkarsh Pobrałem powyższe zdjęcie z wyszukiwarki grafiki Google.
Avinash Raj

Odpowiedzi:

14

Mam 12.04, ale to zadziała także 13.10.

Tak, możliwa jest zmiana wskaźników dla jedności-powitania. Możemy użyć GSettings do modyfikacji ustawień, ale ponieważ program unity-greeter jest uruchamiany tylko przez użytkownika lightdm (więc ustawienia nie dotyczą nikogo innego), najłatwiej jest po prostu napisać .overrideplik.

1. Sprawdź domyślne wskaźniki

Możesz zobaczyć swoje domyślne wskaźniki w pliku dconf-editorlub int /usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml. W tym ostatnim pliku zobaczysz klucz podobny do tego:

 <key name="indicators" type="as">
  <default>['ug-keyboard', 'ug-accessibility', 'session', 'datetime', 'power', 'soundmenu', 'application']</default>
  <summary>Which indicators to load</summary>
</key>

, to są dla mnie wartości domyślne. Sprawdź swoje pierwsze.

13.10 ten klucz wygląda następująco:

<key name="indicators" type="as">
  <default>['ug-accessibility', 'com.canonical.indicator.keyboard', 'com.canonical.indicator.session', 'com.canonical.indicator.datetime', 'com.canonical.indicator.power', 'com.canonical.indicator.sound', 'application']</default>
  <summary>Which indicators to load</summary>
</key>

2) Sprawdź dostępne wskaźniki

Możesz sprawdzić dostępne wskaźniki w /usr/lib/indicators3/7/katalogu lub w /usr/share/unity/indicators/katalogu.

3. Napisz plik zastępowania

Po prostu napisz plik o podobnej zawartości i zapisz go jako /usr/share/glib-2.0/schemas/myoverride.gschema.override

12.04

[com.canonical.unity-greeter]
indicators=['ug-keyboard', 'ug-accessibility', 'session', 'datetime', 'power', 'soundmenu', 'application', 'messaging']

Dla 13.10

[com.canonical.unity-greeter]
indicators=['ug-accessibility', 'com.canonical.indicator.keyboard', 'com.canonical.indicator.session', 'com.canonical.indicator.datetime', 'com.canonical.indicator.power', 'com.canonical.indicator.sound', 'application', 'messages']

W wersji 12.04 dodałem wskaźnik wiadomości do domyślnej listy 12.04. W wersji 13.10 dodałem wskaźnik komunikatów do domyślnej listy 13.10. Po prostu dodałem je do domyślnej listy pokazanej w KROKU 1 , możesz to również zrobić lub usunąć niektóre z domyślnych wskaźników, jeśli nie chcesz, aby pojawiały się na ekranie logowania. (Uważaj na apostrofy.) WAŻNE : W dniu 12.04 musisz zachować „ug-keyboard” i wskaźnik „session” na liście, więc NIE usuwaj ich, jeśli masz je w domyślnej linii, bo lightdm utknie w nieskończonej pętli. (jak tutaj )

Konwencje nazewnictwa w pliku zastępowania: w przypadku plików w /usr/lib/indicators3/7/katalogu nazwa pliku poprzedzająca „lib” i końcówka „.so” nie są ważne, więc w przypadku pliku o nazwie libmessaging.so możemy użyć „libmessaging.so”, „libmessaging” lub „wiadomości”. Dla plików w /usr/share/unity/indicators/katalogu nazwa pliku poprzedza „com.canonical.indicator”. nie jest ważne, więc dla pliku „com.canonical.indicator.bluetooth” moglibyśmy użyć „com.canonical.indicator.bluetooth” lub po prostu „bluetooth”.

4. Kopia zapasowa (na wszelki wypadek)

Utwórz kopię zapasową /usr/share/glib-2.0/schemas/gschemas.compiledpliku.

5. Kompiluj

Po tym całym biegu

sudo glib-compile-schemas /usr/share/glib-2.0/schemas

6. Sprawdź wyniki

Następnie spróbuj się wylogować i sprawdź, czy zadziałało. Możesz też wykonać test ekranu logowania bez wylogowania, jeśli spróbujesz z terminala:

lightdm --test-mode

lub

unity-greeter --test-mode 

W przypadku 12.04 wskaźnik wiadomości działał, a wskaźnik menu drukarek nie. W dniu 13.10 testowałem ze wskaźnikiem komunikatów i nie pojawił się, ale nie wyprodukował errosów, więc domyślałem się, że z założenia nie pojawia się na ekranie powitania, ponieważ tam jest w większości bezużyteczny. Sprawdziłem więc /usr/share/unity/indicators/com.canonical.indicator.messagesplik i potwierdziłem, że nie ma on sekcji [desktop_greeter] jak np. Wskaźnik sesji. Jeśli więc nie chcesz, aby wskaźnik komunikatów (lub inny wskaźnik bez sekcji [desktop_greeter]) pojawiał się na ekranie logowania (nawet jeśli jest to w większości bezużyteczne), będziesz musiał również edytować jego plik w /usr/share/unity/indicators/katalogu, i zrób kopię sekcji [desktop] w tym pliku i zmień nazwę kopii na sekcję [desktop_greeter]. Np. Dla wskaźnika wiadomości skończyłem z tym plikiem dla /usr/share/unity/indicators/com.canonical.indicator.messages:

[Indicator Service]
Name=indicator-messages
ObjectPath=/com/canonical/indicator/messages
Position=50

[desktop]
ObjectPath=/com/canonical/indicator/messages/desktop

[phone]
ObjectPath=/com/canonical/indicator/messages/phone

[desktop_greeter]
ObjectPath=/com/canonical/indicator/messages/desktop

Po dokonaniu tej zmiany w pliku wskaźnik wiadomości pojawił się również na ekranie logowania dla 13.10.

Jeśli coś pójdzie nie tak i ekran logowania się nie pojawi, po prostu przełącz się na konsolę wirtualną CTRL+ ALT+ F1i przywróć gschemas.compiledplik kopii zapasowej . Lub usuń myoverride.gschema.overrideplik i uruchom sudo glib-compile-schemas /usr/share/glib-2.0/schemasponownie. Jeśli lighdtm utknie w nieskończonej pętli i nie możesz przełączyć się na wirtualną konsolę, po prostu naciśnij kombinację magicznego klawisza ALT+ PrtSc+ E, to zabije lightdm, a następnie możesz przełączyć się na wirtualną konsolę i wykonać naprawę.

Jakich wskaźników możesz użyć? Nie wiem, mam tylko wartości domyślne, ale myślę, że możesz wypróbować dowolną, która instaluje się w wyżej wymienionych katalogach. (Lub możesz napisać własny wskaźnik jak zawsze.)

Źródło ich wszystkich? Zajrzałem do kodu: link i link

sokolnik
źródło
czy chcesz powiedzieć, że znajduje libmessaging.soplik, a następnie skopiuj go wklej do /usr/lib/indicators3/7katalogu, czy mam rację?
Avinash Raj
@AvinashRaj Nie, miałem na myśli, że możliwe jest, że katalog, w którym moduł witający jedność szuka wskaźników, różni się w zależności od wersji. Z kodu źródłowego mogłem tylko dowiedzieć się, że istnieją 2 katalogi, w których program witający jedność szuka wskaźników. /usr/share/unity/indicatorsWygląda tak samo na wersji, ale /usr/lib/indicators3/7dyrektor może się różnić od wersji. Chciałem więc poszukać zainstalowanych domyślnych wskaźników, sprawdzić, gdzie są przechowywane, i po prostu zajrzeć do tego katalogu, aby zobaczyć, jakie wskaźniki są dostępne, a następnie możesz użyć ich nazw na liście.
sokolnik
patrz i.imgur.com/JPrincG.png
Avinash Raj
@AvinashRaj Możesz wypróbować wszystkie wskaźniki z tych 2 katalogów. Jeśli używasz jednego z usr/lib/...katalogu, wówczas obowiązują konwencje nazewnictwa, które napisałem powyżej, więc syncindicatorwystarczy, ale możesz libsyncindicator.sotakże użyć . W drugim katalogu możesz także użyć całej nazwy pliku lub pominąć com.canonical.indicator.sekcję. Tak więc w twoim przypadku poprawna linia w pliku zastępowania byłaby indicators=['libsyncindicator.so', 'printersmenu', 'libapplication', 'com.canonical.indicator.sound', 'messages']
falconer
Nie chcę wpaść w żadną krytyczną sytuację. Proszę wypróbuj to na Ubuntu 13.10 i powiadom mnie, jeśli to działa.
Avinash Raj