如何從命令列重新啟動fvwm2?

如何從命令列重新啟動fvwm2?

對於非常具​​體的軟體應用程序,我們維護運行 fvwm 2.5 的機器基礎。為了更新選單結構,在套件管理系統執行的更新過程中會取代 fvwm2rc 預設設定檔。要在更新後啟用新的選單結構,使用者必須手動執行操作:重新啟動電腦、重新登入、重新啟動 fvwm。首選操作是選擇“視窗管理器 > 重新啟動 Fvwm2”,因為此時無需登錄,甚至視窗也能保留。

問題:如何從命令列或套件管理系統呼叫與「重新啟動 Fvwm2」等效的操作?以下命令不起作用(類似的命令也不起作用):

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

“-replace”不是一個選項,因為調用它後需要再次登入。

答案1

您想要的是讓 fvwm 重新讀取配置或完全重新啟動它。此外,我不完全確定這-c是否符合您的要求。

快速或骯髒的方法是:

killall fvwm
fvwm

注意:請不要在 BSD 或 Solaris 系統上執行此命令,因為 Killall 會殺死那裡的 init 進程。 Killall 進程名僅適用於 Linux。

但我不確定這是否會破壞一些視窗資訊(位置、尺寸等)。或者,您可以嘗試替換當前會話:

fvwm --replace

這應該會結束舊的 fvwm 進程,啟動新的進程,甚至保持視窗正確。

如果 fvwm 是您的 x-session,您仍然可以嘗試使用Fvwm指令,外部命令接口,似乎能夠向當前運行的fvwm發送命令。

答案2

手冊告訴我們:

以下是“重新啟動 fvwm2”或“重新啟動 fvwm”引起問題的一些情況:

  • 在會話管理器下執行 fvwm
  • 使用多頭顯示器運行 fvwm
  • 具有命令列參數,例如 -f theme-rc 或 -cmd
  • 如果 $PATH 中的第一個 fvwm2 是不同的

這些要點暗示了您為什麼會看到該訊息,請根據您的情況勾選每一項。

定義一些鍵盤快速鍵來執行重新啟動指令(也在手冊中):

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

答案3

FvwmCommand要求FvwmCommandSFIFO 打開。如果您無法確定所有使用者都擁有一個,那麼它就不起作用。

但FVWM將要在 SIGUSR1 上重新啟動。

如果 FVWM 重新啟動是.Xsession.

但正如其他人所說,如果在 X 會話管理器下運行(並且 FVWM 已使用會話管理器支援進行編譯),FVWM 不會自行重新啟動,它只會退出並期望由會話管理器重新啟動。這也會影響 SIGUSR1 的行為。

答案4

對我來說,以下工作:

kill -SIGUSR1 pid

其中 pid 是要重新啟動的 fvwm 進程的進程 ID;更容易(在 Linux 上):

killall -SIGUSR1 fvwm

相關內容