วิธีตั้งค่าทางลัดสำหรับหน้าต่าง“ อยู่ด้านบนเสมอ” สำหรับหน้าต่าง


27

ใน 12.04 (Unity) ฉันต้องการกำหนดทางลัดให้กับ "always on top option" สำหรับหน้าต่าง อาจเป็นเช่นCtrl+ Shift+ Homeเพื่อเปิดและCtrl+ Shift+ Endเพื่อปิดหรืออะไรก็ตาม มีตัวเลือกในการทำเช่นนี้ที่ไหนสักแห่งในตัวจัดการการตั้งค่า Compiz

โพสต์นี้ (เก่า) อ้างว่า

สำหรับ compiz ให้เปิดใช้งานการกระทำ WM พิเศษ ตรวจสอบคุณสมบัติและแทรกฟิลด์ALT+ Ato Key เพื่อสลับการกระทำเสมอบนสุด

แต่ฉันหามันไม่เจอ


1
ทุกคนที่นี่สามารถจัดการให้ทำงานได้ใน Ubuntu 12.10 โดยไม่ใช้ ccsm หรือไม่ ขอบคุณ
Suhaib

คำตอบ:


32

มันควรทำงานได้กับทุกระบบปฏิบัติการ Ubuntu ตั้งแต่เวอร์ชัน 9.04 โดยไม่ต้องติดตั้งอะไรแก้ไขการสร้างทางลัดใด ๆ

ลองAlt+ Space, T

  • Alt+ Space เป็นทางลัดแรกจะแสดงเมนูเมาส์คลิกขวาขึ้น

  • T เลือกฟังก์ชั่น "Always On Top"


1
นี่เป็นคำตอบที่ดีที่สุดในหน้านี้
dotancohen

ยืนยันการทำงานกับ Unity 14.04 ความจริงที่ว่า alt + space เปิดใช้งานเมนูแบบเลื่อนลงช่วยได้มากสำหรับคุณสมบัติที่ใช้งานไม่บ่อยนัก
Frank M

นี่ควรเป็นคำตอบที่เลือก ขอขอบคุณ!
Nam G VU

1
นี่ถูกโพสต์เมื่อ 2 ปีหลังจากคำถาม แต่ตอนนี้แสดงถึงคำตอบที่ดีที่สุดดังนั้นฉันจึงเปลี่ยนคำตอบที่ยอมรับ
Ian Hincks

2
ไม่ทำงานบน 18.04 ตัว T ไม่ได้เลือกฟังก์ชั่น 'Always On Top' อีกต่อไป
rvbarreto

14

เนื่องจากยังไม่มีใครพูดถึงเรื่องนี้ฉันจะทิ้งโซลูชันที่เหมาะกับฉันบน Ubuntu 12.04

คุณสามารถตั้งค่าแป้นพิมพ์ลัดปกติและใช้wmctrlเพื่อสลับตัวเลือก "อยู่ด้านบนเสมอ"

ไปที่ การตั้งค่าระบบ> คีย์บอร์ด> ลัด> ลัดที่กำหนดเอง กดปุ่ม+และตั้งชื่อทางลัดของคุณ จากนั้นป้อนคำสั่งต่อไปนี้

wmctrl -r :ACTIVE: -b toggle,above

หากคุณยังไม่มีมันคุณสามารถติดตั้งwmctrlจาก repos โดยใช้

sudo apt-get install wmctrl

คุณควรมีบางสิ่งที่คล้ายกับสิ่งนี้

สกรีนช็อตแสดงหน้าจอตั้งค่าแป้นพิมพ์ลัดที่กำหนดเอง

กดใช้และคุณควรจะไป!

การแก้ปัญหานี้มาจากการอภิปรายในฟอรั่มอูบุนตู


@Suhaib ส่วนนั้นมีคำตอบอยู่แล้ว :)
Kasisnu

ขอโทษด้วย ไม่ทราบว่าฉันคิดถึงมันได้อย่างไร xD
Suhaib

7

หากไม่ได้ติดตั้ง CCSM และปลั๊กอินพิเศษสำหรับ compiz ผ่าน:

sudo apt-get install compizconfig-settings-manager compiz-plugins- พิเศษ

โปรดระวังด้วย CCSM สามารถฆ่า Unity3D ในบางระบบ

หากคุณยังไม่ได้ติดตั้ง compiz-plugins พิเศษคุณต้องรีสตาร์ท Compiz เพื่อโหลด (แม้ว่าจะแสดงใน CCSM ได้ดีก่อนที่จะรีสตาร์ท) ด้วยAlt+ F2และ

compiz - แทนที่

คุณสามารถดูการดำเนินการ WM พิเศษในส่วนการจัดการ Windows บน CCSM ดังที่อธิบายไว้ในโพสต์ที่คุณพบ คุณสามารถตั้งค่าการกระทำที่ต้องการได้อย่างง่ายดาย


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

ขอบคุณสำหรับข้อมูล @sup ฉันเพิ่งอธิบายโดยใช้โพสต์ที่กำหนด จริงๆแล้วฉันไม่ได้ลองเอง
heartsmagic

ฉันได้สร้างข้อความใหม่เพื่อให้ชัดเจนยิ่งขึ้น :-)
sup

2

อีกวิธีที่ดีกว่าฉันคิดว่าโซลูชันคือการเพิ่มAlt+ Aเป็นทางลัดเพื่อสลับคุณสมบัติ "อยู่ด้านบนเสมอ" ของหน้าต่าง ซึ่งสามารถทำได้ผ่านทางGConf บรรณาธิการ เพียงทำตามคำแนะนำง่ายๆที่ให้ไว้ในวิดีโอนี้

แก้ไข: คัดลอกมาจากวิดีโอ

  1. ถ้าคุณใช้ 12.04 && 12.10 คุณต้องติดตั้ง gconf-editor

    sudo apt-get install gconf-editor

  2. พิมพ์gconf-editorในอาคารผู้โดยสาร

  3. คลิกที่แอพ

  4. ไปที่ความดุร้าย

  5. window_keybindings

  6. คลิกขวาภายในกล่องด้านขวาและคลิกที่ new key

  7. เลือกstringจากรายการแบบเลื่อนลง

  8. เพิ่มคำ toggle_above

  9. เขียนคำสั่งใด ๆ ที่คุณต้องการ ie: A และกด OK

เสร็จสิ้น :-)


มันใช้งานไม่ได้ :-(
Suhaib

ใช่มันไม่ทำงานสำหรับ 12.10 เช่นกัน
จีบ

มันควรเป็น dconf-editor ใน 14.04 ... แต่มันก็ไม่ได้ผลเหมือนกัน
Ed Villegas

1

ฉันพยายามใช้wmctrlคำสั่งสลับ แต่มันไม่ทำงานในการตั้งค่า Ubuntu ของฉัน การสลับจะสลับใน แต่ไม่สลับ (ฉันคิดว่าอาจเป็นเพราะฉันใช้สภาพแวดล้อมเดสก์ท็อป GNOME ซึ่งwmctrlAFAIK ใช้งานไม่ได้)

อย่างไรก็ตามหลังจากการค้นคว้ามากมายและหาวิธีเขียนโค้ดที่เหมาะสมใน bash ฉันได้สร้างคำสั่งเดียวที่ใช้wmctrlคำสั่งภายในเลเยอร์ของตรรกะเพื่อสลับสถานะ 'อยู่ด้านบนสุด' อย่างมีประสิทธิภาพบนเดสก์ท็อป GNOME ปัจจุบัน ฉันโพสต์คำตอบนี้บน Ask Unix / Linux แต่คิดว่าฉันจะโพสต์ไว้ที่นี่ด้วยในกรณีที่มีใครมีปัญหาเดียวกัน

นี่คือคำสั่ง:

bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'

จะตรวจสอบคุณสมบัติสถานะหน้าต่างที่ใช้งานอยู่ "_NET_WM_STATE" โดยใช้xpropsและหากมีข้อความ "ข้างต้น" ที่หมายถึงตัวเลือก 'อยู่ด้านบนเสมอ' จะเปิดใช้งานอยู่ จากนั้นมันก็จะรันwmctrlคำสั่งด้วยพารามิเตอร์addหรือremoveตามความเหมาะสม


การแยกคำสั่ง (แต่ละคำสั่งถูกแทรกลงในถัดไปแทนที่ตัวยึดตำแหน่ง):

  • รับรหัสหน้าต่างที่ใช้งานอยู่:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
    
  • รับสถานะหน้าต่างจากการxpropใช้ id:

    xprop -id $(■) _NET_WM_STATE
    
  • ตรวจสอบว่าสถานะมี "ABOVE" ระบุว่าหน้าต่างถูกตั้งค่าเป็น "always on top":

    [[ $(■) =~ "ABOVE" ]]
    
  • ส่งคืน "ลบ" หากเป็นจริงมิฉะนั้นส่งคืน "เพิ่ม":

    ■ && echo "remove" || echo "add"
    
  • รันwmctrlคำสั่งโดยใช้ค่าที่ส่งคืนเป็นพารามิเตอร์:

    wmctrl -r :ACTIVE: -b $(■),above
    
  • ส่งสิ่งทั้งหมดเพื่อbashให้คุณสามารถใช้การทดแทนคำสั่ง${ ... }การประเมินค่า bash boolean [[ ... ]]และตัวดำเนินการจับคู่ regex =~:

    bash -c '■'
    

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

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


0

มันอาจจะสายเกินไป แต่ถ้ามีคนค้นหาอีกครั้งแล้วมาที่นี่นั่นเป็นวิธีแก้ปัญหาที่ง่ายกว่าสำหรับฉัน:

ใน Ubuntu และในดิสทริบิวชันอื่น ๆ อีกมากมายโดยใช้ GTK (ส่วนใหญ่จะใช้แผงการตั้งค่าร่วมกัน) คุณสามารถไปที่การตั้งค่า -> คีย์บอร์ด> ทางลัด ใน "รายการ" ทางลัดคุณจะพบรายการที่ไม่ได้กำหนดเพื่อให้หน้าต่างอยู่ด้านบน ไม่แน่ใจในชื่อภาษาอังกฤษ แต่ในภาษาฝรั่งเศสมันเป็น "Activer / Désactiver la mise au พรีเมียร์แผนเดอลาfenêtre"

ตั้งค่าและที่มัน :)

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