對於非常具體的軟體應用程序,我們維護運行 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
要求FvwmCommandS
FIFO 打開。如果您無法確定所有使用者都擁有一個,那麼它就不起作用。
但FVWM將要在 SIGUSR1 上重新啟動。
如果 FVWM 重新啟動是.Xsession
.
但正如其他人所說,如果在 X 會話管理器下運行(並且 FVWM 已使用會話管理器支援進行編譯),FVWM 不會自行重新啟動,它只會退出並期望由會話管理器重新啟動。這也會影響 SIGUSR1 的行為。
答案4
對我來說,以下工作:
kill -SIGUSR1 pid
其中 pid 是要重新啟動的 fvwm 進程的進程 ID;更容易(在 Linux 上):
killall -SIGUSR1 fvwm