Можно ли изменить порядок иконок в апплете индикатора?

49

Можно ли изменить порядок значков, отображаемых в апплете индикатора? С индикатором Tomboy, индикатором погоды, индикатором буфера обмена, индикаторами Ubuntu One и Dropbox и индикатором состояния батареи в дополнение к классическому индикатору «Сообщения» и индикатору «Меню звука» мой апплет-индикатор становится немного запутанным, сортировка значков очень поможет. ...

Plopp
источник
1
Не ответ, но в kde (kubuntu) я могу разместить или удалить практически все на рабочем столе и панели, включая индикаторы.
Джо

Ответы:

29

Системные показатели находятся в фиксированном порядке по конструкции. Хотя вам может не понравиться заказ, он делает поддержку проще, имея фиксированный заказ (мы можем бесконечно спорить о заказе). Индикаторы приложений работают немного по-другому, они спроектированы так, что есть порядок по умолчанию, но приложения могут регулировать его для обеспечения непрерывности. Например, если у приложения было два индикатора, которые он хотел, рядом друг с другом.

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

   /usr/share/indicator-application/ordering-override.keyfile

Вы можете поместить туда любой идентификатор уведомления о статусе и присвоить ему новый индекс заказа, который будет соответствовать новому индексу для этого приложения. Существует также файл переопределения для каждого пользователя, который может существовать в вашем домашнем каталоге по адресу:

  ~/.local/share/indicators/application/ordering-override.keyfile

Надеюсь, это поможет вам настроить панель так, как вы предпочитаете!

Тед Гулд
источник
Я получил системные индикаторы, перечисленные в первом файле. Но нет ~/.local/share/indicatorsкаталога. Помогите!
Чарли
2
Этот ответ, вероятно, устарел, у меня нет такого файла в ~/.local. Файл в /usr/shareне содержит записи для всех приложений индикатора и изменение его не произвело никакого эффекта. Было бы неплохо получить ответ на 14.04.
Луис де Соуза
1
Он работает с Ubuntu 14.04, вам просто нужно явно добавить каждый индикатор, который вы используете в файл. Запустите эту команду, чтобы выяснить, какие из них вы используете: dbus-send --type=method_call --print-reply --dest=com.canonical.indicator.application /com/canonical/indicator/application/service com.canonical.indicator.application.service.GetApplications | grep "object path" | sed 's/_/-/g' | cut -d"/" -f5Тем не менее, она не будет работать с Dropbox, потому что идентификатор уведомителя о состоянии изменяется в зависимости от PID Dropbox. Я добавил ответ ниже, чтобы обновить файл ordering-override.keyfile, основанный на PID Dropbox.
Gruzzles
Это работает для 15.04? Я создал файл .local, но не вижу, как он работает. /usr/shareПрисутствует оригинальный глобальный файл в , который предполагает, что он должен работать. Разбирается ли где-нибудь разбор этого файла? Есть ли способ отладки, если что-то идет не так?
Жан Джордаан
@ ted-gould Можете ли вы указать код в источнике индикатора-апплета, который фиксирует порядок?
Хуршид Алам
17

Официальные Ubuntu (погода, Ubu-One, батарея, сообщения, я, звук, выключение) жестко запрограммированы на месте. Отстой. Остальные должны принять свой порядок, используя закон «первым пришел - первым обслужен», слева направо. Судя по этому запросу мозгового штурма / функции , ответ таков: нет, вы не можете вручную изменить порядок значков через графический интерфейс. Но смотрите ответ @Ted Gould .

djeikyb
источник
1
Я-я тоже этот баг Хорошая находка. Благодарю.
Scaine
11

Чтобы изменить положение индикаторов приложения на панели Unity, вы должны отредактировать файл, ordering-override.keyfileкоторый находится в /usr/share/indicator-application. Поскольку редактирование этого файла изменит настройки для всех пользователей, вы можете скопировать его ~/.local/share/indicators/application/ordering-override.keyfileи внести изменения только для вашего пользователя:

mkdir -p ~/.local/share/indicators/application
cp /usr/share/indicator-application/ordering-override.keyfile ~/.local/share/indicators/application/

Теперь откройте файл, выполнив следующую команду в терминале:

gedit ~/.local/share/indicators/application/ordering-override.keyfile

В этом файле вы должны увидеть существующие правила для порядка индикаторов приложения на панели. Первый из них nm-appletимеет значение «1», что означает, что он будет первым индикатором приложения, отображаемым на панели справа налево.

Используя это в качестве примера, вы можете добавить свои собственные индикаторы приложения и указать их положение, введя их имя и номер, например transmission=6, чтобы индикатор приложения трансмиссии отображался как 6-й индикатор на панели (справа налево), если другие 5 показателей существуют.

Источник: http://www.webupd8.org/2011/06/how-to-change-application-indicators.html

Теперь, в вашем случае, ordering-override.keyfileфайл должен выглядеть так:

[Ordering Index Overrides]
nm-applet=1
My_Weather_Indicator=2
lang_indicator=3
bluetooth_manager=4
indicator_sysmonitor=5
transmission=6
Раду Рэдяну
источник
1
@James Это, очевидно, также относится к индикаторам, предоставляемым приложением, поскольку в качестве примера используется Transmission.
Лео Лам
Это работает для 15.04? Я создал файл .local, но не вижу, как он работает. /usr/shareПрисутствует оригинальный глобальный файл в , который предполагает, что он должен работать. Разбирается ли где-нибудь разбор этого файла? Есть ли способ отладки, если что-то идет не так?
Жан Джордаан
После того, как kill $(pgrep unity-panel-service)это работает :-) Я перезагрузился после создания ordering-override.keyfile, так что я не знаю, почему он "взял" после перезапуска этой панели.
Жан Джордаан
Этот способ перезапуска панели root@laptop:~# restart unity-panel-serviceбольше не работает:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Жан Джордаан
4

Инструкция по включению сортировки индикатора Dropbox

Следуйте инструкциям Теда Гулда, затем, если вы хотите отсортировать индикатор Dropbox, вот еще несколько шагов:

Примечание : если вы отредактировали файл, /usr/share/...то вам придется вставить скрипт /etc/rc.local(ищитеПримечание ниже)

Поскольку Dropbox добавляет PID к имени индикатора, и он меняется каждый раз при запуске Dropbox, вам необходимо обновлять ordering-override.keyfileкаждый раз, когда запускается Dropbox.

Для этого вы можете открыть текстовый редактор, скопировать и вставить следующий скрипт и назвать его как-то так start-dropbox.sh. Затем либо щелкните правой кнопкой мыши, выберите «Свойства», перейдите на вкладку «Права доступа» и установите флажок «Разрешить запуск файла как программы», либо откройте терминал, перейдите в папку, в которую вы поместили скрипт, и выполните команду runsudo chmod 755 ./start-dropbox.sh

#!/bin/bash
#Disclaimer: This script is intended for use with Ubuntu 14.04. You alone are responsible any consequence resulting from its use.
#The purpose of this script is to start dropbox, update the keyfile, and restart the indicator panel.

#Start dropbox if not already started (for some reason pgrep didn't work)
[[ $(ps aux | grep dropbox | grep dist | awk '{print $2 }') = "" ]] && dropbox start -i

#If the override file exists
if [[ -e ~/.local/share/indicators/application/ordering-override.keyfile ]]
then
    while [ "$(ps aux | grep dropbox | grep dist | awk '{print $2 }')" = "" ]; do
        sleep 1s
    done
    sleep 5s #dropbox creates several PIDs, so wait a bit before continuing
    sed -e "s/dropbox-client-.*=/dropbox-client-$(ps aux | grep dropbox | grep dist | awk '{print $2 }')=/g" -i ~/.local/share/indicators/application/ordering-override.keyfile
    restart unity-panel-service
fi

Теперь вы можете открыть «Запуск приложений» и создать новую запись, используя полный путь к вашему сценарию в качестве «команды» (использование ~ / start-dropbox.sh не сработает, вам нужно сделать / home / yourname / start -dropbox.sh).

** Примечание . Здесь вы добавите полный путь к сценарию в конце/etc/rc.local

Один из необязательных шагов - открыть настройки Dropbox и снять флажок «Запускать Dropbox при запуске системы». Вы не можете просто изменить команду для Dropbox, которая уже есть в списке автозагрузки приложений, потому что Dropbox перезаписывает это при каждом запуске.

Вы сделали!

Вот как ~/.local/share/indicators/application/ordering-override.keyfileвыглядит моя :

[Ordering Index Overrides]
multiload=13
My-Weather-Indicator=12
redshift=11
Diodon=10
Chars=9
indicator-brightness=8
dropbox-client-24651=7
nm-applet=6
gnome-power-manager=5
ibus=4
gst-keyboard-xkb=3
gsd-keyboard-xkb=2
chrome-app-indicator-1=1
Gruzzles
источник
root@laptop:~# restart unity-panel-service restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Жан Джордаан,