Có một phím tắt để giảm thiểu tất cả các cửa sổ ngoại trừ cửa sổ đang hoạt động không?


21

Khi mở các chương trình như GIMP, tôi thấy có các cửa sổ nền mở gây mất tập trung vì GIMP có ba cửa sổ riêng biệt được liên kết với nó.

Đó là một gánh nặng phải đi đến mọi cửa sổ không phải Gimp khác bằng tay để giảm thiểu nó. Cái tôi cần là một phím tắt trong Ubuntu khớp với phím tắt Super+ của Windows Home. Một cửa sổ thu nhỏ tất cả các cửa sổ trừ cửa sổ đang hoạt động.

Có thể đạt được hành vi này trong Ubuntu không?


Ý tưởng thú vị! Hãy xem câu trả lời đầu tiên ở đây để biết về con trỏ: Askubfox.com/questions/13709/ mài Bài đăng đó là về việc thêm một chức năng để giảm thiểu tất cả. Từ việc nhìn vào nó thêm một dòng 'tối đa hóa hoạt động hiện tại trước đó' hoặc thay đổi nó thành 'tối thiểu hóa ngoại trừ hoạt động hiện tại' sau khi nó thực hiện thủ thuật (?)
Rinzwind

bất kỳ cơ hội nào các nhà phát triển sẽ thêm tùy chọn "Thu nhỏ tất cả nhưng cửa sổ hoạt động" trong menu Phím tắt trong các phiên bản Ubuntu trong tương lai? Bằng cách này, liên kết này "sẵn sàng và chờ đợi" được cấu hình khi người dùng cài đặt Ubuntu?
Chad

Câu trả lời:


20

Có thể đạt được điều này với một kịch bản python. Kịch bản yêu cầu python-wnckpython-gtkphải được cài đặt để hoạt động, mặc dù tôi nghĩ rằng chúng được cài đặt theo mặc định.

Sao chép và dán phần này vào trình soạn thảo văn bản và lưu ở một nơi hợp lý (ví dụ như minimise.py trong thư mục nhà của bạn):

#!/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()

Sau đó, bạn có thể thiết lập phím tắt bằng cách mở Phím tắt.

Phím tắt trong Dash

Nhấp vào Thêm để tạo một lối tắt mới.

Cửa sổ Phím tắt

Sử dụng lệnh bash -c 'python ~/minimise.py'(điều này giả sử bạn đã lưu nó dưới dạng minimise.py trong thư mục nhà của bạn).

tạo đường tắt

Sau đó, bạn có thể chỉ định kết hợp bàn phím ưa thích của mình cho hành động này.

Kịch bản sẽ giảm thiểu tất cả các cửa sổ không hoạt động. Tôi không nghĩ rằng điều này rất hữu ích cho trường hợp sử dụng của bạn bởi vì bạn sẽ muốn mở tất cả các cửa sổ Gimp. Thay vào đó, bạn có thể sử dụng tập lệnh hơi khác để thu nhỏ tất cả các cửa sổ không có trong ứng dụng hiện tại:

#!/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! Đây là lý do tại sao tôi yêu Linux! Xuất sắc. @chad: nếu nhiều cửa sổ của gimp là một vấn đề thì dường như có một cách để gimp hoạt động như 1 cửa sổ. Rất tiếc: có vẻ như là mặc định từ 2.6 (hình minh họa; tôi đã không sử dụng gimp trong một thời gian dài).
Rinzwind

Đây là lý do tại sao tôi yêu Python - nó có một mô-đun cho mọi thứ!
dv3500ea

1
python-wnck phải được cài đặt trên hệ thống của tôi, 14.04. Câu hỏi mặc dù, bên trong shell python nó hoạt động tốt mà không có phần gtk.main_loop, nhưng không có nó trong script, nó không hoạt động. Vì vậy, về cơ bản để làm cho tập lệnh có thể hoạt động được từ tệp .py, phần gtk.main_loop là bắt buộc. Ai đó có thể giải thích tại sao?
Sergiy Kolodyazhnyy

Tại sao bash -c 'python... và không chỉ python ...?
Michael Campbell

1

Vì python-wnck không còn trong kho apt (Kubfox 18.04 Bionic), bên dưới là mã python đã sửa đổi (từ câu trả lời ở trên của @Aditya và @ dv3500ea).

Từ python3 trở đi, wnck là một phần của API Introspection GObject ( nguồn ). Vì vậy, cú pháp để nhập wnck (và các đối tượng Gtk) đã thay đổi.

#!/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()

sau đó gán phím tắt cho tập lệnh python: (trong Kubfox) kmenueditor -> tạo một mục mới -> tập lệnh bash -c 'python path_to_the_python_script.py'-> gán một phím tắt mong muốn

CẬP NHẬT (19 tháng 5):

Tại Kubfox 19.04, tôi cần cài đặt mô-đun gir1.2-wnck-3.0 để làm cho kịch bản trên hoạt động.

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

1

tập lệnh bash bằng 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

nó chỉ thu nhỏ các cửa sổ trên màn hình hiện tại.

Để thu nhỏ cửa sổ trên tất cả các máy tính để bàn:

currentwindowid=$(xdotool getactivewindow)

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

Do các vấn đề với các phiên bản Python khác nhau, tôi thích giải pháp bash này.
WinEunuuchs2Unix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.