No Ubuntu 16.04, eu (eventualmente) quero soltar um arquivo de texto em um ícone da área de trabalho e executar um aplicativo Node.js, tratando o arquivo descartado e gerando um novo arquivo.
Eu descobri .desktop
arquivos e estou fazendo o meu melhor para entender como fazer o processo funcionar, usando uma configuração básica. Atualmente, tenho três arquivos: dois arquivos em um diretório em /home/blackslate/Utilities/
e um na minha área de trabalho.
Arquivos de utilitários
Um arquivo de texto chamado convert.js
:
const fs = require('fs');
const crypto = require('crypto');
const random = crypto.randomBytes(4).toString('hex');
const filename = random + '.txt'
fs.appendFile(filename, 'Hello ' + random + '!', function (err) {
if (err) throw err;
console.log(filename + ' saved');
});
Um arquivo executável chamado convert.sh
:
#!/bin/sh
node ./convert.js
gnome-terminal -e "bash -c 'echo hello world; sleep 3'"
Arquivo da área de trabalho
Um arquivo executável chamado convert.desktop
:
[Desktop Entry]
Exec=gnome-terminal -e "/home/blackslate/Utilities/convert.sh \"%u\""
Icon=utilities-terminal
Type=Application
Name=Convert
Aqui está o que acontece:
Se eu ligar
node ./convert.js
de uma janela do Terminal, vejo que:- Um novo arquivo é criado e seu nome é mostrado na janela Terminal
Se eu ligar
./convert.sh
de uma janela do Terminal, vejo que:- Um novo arquivo é criado e seu nome é mostrado na mesma janela do Terminal
- Uma segunda janela do Terminal é aberta e diz
hello world
antes de fechar 3 segundos depois
Se eu clicar no arquivo da área de trabalho Converter, vejo que:
- Uma janela do Terminal é aberta, mostrando um monte de texto e, em seguida, fecha imediatamente
- Uma segunda janela do Terminal é aberta e diz
hello world
antes de fechar 3 segundos depois - Nenhum novo arquivo de texto é criado
É óbvio que o segundo comando no convert.sh
arquivo está sendo executado, mas parece que algo está errado com o primeiro. Que passos posso tomar para depurar e corrigir isso?
Um .desktop pode executar facilmente um script bash
Você deve alterar as coisas em seu
convert.sh
:Observe que você pode redirecionar a saída de node ./convert.js para uma variável e usá-la como texto de notificação...
MYVAR=$(node ./convert.js)
entãonotify-send -t 3000 "Convert" "$MYVAR"
E você pode fazer algumas alterações no
.desktop
arquivo, encontre ícones lá
/usr/share/icons