Não é possível executar um programa clicando em seu ícone enquanto ele trabalha na linha de comando

0

Note que este é um problema no Ubuntu 14.04. Não é um problema com qualquer outra distribuição Linux. Não há uma boa razão para que isso seja fechado ...

Eu escrevi meu jogo pela primeira vez sob o Magia Linux e testei-o no Ubuntu 14.04 LTS para ter certeza de que ele funciona corretamente. Você pode encontrar os pacotes Debian aqui: link

Quando eu digito "tuer" na linha de comando, ele executa meu jogo como esperado, mas quando eu clico no ícone, ele não roda o meu jogo. Definir o atributo "Terminal" como "true" em tuer.desktop mostra o terminal muito rapidamente, mas nenhuma mensagem de erro é exibida. O arquivo da área de trabalho é muito simples: link

Existe um link simbólico /usr/bin/tuer (no caminho) para /usr/share/tuer/tuer . Eu não entendo porque funciona apenas na linha de comando no Ubuntu. Talvez o problema venha do script: link

Suponho que é possível abrir o arquivo da área de trabalho da mesma maneira que o gerenciador de área de trabalho faz com o gtk-launch, o xdg-open ou o gvfs-open.

Qual é o problema aqui?

Atualização: eu direcionei o executável dos arquivos .desktop para eliminar uma possível causa raiz, como Serg sugeriu. Acabei de carregar os novos pacotes Debian (obviamente compatíveis com o Ubuntu).

    
por gouessej 29.10.2015 / 13:14

1 resposta

0

Eu tive que substituir o seguinte script:

#!/usr/bin/bash
#code snippet written by Dave Dopson: http://stackoverflow.com/a/246128
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
    APP_LAUNCHER_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
    SOURCE="$(readlink "$SOURCE")"
    [[ $SOURCE != /* ]] && SOURCE="$APP_LAUNCHER_DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
APP_LAUNCHER_DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
$APP_LAUNCHER_DIR/jre/bin/java -server -Xmx256m -XX:MaxDirectMemorySize=128M -Djava.ext.dirs= -jar $APP_LAUNCHER_DIR/tuer.jar

por

/usr/share/tuer/jre/bin/java -server -Xmx256m -XX:MaxDirectMemorySize=128M -Djava.ext.dirs= -jar /usr/share/tuer/tuer.jar

porque, diferentemente do terminal, o Unity ignora a primeira linha e tenta interpretar meu script bash como um script traço . Ele mostrou uma vez "5: Substituição ruim", outra vez "** (gtk-launch: 27745): AVISO **: Não foi possível registrar com o barramento de acessibilidade: Não recebeu uma resposta. Possíveis causas incluem: o aplicativo remoto não enviar uma resposta, a política de segurança do barramento de mensagens bloqueou a resposta, o tempo limite de resposta expirou ou a conexão de rede foi interrompida. ", outra vez" nenhum arquivo ou diretório "e alegou que a execução do processo filho" tuer " foi interrompido sem explicações detalhadas.

Vou carregar alguns pacotes Debian fixos em cerca de dez horas.

Conclusão: Use um subconjunto comum de Posix do Bash e do Dash se quiser evitar qualquer problema no Ubuntu, mesmo que o script funcione na linha de comando.

    
por gouessej 30.10.2015 / 15:47