É possível alterar a ordem dos ícones no miniaplicativo indicador?

49

É possível alterar a ordem dos ícones mostrados no miniaplicativo indicador? Com o indicador Tomboy, o indicador de clima, o indicador de gerente da área de transferência, os indicadores Ubuntu One e Dropbox e o indicador de status da bateria, além do indicador clássico de Mensagens e do menu Sound Menu, meu miniaplicativo indicador fica um pouco confuso, classificar os ícones ajudaria bastante ...

plopp
fonte
1
Não é uma resposta, mas no kde (kubuntu), posso colocar ou remover praticamente qualquer coisa na área de trabalho e no painel, incluindo os indicadores.
Joe

Respostas:

29

Os indicadores do sistema estão em uma ordem fixa por design. Embora você não goste do pedido, ele facilita o suporte ao ter um pedido fixo (podemos discutir sobre o pedido sem parar). Os indicadores de aplicativos funcionam de maneira um pouco diferente, eles são projetados para que haja um pedido padrão, mas os aplicativos podem ajustá-lo para garantir a continuidade. Por exemplo, se um aplicativo tivesse dois indicadores desejados próximos um do outro.

Como esse sistema leva a um possível abuso pelos desenvolvedores de aplicativos, há um conjunto de substituições no sistema. O primeiro é no nível do sistema, para que ele possa ser gerenciado por pacotes quando a distribuição descobrir que há um aplicativo abusivo, que pode ser corrigido para todos os usuários. Está localizado em:

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

Você pode inserir qualquer ID do notificador de status e atribuir a ele um novo índice de pedidos, devido ao novo índice desse aplicativo. Há também um arquivo de substituição por usuário que pode existir no diretório inicial em:

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

Espero que isso lhe ajude a ajustar seu painel da maneira que você preferir!

Ted Gould
fonte
Eu tenho os indicadores do sistema listados no primeiro arquivo. Mas não tem um ~/.local/share/indicatorsdiretório. Socorro!
14133 charlie
2
Esta resposta provavelmente está desatualizada. Não tenho esse arquivo ~/.local. O arquivo em /usr/sharenão contém entradas para todos os aplicativos de indicador e a alteração não produziu efeitos. Seria bom ter uma resposta para 14.04.
Luís de Sousa
1
Funciona com o Ubuntu 14.04, basta adicionar explicitamente todos os indicadores que você está usando ao arquivo. Execute este comando para descobrir quais você está usando: 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"/" -f5Porém, ele não funcionará com o Dropbox, porque o ID do notificador de status é alterado com base no PID do dropbox. Adicionei uma resposta abaixo para atualizar o arquivo ordering-override.key com base no PID do Dropbox.
Gruzzles
Isso funciona para 15.04? Eu criei o arquivo .local, mas não o vejo funcionando. O arquivo global original /usr/shareestá presente, o que sugere que ele funcione. A análise desse arquivo é registrada em algum lugar? Existe uma maneira de depurar se algo estiver errado?
Jean Jordaan
@ ted-gould Você pode identificar o código na fonte do miniaplicativo indicador que torna a ordem fixa?
Khurshid Alam
17

Os ubuntu oficiais (clima, ubu-one, bateria, mensagens, eu, som, desligamento) são codificados no local. É uma merda. Os outros devem ordenar usando a lei do primeiro a chegar, primeiro a ser servido, precedência direita-esquerda. A julgar pelo pedido de brainstorm / recurso , a resposta é: Não, você não pode alterar manualmente a ordem dos ícones por meio da GUI. Mas veja a resposta de @Ted Gould .

djeikyb
fonte
1
Eu também - esse bug. Bom achado. Obrigado.
Scaine
11

Para alterar a posição dos indicadores de aplicativos no painel Unity, você deve editar um arquivo chamado ordering-override.keyfilelocalizado abaixo /usr/share/indicator-application. Como a edição deste arquivo altera as configurações de todos os usuários, você pode copiá-lo ~/.local/share/indicators/application/ordering-override.keyfilee fazer as alterações apenas para o usuário:

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

Agora abra o arquivo executando o seguinte comando em um terminal:

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

Neste arquivo, você deve ver as regras existentes para a ordem dos Indicadores de aplicativo no painel. O primeiro é nm-applete possui o valor "1", o que significa que será o primeiro indicador de aplicativo a ser exibido no painel, da direita para a esquerda.

Usando isso como exemplo, você pode adicionar seus próprios Indicadores de Aplicação e especificar sua posição digitando seu nome e um número como o transmission=6que fará com que o Indicador de Aplicativo de Transmissão apareça como o sexto indicador no painel (da direita para a esquerda), se os outros 5 indicadores existem.

Fonte: http://www.webupd8.org/2011/06/how-to-change-application-indicators.html

Agora, no seu caso, o ordering-override.keyfilearquivo deve ficar assim:

[Ordering Index Overrides]
nm-applet=1
My_Weather_Indicator=2
lang_indicator=3
bluetooth_manager=4
indicator_sysmonitor=5
transmission=6
Radu Rădeanu
fonte
1
@ James Isso obviamente também se aplica aos indicadores fornecidos pelo aplicativo, uma vez que a Transmissão é usada como exemplo.
Léo Lam
Isso funciona para 15.04? Eu criei o arquivo .local, mas não o vejo funcionando. O arquivo global original /usr/shareestá presente, o que sugere que ele funcione. A análise desse arquivo é registrada em algum lugar? Existe uma maneira de depurar se algo estiver errado?
Jean Jordaan
Depois que kill $(pgrep unity-panel-service)isso funciona :-) Eu reiniciei depois de criar o ordering-override.keyfile, então não sei por que ele "levou" após a reinicialização deste painel.
21419 Jean Jordaan
Esta forma de reiniciar o painel root@laptop:~# restart unity-panel-servicenão funciona mais:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
Jean Jordaan
4

Instruções para ativar a classificação do indicador do Dropbox

Siga as instruções de Ted Gould e, se desejar classificar o indicador do Dropbox, veja mais algumas etapas:

Nota : Se você editou o arquivo /usr/share/..., precisará inserir o script /etc/rc.local(procure porNota abaixo)

Como o Dropbox anexa o PID ao nome do indicador, e isso muda toda vez que o Dropbox é iniciado, é necessário atualizar a ordering-override.keyfilecada vez que o dropbox é iniciado.

Para fazer isso, você pode abrir um editor de texto, copiar e colar o seguinte script e dar um nome a ele start-dropbox.sh. Em seguida, clique com o botão direito do mouse, selecione "propriedades", vá para a guia "permissões" e marque a caixa "permitir a execução de arquivos como programa" ou abra um terminal, navegue até a pasta em que o script foi inserido e execute 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

Agora você pode abrir "Aplicativos de inicialização e criar uma nova entrada, usando o caminho completo para o seu script como o" comando "(usar ~ / start-dropbox.sh não funcionará, você deve fazer / home / yourname / start -dropbox.sh).

** Nota : é aqui que você adiciona o caminho completo do script até o final de/etc/rc.local

Uma etapa opcional é abrir as configurações do Dropbox e desmarcar "Iniciar o dropbox na inicialização do sistema". Você não pode simplesmente alterar o comando do Dropbox que já está na lista Aplicativos de inicialização, porque o Dropbox substitui isso toda vez que é iniciado.

Você Terminou!

Aqui está a minha ~/.local/share/indicators/application/ordering-override.keyfileaparência:

[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
fonte
root@laptop:~# restart unity-panel-service restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
21915 Jean Jordaan