Временная метка в Exec = строка файла .desktop возможна?

Lubuntu 16.04 - Openbox session

Я могу использовать терминал, чтобы открыть файл с меткой времени с помощью gedit:

gedit ~/$(date +%Y%m%d%H%M%S).txt

Команду также можно использовать с помощью сочетания клавиш в Openbox.

<keybind key="W-4">        # gedit time-stamped file
  <action name="Execute"><command>sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'</command></action>
</keybind>

Но я не могу сделать то же самое через строку Exec= файла .desktop.

Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'

просто создает файл с именем ~/.txt

Итак, как мне получить файл .desktop, чтобы делать то, что я хочу?

11
задан 29 May 2016 в 06:13

2 ответа

К сожалению, .desktop файлы не всегда называют подоболочку $() команды путем, мы хотели бы их к. Один способ сделать это, что я нашел, должно было бы создать другой сценарий, который содержит команду подоболочки для открытия файла как этот.

Exec строка была бы похожа:

Exec=/path/to/script

затем Ваш файл сценария содержал бы команду для открытия нового файла:

#!/bin/sh

gedit ~/$(date +%Y%m%d%H%M%S).txt

сценарий должен был бы также быть исполняемым файлом:

chmod +x /path/to/script

Hope это помогает!

10
ответ дан 29 May 2016 в 16:13

Проблема

Сценарий не необходим.

Проблема не это a .desktop файл не может команды выполнения с подоболочками с тех пор

Exec=/bin/bash -c "echo $(date) > ~/out.txt"

работы, превосходные в a .desktop файл.

Возясь с командой, я пришел к выводу что % - символ вызывает проблему. У меня нет объяснения его, хотя, и до сих пор я не мог найти информацию о том, как решить или выйти из этого.

Я поэтому пошел, ища команду для получения времени, не используя подозреваемый символ.

Кроме того, используйте Ruby для даты и время

Это приводит меня к Ruby, который производит текущую дату и время от команды:

$ ruby -e 'puts Time.now.inspect'
2016-05-29 16:12:36 +0200

Когда мы редактируем вывод немного с awk, удаляя пробелы и разделители, мы имеем, что мы хотим, и рабочая команда в .desktop файл, так как мы не используем %:

Exec=/bin/bash -c  "gedit ~/$(ruby -e 'puts Time.now.inspect' | awk -F'[: -]' '{print $1$2$3$4$5$6}')"


enter image description here

Примечание!

Несомненно, команда может быть "очарована" немного, я, вероятно, отредактирую ответ немного сегодня или завтра.

8
ответ дан 29 May 2016 в 16:13

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

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