Gerenciador de comandos Unity

1

Estou procurando por um corredor de comando para o Unity. Eu sabia que existe um executor padrão sob o atalho ALT + F2 . Mas como foi explicado nessa pergunta O comando Run não executa programas de linha de comando não permite executar programas de linhas de comando sem adicionar alguns prefixos ao comando.

Resumindo, estou procurando pelo comando runner que:

  • tem preenchimento automático
  • tem histórico dos últimos comandos usados
  • permite executar os dois comandos vim test.txt ou gedit test.txt sem nenhum prefixo, sufixo, etc.
  • se o programa de linha de comando foi executado, a janela do terminal deve ser fechada após sair do programa

De diferentes corredores de comando, eu verifico gmrun , mas ele não tem auto-preenchimento ou histórico. Por outro lado xfrun4 como é descrito em Xfce4 Alt F2 - O comando xfrun4 impotente em 14.04 Trusty requer um prefixo "!" Para funcionar.

Você conhece algum corredor de comando que pode ser integrado ao Unity e atender a esses requisitos?

    
por Kendzi 24.07.2014 / 22:59

1 resposta

0

Crie seu próprio Command Runner com o gnome-terminal:

Primeiro, crie um arquivo $HOME/.cmdrunrc

O conteúdo deve ser:

# include .bashrc to load aliases from the .bashrc in the command runner
source .bashrc

# create a separated history file for the command runner
HISTFILE=~/.cmdrun_history

# shorten the command prompt
PS1='\w\$ '

# function to check an array if it contains an element
containsElement () {
  local e
  for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
  return 1
}

# your guis which will not open a additional terminal window on execution 
guis=(firefox mousepad gedit geany leafpad nautilus thunar pcmanfm xterm) 

# after this commands finished the terminal will be closed automatically  
close_after=(vi nano top)

# the function that will be executed with every command
custom_run() { 
    if [ -n "$*" ]; then   
        # write the real command to the history without "custom_run" 
        history -s "$*"
        history -a

        # check if the command is an alias
        pure_cmd=$(echo "$*" | xargs | cut -d' ' -f1)
        if [ $(type -t "$pure_cmd") == "alias" ]; then
            # get the real command from the alias
            pure_cmd=$(type "$pure_cmd" | grep -oP "(?<=»)[^']+(?=«)")
            pure_cmd=$(echo "$pure_cmd" | cut -d' ' -f1)
        fi

        # check if command opens a gui or should be closed after it finished
        if containsElement "$pure_cmd" "${guis[@]}"; then
            bash -ic "($* &) &>/dev/null"
        elif containsElement "$pure_cmd" "${close_after[@]}"; then
            gnome-terminal -x bash -ic "$*"
        else
            gnome-terminal -x bash -ic "$*; bash"
        fi
    else
        # remove last command ("custom run") from history, if nothing is entered
        history -d $((HISTCMD-1))
    fi
    exit 0
}

# write the function "custom_run" before every command if the user presses return
bind 'RETURN: "\e[1~ custom_run "\e[4~"\n"'

Em seguida, crie um arquivo .desktop ou um shell script com este comando:

gnome-terminal --title="Command Runner" --hide-menubar --geometry="50x1" -x bash -ic "cd ~; bash --rcfile .cmdrunrc"
    
por TuKsn 31.07.2014 / 12:22