มีแป้นพิมพ์ลัดเพื่อย่อขนาดหน้าต่างทั้งหมดยกเว้นหน้าต่างที่ใช้งานอยู่หรือไม่


21

เมื่อเปิดโปรแกรมเช่น GIMP ฉันพบว่ามีหน้าต่างพื้นหลังเปิดรบกวนเนื่องจาก GIMP มีหน้าต่างแยกสามบานที่เกี่ยวข้อง

เป็นภาระที่ต้องไปที่หน้าต่างอื่นที่ไม่ใช่ Gimp ด้วยตนเองเพื่อย่อให้เล็กสุด สิ่งที่ฉันต้องการคือแป้นพิมพ์ลัดใน Ubuntu ที่ตรงกับทางลัดของ Windows Super+ Homeหน้าต่างที่ย่อขนาดหน้าต่างทั้งหมดยกเว้นหน้าต่างที่ใช้งานอยู่

เป็นไปได้ไหมที่จะทำสิ่งนี้ใน Ubuntu?


ความคิดที่น่าสนใจ! ดูคำตอบที่ 1 สำหรับตัวชี้ที่นี่: askubuntu.com/questions/13709/…โพสต์นั้นเกี่ยวกับการเพิ่มฟังก์ชั่นเพื่อย่อทั้งหมด จากการดูจะเพิ่มบรรทัด 'ขยายการใช้งานปัจจุบันก่อนหน้านี้' หรือเปลี่ยนเป็น 'ย่อเล็กสุดยกเว้นปัจจุบันที่ใช้งานอยู่' หลังจากทำเคล็ดลับ (?)
Rinzwind

โอกาสใดที่นักพัฒนาจะเพิ่มตัวเลือก "ลดขนาดทั้งหมด แต่หน้าต่างที่ใช้งานอยู่" ในเมนูแป้นพิมพ์ลัดในรุ่น Ubuntu ในอนาคต? วิธีนี้การเชื่อมโยงนี้จะ "พร้อมและรอ" ที่จะกำหนดค่าเมื่อผู้ใช้ติดตั้ง Ubuntu หรือไม่
ชาด

คำตอบ:


20

เป็นไปได้ที่จะบรรลุสิ่งนี้ด้วยสคริปต์ไพ ธ อน สคริปต์ต้องการpython-wnckและpython-gtkติดตั้งเพื่อให้สามารถใช้งานได้แม้ว่าฉันคิดว่าสิ่งเหล่านี้จะได้รับการติดตั้งตามค่าเริ่มต้นอยู่แล้ว

คัดลอกและวางสิ่งนี้ลงในโปรแกรมแก้ไขข้อความและบันทึกในที่ที่เหมาะสม (เช่นminimise.pyในโฟลเดอร์หลักของคุณ):

#!/usr/bin/env python
import wnck
import gtk

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
        w.minimize()

จากนั้นคุณสามารถตั้งค่าแป้นพิมพ์ลัดได้โดยเปิดแป้นพิมพ์ลัด

แป้นพิมพ์ลัดใน Dash

คลิกที่เพิ่มเพื่อสร้างทางลัดใหม่

หน้าต่างแป้นพิมพ์ลัด

ใช้คำสั่งbash -c 'python ~/minimise.py'(ซึ่งถือว่าคุณบันทึกเป็นminimise.pyในโฟลเดอร์หลักของคุณ)

สร้างทางลัด

จากนั้นคุณสามารถกำหนดชุดแป้นพิมพ์ที่คุณต้องการให้กับการกระทำนี้

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

#!/usr/bin/env python
import wnck
import gtk

screen = wnck.screen_get_default()

while gtk.events_pending():
    gtk.main_iteration()

windows = screen.get_windows()
active_app = screen.get_active_window().get_application()

for w in windows:
    if not w.get_application() == active_app:
        w.minimize()

4
+1! นี่คือเหตุผลที่ฉันรัก Linux! ยอดเยี่ยม @chad: หากมีหลาย windows gimp เป็นปัญหาดูเหมือนว่าจะมีวิธีการที่ให้ gimp ทำหน้าที่เป็น 1 หน้าต่าง โอ๊ะโอดูเหมือนว่าจะเป็นค่าเริ่มต้นจาก 2.6 (ไปเลยฉันไม่ได้ใช้ gimp มานาน)
Rinzwind

นี่คือเหตุผลที่ฉันรัก Python - มันมีโมดูลสำหรับทุกสิ่ง!
dv3500ea

1
python-wnck จะต้องติดตั้งบนระบบของฉัน 14.04 คำถามแม้ว่าภายในไพ ธ อนเชลล์มันทำงานได้ดีโดยไม่มีส่วน gtk.main_loop แต่หากไม่มีมันอยู่ในสคริปต์มันก็ไม่ทำงาน ดังนั้นโดยทั่วไปเพื่อให้สคริปต์ใช้งานได้จากไฟล์. py ส่วน gtk.main_loop จึงเป็นสิ่งจำเป็น มีคนอธิบายได้ไหม
Sergiy Kolodyazhnyy

ทำไมbash -c 'python... และไม่เพียงpython ...?
Michael Campbell

1

เนื่องจาก python-wnck ไม่ได้อยู่ในพื้นที่เก็บข้อมูล apt อีกต่อไป (Kubuntu 18.04 Bionic) ด้านล่างเป็นรหัส python ที่แก้ไข (จากคำตอบข้างต้นโดย @Aditya และ @ dv3500ea)

จาก python3 เป็นต้นไป wnck เป็นส่วนหนึ่งของ GObject Introspection API ( ต้นฉบับ ) ดังนั้นไวยากรณ์สำหรับการนำเข้า wnck (และวัตถุ Gtk) จึงมีการเปลี่ยนแปลง

#!/usr/bin/env python

# import necessary objects
import gi
gi.require_version('Wnck', '3.0') # specify Wnck version
from gi.repository import Wnck

from gi.repository import Gtk


# the script itself
screen = Wnck.Screen.get_default()

while Gtk.events_pending():
    Gtk.main_iteration()

windows = screen.get_windows()
active = screen.get_active_window()

for w in windows:
    if not w == active:
        w.minimize()

จากนั้นกำหนดทางลัดไปยังสคริปต์ python: (ใน Kubuntu) kmenueditor -> สร้างรายการใหม่ -> สคริปต์bash -c 'python path_to_the_python_script.py'-> กำหนดทางลัดที่ต้องการ

อัปเดต (พฤษภาคม 19):

ที่ Kubuntu 19.04 ฉันจำเป็นต้องติดตั้งโมดูล gir1.2-wnck-3.0 เพื่อให้สคริปต์ทำงานได้

$ python -V
Python 2.7.16
$ sudo apt-get install python3-gi gir1.2-wnck-3.0

1

สคริปต์ทุบตีโดยใช้ xdotool:

currentwindowid=$(xdotool getactivewindow)
currentdesktopid=$(xdotool get_desktop)

for w in $(xdotool search --all --maxdepth 3 --desktop $currentdesktopid --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done

มันย่อขนาดหน้าต่างบนเดสก์ท็อปปัจจุบันเท่านั้น

วิธีย่อขนาดหน้าต่างบนเดสก์ท็อปทั้งหมด:

currentwindowid=$(xdotool getactivewindow)

for w in $(xdotool search --all --maxdepth 3 --name ".*"); do
  if [ $w -ne $currentwindowid ] ; then
    xdotool windowminimize "$w"
  fi
done

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