Script em yad para localizar aplicações para ser usando em window manager como Window Maker, Openbox e outros que não tem opção nativa para localizar aplicações, bastando apenas criar um atalho no menu de programa pra o mesmo está sempre disponível facilmente.
Este script localiza aplicações executáveis ou script em diretórios específicos, não faz distinção de maiúscula ou minúscula e você pode digitar apenas a parte que você lembra do nome da aplicação, ou seja podendo digitar apenas o inicio, o meio ou final do nome da aplicação.
Se a aplicação tem um arquivo .desktop será exibido o ícone da aplicação no resultado da pesquisa para o arquivo executável ou script. Você pode retornar a tela de digitação para digitar um novo critério sem finalizar o script para tentar um novo critério de busca.
Crie o script yad-localizar-app-loop-retorno.sh em /usr/local/bin com permissão x.
Exemplo: sudo chmod +x yad-localizar-app-loop-retorno.sh
Conteúdo do script
#!/bin/bash
while true; do
# 1. Entrada de texto
BUSCA=$(yad --entry \
--title="Localizar Aplicativo Profissional" --center \
--window-icon="system-search" \
--text="Digite o nome do comando ou aplicativo:" \
--button="Buscar:0" --button="Sair:1")
# Sai do loop se clicar em Sair ou fechar a janela
RETORNO_BUSCA=$?
if [ $RETORNO_BUSCA -ne 0 ] || [ -z "$BUSCA" ]; then
break
fi
# 2. Busca os binários
RESULTADOS=$(find /usr/bin/ /usr/sbin/ /usr/local/bin/ /sbin/ /usr/games/ /opt -iname "*$BUSCA*" 2>/dev/null)
if [ -n "$RESULTADOS" ]; then
LISTA_FINAL=()
# 3. Mapeia binários para ícones reais
while read -r CAMINHO; do
BINARIO=$(basename "$CAMINHO")
ICONE=$(grep -lE "^Exec=(.*/)?$BINARIO( |$)" /usr/share/applications/*.desktop 2>/dev/null | head -n 1)
if [ -n "$ICONE" ]; then
ICONE_NOME=$(grep "^Icon=" "$ICONE" | cut -d'=' -f2 | head -n 1)
else
ICONE_NOME="system-run"
fi
LISTA_FINAL+=("$ICONE_NOME" "$BINARIO" "$CAMINHO")
done <<< "$RESULTADOS"
# 4. Interface de Seleção
SELECAO=$(yad --list \
--title="Resultados da Busca" \
--window-icon="search" \
--width=800 --height=500 --center \
--column="Ícone:IMG" \
--column="Aplicação" \
--column="Caminho Completo" \
--print-column=3 \
--separator="" \
--search-column=2 \
--button="Executar:0" \
--button="Voltar:1" \
"${LISTA_FINAL[@]}")
RETORNO_LISTA=$?
# 5. Execução ou Retorno
if [ $RETORNO_LISTA -eq 0 ] && [ -n "$SELECAO" ]; then
nohup "$SELECAO" > /dev/null 2>&1 &
yad --notification --image="info" --text="Executando: $SELECAO" --timeout=2
break
fi
else
# Se não encontrar nada, exibe o erro e o loop volta para o início automaticamente
yad --error --title="Erro" \
--text="Nenhum arquivo encontrado para: <b>$BUSCA</b>" \
--button="Tentar Novamente:0" --center
fi
done
Nenhum comentário:
Postar um comentário