Я предоставлю два способа генерирования аппроксимации загрузочных сообщений в качестве фона рабочего стола, один динамический, а другой статический.
Оба метода требуют установки systemd и доступа к системным журналам для чтения через journalctl
. Минимальные привилегии для запуска journalctl
могут быть предоставлены через членство в группе systemd-journal, например, usermod -aG systemd-journal YOUR_USERNAME
последующим выходом из системы и входом в систему.
Динамический фон журнала загрузки
Основная идея состоит в том, чтобы запустить неокрашенный терминал в самом нижнем слое окна для отображения содержимого журнала. Для простых оконных менеджеров, таких как fluxbox, это может быть достигнуто путем установки порядка стекирования закрепленного максимизированного терминала на "Рабочий стол" и запуска journalctl ...
, при необходимости, автоматизируя настройку через перехватчики запуска оконного менеджера.
С другой стороны, при максимизации окна в Xfce вертикальная область рабочего стола за док-станцией остается незакрытой, поэтому пользователю нужно будет вручную определить геометрию терминала, необходимую для покрытия всего экрана, что в основном будет определяться шрифтом. Настройки и разрешение экрана. Хороший способ получить приближение - запустить
xfce4-terminal --fullscreen --hide-menubar --hide-borders --hide-toolbar --hide-scrollbar
и проверьте, что решил терминал:
$ echo $COLUMNS
102
$ echo $LINES
40 # maybe subtract one to compensate for the height of the taskbar
Следующий вспомогательный скрипт, который не предназначен для запуска вручную (см. Ниже команду xfce4-terminal ...
), будет затем использоваться для установки терминала с заголовком "journalterm" как липкого, опущенного на панели задач и в приложении. переключатель, под другими окнами, и выполните journalctl ...
:
#!/bin/bash
xdotool search --name journalterm; # wmctrl focus bug?
for i in below skip_{pager,taskbar} sticky; do
wmctrl -v -r journalterm -b add,$i; # comment out -v for quiet
done
tput civis; # hide the terminal cursor
[JOURNALCTL_CMD]
где [JOURNALCTL_CMD]
следует заменить на
exec journalctl --lines=all --follow
или же
journalctl --lines=all --follow --no-hostname -oshort-unix \
|stdbuf -i0 -oL -eL cut -d\ -f1 --complement \
|grep --line-buffered -F 'systemd[1]' \
|sed -uE "s/systemd\[1\]:/\[ `printf '\033[00;32m'`OK`printf '\033[00m'` \]/g"
Прежний journalctl ...
просто выводит системные журналы
в то время как последний будет имитировать вывод systemd на последних этапах загрузки системы и для простоты может пропустить некоторые сообщения, которые отображались во время самого процесса загрузки.
stdbuf
удаляет буферизацию из cut
, в то время как grep
и sed
имеют свои собственные собственные параметры для принудительного отображения нового вывода из systemd на терминале, как только он будет готов.
Затем команда для запуска вышеуказанного сценария должна быть следующей, с заменой [C]
и [L]
на количество столбцов и строк, которые были вычислены ранее, соответственно:
xfce4-terminal -T journalterm --geometry=[C]x[L] --hide-menubar --hide-borders --hide-toolbar --hide-scrollbar --execute /path/to/the/above/script
Это может быть автоматически запущено при входе в систему путем добавления записи, выполняющей вышеуказанную строку, в Session and Startup> Application Autostart.
Фон журнала статической загрузки
Следующий скрипт сгенерирует PNG самых последних сообщений systemd:
#!/bin/bash
exec xfce4-terminal --fullscreen --hide-menubar --hide-scrollbar --execute \
bash -c \
"tput civis; PS1=; \
journalctl --no-hostname -oshort-unix \
|cut -d\ -f1 --complement \
|grep -F 'systemd[1]' \
|sed -E \"s/systemd\[1\]:/\[ `printf '\033[00;32m'`OK`printf '\033[00m'` \]/g\" \
|head -c-1; \
read -t1; import -window root systemd-`date +%s`.png";
Обратите внимание, что PNG генерируется путем создания снимка экрана полноэкранного терминала, поэтому взаимодействие с системой во время этого процесса не рекомендуется, хотя задержка, вызванная read ..
может быть уменьшена в более быстрых системах для сокращения времени ожидания. Как и в приведенной выше xfce4-terminal ...
, этот сценарий может запускаться Xfce автоматически, чтобы при необходимости генерировать свежий статический образ сообщений systemd при каждом входе в систему. Xfce заметит, что файл, предоставляющий фон рабочего стола, изменился, и обновит обои соответствующим образом, поэтому настройка import
для записи в один и тот же файл каждый раз может оказаться полезной в зависимости от варианта использования.
Для приведенного выше сценария требуется только терминал, который знает, как перейти в полноэкранный режим и запустить сценарий. Например, exec xfce4-terminal ...
можно заменить на xterm -fullscreen -e \
и скрипт все равно будет работать, как и ожидалось.