Para una aplicación de software muy específica, mantenemos una base de máquinas que ejecutan fvwm 2.5. Para actualizar la estructura del menú, el archivo de configuración predeterminado fvwm2rc se reemplaza durante el proceso de actualización realizado por un sistema de administración de paquetes. Para habilitar la nueva estructura de menú después de una actualización, el usuario debe realizar una acción manualmente: reiniciar la máquina, volver a iniciar sesión, reiniciar fvwm. La acción preferida es elegir "Administrador de ventanas > Reiniciar Fvwm2", ya que no es necesario iniciar sesión e incluso las ventanas sobreviven.
Pregunta: ¿Cómo puedo invocar una acción equivalente a "Reiniciar Fvwm2" desde la línea de comando o el sistema de administración de paquetes? El siguiente comando no funciona (tampoco los similares):
fvwm -c "Restart"
[FVWM][SetupICCCM2]: <<ERROR>> another ICCCM 2.0 compliant WM is running, try -replace
"-replace" no es una opción ya que es necesario iniciar sesión nuevamente después de llamarlo.
Respuesta1
Lo que desea es hacer que fvwm vuelva a leer la configuración o reiniciarla por completo. Además, no estoy totalmente seguro de que eso -c
haga lo que quieres.
La forma rápida o sucia sería:
killall fvwm
fvwm
Nota: No ejecute esto en un sistema BSD o Solaris, ya que killall finalizará el proceso de inicio allí. El nombre del proceso killall es solo para Linux.
Pero no estoy seguro de que esto no destruya cierta información de la ventana (ubicación, dimensiones, etc.). O podría intentar reemplazar la sesión actual:
fvwm --replace
Eso debería finalizar el antiguo proceso fvwm, iniciar uno nuevo e incluso mantener las ventanas correctamente.
Si fvwm es tu x-session, aún puedes intentar usarComando Fvwm, la interfaz de comando externa que parece poder enviar comandos al fvwm que se está ejecutando actualmente.
Respuesta2
El manualCuéntanos:
A continuación se muestran algunos casos en los que 'Restart fvwm2' o 'Restart fvwm' causan problemas:
- ejecutando fvwm bajo un administrador de sesión
- ejecutando fvwm con pantallas de múltiples encabezados
- tener argumentos de línea de comando, como -f temas-rc o -cmd
- si el primer fvwm2 en $PATH es diferente
Estos puntos indican por qué ve ese mensaje; márquelos en su caso.
Defina algunos atajos de teclado para ejecutar el comando de reinicio (también en el 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
Respuesta3
FvwmCommand
requiere que el FvwmCommandS
FIFO esté abierto. Si no puede estar seguro de que todos sus usuarios tengan uno, no funcionará.
Pero FVWMvoluntadreinicie en SIGUSR1.
Un reinicio de FVWM funcionará incluso si es el último comando en .Xsession
.
Pero como han dicho otros, si se ejecuta bajo un administrador de sesión X (y FVWM se ha compilado con soporte para el administrador de sesión), FVWM no se reiniciará por sí solo, simplemente se cerrará y esperará que el administrador de sesión lo reinicie. Esto también afectará el comportamiento de SIGUSR1.
Respuesta4
Para mí, lo siguiente funciona:
kill -SIGUSR1 pid
donde pid es la identificación del proceso fvwm a reiniciar; más fácil (en Linux):
killall -SIGUSR1 fvwm