Ist es möglich, dem oberen Bereich des Anmeldebildschirms Symbole hinzuzufügen?

10

Ist es möglich, dem oberen Bereich des Anmeldebildschirms Symbole (außer Standardeinstellungen) hinzuzufügen?

Geben Sie hier die Bildbeschreibung ein

Wenn ja, welche Anwendungssymbole werden außer den Standardeinstellungen ( Onboard, Sound, Netzwerkmanager usw. ) zum oberen Bereich des Anmeldebildschirms hinzugefügt. Und wie füge ich das hinzu?

Ich verwende Ubuntu 13.10

Avinash Raj
quelle
Es ist der lightdm-Anmeldemanager, daher müssen Sie seine Dateien /usr/sharedirekt bearbeiten . Ich denke, es gab einen LightDM-Customizer, der dies erlaubte und den Hintergrund änderte, aber ich weiß nicht, ob es noch funktioniert.
Wilf
1
Kann ich dieses Hintergrundbild bekommen?
@Utkarsh Ich habe das obige Bild von der Google Bildsuche heruntergeladen.
Avinash Raj

Antworten:

14

Ich bin am 12.04, aber das wird auch am 13.10 funktionieren.

Ja, es ist möglich, die Indikatoren für den Unity-Greeter zu ändern. Wir könnten GSettings verwenden, um die Einstellungen zu ändern, aber da der Unity-Greeter nur vom lightdm-Benutzer ausgeführt wird (die Einstellungen wirken sich also nicht auf andere aus), ist es am einfachsten, einfach eine .overrideDatei zu schreiben .

1. Überprüfen Sie die Standardindikatoren

Sie können Ihre Standardindikatoren in dconf-editoroder in der /usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xmlDatei sehen. In der letzteren Datei sehen Sie einen ähnlichen Schlüssel:

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

, das sind die Standardeinstellungen für mich. Überprüfen Sie zuerst Ihre.

Am 13.10 sieht dieser Schlüssel folgendermaßen aus:

<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. Überprüfen Sie die verfügbaren Indikatoren

Sie können Ihre verfügbaren Indikatoren im /usr/lib/indicators3/7/Verzeichnis oder im /usr/share/unity/indicators/Verzeichnis überprüfen .

3. Schreiben Sie eine Überschreibungsdatei

Schreiben Sie einfach eine Datei mit ähnlichem Inhalt und speichern Sie sie unter /usr/share/glib-2.0/schemas/myoverride.gschema.override

Für 12.04

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

Für 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']

In der Version 12.04 habe ich den Messaging- Indikator zur Standardliste von 12.04 hinzugefügt . In der Version 13.10 habe ich den Nachrichtenindikator zur Standardliste von 13.10 hinzugefügt. Ich habe sie einfach zu der in SCHRITT 1 gezeigten Standardliste hinzugefügt. Sie können dies auch tun oder einige aus den Standardindikatoren entfernen, wenn Sie nicht möchten, dass sie auf dem Anmeldebildschirm angezeigt werden. (Achten Sie auf die Apostrophe.) WICHTIG : Am 12.04 müssen Sie die Anzeige 'ug-keyboard' und 'session' in der Liste behalten. Entfernen Sie sie daher NICHT , wenn Sie sie in der Standardzeile haben, da sonst lightdm hängen bleibt in einer Endlosschleife. (wie hier )

Namenskonventionen in der Override-Datei: Für Dateien im /usr/lib/indicators3/7/Verzeichnis sind der Dateiname vor "lib" und die Endung ".so" nicht wichtig. Für eine Datei mit dem Namen libmessaging.so können wir also 'libmessaging.so', 'libmessaging' oder verwenden "Messaging". Für die Dateien im /usr/share/unity/indicators/Verzeichnis steht der Dateiname vor "com.canonical.indicator". ist nicht wichtig, daher könnten wir für die Datei "com.canonical.indicator.bluetooth" "com.canonical.indicator.bluetooth" oder einfach "bluetooth" verwenden.

4. Backup (nur für den Fall)

Erstellen Sie eine Sicherungskopie der /usr/share/glib-2.0/schemas/gschemas.compiledDatei.

5. Kompilieren

Nach all dem laufen

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

6. Überprüfen Sie die Ergebnisse

Versuchen Sie danach, sich abzumelden und zu prüfen, ob es funktioniert hat. Sie können den Anmeldebildschirm auch testen, ohne sich abzumelden, wenn Sie dies von einem Terminal aus versuchen:

lightdm --test-mode

oder

unity-greeter --test-mode 

Bei mir am 12.04 hat die Messaging-Anzeige funktioniert, meine Druckermenü-Anzeige nicht. Am 13.10 habe ich mit dem Nachrichtenindikator getestet und es wurde nicht angezeigt, aber es wurden keine Fehler erzeugt. Daher habe ich vermutet, dass es nicht auf dem Begrüßungsbildschirm angezeigt wird, da es dort meistens unbrauchbar ist. Also habe ich die /usr/share/unity/indicators/com.canonical.indicator.messagesDatei überprüft und bestätigt, dass sie keinen Abschnitt [desktop_greeter] enthält, wie z. B. die Sitzungsanzeige. Wenn Sie also nicht möchten, dass der Nachrichtenindikator (oder ein anderer Indikator ohne den Abschnitt [desktop_greeter]) auf dem Anmeldebildschirm angezeigt wird (auch wenn er dort meistens unbrauchbar ist), müssen Sie auch die Datei im /usr/share/unity/indicators/Verzeichnis bearbeiten und Erstellen Sie eine Kopie des Abschnitts [desktop] in dieser Datei und benennen Sie die Kopie in den Abschnitt [desktop_greeter] um. ZB für den Nachrichtenindikator habe ich diese Datei erhalten für /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

Nach dieser Änderung in der Datei wurde die Nachrichtenanzeige auch für 13.10 auf dem Anmeldebildschirm angezeigt.

Wenn etwas schlecht geht und der Login - Bildschirm nach oben nicht kommt, wechseln Sie einfach auf eine virtuelle Konsole CTRL+ ALT+ F1und Ihre Sicherung wiederherstellen gschemas.compiledDatei. Oder entfernen Sie Ihre myoverride.gschema.overrideDatei und führen Sie sie sudo glib-compile-schemas /usr/share/glib-2.0/schemaserneut aus. Wenn der Lighdtm in einer Endlosschleife steckt und Sie nicht zur virtuellen Konsole wechseln können, drücken Sie einfach die magische Tastenkombination ALT+ PrtSc+. EDadurch wird lightdm beendet. Danach können Sie zur virtuellen Konsole wechseln und die Reparatur durchführen.

Welche Indikatoren können Sie verwenden? Ich weiß nicht, ich habe nur die Standardeinstellungen, aber ich denke, Sie können alle ausprobieren, die sich selbst in den oben aufgeführten Verzeichnissen installieren. (Oder Sie können wie immer einen eigenen Indikator schreiben .)

Quelle für all dies? Ich habe in den Code geschaut: Link und Link

Falkner
quelle
Wollten Sie sagen, dass Sie die libmessaging.soDatei finden und dann kopieren und in das /usr/lib/indicators3/7Verzeichnis einfügen müssen ? Bin ich richtig?
Avinash Raj
@AvinashRaj Nein, ich meinte, dass es möglich ist, dass das Verzeichnis, in dem der Unity-Greeter nach den Indikatoren sucht, von Version zu Version unterschiedlich ist. Aus dem Quellcode konnte ich nur ersehen, dass es 2 Verzeichnisse gibt, in denen der Unity-Greeter nach Indikatoren sucht. Das /usr/share/unity/indicatorssieht pro Version gleich aus, aber der /usr/lib/indicators3/7Regisseur kann je nach Version unterschiedlich sein. Ich wollte also nach den installierten Standardindikatoren suchen, nachsehen, wo sie gespeichert sind, und einfach in diesem Verzeichnis nachsehen, welche Indikatoren verfügbar sind. Dann können Sie ihre Namen in der Liste verwenden.
Falkner
siehe i.imgur.com/JPrincG.png
Avinash Raj
@AvinashRaj Sie können alle Indikatoren aus diesen beiden Verzeichnissen ausprobieren. Wenn Sie eine aus dem usr/lib/...Verzeichnis verwenden, gelten die oben beschriebenen Namenskonventionen, die syncindicatorausreichen, aber Sie können sie libsyncindicator.soauch verwenden. Für das andere Verzeichnis können Sie auch den gesamten Namen der Datei verwenden oder den com.canonical.indicator.Abschnitt weglassen. In Ihrem Fall wäre eine gültige Zeile in der Überschreibungsdatei ungefähr so:indicators=['libsyncindicator.so', 'printersmenu', 'libapplication', 'com.canonical.indicator.sound', 'messages']
Falkner
Ich möchte nicht in eine kritische Situation geraten. Bitte versuchen Sie es auf Ubuntu 13.10 und benachrichtigen Sie mich, wenn es funktioniert.
Avinash Raj