adicionar icons através de script

Iniciado por hraposo, 22 de Agosto de 2007, 09:09

tópico anterior - próximo tópico

mailson

Se você for no gconf-editor (Alt-F2 > gconf-editor) e depois ir em apps > panel > objects > object_* (onde * é um número) verás o ícone adicionado por você via mouse tem informações lá também e não somente em ~/.gnome1/panel2.d/default/launchers/icone.desktop

Para editar essas informações tens que ir em ~/.gconf/apps/panel/objects/ e lá você verá que existem algumas pastas no padrão object_# (onde # é um número) e dentro dela existe um arquivo chamado %gconf.xml. É nele que ficam as informações sobre o posicionamento do lançador.
Observe que existem várias pastas com o nome object_# mas não é obrigatório ser nesse padrão, vide o lançador do firefox (se você ainda tiver ele, claro)
Criada a pasta, você terá que criar dentro dela um arquivo chamado %gconf.xml

Eu tenho um lançador aqui chamado eject. Vamos abrir o %gconf.xml dele:
O que estiver entre <!-- e --> são comentários adicionados por mim para facilitar o entendimento

<?xml version="1.0"?>
<gconf>
        <entry name="menu_path" mtime="1185342707" schema="/schemas/apps/panel/objects/menu_path"/>
        <entry name="locked" mtime="1187049717" schema="/schemas/apps/panel/objects/locked" type="bool" value="false">
        </entry>
        <!-- Indica a posição em pixels que o lançador vai ficar.  -->
        <!-- Acredito que se deixar 0 o gnome automaticamente coloca o ícone numa posição adequada. Ainda não testei -->
        <entry name="position" mtime="1187049725" schema="/schemas/apps/panel/objects/position" type="int" value="274">
        </entry>
        <!-- Indica o tipo do objeto que vai ser adicionado. No caso launcher-object  -->
        <entry name="object_type" mtime="1185342707" schema="/schemas/apps/panel/objects/object_type" type="string">
                <stringvalue>launcher-object</stringvalue>
        </entry>
        <entry name="panel_right_stick" mtime="1185342707" schema="/schemas/apps/panel/objects/panel_right_stick" type="bool" value="false">
        </entry>
        <entry name="use_menu_path" mtime="1185342707" schema="/schemas/apps/panel/objects/use_menu_path"/>
        <!-- Localização do arquivo.desktop que vai tratar do evento. A pasta padrão é ~/.gnome/panel2.d/default/launchers/ -->
        <entry name="launcher_location" mtime="1185342707" schema="/schemas/apps/panel/objects/launcher_location" type="string">
                <stringvalue>eject-1.desktop</stringvalue>
        </entry>
        <entry name="custom_icon" mtime="1185342707" schema="/schemas/apps/panel/objects/custom_icon"/>
        <entry name="tooltip" mtime="1185342707" schema="/schemas/apps/panel/objects/tooltip"/>
        <entry name="action_type" mtime="1185342707" schema="/schemas/apps/panel/objects/action_type"/>
        <entry name="use_custom_icon" mtime="1185342707" schema="/schemas/apps/panel/objects/use_custom_icon"/>
        <entry name="attached_toplevel_id" mtime="1185342707" schema="/schemas/apps/panel/objects/attached_toplevel_id"/>
        <entry name="bonobo_iid" mtime="1185342707" schema="/schemas/apps/panel/objects/bonobo_iid"/>
        <!-- Indica em que painel o lançador vai ser colocado. No caso será o painel superior -->
        <entry name="toplevel_id" mtime="1185342707" schema="/schemas/apps/panel/objects/toplevel_id" type="string">
                <stringvalue>top_panel_screen0</stringvalue>
        </entry>
</gconf>


Ficou claro que não é obrigatório colocar o arquivo.desktop dentro da pasta ~/.gnome/panel2.d/default/launchers/
Você pode editar a linha que indica a localização do arquivo.desktop colocando qualquer caminho que você quiser.

PS.: Se você quiser manter o padrão object_# para no novo objeto criado a linha abaixo irá te ajudar
$NUMERO=`ls --format=single-column | sed -n '/object/p' | tail -n 1 | cut -d_ -f 2`
Ela retorna o número do último object adicionado.  Assim é só fazer $NUMERO + 1