Điểm:0

Đặt Alt + Trái/Phải thành tập lệnh để chuyển đổi tab

lá cờ br

Tôi thích Alt + Trái/Phải để thay đổi tab khi đang ở trong trình duyệt nhưng để làm những gì họ thường làm trong các chương trình khác.Hầu hết các trình duyệt không cho phép bạn có các tổ hợp phím tùy chỉnh (họ hầu như luôn sử dụng Ctrl + PgUp/PgDn, trên bàn phím của tôi là Ctrl + Fn + Lên/Xuống) vì vậy tôi bị mắc kẹt với giải pháp cấp hệ điều hành: liên kết Alt + Trái/ Quyền thực hiện Ctrl + PgUp/PgDn nếu cửa sổ hiện tại là trình duyệt và là chính chúng nếu không. Trong X11, tôi đã hoàn thành việc này bằng AutoKey, nhưng tôi muốn một giải pháp hoạt động ở Wayland. Đây là nơi tôi đang ở, key-mapper không cho phép lệnh bash, chim ưng có thể hoạt động (tôi chưa thử), KMonad không đủ linh hoạt với các tập lệnh Bash, loạiydotool không hoạt động với tôi nhưng sự kiện evemu thì có (tôi đã tìm thấy nó đây), tôi có thể lấy tên cửa sổ hiện tại bằng cách sử dụng

cuộc gọi gdbus \
  --phiên họp \
  --dest org.gnome.Shell \
  --object-path /org/gnome/Shell \
  --method org.gnome.Shell.Eval "
    toàn cầu
      .get_window_actors()
      .map(a=>a.meta_window)
      .find(w=>w.has_focus())
      .get_wm_class()" \
  | cắt -d'"' -f 2

mà tôi tìm thấy từ đây. Điều đó có nghĩa là tôi có thể tạo kịch bản này

#!/bin/bash
# setsid --fork gnome-terminal
# Kiểm tra xem cửa sổ hiện tại có phải là Google Chrome hay không (có thể được điều chỉnh cho Firefox)
# và nếu có thì sẽ gửi phím Ctrl + PgUp (di chuyển tiêu điểm tab sang trái một tab)
# Nó dự định được gọi bởi một thứ quản lý khóa (ví dụ KMonad) khi nhấn Alt + Left

# Đây là cách tôi mô phỏng các lần nhấn phím
# Lấy từ đây: https://unix.stackexchange.com/questions/381831/keyboard-emulation-in-wayland
# Cần sudo apt install evemu-tools
hàm type_key() {
    EVDEVICE=/dev/input/event4
    # nhấn các phím xuống theo thứ tự
    cho khóa trong $@; làm
        sự kiện evemu $EVDEVICE --type EV_KEY --code KEY_$key --value 1 --sync
    xong


    # nâng các phím lên theo thứ tự liên tiếp
    for (( idx=${#@}; idx>0; idx-- )); làm
        sự kiện evemu $EVDEVICE --type EV_KEY --code KEY_${!idx} --value 0 --sync
    xong
}
# Ngoài ra, hãy xem https://github.com/sezanzeb/key-mapper, nó không thể thực hiện các lệnh bash nhưng ngược lại
# có vẻ khá tốt cho những thứ này


# Nói chung, tôi biết không có cách nào để lấy tên cửa sổ trong Wayland, tôi có thể làm điều đó nếu chúng tôi đang ở trong Gnome
# Lấy từ đây: https://unix.stackexchange.com/questions/399753/how-to-get-a-list-of-active-windows-when-using-wayland
WINDOW_CLASS=$(cuộc gọi gdbus \
  --phiên họp \
  --dest org.gnome.Shell \
  --object-path /org/gnome/Shell \
  --method org.gnome.Shell.Eval "
    toàn cầu
      .get_window_actors()
      .map(a=>a.meta_window)
      .find(w=>w.has_focus())
      .get_wm_class()" \
  | cắt -d'"' -f 2)

# Sử dụng "Google-chrome" cho Chrome và "firefox" cho Firefox
nếu [[ "$WINDOW_CLASS" = "gnome-terminal-server" ]] || [[ "$WINDOW_CLASS" = "Google-chrome" ]] || [[ "$WINDOW_CLASS" = "firefox" ]]
sau đó
  type_key RIGHTCTRL TRANG LÊN
khác
  type_key PHẢI TRÁI
fi

# Kiểm tra trình quản lý ứng dụng web
# https://ubuntuhandbook.org/index.php/2021/01/install-linux-mints-web-app-manager-ubuntu-20-04/

và sử dụng Cài đặt Gnome -> Phím tắt KeyBoard -> Phím tắt tùy chỉnh -> + để liên kết Alt + Left với tập lệnh trên (nó yêu cầu cung cấp cho tập lệnh "sudo pass", như đã hoàn tất đây). Tuy nhiên, mặc dù tập lệnh chuyển tab khi được thực thi từ Gnome Terminal, nhưng nó không chuyển tab trong Google Chrome (có lẽ đây là sự cố sự kiện evemu, có lẽ giải pháp thay thế này sẽ hoạt động bản thảo?) cũng như không chuyển tab khi được gọi bằng cách sử dụng tổ hợp phím toàn cầu Alt + Left của bộ Gnome.

Bất kỳ ý tưởng nào về cách tôi có thể làm việc này? Tôi không muốn phải cài đặt một chương trình khác như KMonad để liên kết toàn cầu hoạt động, nhưng những người ăn xin không thể là người lựa chọn. Lý tưởng nhất sẽ là một cách để gửi tổ hợp phím từ GJS để tất cả có thể được thực hiện từ một tập lệnh GJS sạch.

Phiên bản Gnome: Gnome Shell 3.38.4 Tôi sử dụng Material Shell, trong trường hợp có liên quan

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.