วิธีการรีสตาร์ท fvwm2 จากบรรทัดคำสั่ง?


6

สำหรับแอปพลิเคชันซอฟต์แวร์ที่เฉพาะเจาะจงมากเรายังคงรักษาฐานของเครื่องที่ใช้ fvwm 2.5 เพื่ออัพเดตโครงสร้างเมนูไฟล์กำหนดค่าเริ่มต้น fvwm2rc จะถูกแทนที่ในระหว่างกระบวนการอัพเดตที่ดำเนินการโดยระบบการจัดการแพ็กเกจ ในการเปิดใช้งานโครงสร้างเมนูใหม่หลังจากการอัพเดตผู้ใช้จะต้องดำเนินการด้วยตนเอง: รีสตาร์ทเครื่องรีสตาร์ทล็อกอินใหม่รีสตาร์ท fvwm การกระทำที่ต้องการคือการเลือก "จัดการหน้าต่าง> รีสตาร์ท Fvwm2" เนื่องจากไม่จำเป็นต้องเข้าสู่ระบบและแม้กระทั่งหน้าต่างอยู่รอด

คำถาม: ฉันจะเรียกการกระทำที่เทียบเท่าเป็น "เริ่มต้น Fvwm2" จากบรรทัดคำสั่งหรือระบบการจัดการแพคเกจได้อย่างไร คำสั่งต่อไปนี้ใช้งานไม่ได้ (ไม่ใช้คำที่คล้ายกัน):

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

"-replace" ไม่มีตัวเลือกเนื่องจากต้องการล็อกอินอีกครั้งหลังจากเรียกใช้

คำตอบ:


4

สิ่งที่คุณต้องการคือทำให้ fvwm อ่านการกำหนดค่าใหม่หรือรีสตาร์ทอย่างสมบูรณ์ นอกจากนี้ฉันไม่แน่ใจทั้งหมดว่า-cสิ่งที่คุณต้องการ

วิธีที่รวดเร็วหรือสกปรกจะเป็น:

killall fvwm
fvwm

หมายเหตุ: โปรดอย่าดำเนินการนี้ในระบบ BSD หรือ Solaris เนื่องจาก killall จะฆ่ากระบวนการเริ่มต้นที่นั่น killall processname เป็น Linux เท่านั้น

แต่ฉันไม่แน่ใจว่าสิ่งนี้จะไม่ทำลายข้อมูลหน้าต่างบางอย่าง (ตำแหน่งขนาดและอื่น ๆ ) หรือคุณอาจลองแทนที่เซสชันปัจจุบัน:

fvwm --replace

นั่นควรจะจบกระบวนการ fvwm อันเก่าเปิดตัวใหม่และทำให้หน้าต่างถูกต้อง

หาก fvwm เป็น x-session ของคุณคุณยังคงสามารถลองใช้FvwmCommandซึ่งเป็นอินเตอร์เฟสคำสั่งภายนอกซึ่งดูเหมือนว่าจะสามารถส่งคำสั่งไปยัง fvwm ที่กำลังทำงานอยู่


ขอบคุณบ๊อบบี้ แต่ตามที่ฉันได้กล่าวไว้แล้ว 'แทนที่' ไม่ทำงานสำหรับฉันเนื่องจากฉันต้องลงชื่อเข้าใช้อีกครั้งหลังจากคำสั่งนั้น น่าเสียดายที่มันเหมือนกันกับ 'killall fvwm'
Chris

@Chris: ตอนนี้ฉันสับสนทำไม fvwm ทำงานอยู่หากไม่มีผู้ใช้ที่เข้าสู่ระบบ?
Bobby

ที่จุดเริ่มต้นฉันเข้าสู่ระบบ แต่คำสั่ง 'fvwm -replace' ออกจากระบบฉันต้องเข้าสู่ระบบอีกครั้งหลังจากโทรมันสิ่งเดียวกันนี้เกิดขึ้นกับ 'killall fvwm'
Chris

"การฆ่า wm ที่รันก่อนหน้านี้อาจยุติเซสชัน X ของคุณหาก wm เริ่มขึ้นในฐานะไคลเอ็นต์สุดท้ายในไฟล์. Xclients หรือ. Xsession ของคุณ" - สิ่งนี้เป็นลักษณะการทำงานที่คาดไว้เมื่อคุณรีสตาร์ท WM คุณต้องเข้าสู่ระบบอีกครั้ง ข้อเสนอของ WM บางรายการคือ "โหลดซ้ำ" (เช่น spectrwm) ที่ช่วยให้หน้าต่างและเซสชันของคุณ fvwm ดูเหมือนจะขาดสิ่งนี้
กลับรายการ

@ คริส: ฉันเข้าใจแล้วไม่คิดอย่างนั้น ดูการแก้ไขของฉัน
Bobby

1

คู่มือบอกเรา:

ต่อไปนี้เป็นกรณีที่เกิดปัญหาเมื่อ 'เริ่มการทำงาน fvwm2 ใหม่' หรือ 'เริ่มการทำงาน fvwm ใหม่':

  • ใช้ fvwm ภายใต้ตัวจัดการเซสชัน
  • ใช้ fvwm พร้อมจอแสดงผลแบบหลายหัว
  • มีอาร์กิวเมนต์บรรทัดรับคำสั่งเช่น -f themes-rc หรือ -cmd
  • ถ้า fvwm2 แรกใน $ PATH เป็นอันที่แตกต่าง

ประเด็นเหล่านี้บ่งบอกสาเหตุที่คุณเห็นข้อความนั้นตรวจสอบแต่ละข้อในกรณีของคุณ

กำหนดแป้นพิมพ์ลัดบางอย่างเพื่อออกคำสั่งเริ่มต้นใหม่ (รวมถึงในคู่มือด้วย):

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

ฉันไม่แน่ใจว่ามีความเข้าใจผิดหรือไม่ ... การรีสตาร์ททำงานได้ดีถ้าฉันเลือกจากเมนู fvwm มันเป็นพฤติกรรมที่ฉันต้องการ แต่ฉันต้องการมันจากบรรทัดคำสั่งนั่นคือจากภายนอก fvwm เอง
Chris

ขอโทษที่เข้าใจผิด. ไม่มีคำUSR SIGNALSจำกัดความสำหรับ fvwm เพื่อเรียกใช้การรีสตาร์ทภายนอกดังนั้น @ คำตอบของ Bobby นั้นดีในเรื่องนี้
กลับรายการใน


0

FvwmCommandต้องการให้FvwmCommandSFIFO เปิด หากคุณไม่แน่ใจว่าผู้ใช้ทั้งหมดของคุณมีอยู่แล้วมันจะไม่ทำงาน

แต่ FVWM จะรีสตาร์ทบน SIGUSR1

เริ่มต้นใหม่ fvwm .Xsessionแม้จะทำงานถ้ามันเป็นคำสั่งสุดท้ายใน

แต่อย่างที่คนอื่นพูดถ้าทำงานภายใต้ตัวจัดการเซสชัน X (และ FVWM ถูกคอมไพล์ด้วยตัวจัดการตัวจัดการเซสชัน) FVWM จะไม่รีสตาร์ทด้วยตัวเองมันจะออกจากตัวเองและคาดว่าจะเริ่มต้นใหม่โดยตัวจัดการเซสชัน สิ่งนี้จะส่งผลต่อพฤติกรรม SIGUSR1


0

สำหรับฉันแล้วงานต่อไปนี้:

kill -SIGUSR1 pid

โดยที่ pid คือ id กระบวนการของกระบวนการ fvwm เพื่อรีสตาร์ท ง่ายขึ้น (บน Linux):

killall -SIGUSR1 fvwm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.