Menu secundário
Publicado por João Gabriel (última atualização em 03/02/2021)
[ Hits: 1.776 ]
Uma forma de utilizar o ROFI ou o dmenu juntamente com arquivos DESKTOP para criar um menu secundário, separado do principal.
#!/usr/bin/env bash # Script para ler arquivos DESKTOP em um diretório, sendo usado juntamente # com o ROFI/dmenu para criar um menu secundário, separado do principal. # # Requer PCRE, ROFI/dmenu # # 11/20 - por goll72 # Se você quiser deixar o diretório com os arquivos DESKTOP dentro de /usr/share/applications/, # use um diretòrio oculto, senão as entradas DESKTOP que você criar aparecerão no menu principal. # Você pode chamar o script com "dir=<DIRETÓRIO> script" para mudar o diretório utilizado. dir=${dir:-/usr/share/applications/.games/} for i in "$dir"/*.desktop; do IFS=$'\n' # O arquivo DESKTOP deve cumprir às normas da Desktop Entry Specification desktop-file-validate "$i" >/dev/null 2>&1 || continue # Apenas entradas com Type=Application são usadas no momento. # Com a opção NoDisplay=true, a entrada não aparecerá no menu. pcregrep '(NoDisplay=true|(?!Type=Application))' >/dev/null <<< "$i" || continue # Mesmo não sendo requirido pela DES, é preciso uma opção Exec nas entradas pcregrep 'Exec=' >/dev/null <<< "$i" && continue # Salva o conteúdo do arquivo DESKTOP atual numa variável progfile="$(<"$i")" # Retira os prefixos das linhas Name= e Exec= # E adiciona os conteúdos das linhas a um array progname="${gamefile##*$'\n'Name=}" progname="${gamename%%$'\n'*}" prognameA+=("$gamename") progexec="${gamefile##*$'\n'Exec=}" progexec="${gamexec%%$'\n'*}" progexecA+=("$gamexec") done # Adiciona os nomes dos itens que estão no array a uma variavél # Os nomes são separados por \n (linefeed) for i in "${!prognameA[@]}"; do proglist+="${prognameA[$i]}"$'\n' done # Se você usa ROFI, use o primeiro item e comente o segundo # Se você usa dmenu, use o segundo item e comente o primeiro. #menusel=$(printf '%s' "$gamelist" | rofi -dmenu -i) menusel=$(printf '%s' "$gamelist" | dmenu#!/usr/bin/env bash # Script para ler arquivos DESKTOP em um diretório, sendo usado juntamente # com o ROFI/dmenu para criar um menu secundário, separado do principal. # # Requer PCRE, ROFI/dmenu # # 11/20 - por goll72 # Se você quiser deixar o diretório com os arquivos DESKTOP dentro de /usr/share/applications/, # use um diretòrio oculto, senão as entradas DESKTOP que você criar aparecerão no menu principal. # Você pode chamar o script com "dir=<DIRETÓRIO> script" para mudar o diretório utilizado. dir=${dir:-/usr/share/applications/.games/} for i in "$dir"/*.desktop; do IFS=$'\n' # O arquivo DESKTOP deve cumprir às normas da Desktop Entry Specification desktop-file-validate "$i" >/dev/null 2>&1 || continue # Apenas entradas com Type=Application são usadas no momento. # Com a opção NoDisplay=true, a entrada não aparecerá no menu. pcregrep '(NoDisplay=true|(?!Type=Application))' >/dev/null <<< "$i" || continue # Mesmo não sendo requirido pela DES, é preciso uma opção Exec nas entradas pcregrep 'Exec=' >/dev/null <<< "$i" && continue # Salva o conteúdo do arquivo DESKTOP atual numa variável progfile="$(<"$i")" # Retira os prefixos das linhas Name= e Exec= # E adiciona os conteúdos das linhas a um array progname="${gamefile##*$'\n'Name=}" progname="${gamename%%$'\n'*}" prognameA+=("$gamename") progexec="${gamefile##*$'\n'Exec=}" progexec="${gamexec%%$'\n'*}" progexecA+=("$gamexec") done # Adiciona os nomes dos itens que estão no array a uma variavél # Os nomes são separados por \n (linefeed) for i in "${!prognameA[@]}"; do proglist+="${prognameA[$i]}"$'\n' done # Se você usa ROFI, use o primeiro item e comente o segundo # Se você usa dmenu, use o segundo item e comente o primeiro. #menusel=$(printf '%s' "$gamelist" | rofi -dmenu -i) menusel=$(printf '%s' "$gamelist" | dmenu) # O script morre se não houverem entradas no diretório ou se nada for selecionado no ROFI/dmenu if [ -z "$menusel" ] || [[ $proglist != *"$menusel"* ]]; then exit fi # Obtém o indíce do item selecionado for i in "${!prognameA[@]}"; do [ "${prognameA[$i]}" = "$menusel" ] && curindex=$i done # Executa o item selecionado, baseado no índice exec "${progexecA[$curindex]}") # O script morre se não houverem entradas no diretório ou se nada for selecionado no ROFI/dmenu if [ -z "$menusel" ] || [[ $proglist != *"$menusel"* ]]; then exit fi # Obtém o indíce do item selecionado for i in "${!prognameA[@]}"; do [ "${prognameA[$i]}" = "$menusel" ] && curindex=$i done # Executa o item selecionado, baseado no índice exec "${progexecA[$curindex]}"
cofigurar a rede passando por roteador
Script para instalação Gerix Wi-fi Cracker no Kali Linux
CoDe_X - Compactador/Descompactador de arquivos e diretórios usando Xdialog
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Microfone detectado, sem som. (0)
Por que o fedora dita as regras no linux? (5)
Facebook classifica Linux como 'ameaça à segurança cibernética.... (2)