Câu hỏi Làm thế nào để khởi động lại fvwm2 từ dòng lệnh?


Đối với một ứng dụng phần mềm rất cụ thể, chúng tôi duy trì cơ sở các máy chạy fvwm 2.5. Để cập nhật cấu trúc menu, tệp cấu hình mặc định fvwm2rc được thay thế trong quá trình cập nhật được thực hiện bởi hệ thống quản lý gói. Để kích hoạt cấu trúc menu mới sau khi cập nhật, người dùng phải tự thực hiện một hành động: Khởi động lại máy, đăng nhập lại, khởi động lại fvwm. Hành động được ưu tiên là chọn "Trình quản lý cửa sổ> Khởi động lại Fvwm2" vì không cần đăng nhập và thậm chí cả các cửa sổ đều tồn tại.

Câu hỏi: Làm thế nào tôi có thể gọi một hành động tương đương là "Khởi động lại Fvwm2" từ dòng lệnh hoặc hệ thống quản lý gói? Lệnh sau không hoạt động (không giống như lệnh sau):

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

"-replace" không có tùy chọn vì người dùng cần đăng nhập lại sau khi gọi.


5
2018-06-05 06:39


gốc




Các câu trả lời:


Những gì bạn muốn là làm cho fvwm đọc lại cấu hình hoặc khởi động lại hoàn toàn. Ngoài ra, tôi không hoàn toàn chắc chắn rằng -c làm những gì bạn muốn.

Cách nhanh hay bẩn sẽ là:

killall fvwm
fvwm

Lưu ý: Vui lòng không thực hiện điều này trên hệ thống BSD hoặc Solaris, vì killall sẽ giết quá trình init ở đó. killall processname là chỉ Linux.

Nhưng tôi không chắc chắn nếu điều này sẽ không phá hủy một số thông tin cửa sổ (vị trí, kích thước, vv). Hoặc, bạn có thể thử thay thế phiên hiện tại:

fvwm --replace

Điều đó sẽ kết thúc quá trình fvwm cũ, khởi động một quá trình mới và thậm chí giữ cho các cửa sổ chính xác.

Nếu fvwm là phiên x của bạn, bạn vẫn có thể thử sử dụng FvwmCommand, giao diện lệnh bên ngoài có vẻ như có thể gửi lệnh tới fvwm hiện đang chạy.


3
2018-06-05 08:33



Cảm ơn Bobby, nhưng như tôi đã nói, 'thay thế' không có tác dụng với tôi vì tôi phải đăng nhập lại sau lệnh đó. Thật không may, nó là tương tự với 'killall fvwm'. - Chris
@ Chris: Bây giờ tôi đang bối rối, tại sao fvwm chạy nếu không có người dùng đăng nhập? - Bobby
Lúc đầu tôi đăng nhập, nhưng lệnh 'fvwm -replace' đăng xuất tôi, tôi phải đăng nhập lại sau khi gọi nó, điều tương tự cũng xảy ra với 'killall fvwm'. - Chris
"giết chết wm chạy trước đó có thể chấm dứt phiên X của bạn, nếu wm đã được bắt đầu như là khách hàng cuối cùng trong tập tin .Xclients hoặc .Xsession của bạn." - Đây là hành vi được mong đợi khi bạn khởi động lại WM, bạn phải đăng nhập lại. Một số WM cung cấp một "tải lại" (như spectrwm), mà giữ cửa sổ và phiên của bạn. fvwm dường như thiếu điều này. - invert
@ Chris: Tôi hiểu, không nghĩ về điều đó. Xem chỉnh sửa của tôi. - Bobby


Hướng dẫn cho chúng tôi biết:

Dưới đây là một số trường hợp khi 'Khởi động lại fvwm2' hoặc 'Khởi động lại fvwm' nguyên nhân   rắc rối:

  • chạy fvwm trong trình quản lý phiên
  • chạy fvwm với màn hình nhiều đầu
  • có đối số dòng lệnh, như -f themes-rc hoặc -cmd
  • nếu fvwm2 đầu tiên trong $ PATH là một cái khác

Những điểm này gợi ý lý do tại sao bạn thấy thông báo đó, hãy kiểm tra từng thông báo trong trường hợp của bạn.

Xác định một số phím tắt để thực hiện lệnh khởi động lại (cũng trong hướng dẫn):

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

1
2018-06-05 08:43



Tôi không chắc chắn nếu có một sự hiểu lầm ... Khởi động lại hoạt động tốt nếu tôi chọn nó từ menu fvwm, đó là hành vi tôi muốn. Nhưng tôi muốn nó từ dòng lệnh, đó là, từ bên ngoài của fvwm chính nó. - Chris
xin lỗi vì sự hiểu lầm. Không có USR SIGNALS được định nghĩa cho fvwm, để kích hoạt khởi động lại bên ngoài, do đó, câu trả lời của @ Bobby là tốt trong lĩnh vực này. - invert


Một cách khác là sử dụng FvwmCommand:

$ FvwmCommand Restart

0
2017-12-28 22:27





FvwmCommand yêu cầu FvwmCommandS FIFO được mở. Nếu bạn không thể chắc chắn rằng tất cả người dùng của bạn đều có, nó sẽ không hoạt động.

Nhưng FVWM sẽ khởi động lại trên SIGUSR1.

Khởi động lại FVWM thậm chí sẽ hoạt động nếu đó là lệnh cuối cùng trong .Xsession.

Nhưng như những người khác đã nói, nếu chạy dưới một trình quản lý phiên X (và FVWM đã được biên dịch với hỗ trợ trình quản lý phiên), FVWM sẽ không tự khởi động lại, nó sẽ chỉ đơn giản là thoát và mong được khởi động lại bởi trình quản lý phiên. Điều này cũng sẽ ảnh hưởng đến hành vi SIGUSR1.


0
2018-01-19 21:33





Đối với tôi, các công trình sau đây:

kill -SIGUSR1 pid

trong đó pid là id quá trình của quá trình fvwm để khởi động lại; dễ dàng hơn (trên Linux):

killall -SIGUSR1 fvwm

0
2018-03-14 14:49