web-dev-qa-db-ja.com

ランチャー配置デュアルモニター

2台のモニターがあります。複数のワークスペースがあります。ランチャー(設定>ディスプレイの「ランチャー配置」)を一方のワークスペースの両方のモニターに表示し、他方のワークスペースには(メインモニターに)ランチャーを1つだけ配置します。これは、Tweetdeckを両方のモニターに拡張したいので、ランチャーが邪魔になるからです。これは可能ですか?

ワークスペース1(良好):

Image 1

ワークスペース2(良くない):

Image 2

ワークスペース2(良好):

Image 3

5
Colin

ランチャーの配置はどのように定義されていますか?

ランチャーの配置は、いくつかのことによって定義されます。

  1. /org/compiz/profiles/unity/plugins/unityshell/num-launchersで設定される値。次のコマンドで読むことができます:

    dconf read /org/compiz/profiles/unity/plugins/unityshell/num-launchers
    

    1(1つの画面上のランチャー)または0(すべての画面上のランチャー)を出力します。

    setにするには、次のコマンドでランチャーをすべての画面に表示できます。

    dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers 0
    
  2. 値が1(1つの画面にのみ表示)の場合、ターゲット画面を設定することで、ランチャーが表示される画面を設定できますasprimary画面、xrandrコマンド付き:

    xrandr --output <screen_name> --primary
    

これらは、以下のスクリプトが使用するコマンドです。

Script1;ランチャーを手動で左のみまたは両方の画面に設定します(キーショートカットを使用)

スクリプトを実行する引数に応じて、コマンドですべての画面に表示するようにランチャーを設定します。

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

または1つのみ:

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

後者の場合、左の画面もプライマリ画面として設定されます。

スクリプト

#!/usr/bin/env python3
import subprocess
import sys

key = "dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers "

arg = sys.argv[1]

if arg == "left":
    # the launcher is set to show on all screens
    subprocess.Popen(["/bin/bash", "-c", key+"1"])
Elif arg == "all":
    # the launcher is set to show only on the left screen
    subprocess.Popen(["/bin/bash", "-c", key+"0"])
    # make sure the left screen is the primary one
    scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
    left = [l.split()[0] for l in scr_data if "+0+0" in l][0]
    subprocess.Popen(["xrandr", "--output", left, "--primary"])

使い方

  • スクリプトを空のファイルにコピーし、launcher_pos.pyとして保存します
  • 両方のコマンドを使用してスクリプトをテストします(ターミナルウィンドウから)。

    python3 /path/to/launcher_pos.py left
    

    そして

    python3 /path/to/launcher_pos.py all
    
  • すべてが正常に機能する場合、コマンドを2つのショートカットキーの組み合わせに追加します。[システム設定]> [キーボード]> [ショートカット]> [カスタムショートカット]を選択します。 「+」をクリックして、両方のコマンドを使用可能なショートカットに追加します。

スクリプト2;自動バージョン

次のスクリプトは、現在のワークスペースがどれであるか(使用しているワークスペースの数や構成に関係なく)を自動的に追跡します。

このスクリプトは、ワークスペースで、ランチャーを左側のみにしたい場所で引数として実行されます。例:

コマンドを使用してスクリプトを実行する場合:

python3 /path/to/launcher_pos.py 2 3

結果は次のとおりです。

enter image description here

スクリプト

import subprocess
import sys
import time

wspace = sys.argv[1:]
key = "dconf write /org/compiz/profiles/unity/plugins/unityshell/num-launchers "

def get_res():
    # get resolution
    xr = subprocess.check_output(["xrandr"]).decode("utf-8").split()
    pos = xr.index("current")
    return [int(xr[pos+1]), int(xr[pos+3].replace(",", "") )]

res = get_res()

def get_dt():
    # get the current viewport
    vp_data = subprocess.check_output(["wmctrl", "-d"]).decode("utf-8").split()
    dt = [int(n) for n in vp_data[3].split("x")]
    cols = int(dt[0]/res[0])
    curr_vpdata = [int(n) for n in vp_data[5].split(",")]
    curr_col = int(curr_vpdata[0]/res[0])+1; curr_row = int(curr_vpdata[1]/res[1])
    return str(curr_col+curr_row*cols)

def set_launcher(arg):
    if arg == "left":
        # the launcher is set to show on all screens
        subprocess.Popen(["/bin/bash", "-c", key+"1"])
    Elif arg == "all":
        # the launcher is set to show only on the left screen
        subprocess.Popen(["/bin/bash", "-c", key+"0"])
        # make sure the left screen is the primary one
        scr_data = subprocess.check_output(["xrandr"]).decode("utf-8").splitlines()
        left = [l.split()[0] for l in scr_data if "+0+0" in l][0]
        subprocess.Popen(["xrandr", "--output", left, "--primary"])

curr_ws1 = get_dt()

while True:
    time.sleep(1)
    curr_ws2 = get_dt()
    if curr_ws2 != curr_ws1:
        if curr_ws2 in wspace:
            arg = "left"
        else:
            arg = "all"
        set_launcher(arg)
    curr_ws1 = curr_ws2

使い方

  1. スクリプトにはwmctrlが必要です

    Sudo apt-get install wmctrl
    
  2. スクリプトを空のファイルにコピーし、launcher_pos.pyとして保存します

  3. 次のコマンドでテスト実行します:

    python3 /path/to/launcher_pos.py 1 3
    

    ワークスペース1および3で、ランチャーが左側にのみ表示されるようになりました

  4. すべてが正常に機能する場合は、スタートアップアプリケーションに追加します:ダッシュ>スタートアップアプリケーション>追加コマンドを追加します。

    /bin/bash -c "sleep 15 && python3 /path/to/launcher_pos.py 1 3"
    

    (ワークスペース1と3が左側にあるランチャーのみが必要な場合)

5
Jacob Vlijm