在同时运行两者时,如何使 Unity 2d Shell 避开 GNOME 面板?

Tho*_*ley 6 gnome-panel unity-2d gnome-classic

我在 12.04 中使用 GNOME Fallback,并且我正在运行 Unity 2D Shell(没有 UNITY 2D 面板)和 GNOME 面板。我通过使用 GNOME Fallback 登录,然后运行unity-2d-shell. 这是它目前的样子:

在此处输入图片说明

第二张图是我的第二台显示器,忽略它。

如您所见,gnome 面板位于 Unity 2d shell 的顶部。如何将 Unity 2d shell 从屏幕顶部移动 28 像素(我的 gnome 面板高 28 像素)?

编辑:我也在运行 Compiz,所以如果有人有任何需要的解决方案,我可以使用 ccsm。

use*_*.dz 2

我确认该行为仅在 Compiz/双显示组合中出现。到目前为止我在 Ubuntu 12.04 32 位的 VBox 中测试过的内容:

  • Metacity + 单显示器(OK)
  • Metacity + 双显示(OK)
  • Compiz + 单显示器(OK)
  • Compiz + 双显示(重叠)

一种对我有用的技巧或解决方法,将顶部面板添加到第二个显示器并应禁用两者的自动隐藏。

如果您不想将面板添加到第二个显示器,这是另一个未经完全测试的黑客,它只是有效:

  1. 获取源码:

    sudo apt-get build-dep unity-2d
    apt-get source unity-2d
    cd unity-2d-5.14.0/
    
    Run Code Online (Sandbox Code Playgroud)
  2. 修改屏幕顶部

    nano shell/app/shelldeclarativeview.cpp

    void
    ShellDeclarativeView::updateShellPosition()
    {
    ...
        QRect my_screenInfo = m_screenInfo->availableGeometry();
        my_screenInfo.adjust(0,28,0,0);
        const QRect availableGeometry = my_screenInfo;
        //const QRect availableGeometry = m_screenInfo->availableGeometry();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 主机外壳高度

    nano shell/Shell.qml

    Item {
        id: shell
    ...
        height: declarativeView.screen.availableGeometry.height - 28
    
    Run Code Online (Sandbox Code Playgroud)
  4. 构建它:

    cmake .
    make
    
    Run Code Online (Sandbox Code Playgroud)
  5. 测试一下

    ./shell/app/unity-2d-shell
    
    Run Code Online (Sandbox Code Playgroud)

您可能想安装它然后重命名它以避免与官方的混淆。

    sudo make install        
    sudo mv /usr/local/bin/unity-2d-shell /usr/local/bin/unity-2d-shell-mod
Run Code Online (Sandbox Code Playgroud)