การใช้เทอร์มินัล x-windows หลายตัวพร้อมหนึ่งเซสชัน tmux


19

ฉันมักจะทำงานกับจอภาพ 2 จอที่ไม่ค่อยจัดแนวตั้ง (ฉันมีแหล่งจ่ายพลังงานแบบตั้งโต๊ะอยู่ใต้จอมอนิเตอร์ด้านซ้าย) แต่ฉันต้องการมีหน้าต่างเทอร์มินัล 4 บานแบบเคียงข้างกันบนหน้าจอซึ่งฉันสามารถหมุนได้อย่างง่ายดายเช่น:

ป้อนคำอธิบายรูปภาพที่นี่

การจัดเรียงนี้ทำให้ฉันเสียใจมากเพราะฉันไม่สามารถวนรอบทั้ง 4 อย่างง่ายดายโดยใช้แป้นพิมพ์เท่านั้น (alt-tab ไม่ตัดมันสำหรับฉันเพราะมันไม่ได้รักษา "การสั่งซื้อ" ของทั้ง 4 windows - ถ้า ฉันกด alt-tab ซ้ำ ๆ มันแค่กระเด้งระหว่างหน้าต่างที่เพิ่งใช้งานน้อย 2 อันของฉัน)

มีวิธีรับ tmux เพื่อสร้าง x-window ที่สองเพื่อให้ฉันมี 2 x-windows โดยแต่ละอันมี 2 tmux panes อยู่ข้างในหรือไม่?


ดังนั้นปัญหาของคุณคือคุณมีหน้าต่างที่เรียงซ้อนกันบนจอภาพสองจอและรอบ alt + tab ระหว่างหน้าต่างล่าสุดสองหน้าต่างแทนที่จะเป็นสี่หน้าต่างทั้งหมดหรือไม่ tiling window managerนี้ดูเหมือนว่างานที่ คุณเคยลองบ้างไหม? มีมากมายของพวกเขา awesome, i3, wmii, xmonadและdwmอยู่ในหมู่ที่ดีที่สุด แม้ว่าตามวัตถุประสงค์ของคุณฉันขอแนะนำi3(1)เนื่องจากมันง่ายต่อการรับ (การอ่านไฟล์กำหนดค่าจะสอนคุณทั้งการควบคุมและการกำหนดค่าพื้นฐาน) และปรับให้เหมาะกับการตั้งค่าหลายจอภาพ (xinerama / xrandr)
Braden ดีที่สุด

ฉันลอง i3 และฉันชอบมันมาก แต่มันทำให้เกิดปัญหากับการติดตั้ง Ubuntu ของฉันประมาณชั่วโมงละครั้ง :( มันยังเล่นได้ไม่ดีกับจอภาพของฉันด้วยเหตุผลบางอย่าง
johnny_boy

จริงๆ? แล้วอันอื่นล่ะ? wmii และ xmonad จะเป็นคิวคำแนะนำของฉันต่อไปเนื่องจากพวกเขายังเป็น wms "แฟนซี" เรียงลำดับตามด้วย dwm (รายการโปรดส่วนตัวของฉัน) ในขณะที่ไม่โดดเด่นอย่างที่ i3 พวกเขาจัดการกับจอภาพหลายจอที่สวยหรู IMO
Braden ดีที่สุด

คำตอบ:


15

tmux ช่วยให้คุณสร้าง "กลุ่มเซสชั่น" - หลายเซสชั่นที่ทุกคนสามารถแนบไปกับชุดของหน้าต่างเดียวกัน

(ขอบคุณ https://gist.github.com/chakrit/5004006 :)

ในเทอร์มินัลด้านซ้ายสร้างกลุ่มหน้าต่าง + เซสชันใหม่

tmux new-session -s left

แบ่งออกเป็นบานหน้าต่างตามปกติ

:split-window -v

ในเทอร์มินัลอื่น (ขวา) ให้เชื่อมต่อกับกลุ่มหน้าต่างที่มีอยู่เดิม คุณจะต้องให้ชื่อเดิมเพื่อเชื่อมต่อและชื่อเซสชันของตนเองเพื่อแยกความแตกต่าง

tmux new-session -t left -s right

ในเซสชันนั้นสร้างหน้าต่างใหม่และแยก

:new-window
:split-window -h

ตอนนี้คุณสามารถเห็นtmuxหน้าต่าง( ) ทั้งหมดในแต่ละหน้าต่าง (เทอร์มินัล) แต่มุมมองในแต่ละหน้าต่างจะไม่ขึ้นอยู่กับหน้าต่างอื่น

หากต้องการสลับจากอันหนึ่งไปอีกอันหนึ่ง (โดยไม่ใช้ทางลัดของตัวจัดการหน้าต่างของคุณ) คุณสามารถใช้เช่น xdotool

xdotool search --name 'left:0:' windowactivate
xdotool search --name 'right:1:' windowactivate

เหล่านี้สมมติว่าคุณได้เปิดใช้งานtmuxของset-titlesตัวเลือกในการสั่งซื้อเพื่อให้สถานีชื่อค้นหา; และคุณใช้เพียงtmuxหน้าต่างเดียว(ชุดบานหน้าต่าง) ในแต่ละหน้าต่าง


ในการดำเนินการนี้ฉันต้องการสคริปต์ที่เชื่อถือได้สอบถามบานหน้าต่างปัจจุบันและเลื่อนไปที่ "ถัดไป" โดยใช้คำสั่ง "เปิดใช้งานหน้าต่าง" เมื่อเหมาะสม แต่ผมยังไม่ได้คิดออกว่าจะทำอย่างไร - tmuxฉันคิดว่ามันจะต้องมีการจัดเก็บข้อมูลภายนอกที่เพิ่มขึ้นของสิ่งที่มีอยู่เพื่อ
JigglyNaga

โปรดทราบว่าคุณอาจต้องเปิดใช้งานการปรับขนาดเชิงรุก (setw -g ก้าวร้าวปรับขนาด) มิฉะนั้นหน้าต่างจะไม่พอดีกับแบบเต็มหน้าจอ
dgmora

0

คุณไม่สามารถใช้วิธีการที่ใช้เทคโนโลยีต่ำในการปรับขนาดเทอร์มินัลหนึ่งเครื่อง (โดยการลากขอบ) เพื่อครอบคลุมทั้งสองจอภาพได้เช่นกันดังนั้นตัวแบ่งกึ่งกลางจะอยู่ที่ขอบเขตของจอภาพทั้งสองหรือไม่


1
นี้จะไม่ทำงานถ้าจอภาพทั้งสองมีความสูงแตกต่างกันหรือหากคุณใช้ OS X ได้
เจมส์

0

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

ดังนั้นในแต่ละสถานี:

$ tmux new-session \; split-window -h

หรือสั้นกว่านั้นในแต่ละเทอร์มินัล:

$ tmux new \; splitw -h

คุณต้องการสองเซสชันเนื่องจากมีหนึ่งเซสชันเทอร์มินัลสองรายการจะซิงโครไนซ์และแสดงtmuxหน้าต่างเดียวกันเสมอ

จากนั้นใช้ทางลัดบนเดสก์ท็อปของคุณเพื่อสลับระหว่างเทอร์มินัลสองเครื่อง

โดยส่วนตัวแล้วฉันจะไปกับจอภาพเดียวหนึ่งtmuxเซสชันหนึ่งและสอง (หรือหลาย ๆ ) แยกtmuxwindows "หลัง" กันและสลับระหว่างพวกเขาด้วยCtrlb- nแต่นั่นเป็นเรื่องของรสนิยม

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