web-dev-qa-db-ja.com

ユニティランチャーを異なるモニターの異なる位置に配置する方法

私は2つのモニターを持っています:1つはメインのモニターとして使用し、ほとんどの作業を行う大型の2560x1600モニターであり、もう1つは「オフ」モニターとして使用するために垂直にセットアップされた1360x768モニターです電子メール、通知ポップアップ、またはゲームのプレイ中のWebブラウザなど。

現在、ユニティランチャーがメインモニターの左端にのみ配置されるように構成しています。

モニターごとに個別のユニティランチャーを使用できるようにしたいと思います。これを行う利点は、各モニター上のアプリケーションがそのモニター上のランチャーのみに関連付けられることです。これにより、デスクトップを整理しやすくなります。

残念ながら、オフスペースでは水平スペースが非常に重要です。これだけのために、余分な48ピクセルの水平スペースを使用する必要はありません。

これに対する解決策は、ランチャーの位置設定を(たとえば、Unity Tweak Toolなどを使用して)下部に変更することです。ただし、この設定は両方の画面上のランチャーの位置に影響するため、メインモニターの左端にランチャーを保持したいと思います。

異なるモニターで異なるランチャーの位置を使用するようにUnityを構成するにはどうすればよいですか?

別の解決策は、オフモニターのユニティランチャーを自動的に非表示にすることですが、メインモニターのランチャーバーを静的に保ちたいです。モニターごとに自動非表示の動作を構成する方法がある場合、これも許容可能なソリューションになります。

デフォルトの統一されたデスクトップ環境に固執したいのですが、複数のモニターを本当にうまく処理する別のDEがある場合は、興味があるかもしれません。

4
AJMansfield

アクティブな画面に応じて、ランチャーを自動的に移動します

可能な解決策は、現在のマウスの位置に応じて、ランチャーの位置を自動的に変更することです。

  • 左画面にある場合は、ランチャーを左に移動します
  • 右の画面にある場合は、一番下に移動します

私が実行したテストでは、驚くほどスムーズに機能し、ウィンドウは変化にうまく適応しました。

スクリプト

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

scr_data = subprocess.check_output(["xrandr"]).decode("utf-8")
border = int([s.split("x")[0] for s in scr_data.split() if "+0+0" in s][0])
left_scr = [l.split()[0] for l in scr_data.splitlines() if "+0+0" in l][0]

key = "com.canonical.Unity.Launcher"
item = "launcher-position"

def catch_mouse():
    return int(subprocess.check_output([
        "xdotool", "getmouselocation"
        ]).decode("utf-8").split()[0].split(":")[1])

test1 = ""

while True:
    time.sleep(1)
    test2 = catch_mouse() <= border
    if test2 != test1:
        if test2 == True:
            cmd = ["gsettings", "set", key, item, "Left"]
        else:
            cmd = ["gsettings", "set", key, item, "Bottom"]
        subprocess.Popen(cmd)
    test1 = test2

使い方

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

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

  3. コマンドでテスト実行(ターミナルから)

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

    /binh/bash -c "sleep 15 && python3 && /path/to/move_launcher.py
    

編集

...またはより高度な、任意の位置のアクティブな画面上のランチャーのみ。

... 1つのランチャーのみを設定するスクリプト(左側の画面の左側):

![enter image description here

...左の画面で作業中。これにより、右側の画面にフルサイズのビューが表示されます...

... 2番目の画面の下部にある1つのランチャー:

enter image description here

...右側の画面に移動すると、右側の画面の目的の位置に必要なランチャーが提供されます

前述のように、テストでは、ウィンドウはエラーなしでスムーズに適応しました。

スクリプト

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

scr_data = subprocess.check_output(["xrandr"]).decode("utf-8")
border = int([s.split("x")[0] for s in scr_data.split() if "+0+0" in s][0])
left_scr = [l.split()[0] for l in scr_data.splitlines() if "+0+0" in l][0]
right_scr = [l.split()[0] for l in scr_data.splitlines() if all([
    not "+0+0" in l, l.count("+") == 2])][0]

key = "com.canonical.Unity.Launcher"
item = "launcher-position"

subprocess.call(["dconf", "write",
        "/org/compiz/profiles/unity/plugins/unityshell/num-launchers", "1"])

def catch_mouse():
    return int(subprocess.check_output([
        "xdotool", "getmouselocation"
        ]).decode("utf-8").split()[0].split(":")[1])

test1 = ""

while True:
    time.sleep(1)
    test2 = catch_mouse() <= border
    if test2 != test1:
        if test2 == True:
            cmd1 = ["xrandr", "--output", left_scr, "--primary"]
            cmd2 = ["gsettings", "set", key, item, "Left"]
        else:
            cmd1 = ["xrandr", "--output", right_scr, "--primary"]
            cmd2 = ["gsettings", "set", key, item, "Bottom"]
        subprocess.Popen(cmd1)
        subprocess.call(cmd2)
    test1 = test2

使用するには

  • このバージョンは、最初のバージョンとまったく同じように実行されます。

注意

これらはほんの2つの例です。多くのことが可能です。

2つのランチャー、同時に画面ごとにスクリーンごとに、しかし、現在誰かがオプションを作成するまでは不可能です...

7
Jacob Vlijm

別のモニターで単一のランチャー(Unityなど)に別の場所を選択するメカニズムが表示されません。

不動産の問題(水平方向の制限)を考えると、画面の下部にランチャーを配置して自動非表示にすることが解決策であることがわかります。

Ubuntu 16.04 LTSでは、ランチャーを一番下に移動できますが、メインモニターの左側にランチャーがないため、この結果に気付きます(他の問題)。

では、両方の画面に2つの(隠された)ランチャーがある場合はどうでしょうか。 1つは左側にあり、もう1つは画面の下部にありますか?

代替ランチャー(カイロドック)を使用するメカニズムについては、この記事を参照してください。 http://www.howtogeek.com/202708/how-to-convert-the-unity-launcher-into-a-dock- style-launcher /

これをテストし(14.04 LTS)、Unity Tweak ToolとCairo Dockをインストールすると、両方の画面に2つの(非表示、選択した場合)ランチャーが提供されることを確認できます。 (カイロドック)画面の下部に。

私のあなたのニーズの評価から、これは両方を満たしますが、両方の画面で2つのランチャーを実行することを意味するので、自分に合ったときにどちらを使用するかを選択できます。

Cairo-Dockでは、複数のモニターを使用している場合、Xineramaの機能を利用して、1つのモニターの特定の場所に表示されるようにDock/Launcherの場所を管理できます。

Dock/Launcherが常に自動非表示になっている場合、これが大きな利点をもたらすとは思いませんが、柔軟性と潜在的には考えられないソリューションを提供するかもしれません... :)

オプションについてはこちらをご覧ください: https://glx-dock.org/bg_topic.php?t=5632

1
Simon