segunda-feira, 9 de novembro de 2026

Buscador de aplicações

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