如何将统一启动器放在不同显示器上的不同位置

AJM*_*eld 5 multiple-monitors unity launcher 16.04

我有两台显示器:一台是 2560x1600 的大显示器,我将它用作我的主显示器并完成大部分工作,另一台是 1360x768 显示器,垂直设置用作“关闭”显示器 - 用于我的日历和电子邮件、通知弹出窗口或玩游戏时的网络浏览器等。

我目前对其进行了配置,以便统一启动器仅位于主监视器的左边缘。

我希望能够为每台显示器配备一个单独的统一启动器。这样做的好处是每个显示器上的应用程序只与该显示器上的启动器相关联,这有助于保持桌面井井有条。

不幸的是,水平空间在关闭显示器上非常宝贵 - 我不想为此使用额外的 48 像素水平空间。

对此的解决方案是将启动器位置设置(例如,通过 Unity Tweak Tool 或类似工具)更改为底部。但是,此设置会影响启动器在两个屏幕上的位置,我希望将启动器保留在主显示器的左边缘。

如何配置 unity 以在不同显示器上使用不同的启动器位置?

另一种解决方案是在关闭监视器上自动隐藏统一启动器,但我想在主监视器上保持启动器栏静止。如果有一种方法可以在每个监视器的基础上配置自动隐藏行为,这也是一个可以接受的解决方案。

我更愿意坚持使用默认的统一桌面环境,但如果有另一个可以很好地处理多台显示器的 DE,我可能会感兴趣。

Jac*_*ijm 8

根据活动屏幕自动移动启动器

一种可能的解决方案是根据当前鼠标位置自动更改启动器的位置:

  • 如果它在左侧屏幕上,请将启动器向左移动
  • 如果它在右侧屏幕上,请将其移至底部

在我运行的测试中,它运行得非常顺利,而且窗口很好地适应了这种变化。

剧本

#!/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
Run Code Online (Sandbox Code Playgroud)

如何使用

  1. 脚本需要xdotool

    sudo apt-get install xdotool
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将脚本复制到一个空文件中,另存为 move_launcher.py

  3. 通过命令(从终端)测试运行它

    python3 /path/to/move_launcher.py
    
    Run Code Online (Sandbox Code Playgroud)
  4. 如果一切正常,请添加到启动应用程序:Dash > 启动应用程序 > 添加。添加 tghe 命令:

    /binh/bash -c "sleep 15 && python3 && /path/to/move_launcher.py
    
    Run Code Online (Sandbox Code Playgroud)

编辑

...或更高级的,只有活动屏幕上任意位置的启动器。

...只设置一个启动器的脚本(在左侧屏幕上,在左侧):

![在此处输入图片说明

...当您在左侧屏幕上工作时。这将在右侧屏幕上为您提供全尺寸视图...

...以及第二个屏幕底部的一个启动器:

在此处输入图片说明

...如果你移动到右边屏幕,给你你需要在需要的位置发射右侧屏幕上

如前所述,在测试中,窗口顺利适应,没有错误。

剧本

sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)

使用

  • 这个版本的运行和第一个完全一样。

笔记

这只是两个例子。很多事情都是可能的。

两个发射器,同时在每个屏幕的不同位置,目前是不可能的,直到有人创建选项......


小智 1

我看不到为不同显示器上的单个启动器(例如 Unity)选择不同位置的机制。

考虑到房地产问题(水平有限),我可以看到将启动器放置在屏幕底部并自动隐藏将是一个解决方案。

在 Ubuntu 16.04 LTS 中,您可以将启动器移至底部,但我意识到这会导致主显示器左侧缺少启动器(您的另一个问题)。

那么 - 如果两个屏幕上都有两个(隐藏的)启动器怎么办?一个在左侧,一个在屏幕底部?

有关使用备用启动器(开罗码头)的机制,请参阅本文: http://www.howtogeek.com/202708/how-to-convert-the-unity-launcher-into-a-dock-style-launcher/

我已经对此进行了测试(14.04 LTS),并且可以确认安装 Unity Tweak Tool 和 Cairo Dock 将为您在两个屏幕上提供两个(隐藏的,如果您选择的话)启动器 - 一个(Unity Launcher)位于左侧,另一个(Unity Launcher)位于左侧(开罗码头)位于屏幕底部。

根据我对您的需求的评估,这将满足两者,但意味着在两个屏幕上运行两个启动器,以便您可以选择在适合您时使用哪个。

如果您有多个显示器,Cairo-Dock 允许您通过利用 Xinerama 中的功能来管理 Dock/Launcher 的位置,以便它仅显示在一台显示器上的特定位置。

如果 Dock/Launcher 始终自动隐藏,我认为这不会提供显着的好处,但是它可能会为您提供一些灵活性,并可能为您提供一个我想不到的解决方案...:)

请参阅此处的选项:https://glx-dock.org/bg_topic.php? t=5632