Como adicionar ícones com lista suspensa com ações ao Painel do Ubuntu

3

Eu tenho alguns scripts / programas que eu corro com frequência. Como posso adicionar um ícone ao Painel para, por exemplo, como o Dropbox, que quando clicado oferece um menu suspenso com várias opções, cada opção ao clicar executa um script de shell ou um programa com alguns argumentos (bom ter - reportar sucesso ou falha).

    
por zcqwevb 03.11.2015 / 13:42

2 respostas

2

Você pode criar um ícone de lançador personalizado para executar seus scripts. Abra seu editor de texto favorito e copie o snippet abaixo:

[Desktop Entry]
Encoding=UTF-8
Name=My Scripts
Name[de]=Meine Skripte
Exec=myscript_0.sh
Terminal=true
Type=Application
Icon=terminal
StartupNotify=true
Actions=ContextMenu1;ContextMenu2

[Desktop Action ContextMenu1]
Name=Run script 1
Name[de]=Skript 1 starten
Exec=myscript_1.sh

[Desktop Action ContextMenu2]
Name=Run script 2
Name[de]=Skript 2 starten
Exec=myscript_2.sh

Agora é hora de modificar este stub acima, já que ele não será útil como é para você!

[Desktop Entry] seção:

  • Encoding=UTF-8 Melhor não modificar esta linha, porque senão você terá problemas se usar qualquer caractere não-ASCII neste arquivo.
  • Name=... Digite qualquer string aqui, será o nome padrão em inglês do item de inicialização.
  • Name[de]=... O mesmo que Name= , mas para a tradução alemã (de).
    É apenas um exemplo, você pode remover todas essas linhas com [de] ou substituí-las por outro código de localidade.
  • Exec=... Digite o comando que você deseja executar se o ícone do lançador for clicado aqui.
     Se o script estiver localizado em uma pasta listada na variável de ambiente $PATH , o nome do executável é suficiente, caso contrário, você deverá especificar o caminho completo.
     Certifique-se de que não haja erros de digitação e que o script seja executável ( chmod +x e comece com uma linha "shebang" válida)!
    • Terminal=true Se você definir como false , nenhuma janela de terminal será aberta e o script será executado em segundo plano.
    • Type=Application Não altere esta linha.
    • Icon=terminal Especifica o ícone do item do iniciador. Você pode usar nomes genéricos como terminal ou digitar o caminho completo para um arquivo de imagem.
    • StartupNotify=true Faz com que o ponteiro do mouse execute a animação "aguardando" (círculo giratório / ampulheta) no tempo entre o clique no ícone e quando a janela é aberta. Você pode configurá-lo para false , se quiser.
    • Actions=... Lista os nomes dos identificadores internos para as entradas do menu de contexto. Eles precisam corresponder aos usados nas manchetes da seção do menu de contexto ( [Desktop Action ...] ) e precisam ser uma lista separada por ponto-e-vírgula sem espaços.

[Desktop Action ...] sections:

Você só precisa das chaves Name (e traduções como Name[de] , se quiser) e Exec aqui. Os mesmos critérios acima aplicam-se aqui também.

Verifique também se o identificador (aqui ContextMenu1 e ContextMenu2 ) no título da seção aparece na lista Actions= acima!

O número de tais blocos de menu de contexto é ilimitado.

Depois de modificar o stub de exemplo acima, salve-o no diretório ~/.local/share/applications/ com um nome de arquivo personalizado, mas a extensão .desktop .

Em seguida, ele deve aparecer na Lente de Aplicação do seu Unity Dash ( Super + A ). Se isso não ocorrer, efetue logout e back in para atualizá-lo. Em seguida, arraste-o do Dash para a barra de inicialização com o mouse. Um clique com o botão direito do mouse abrirá o menu de contexto, onde todos os itens "Desktop Action" são listados, como na captura de tela de exemplo abaixo:

    
por Byte Commander 03.11.2015 / 17:15
1

A resposta não fornece uma maneira de criar um indicador, mas fornece uma alternativa. A ideia principal é usar uma lista gráfica de scripts para lançá-los.

Script

O script abaixo usa uma matriz de caminhos completos para os scripts favoritos, que o usuário pode querer lançar. Sugere-se que o seguinte script seja salvo na pasta pessoal $HOME/bin e tornado executável com chmod +x . Ele também pode ser vinculado a um atalho de teclado para chamar facilmente o inicializador ou, alternativamente, colocado em um atalho .desktop , conforme mostrado na resposta do ByteCommander.

Siga a sugestão nos comentários do script para modificá-lo para atender às suas necessidades

#!/bin/bash
# -------------------------------
# Author: Serg Kolo
# Date: Nov 10th, 2015
# Description: A launcher for favorite scripts
# Written for: http://askubuntu.com/q/693413/295286
#---------------------------------

# ARRAY holds full paths to scripts that you want to launch
# Always enclose paths in double quotes, separate by spaces

ARRAY=("/home/xieerqi/bin/sh/resizer.sh" "/home/xieerqi/bin/sh/verticalSplit.sh" "/home/xieerqi/bin/sh/vol-down.sh"  )

# This launches zenity dialog with the list from ARRAY
# Stores into SCRIPT variable
SCRIPT="$( zenity --list --title "Select script to run" --column "Script files" "${ARRAY[@]}" | cut -d '|' -f1)"

# If SCRIPT variable is empty, do nothing, fail silently
# If exists, check if user has executable permissions
# Implies script existence
if  [ -n "$SCRIPT" ];then
  if  [ -x "$SCRIPT" ] ; then
    # if you want to see script running in terminal
    # replace the line bellow with  xterm -hold -e "$SCRIPT" 
    "$SCRIPT" &
   else
    zenity --error --text "File doesn't exist or wrong permission "
  fi
fi 

Screenshot

    
por Sergiy Kolodyazhnyy 10.11.2015 / 22:57