Я нашел этот KDE Открытым недавно закрытым вопросом о приложении, и это точно, что я хотел бы сделать, однако я нахожусь на человечности. Единственные отвечают на тот вопрос, 'недавно используемая' часть средства запуска, но недавно используемый список не включает приложения, заблокированные в средство запуска.
Обычно я выполняю большинство вещей через терминал, но вещи как браузеры, я буду работать от средства запуска. Иногда я случайно закрываю их.
Короче говоря: я хотел бы функциональность 'ctrl-shift-t', что большинство браузеров относилось за вкладки к программам в человечности.
Если это прибыло в форме сценария, это прекрасно; у меня действительно нет большого опыта при записи сценариев удара, таким образом, объяснение или ссылки на документы ценятся.
Существует ли список недавно закрытых программ, сохраненных где-нибудь на диске? Я знаю, что это, вероятно, были бы журналы, но это будет стычкой, чтобы выяснить, как проанализировать, я думаю? Я предполагаю, что надеюсь, что существует миленький файл журнала где-нибудь, который ведет учет приложений, закрылся/открыл и путь к программе, которая выполняет/начинает их. Также: если бы я хотел, чтобы человечность создала файл журнала как этот, как я сделал бы это?
Согласно просьбе в комментариях, концептуальном ответе, никаком готовом к использованию сценарии.
Из списка процессов & pids, трудно решить, который принадлежит приложению или другому процессу. Так как Вы упоминаете приложения GUI однако, мы можем зарегистрироваться окна , который дает нам всем информацию, которую мы должны решить, который был последний раз закрытым приложением.
wmctrl (не в системе по умолчанию) является инструментом командной строки, который может дать Вам информацию о в настоящее время существующих окнах. Команда:
wmctrl -lp
производит список окна, будучи похож:
---
0x02c0000c 0 23772 jacob-System-Product-Name Hud
0x02e0000a -1 23877 jacob-System-Product-Name Desktop
0x0480001d 0 28367 jacob-System-Product-Name Ask Ubuntu General Room | chat.stackexchange.com - Mozilla Firefox
0x05200007 0 26724 jacob-System-Product-Name System Monitor
0x05800084 0 27183 jacob-System-Product-Name *Untitled Document 1 - gedit
---
Во втором столбце списка, Вы видите pids в настоящее время открываемых окон, как: 23877
, 28367
От этих pids, мы можем получить процесс (приложение), которое владеет окном, с помощью команды:
ps -o cmd= <pid>
, например:
$ ps -o cmd= 27183
gedit
Затем все, что мы должны сделать, выполняется цикл с периодом нескольких секунд, сравнивая (уникальный) список процессов, владея окном (=applications), со списком несколько секунд назад. Если процесс "оставил" список, это - последний раз закрывшее окно. Короче говоря:
applications1 = get_applications()
while True:
time.sleep(3)
applications2 = get_applications()
closed = [app for app in applications1 if not app in applications2]
if closed:
most_recent = closed[0]
# store the process in a file, to be available to run as most recently closed
open(f, "wt").write(most_recent)
application1 = application2
, где f является путем к файлу, где новое приложение записано в. Впоследствии имейте другой процесс/команду, запускают приложение в файле, и установка завершается.
Несомненно в этом можно выполнить в значительной степени все языки сценария. Мне Python кажется просто правильным для того, чтобы легко произвести сценарии как это...
, что схематический код выше просто, например, никакой протестированный код!