Como reiniciar o fvwm2 na linha de comando?


6

Para um aplicativo de software muito específico, mantemos uma base de máquinas executando o fvwm 2.5. Para atualizar a estrutura do menu, o arquivo de configuração padrão fvwm2rc é substituído durante o processo de atualização executado por um sistema de gerenciamento de pacotes. Para habilitar a nova estrutura de menus após uma atualização, o usuário deve executar manualmente uma ação: Reinicie a máquina, efetue login novamente, reinicie o fvwm. A ação preferida é escolher "Gerenciador de Janelas> Reiniciar Fvwm2", pois não é necessário fazer login e até as janelas sobrevivem.

Pergunta: Como posso chamar uma ação equivalente como "Reiniciar Fvwm2" na linha de comando ou no sistema de gerenciamento de pacotes? O comando a seguir não funciona (nem os similares):

fvwm -c "Restart"
[FVWM][SetupICCCM2]: <<ERROR>> another ICCCM 2.0 compliant WM is running, try -replace

"-replace" não é uma opção, pois é necessário fazer login novamente depois de chamá-lo.

Respostas:


4

O que você quer é fazer com que o fvwm re-leia a configuração ou reinicie-a completamente. Além disso, não tenho muita certeza de que -cfaça o que você deseja.

A maneira rápida ou suja seria:

killall fvwm
fvwm

Nota: Por favor, não execute isso em um sistema BSD ou Solaris, pois o killall matará o processo init lá. killall processname é apenas Linux.

Mas não tenho certeza se isso não destruiria algumas informações da janela (localização, dimensões etc.). Ou você pode tentar substituir a sessão atual:

fvwm --replace

Isso deve encerrar o antigo processo fvwm, iniciar um novo e até manter as janelas corretamente.

Se fvwm for sua sessão x, você ainda poderá tentar usar o FvwmCommand , a interface de comando externa que parece capaz de enviar comandos para o fvwm atualmente em execução.


Obrigado Bobby, mas como já afirmei, 'replace' não funciona para mim, pois tenho que fazer login novamente após esse comando. Infelizmente, é o mesmo com 'killall fvwm'.
Chris

@ Chris: Agora estou confuso, por que o fvwm está sendo executado se não houver usuário conectado?
Bobby

No começo, eu estou logado, mas o comando 'fvwm -replace' me desconecta, eu tenho que entrar novamente depois de chamá-lo, o mesmo acontece com 'killall fvwm'.
Chris

"matar o wm em execução anteriormente pode encerrar sua sessão do X, se o wm foi iniciado como o último cliente em seu arquivo .Xclients ou .Xsession." - Esse é o comportamento esperado quando você reinicia o seu WM, é necessário fazer login novamente. Alguns WMs oferecem uma "recarga" (como spectrwm), que mantém suas janelas e sessões. fvwm parece não ter isso.
Invertido

@ Chris: Entendo, não pensei nisso. Veja minha edição.
Bobby

1

O manual nos diz:

Aqui estão alguns casos em que 'Reiniciar fvwm2' ou 'Reiniciar fvwm' causa problemas:

  • executando o fvwm sob um gerenciador de sessões
  • executando o fvwm com monitores de várias cabeças
  • tendo argumentos de linha de comando, como -f themes-rc ou -cmd
  • se o primeiro fvwm2 no $ PATH for diferente

Esses pontos sugerem o motivo pelo qual você vê essa mensagem, marque cada um deles no seu caso.

Defina alguns atalhos de teclado para ativar o comando restart (também no manual):

Key F1 R N Restart
Key F1 R N Restart fvwm -s
Key F1 R N Restart ~/bin/fvwm -f $HOME/.fvwm/main
Key F1 R N Restart fvwm1 -s -f .fvwmrc
Key F1 R N Restart xterm -n '"X console"' \
  -T \"X\ console\" -e fvwm1 -s

Não tenho certeza se há um mal-entendido ... A reinicialização funciona bem se eu selecioná-lo no menu fvwm, é o comportamento que desejo. Mas eu quero isso na linha de comando, ou seja, de fora do próprio fvwm.
Chris

Desculpe pelo mal entendido. Não há USR SIGNALSdefinido para o fvwm, para acionar a reinicialização externa, então a resposta do @ Bobby é boa nesse sentido.
Invertido


0

FvwmCommandrequer que o FvwmCommandSFIFO esteja aberto. Se você não tiver certeza de que todos os usuários têm um, isso não funcionará.

Mas o FVWM será reiniciado no SIGUSR1.

Uma reinicialização do FVWM funcionará mesmo se for o último comando do Windows .Xsession.

Mas, como já foi dito, se estiver executando sob um gerenciador de sessões X (e o FVWM tiver sido compilado com o suporte ao gerenciador de sessões), o FVWM não será reiniciado por si só, apenas encerrará e espera ser reiniciado pelo gerenciador de sessões. Isso também afetará o comportamento do SIGUSR1.


0

Para mim, o seguinte funciona:

kill -SIGUSR1 pid

onde pid é a identificação do processo fvwm para reiniciar; mais fácil (no Linux):

killall -SIGUSR1 fvwm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.