Eu fornecerei duas maneiras de gerar uma aproximação das mensagens de inicialização como o plano de fundo da área de trabalho, uma dinâmica e outra estática.
Ambos os métodos requerem que o systemd seja instalado e acesso de leitura aos logs do sistema via journalctl
. Privilégios mínimos para a execução de journalctl
podem ser fornecidos por meio da associação ao grupo systemd-journal, por exemplo, usermod -aG systemd-journal YOUR_USERNAME
seguido por um logout e login.
Plano de fundo do log de inicialização dinâmico
A idéia básica é executar um terminal não decorado na camada mais inferior da janela para exibir o conteúdo do log. Para gerenciadores de janelas simples, como o Fluxbox, isso pode ser feito definindo a ordem de empilhamento de um terminal maximizado fixo para "Desktop" e executando journalctl ...
, opcionalmente automatizando a configuração através dos ganchos de inicialização do gerenciador de janelas.
Por outro lado, a maximização de uma janela no Xfce deixa a área vertical da área de trabalho por trás da doca descoberta, portanto, o usuário precisará descobrir manualmente a geometria do terminal necessária para cobrir a tela inteira, que será principalmente determinado por configurações de fonte e resolução de tela. Uma boa maneira de obter uma aproximação é executar
xfce4-terminal --fullscreen --hide-menubar --hide-borders --hide-toolbar --hide-scrollbar
e verifique o que o terminal decidiu:
$ echo $COLUMNS
102
$ echo $LINES
40 # maybe subtract one to compensate for the height of the taskbar
O seguinte script auxiliar, que não deve ser executado manualmente (consulte o comando xfce4-terminal ...
abaixo), será usado para definir um terminal com o título "journalterm" como algo fixo, omitido na barra de tarefas e no aplicativo switcher, abaixo de outras janelas, e execute 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]
onde [JOURNALCTL_CMD]
deve ser substituído por
exec journalctl --lines=all --follow
ou
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 '3[00;32m''OK'printf '3[00m'' \]/g"
O antigo journalctl ...
simplesmente exibe os logs do sistema
enquantooúltimoimitaasaídadosystemdduranteosúltimosestágiosdainicializaçãodosistemaepodepularalgumasmensagensqueforamexibidasduranteoprocessodeinicializaçãorealparasimplificar.
stdbuf
removeobufferdecut
,enquantogrep
esed
têmseusprópriosparâmetrosnativosparaforçaranovasaídadosystemdaserexibidanoterminalassimqueestiverpronta.
Emseguida,ocomandoparaexecutaroscriptacimadeveseroseguinte,com[C]
e[L]
substituídospelascontagensdecolunaelinhaqueforamcalculadasanteriormente,respectivamente:
xfce4-terminal-Tjournalterm--geometry=[C]x[L]--hide-menubar--hide-borders--hide-toolbar--hide-scrollbar--execute/path/to/the/above/script
IssopodeseriniciadoautomaticamentenologinpormeiodaadiçãodeumaentradaexecutandoalinhaacimaemSessãoeinicialização>Autostartdeaplicativo.
Planodefundodologdeinicializaçãoestático
OscriptaseguirgeraráumPNGdasmensagensmaisrecentesdosystemd:
#!/bin/bashexecxfce4-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 '3[00;32m''OK'printf '3[00m'' \]/g\" \
|head -c-1; \
read -t1; import -window root systemd-'date +%s'.png";
Observe que o PNG é gerado tirando uma captura de tela de um terminal de tela cheia, portanto, interagir com o sistema enquanto isso não é recomendado, embora o atraso causado por read ..
possa ser reduzido em sistemas mais rápidos para reduzir o tempo de espera . Como com o comando xfce4-terminal ...
acima, este script pode ser executado automaticamente pelo Xfce para gerar uma nova imagem estática de mensagens do systemd em cada login, se desejado. O Xfce observará se o arquivo que fornece o plano de fundo da área de trabalho foi alterado e atualizará o papel de parede de acordo, portanto, ajustar import
para gravar no mesmo arquivo sempre poderá ser útil, dependendo do caso de uso.
O script acima requer apenas um terminal que saiba como executar a tela inteira e executar um script. Por exemplo, a linha exec xfce4-terminal ...
pode ser substituída por xterm -fullscreen -e \
e o script ainda será executado conforme o esperado.