Можно ли добавить значки на верхнюю панель экрана входа?

10

Можно ли добавить значки (кроме значений по умолчанию) на верхнюю панель экрана входа в систему?

введите описание изображения здесь

Если да, то какие значки приложений будут добавлены на верхнюю панель экрана входа в систему, кроме значений по умолчанию ( встроенный, звуковой, менеджер сети и т. Д. ). И как мне это добавить?

Я использую Ubuntu 13.10

Авинаш Радж
источник
Это менеджер входа lightdm, так что вам придется редактировать его файлы /usr/shareнапрямую. Я думаю, что был настройщик lightdm, который позволял это и изменять фон, но я не делаю, если это все еще работает ..
Уилф
1
я могу получить эти обои?
@Utkarsh Я скачал вышеупомянутое изображение из поиска картинок Google.
Авинаш Радж

Ответы:

14

Я на 12.04, но это будет работать и на 13.10.

Да, можно изменить индикаторы для единителя. Мы могли бы использовать GSettings для изменения настроек, но так как агрегатор единства запускается только пользователем lightdm (так что настройки ни на кого не влияют), проще всего написать .overrideфайл.

1. Проверьте показатели по умолчанию

Вы можете увидеть ваши стандартные показатели в dconf-editorили в /usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xmlфайле. В последнем файле вы увидите ключ, похожий на этот:

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

, это по умолчанию для меня. Проверь сначала.

13.10 этот ключ выглядит так:

<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 Проверьте доступные показатели

Вы можете проверить доступные индикаторы в /usr/lib/indicators3/7/каталоге или в /usr/share/unity/indicators/каталоге.

3. Написать файл переопределения

Просто напишите файл с похожим содержимым и сохраните его как /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']

За 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']

В версии 12.04 я добавил сообщения индикатора в список по умолчанию 12.04. В версии 13.10 я добавил индикатор сообщений в список по умолчанию 13.10. Я просто добавил их в список по умолчанию, показанный в ШАГЕ 1 , вы тоже можете это сделать или удалить некоторые из индикаторов по умолчанию, если не хотите, чтобы они отображались на экране входа в систему. (Остерегайтесь апострофов.) ВАЖНО : 12.04 вы должны оставить в списке «ug-keyboard» и индикатор «session» , поэтому НЕ удаляйте их, если они есть в строке по умолчанию, иначе lightdm застрянет. в бесконечной петле. (как здесь )

Соглашения об именах в файле переопределения: для файлов в /usr/lib/indicators3/7/каталоге предшествующее имени файла «lib» и окончание «.so» не важны, поэтому для файла с именем libmessaging.so мы можем использовать «libmessaging.so», «libmessaging» или «сообщения». Для файлов в /usr/share/unity/indicators/каталоге имя файла предшествует «com.canonical.indicator». это не важно, поэтому для файла «com.canonical.indicator.bluetooth» мы можем использовать «com.canonical.indicator.bluetooth» или просто «bluetooth».

4. Резервное копирование (на всякий случай)

Сделайте резервную копию /usr/share/glib-2.0/schemas/gschemas.compiledфайла.

5. Скомпилируйте

После всего этого бега

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

6. Проверьте результаты

После этого попробуйте выйти из системы и посмотреть, сработало ли это. Или вы можете также выполнить тестирование экрана входа в систему, не выходя из системы, если вы попробуете из терминала:

lightdm --test-mode

или

unity-greeter --test-mode 

Для меня 12.04 индикатор сообщений работал, мой индикатор printersmenu - нет. 13.10 я проверил с индикатором сообщений, и он не показывался, но также не выдавал ошибок, поэтому я догадался, что он не показывается на экране приветствия, потому что он в основном там бесполезен. Поэтому я проверил /usr/share/unity/indicators/com.canonical.indicator.messagesфайл, и он подтвердил, что в нем нет раздела [desktop_greeter], как, например, в индикаторе сеанса. Поэтому, если вы не хотите, чтобы индикатор сообщений (или другой индикатор без раздела [desktop_greeter]) отображался на экране входа в систему (даже если он в основном бесполезен), вам также придется отредактировать его файл в /usr/share/unity/indicators/каталоге, и сделайте копию раздела [desktop] в этом файле и переименуйте копию в раздел [desktop_greeter]. Например, для индикатора сообщений я получил этот файл для /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

После внесения этого изменения в файл индикатор сообщений также появился на экране входа 13.10.

Если что-то идет не так и экран входа в систему не появляется, просто переключитесь на виртуальную консоль CTRL+ ALT+ F1и восстановите gschemas.compiledфайл резервной копии . Или удалите свой myoverride.gschema.overrideфайл и запустите sudo glib-compile-schemas /usr/share/glib-2.0/schemasснова. Если lighdtm застрял в бесконечном цикле, и вы не можете переключиться на виртуальную консоль, просто нажмите комбинацию магических клавиш ALT+ PrtSc+ E, это убьет lightdm, и после этого вы можете переключиться на виртуальную консоль и выполнить ремонт.

Какие показатели вы можете использовать? Я не знаю, у меня есть только значения по умолчанию, но я думаю, вы можете попробовать любой, который устанавливает себя в те каталоги, перечисленные выше. (Или вы можете написать собственный индикатор, как всегда.)

Источник для всего этого? Я посмотрел в коде: ссылка и ссылка

сокольничий
источник
Вы хотите сказать, найти libmessaging.soфайл, а затем скопировать вставить его в /usr/lib/indicators3/7каталог, я прав?
Авинаш Радж
@AvinashRaj Нет, я имел в виду, что вполне возможно, что каталог, в котором сборщик юнитов ищет индикаторы, отличается по версиям. Из исходного кода я мог только получить, что есть 2 каталога, где единитель ищет индикаторы. /usr/share/unity/indicatorsВыглядит так же в версии, но /usr/lib/indicators3/7режиссер может отличаться от версии. Поэтому я хотел найти установленные индикаторы по умолчанию, посмотреть, где они хранятся, и просто посмотреть в этом каталоге, чтобы увидеть, какие индикаторы доступны, а затем вы можете использовать их имена в списке.
Сокольничий
см. i.imgur.com/JPrincG.png
Авинаш Радж
@AvinashRaj Вы можете опробовать все показатели из этих двух каталогов. Если вы используете один из usr/lib/...каталога, то соглашения о присвоении имен, которые я написал выше, остаются syncindicatorв силе, но этого достаточно, но вы также можете их использовать libsyncindicator.so. Для другого каталога вы также можете использовать полное имя файла или вы можете пропустить этот com.canonical.indicator.раздел. Таким образом, в вашем случае допустимая строка в файле переопределения будет выглядеть примерно так:indicators=['libsyncindicator.so', 'printersmenu', 'libapplication', 'com.canonical.indicator.sound', 'messages']
falconer
Я не хочу попадать в какие-либо критические ситуации, пожалуйста, попробуйте это на Ubuntu 13.10 и сообщите мне, если это работает.
Авинаш Радж