LINUX.ORG.RU

Выполнение скрипта во время logout

 , , ,


0

2

Добрый день! Пытаюсь заставить kazam сохранить запись при выходе из сессии, но ничего не получается. Так как питон я не знаю, то появилась идея эмуляции нажатия клавиш с помощью xte, собственно был написан простой скрипт:

#!/bin/bash
xte 'keydown Super_L'
xte 'keydown Control_L'
xte 'keydown F'
xte 'keyup Super_L'
xte 'keyup Control_L'
xte 'keyup F'

Проверил его в терминале при запущенной записи, отработало корректно, запись сохранилась. Встал вопрос, как заставить систему отрабатывать этот скрипт при выходе пользователя из сеанса. Пробовал прописывать в /etc/lightdm/lightdm.conf.d/50-ubuntu.conf и в /usr/share/lightdm/ во всё что там было:

[Seat:*]
session-cleanup-script=/path/to/executable/script
display-stopped-script=command

Пробовал пихать этот скрипт во все rcN.d, в cron с параметром @reboot. Насколько я понял, ничего не работает потому что во всех вариантах скрипт отрабатывает уже после отключения графической оболочки, а kazam работает только там, без неё крашится. Из вариантов только лезть в код kazam, либо как-то модифицировать lxqt-leave, других у меня нет.


Забыл добавить, система Ubuntu 20.10 с оболочкой LXQT 0.15.0 и менеджером окон kwin_x11.

afptez
() автор топика
Ответ на: комментарий от cadaber

Я только в общих чертах знаю файловую систему линукс. Всё ещё чайник. :) Благодаря помощи знакомого программиста всё таки оказалось проще залезть в питон и немного дописать его, добавив автосейв по времени используя цикл с функцией сейва, а так же получилось заставить сохранять видео при получении сигналов от система благодаря библиотеке «signal» и набору сигналов:

        signal.signal(signal.SIGHUP, self.receiveSignal)
        signal.signal(signal.SIGINT, self.receiveSignal)
        signal.signal(signal.SIGQUIT, self.receiveSignal)
        signal.signal(signal.SIGILL, self.receiveSignal)
        signal.signal(signal.SIGTRAP, self.receiveSignal)
        signal.signal(signal.SIGABRT, self.receiveSignal)
        signal.signal(signal.SIGBUS, self.receiveSignal)
        signal.signal(signal.SIGFPE, self.receiveSignal)
        #signal.signal(signal.SIGKILL, self.receiveSignal)
        signal.signal(signal.SIGUSR1, self.receiveSignal)
        signal.signal(signal.SIGSEGV, self.receiveSignal)
        signal.signal(signal.SIGUSR2, self.receiveSignal)
        signal.signal(signal.SIGPIPE, self.receiveSignal)
        signal.signal(signal.SIGALRM, self.receiveSignal)
        signal.signal(signal.SIGTERM, self.receiveSignal)

Но появилась новая проблема! Насколько я понял, при перезагрузке или выключении подаётся сигнал «signal.SIGTERM» завершения процесса, и kazam сохраняет при этих действиях видео, а вот при Logout он этого не делает. В связи с этим новый вопрос: Какой сигнал ubuntu подаёт программам при завершении сессии пользователя?

afptez
() автор топика

заставить kazam сохранить запись при выходе из сессии, но ничего не получается

Не получается в лоб, бей по лбу. Пусть твой скрипт сохраняет запись, а потом выполняет завершение сеанса.

andytux ★★★★★
()
Ответ на: комментарий от andytux

Хм, наверное скрипт можно сунуть в кнопку логаута перед lxqt-leave, надо только понять как это правильно сделать. Спасибо за идею!

afptez
() автор топика
Ответ на: комментарий от afptez

В общем тему можно закрывать. Просто прописал в lxqt-logout.desktop скрипт с макросом на нажатие клавиш, а после него lxqt-leave –logout. Всем спасибо!

afptez
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.