web-dev-qa-db-ja.com

Unity Launcherの配置を複数の画面で切り替えることはできますか?

非同期のデュアル監視設定を実行しています。私のプライマリモニターは16:9 2560x1440で、セカンダリモニターは10:16 1200x1920セットアップです。私はプライマリをコーディング/ゲーム/ビデオに使用し、セカンダリをブラウジングと参照資料に使用しています。また、ランチャーをプライマリモニターの右側にあるので、セカンダリモニターに置いておきます。

問題は、私のゲームのいくつかは、ランチャーがオンになっているモニターがプライマリモニターと見なされているように見えることです。一部のゲームでは起動オプションを使用して、優先モニターに強制的に起動できますが、一部のゲームでは、ディスプレイ設定でランチャーの配置を切り替える必要があります。

毎回画面表示uiに入る必要なく、設定をすばやく切り替えることができるソリューションをスクリプト化したいと思います。私は~/.config/monitors.xmlを見つけて、プライマリモニターを交換してからunity-settings-daemonを強制終了して再起動しようとしましたが、副作用がないわけではないようです。誰かがより良い方法を知っていますか?

2
JaredMcAteer

ランチャーの位置

ランチャーの位置は、次の2つのパラメーターで定義できます。

1.すべての画面のランチャー、または1つの画面のみ

次のコマンドで設定します。

dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 0

すべての画面に表示する、または

dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 1

1つの画面に表示するには

2.ランチャーが表示されている画面

後者の場合(1つの画面でランチャーのみ)、ランチャーはprimary画面でのみ表示されます。つまり、メイン画面を設定(トグル)する必要があります。これは次のコマンドで実行できます。

xrandr --output <screen_name> --primary

必要なのは、現在設定されているプラ​​イマリ画面を(xrandrコマンドの出力から)ルックアップし、「もう1つ」を選択するためのスクリプトであり、以下のスクリプトも同様です。

enter image description hereenter image description here

スクリプト:

#!/usr/bin/env python3
import subprocess

# Look up the currently set primary screen, set it to the other one
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
scrs = [[l.split()[0], "primary" in l] for l in scr_data if " connected" in l]
for screen in scrs:
    if not screen[1] == True:
        subprocess.Popen(["xrandr", "--output", screen[0], "--primary"])

ランチャーが1つの画面に表示されるように設定されていることも確認する必要がある場合は、次のコマンドを使用します。

#!/usr/bin/env python3
import subprocess

# just to make sure the launcher is set to only show on one screen:
subprocess.Popen(["/bin/bash", "-c", "dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 1"])

# Look up the currently set primary screen, set it to the other one
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
scrs = [[l.split()[0], "primary" in l] for l in scr_data if " connected" in l]
for screen in scrs:
    if not screen[1] == True:
        subprocess.Popen(["xrandr", "--output", screen[0], "--primary"])

使い方

  1. スクリプトを空のファイルにコピーし、toggle_launcher.pyとして保存します
  2. 次のコマンドでテスト実行します。

    python3 /path/to/toggle_launcher.py
    
  3. すべて正常に機能する場合は、ショートカットキーに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、コマンドを追加します。

    python3 /path/to/toggle_launcher.py
    

    お好みのショートカットキーの組み合わせに。

3
Jacob Vlijm