Cinnamon:Super + Number / Win + 1、2、3などを使用してウィンドウ間を切り替える

Cinnamon:Super + Number / Win + 1、2、3などを使用してウィンドウ間を切り替える

フォーラムに質問するしかし、幸運はありません。 WindowsやUbuntuのUnityのように、Winキーと1〜9の数字を使用してウィンドウをどのように切り替えますか?

これらのキーボードショートカットは長年にわたって多くの時間を節約し、Cinnamonなどの広く使用されているデスクトップ環境では基本的にこれを実装していないことに驚きました。私のファイルマネージャは常に最初のウィンドウで開き、ターミナルウィンドウは#2、IDEは#3、ブラウザは#4で開きます。

Win+1/2/3/etc を手動で割り当てます。常にアプリケーションの新しいインスタンスが起動されるため、不可能です。一部のアプリケーションには「単一インスタンス」オプションがありますが、これは例外であり、その場合でも新しいインスタンスが起動および終了する点滅が表示されます。

答え1

あなたが要求することは実際に簡単なハッキングで達成することができます。私の場合は、Super+2「可能であればemacsに切り替え、それ以外の場合は開きます」にバインドしたいと思います。これをCinnamonで実装するには、まずsudo apt install wmctrl(またはLinuxディストリビューションにパッケージをインストールする別の方法で)emacs(またはバインドするアプリケーション)を開き、wmctrl -x -l現在開いているウィンドウのリストを取得します。

0x0440013f  0 emacs.Emacs           username-debian-x1 emacs@username-debian-x1

次に、emacs.Emacs次のbashスクリプトを作成します。

#!/usr/bin/env bash
wmctrl -x -a emacs.Emacs || emacs

その場所に置き、そのファイルに対して実行を有効にし、Cinnamonキーボード設定でカスタムコマンドを作成し、適切なシェルスクリプトを選択してバインド(または必要に応じて)できます~/Documents/switch-emacs.sh。これはすぐに機能します(Debian 10 Buster stableのCinnamonでテスト済み)。chmod +xSuper+2

ソース:Githubへのコメント

wmctrlコマンドをカスタムコマンドに直接入力するのではなく、それをシェルスクリプトに入れる必要があるのは、この||演算子がキーボードショートカットに直接渡されると正しく機能しないようです。

アップデート:Cinnamonバージョン4.2.4-1(おそらく以前のバージョン)以降、このSuper+numberの「オンまたは切り替え」機能はCinnamonに組み込まれており、上記のハックなしですぐに機能するようです。ただし、2019年9月現在、Archなどのローリングディストリビューションにのみこれらの新しいシナモンバージョンがあります。 Mint、Ubuntu、およびDebianの場合、これらのバージョンがリリースされるまで上記のハッキングを引き続き使用する必要があります(2019年9月現在)。シナモンのバージョン番号で十分です。ロールフォワード。

答え2

最新バージョンでは(おそらく少なくともLinux Mint 20 [1])以降、グループ化されたウィンドウリストパネルアプレットの一部としてCinnamonに直接組み込まれており、デフォルトで有効になっています。

デフォルトでは有効になっているため、システム設定>アプレット>グループ化されたウィンドウのリスト[設定、つまり小さなギアアイコン]>一般>スーパー+ <番号>を有効にするショートカットでアプリを切り替えたり開くことができるように無効にしたり(再び有効にしたり)できます。

[1]グループ化されたウィンドウのリストが表示されたら、その機能がすでに存在しているようです。シナモンに追加(82d8170)、その後しばらく削除されました(94719c2)、その後再追加(48ac13f)文句の終わりについに設定可能 (linuxmint/cinnamon#9175)

答え3

私はantiX-linuxを使って次のactivate_windows.shスクリプトを作成しました。

#!/bin/bash

# Script to activate windows with a specific classname
# Usage: ./activate_windows.sh classname

# to identify the classname and class of a window, run `xprop | fgrep CLASS`, and click on the desired window

windows=$(xdotool search --classname "$1") # Get the IDs of all windows with the specified classname
current=$(xdotool getactivewindow) # Get ID of current active window

# if current window is from classname, minimize
if [[ "$windows" =~ "$current" ]]; then
    xdotool windowminimize "$current"
    windows="${windows//$current/}" # removes the window from the list, so as not to open it again
    found=true # at least one window found
fi

for id in $windows; do # while there is a window to open
    # activates the window, dumps stderr to stdout (2>&1), and saves the output (stderr and stdout) to the variable $error
    error="$(xdotool windowactivate $id 2>&1)"
    if [ -z "$error" ]; then # when it issues an error message, it fails to open
        exit 0 # if opened, stop trying
    fi
done

if ! [ "$found" = true ]; then
    $1 & # if there is no window, start a new
fi

このスクリプトを入れて~/.local/bin/実行権限を与えました(chmod +x ~/.local/bin/activate_windows.sh)。

xdotoolがない場合はインストールする必要があります(sudo apt install xdotool)。

だから私が最も使用している各アプリのショートカットを作成しました。

  • スーパー+1→~/.local/bin/activate_windows.sh pcmanfm
  • スーパー+2 → ~/.local/bin/activate_windows.sh Firefox
  • スーパー+3→~/.local/bin/activate_windows.sh lxterminal

あなたは自分のものを作ることができます。ウィンドウのクラス名とクラスを確認するには、目的のウィンドウを実行してxprop | fgrep CLASSクリックします。

たとえば、Firefox を開くたびにタスクバーの Firefox の場所に関係なく super+2 と入力します。

関連情報