Использование файла .desktop для запуска приложения node.js

В Ubuntu 16.04 я (в конце концов) хочу поместить текстовый файл на иконку на рабочем столе и запустить приложение Node.js, обработав удаленный файл и выведя новый файл.

Я обнаружил .desktop файлы и делаю все возможное, чтобы понять, как заставить процесс работать, используя базовые настройки. В настоящее время у меня есть три файла: два файла в каталоге на /home/blackslate/Utilities/ и один на моем рабочем столе.

Файлы утилит

Текстовый файл с именем 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');
});

Исполняемый файл с именем convert.sh:

#!/bin/sh
node ./convert.js

gnome-terminal -e "bash -c 'echo hello world; sleep 3'"

Настольный файл

Исполняемый файл с именем convert.desktop:

[Desktop Entry]
Exec=gnome-terminal -e "/home/blackslate/Utilities/convert.sh \"%u\""
Icon=utilities-terminal
Type=Application
Name=Convert

Вот что происходит:

  1. Если я вызовите node ./convert.js из окна терминала, я вижу, что:

    • Создается новый файл, и его имя отображается в окне терминала
  2. Если я вызываю ./convert.sh из окна терминала, я вижу, что:

    • Создается новый файл, и его имя отображается в том же окне терминала
    • Второе окно терминала открывается и говорит hello world перед закрытием через 3 секунды
  3. Если я нажимаю на файл Convert desktop, я вижу, что:

    • One Откроется окно терминала, в котором отображается куча текста, а затем оно немедленно закрывается
    • Открывается второе окно терминала и сообщает hello world, а затем закрывает его через 3 секунды
    • Новый текстовый файл не создается [ 114 5]

Очевидно, что вторая команда в файле convert.sh выполняется, но кажется, что с первой что-то не так. Какие шаги я могу предпринять, чтобы отладить и исправить это?

2
задан 24 July 2019 в 10:39

1 ответ

A. рабочий стол может легко запустить скрипт удара

Необходимо изменить вещи в Вашем convert.sh :

#!/bin/bash
# set prompt to the working dir with cd
cd /home/blackslate/Utilities/
node ./convert.js

# You want some text notification? Use notify-send
notify-send -t 3000 'echo hello world'

Обратите внимание, что можно перенаправить вывод узла./convert.js к переменной и использовать его в качестве текста уведомления...
MYVAR=$(node ./convert.js) затем notify-send -t 3000 "Convert" "$MYVAR"

И можно внести некоторые изменения в .desktop файл
найдите значки там /usr/share/icons

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec='/home/blackslate/Utilities/convert.sh'
Name=Convert
Icon=utilities-terminal
3
ответ дан 2 December 2019 в 02:39

Другие вопросы по тегам:

Похожие вопросы: