Tổ hợp phím để chuyển giữa các cửa sổ của ứng dụng trong tất cả các chế độ xem


11

Alt- `được sử dụng để chuyển đổi giữa các cửa sổ của ứng dụng trong chế độ xem hiện tại trong Unity.

Có sự kết hợp phím nào khác để chuyển giữa các cửa sổ của ứng dụng trong tất cả các chế độ xem không?

Tôi không muốn thay đổi hành vi mặc định của Alt- `, đó là chuyển đổi giữa các cửa sổ của ứng dụng trong chế độ xem hiện tại.

Tôi đang sử dụng Ubuntu 14.04 và Unity.


Theo quan điểm, bạn có nghĩa là không gian làm việc?
Tim

Câu trả lời:


7

Lấy cảm hứng từ câu trả lời của Pineau, tôi đã tìm thấy một mẹo bẩn để hoàn thành nó: keep Alt+ `để chuyển đổi giữa các cửa sổ ứng dụng trong một khung nhìn và (ví dụ) Alt+ 1để chuyển giữa các cửa sổ ứng dụng trên tất cả các khung nhìn.

Nhược điểm nhỏ của mỹ phẩm là độ phản hồi kém chính xác hơn một chút, vì các cài đặt cần một phần giây để thay đổi. Trong thực tế, tuy nhiên, bạn sẽ khó nhận ra.

  1. cài đặt xdotool:

    sudo apt-get install xdotool
    
  2. Sao chép scipt sau vào một tập tin trống và lưu nó dưới dạng switch.sh

    #!/bin/bash
    
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
    sleep 0.2
    xdotool keydown alt key 0x60
    dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
    sleep 1
    
  3. đặt tổ hợp phím để chạy tập lệnh : System Preferences > Keyboard > Shortcuts > Custom Shortcuts. Tôi chọn Alt+ 1, vì nó gần với cái khác.

    Bây giờ bạn có thể sử dụng Alt+ 1để chuyển đổi giữa tất cả các cửa sổ của (ví dụ) gedit:

    nhập mô tả hình ảnh ở đây

    hoặc Alt+ `để chuyển giữa các cửa sổ gedit của không gian làm việc hiện tại:

    nhập mô tả hình ảnh ở đây

Ghi chú:

  1. Trong tập lệnh, khóa phía trên Tabđược đặt thành key 0x60. Điều này có thể khác nhau trên các lauyout khác. Trong trường hợp nó không hoạt động, hãy chạy trong một thiết bị đầu cuối xev, sau đó nhấn Return, sau đó nhấn phím trên tab. Trong đầu ra, tìm kiếm một chuỗi như (keysym 0x60, grave). Giá trị keyym là giá trị bạn cần trong dòng (script-):

    xdotool keydown alt key 0x60
    
  2. Các giá trị sleep 0.2sleep 1làm cho tập lệnh hoạt động tốt trên hệ thống của tôi, nhưng chúng có thể được tối ưu hóa cho các hệ thống nhanh hơn (giảm).

Lựa chọn khác

Tương tự, bạn có thể đặt tổ hợp phím để chuyển giữa tất cả các cửa sổ ứng dụng trên tất cả các chế độ xem , tập lệnh sẽ là:

#!/bin/bash

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false
sleep 0.2
xdotool keydown alt key 0xff09
dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport true
sleep 1

Nếu bạn đặt ví dụ Alt+ Qcho điều này, bạn có bộ tùy chọn đẹp:

Alt+ ` Chuyển đổi giữa các cửa sổ của ứng dụng hiện tại trên chế độ xem hiện tại

Alt+ 1 Chuyển đổi giữa các cửa sổ của ứng dụng hiện tại trên tất cả các khung nhìn

Alt+ Tab Chuyển đổi giữa tất cả các cửa sổ ứng dụng trên chế độ xem hiện tại

Alt+ Q Chuyển đổi giữa tất cả các cửa sổ ứng dụng trên tất cả các khung nhìn

nhập mô tả hình ảnh ở đây

Alt+ Tab: Chuyển đổi giữa tất cả các cửa sổ ứng dụng trên chế độ xem hiện tại

nhập mô tả hình ảnh ở đây

Alt+ Q: Chuyển đổi giữa tất cả các cửa sổ ứng dụng trên tất cả các khung nhìn


5

Giải pháp chung sử dụng wmctrl


Tổng quat

Tập lệnh sau phải tương thích với tất cả các trình quản lý cửa sổ tuân thủ EWMH (ví dụ: xfwm4, openbox, kwin, compiz ...). Nó sử dụng wmctrlxprop, có thể được cài đặt với:

sudo apt-get install x11-utils wmctrl

Cài đặt

Sao chép và lưu đoạn văn sau dưới dạng simple-window-switcher:

#!/bin/bash

# based on a script by Robert Steiniger
# (http://lars.st0ne.at/blog/switch%20between%20windows%20within%20the%20same%20application)

Usage="
  Title:        simple-window-switcher 0.1
  Description:  switch between all windows of active application
  Author:       Copyright Glutanimate 2014 (https://github.com/Glutanimate)
  License:      GNU GPLv3
  Usage:        $(basename "$0") [-g|-l|-h]
                -g: global window switching (across all workspaces)
                -l: local window switching (current workspace)
                -h: display this help message

                If no argument is provided window switching will be set to global.
"

while getopts "lgh" OPTIONS; do
  case $OPTIONS in
    l ) Fields="3-4"
        ;;
    g ) Fields="4"
        ;;
    h ) echo "$Usage"
        exit 0
        ;;
   \? ) echo "$Usage"
        exit 1
        ;;
  esac
done

ActiveWinID="$(xprop -root | sed -n 's/_NET_ACTIVE_WINDOW(WINDOW): window id # 0x//p')"
# fields 3-4: <desktop number> <window class>
ActiveWinClass="$(wmctrl -xl | grep "$ActiveWinID" | cut -d" " -f${Fields})"
WindowList="$(wmctrl -xl | grep "$ActiveWinClass" | cut -d" " -f1)"
NextWindow="$(echo "$WindowList" | grep -A1 "$ActiveWinID" | sed -n 2p)"

if [[ -z "$NextWindow" ]]; then
  NextWindow="$(echo $WindowList | head -n 1)"
fi

wmctrl -i -a "$NextWindow"

Đánh dấu tập lệnh là có thể thực thi được và lưu nó ở bất cứ đâu bạn muốn (tốt nhất là trong PATH của bạn, ví dụ /usr/local/binhoặc ~/bin).

Sử dụng

Sử dụng menu phím tắt họ của trình quản lý cửa sổ của bạn để gán simple-window-switchercho một phím nóng bạn chọn. Bạn có thể sử dụng các tham số sau để kiểm soát cách ứng xử của tập lệnh:

  • -g: chuyển đổi cửa sổ toàn cầu (trên tất cả các không gian làm việc)
  • -l: chuyển đổi cửa sổ cục bộ (không gian làm việc hiện tại); có thể không hoạt động với Unity / Compiz (xem phần bình luận để biết thêm thông tin)

Kính gửi @Glutanimate, sau khi -lcũng chuyển sang cửa sổ trên các không gian làm việc khác.
Kadir

@Kadir Thật lạ. Nó không có trên hệ thống của tôi. Nếu bạn có thời gian, bạn có sẵn sàng đăng kết quả đầu ra của wmctrl -xlmột trang như pastebin.com và liên kết nó ở đây không?
Glutimate

Kính gửi @Glutanimate, đây là: pastebin.com/iJBAZ5a7
Kadir

@Kadir Cảm ơn! Có vẻ như Unity / Compiz không tiết lộ thông tin không gian làm việc một cách chính xác nên wmctrl gặp khó khăn khi chọn nó (đó là lý do tại sao bạn chỉ thấy các số 0 trong cột thứ hai, đó phải là số không gian làm việc). Không biết đó là một lỗi hay nếu nó được thiết kế theo cách đó. Tôi đã không nhận thấy điều này bởi vì tôi đang sử dụng LXDE. Tôi sẽ thêm một ghi chú cho câu trả lời.
Glutimate

4

Mở Terminal và gõ lệnh sau:

dconf write /org/compiz/profiles/unity/plugins/unityshell/alt-tab-bias-viewport false

Ngoài ra, bạn có thể cài đặt Unity Tweak Tool:

sudo apt-get install unity-tweak-tool
unity-tweak-tool

Sau đó kích hoạt tùy chọn Chuyển giữa các cửa sổ trên tất cả các không gian làm việc trong Tab Trình chuyển đổi:

nhập mô tả hình ảnh ở đây


Tôi muốn duy trì thuộc tính của Alt-`, đang chuyển đổi giữa các cửa sổ của ứng dụng trong chế độ xem hiện tại. Tôi cần một phím tắt khác như Ctrl-Alt-`, sẽ chuyển giữa các cửa sổ của ứng dụng trong tất cả các chế độ xem.
Kadir

1
@Kadir Thật không may, thuộc tính dconf sẽ không cho phép cả hai cấu hình cùng tồn tại. Đó là một hành vi hoặc hành vi khác.
Sylvain Pineau
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.