i3wm: เริ่มแอพพลิเคชั่นบนพื้นที่ทำงานเฉพาะเมื่อ i3 เริ่มทำงาน


56

ฉันจะเริ่มต้นแอปพลิเคชันบนพื้นที่ทำงานเฉพาะใน i3 ได้อย่างไรเมื่อเริ่มทำงาน

เหตุใดจึงไม่ทำงานในไฟล์กำหนดค่าของฉัน :

workspace 1; exec firefox; workspace 2; exec chromium; workspace 1

คำตอบ:


60

ตามหน้าArch Wiki i3เพื่อเริ่มต้นแอปพลิเคชั่นอัตโนมัติในพื้นที่ทำงานเฉพาะคุณใช้i3-msg:

exec --no-startup-id i3-msg 'workspace 1:Web; exec /usr/bin/firefox'

4
ใช่สายเหมือนexec --no-startup-id i3-msg 'workspace 1; exec firefox; workspace 2; exec urxvt; workspace 1'งาน แต่ฉันคิดว่ามันแปลก ๆ ที่จะใช้execในi3-msgซึ่งเป็นคำสั่งหมายถึงการดำเนินการคำสั่ง i3 ทำไมฉันไม่สามารถเขียนโดยตรงworkspace 1; exec firefox; workspace 2; exec urxvt; workspace 1ในไฟล์กำหนดค่าของฉันได้
ไล่โทนสี

3
นี่เพิ่งเปิดทุกอย่างใน Workspace 1 สำหรับฉัน
cmc

4
ใช้งานได้กับแอพส่วนใหญ่ อย่างไรก็ตามgoogle-chrome-stableจะเปิดในพื้นที่ทำงานล่าสุดในการตั้งค่าของฉันเสมอ ตัวอย่างเช่นด้วยการกำหนดค่านี้ Chrome จะเปิดในพื้นที่ทำงาน 4 ถัดจาก htop
danijar

3
โปรดทราบว่าตอนนี้ i3 มีคุณสมบัติการบันทึก / เรียกคืนโครงร่างที่ไม่จำเป็นต้องเรียก i3-msg ในกรณีส่วนใหญ่
Wieland

1
@Wieland รูปแบบประหยัด / การฟื้นฟูจะแตกต่างจากเริ่มต้นอัตโนมัติ ; ข้อเสนอก่อนหน้าเท่านั้นที่เกี่ยวข้องกับการตั้งค่ากับดักกลืนสำหรับหน้าต่างโปรแกรม
แอนโทนีโทมัส

12
# This is what I use in ie config
# custom variables for workspaces
set $ws1 "1< txt >"
set $ws2 "2> fm "
set $ws3 "3< Web >"
set $ws4 4
set $ws5 5
set $ws6 6
set $ws7 7
set $ws8 8
set $ws9 9


##==================================================##
#                         *** Workspace specific settings ***                     #
##=================================================##
# Assign Workspaces:
assign [class="Firefox"] $ws3
assign [class="Chromium"] $ws3
assign [class="Google-chrome-beta"] $ws3
assign [class="^Geany"] $ws1

สิ่งนี้ใช้ได้กับบางแอปพลิเคชั่น แต่ไม่เหมาะสำหรับแอปพลิเคชันอื่น ๆ ฉันสงสัยว่าอาจเกี่ยวข้องกับสตริงที่ใช้ในการclassโต้แย้ง มีวิธีใดที่จะรู้ว่าแอปพลิเคชันที่เกี่ยวข้องกับคลาสใด
Luís de Sousa

@ LuísdeSousaคุณxprop | grep CLASSใน terminal ตัวชี้เมาส์ของคุณเปลี่ยนเป็น crosshair คุณคลิกที่โปรแกรมที่คุณต้องการรับคลาสและใช้ตัวแปรตัวที่สองที่ปรากฏใน terminal ของคุณ ตัวอย่างผลลัพธ์สำหรับ Chrome:WM_CLASS(STRING) = "google-chrome", "Google-chrome"
kittenparry

@kittenparry ขอบคุณสำหรับคำแนะนำ แต่ยังคงใช้สตริงจากxpropคำสั่งหน้าต่างจะไม่ถูกกำหนดให้กับพื้นที่ทำงานที่ต้องการ
Luís de Sousa

1
@ LuísdeSousaบางโปรแกรมใช้งานไม่ได้เหมือน Spotify สำหรับพวกเขาคุณอาจจะเขียนสิ่งที่คล้ายกับสิ่งนี้for_window [class="Spotify"] move to workspace $ws10ซึ่ง$ws10เป็นตัวแปรพื้นที่ทำงานของคุณ
ลูกแมว

10

มันเป็นการเริ่มอัตโนมัติบนพื้นที่ทำงานเท่านั้นไม่ใช่การเริ่มอัตโนมัติเมื่อ i3 เริ่มทำงาน แต่ฉันคิดว่ามันอาจมีประโยชน์

ตัวอย่างเช่นในการเปิดใช้เว็บเบราว์เซอร์ของฉันใน "พื้นที่ทำงานที่สอง" ชื่อ "นี่คือสิ่งที่ฉันทำในการกำหนดค่าของฉัน:

bindsym $mod+2 workspace 2:web; layout tabbed; exec [ $(ps h -C vimb | wc -l) = 0 ] && /usr/bin/vimb -s

เมื่อฉันกดปุ่ม 2 เว็บเบราว์เซอร์ของฉันเริ่มทำงาน แต่เมื่อมันเปิดขึ้นมาแล้วมันไม่ได้เปิดใช้งานใหม่มันเพิ่งเปลี่ยนไปใช้พื้นที่เว็บ

หมายเหตุ: ส่วนเลย์เอาต์อาจสร้างความรำคาญในบางครั้งไม่ใช่ความต้องการ

สำหรับรายละเอียดเพิ่มเติมโปรดดูที่ความเชื่อมั่นของฉัน


1
คุณสามารถทำมันได้ง่ายโดยการกำหนดพื้นที่ทำงาน ตัวอย่างเช่นเมื่อต้องการย้ายpidginไปยังพื้นที่ทำงาน 3-rd ทุกครั้งที่เปิดตัวฉันมีการassign [class="Pidgin"] $tag3กำหนดค่า
สวัสดีแองเจิล

การกำหนดให้เวิร์กสเปซนั้นแตกต่างกัน วิธีการแก้ปัญหาของ @ tyjak จะทำให้แอปพลิเคชันเริ่มทำงานเมื่อคุณเปิดพื้นที่ทำงานเฉพาะ การกำหนดแอปพลิเคชันให้กับพื้นที่ทำงานจะทำให้แอปพลิเคชันนั้นถูกย้ายไปยังพื้นที่ทำงานทุกครั้งที่คุณเปิด
Mike

5

ฉันเพิ่งได้ทำงานกับมันในตอนท้ายของ~/.config/i3/configไฟล์ของฉัน:

for_window [class="Firefox"] move container to workspace 2
exec --no-startup-id firefox

ตาม ตัวอย่างArch Linux i3สำหรับ Firefox: ตั้งค่าตัวแปรของคุณset $ws1 "Firefox"ก่อนจากนั้นจึงแทรกบรรทัดต่อไปนี้for_window [class="Firefox"] move to workspace $ws1
Markus Weber

0

assign [class="<use your program name here e.g. - Firefox>"] $workspace<eg. 5>เพียงแค่ใช้ มันใช้งานได้สำหรับฉัน

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