Как использовать guake на правом мониторе в среде с двумя дисплеями


21

Я хочу использовать Guakeна правом мониторе.

Так что я добавил это PPA sudo add-apt-repository ppa:cberner/guake, и sudo apt-get update.

https://launchpad.net/~cberner/+archive/guake/+index?field.series_filter=raring

Инструкция говорит, что я могу установить monitor_indexкак угодно. Но я не мог найти, как настроить.

Кто-нибудь знает об этом?

Ответы:


21

Я использую два монитора и хотел, чтобы Guake отображался справа (где по умолчанию он отображается слева).

Что я сделал, так это отредактировал мой /usr/bin/guake/файл, заменив get_final_window_rectметод следующим:

def get_final_window_rect(self):
    """Gets the final size of the main window of guake. The height
    is the window_height property, width is window_width and the
    horizontal alignment is given by window_alignment.
    """
    screen = self.window.get_screen()
    height = self.client.get_int(KEY('/general/window_height'))
    width = 100
    halignment = self.client.get_int(KEY('/general/window_halignment'))

    # get the rectangle just from the first/default monitor in the
    # future we might create a field to select which monitor you
    # wanna use
    monitor = 1 # use the right most monitor
    window_rect = screen.get_monitor_geometry(monitor)
    # see if we don't have another screen, and if so, use the first one
    if window_rect.width == 0:
        monitor = 0
        window_rect = screen.get_monitor_geometry(monitor)
    total_width = window_rect.width
    window_rect.height = window_rect.height * height / 100
    window_rect.width = window_rect.width * width / 100

    if width < total_width:
        if halignment == ALIGN_CENTER:
            window_rect.x = (total_width - window_rect.width) / 2
            if monitor == 1:
                    right_window_rect = screen.get_monitor_geometry(0)
                    window_rect.x += right_window_rect.width
        elif halignment == ALIGN_LEFT:
            window_rect.x = 0
        elif halignment == ALIGN_RIGHT:
            window_rect.x = total_width - window_rect.width
    window_rect.y = 0
    return window_rect

В основном, он использует 1в качестве указателя монитора, а затем добавляет правую ширину экрана к отображению начальной точки окна пробуждения.

надеюсь это поможет!


Как вы открыли этот файл для его редактирования? Я сделал это через xdg-open $ file, но он открывается только для чтения.
Кевин


Как ни странно, это чередуется между левым и правым каждый раз, когда я открываю его, когда я устанавливаю «Расположение запуска» только для левого монитора. Правильная установка заставляет работать каждый раз.
rmobis

3
Это верно. Ваш комментарий заставил меня установить последнюю версию Guake (из этого ppa: https://launchpad.net/~webupd8team/+archive/ubuntu/unstableи кажется, что они сделали это так, что теперь вы можете выбирать между терминалом, появляющимся на экране, на котором находится мышь, или блокировкой его на определенном экране, который, я думаю, является достаточно хорошим решением, на мой взгляд
wilfo

Комментарий @ wilfo, идентифицирующий обновления от оригинальных разработчиков, предоставляет самое простое решение. Встроенные функции Guake 0.7.2 добавляют возможность настройки дисплея, а также множество других полезных настроек.
Стивен Хоуэлл,

2

Решение очень простое, так как вы хотите выровнять экран Guake по правому монитору, чтобы в начальной позиции (x, y) экрана координата y была такой же, то есть она будет начинаться с 0, а координата x будет меняться, и он должен быть равен ширине вашего левого бокового монитора. Чтобы иметь возможность сделать это, вам нужно сделать 2 вещи.

I. Измените номер монитора на 1, как предложено выше. В линию

window_rect = screen.get_monitor_geometry (0)

Заменить 0 на 1.

II. Добавьте первую ширину экрана в x координату начальной координаты. сделать это.

замещать

if width < total_width:
    if halignment == ALIGN_CENTER:
        window_rect.x = (total_width - window_rect.width) / 2
    elif halignment == ALIGN_LEFT:
        window_rect.x = 0
    elif halignment == ALIGN_RIGHT:
        window_rect.x = total_width - window_rect.width
window_rect.y = 0
return window_rect

По

if width < total_width:
     if halignment == ALIGN_CENTER:
         window_rect.x += (total_width - window_rect.width) / 2
     elif halignment == ALIGN_LEFT:
         window_rect.x += 0
     elif halignment == ALIGN_RIGHT:
         window_rect.x += total_width - window_rect.width
window_rect.y = 0
return window_rect

Как только вы сделаете эти изменения и перезапустите guake (выйдите и начните снова), вы должны получить желаемое выравнивание экрана Guake.

Надеюсь это поможет :)


1

Я также задал этот вопрос: guake на правом мониторе в среде с двумя дисплеями - Ubuntu 15.10 (Wily Werewolf))

В Ubuntu 15.10 guake немного изменился. Чтобы изменить свой терминал на правильный монитор, вы должны отредактировать:

sudo vim /usr/lib/python2.7/dist-packages/guake/guake_app.py

затем измените в строке 831:

window_rect = screen.get_monitor_geometry(monitor)

по:

window_rect = screen.get_monitor_geometry(1)

убить и перезапустить Guake

Кто-нибудь знает способ сделать это менее хакерским?


1

Как сказал Лалит, лучший способ найти это на Ubuntu 14.04LTS менялся

window_rect = screen.get_monitor_geometry(0)

в

window_rect = screen.get_monitor_geometry(0)

но меняется

    if width < total_width:
    if halignment == ALIGN_CENTER:
        window_rect.x = (total_width - window_rect.width) / 2
    elif halignment == ALIGN_LEFT:
        window_rect.x = 0
    elif halignment == ALIGN_RIGHT:
        window_rect.x = total_width - window_rect.width
window_rect.y = 0
return window_rect

в

 if width < total_width:
     if halignment == ALIGN_CENTER:
         window_rect.x += total_width + (total_width - window_rect.width) / 2
     elif halignment == ALIGN_LEFT:
         window_rect.x += 0
     elif halignment == ALIGN_RIGHT:
         window_rect.x += total_width - window_rect.width
window_rect.y = 0
return window_rect

Единственное отличие состоит в том, что в первом «если», без добавления «total_width» к «window_rect.x», гукэ появляется в середине моего левого монитора.

PS: Извините, Лалит, но я не могу добавить комментарий к вашему посту, так как у меня еще нет баллов = (


1

Решение от wilfo не работает для меня. В моем случае я решил на Linux Mint со следующим кодом:

def get_final_window_rect(self):
    """Gets the final size of the main window of guake. The height
    is the window_height property, width is window_width and the
    horizontal alignment is given by window_alignment.
    """
    screen = self.window.get_screen()
    height = self.client.get_int(KEY('/general/window_height'))
    width = 100
    halignment = self.client.get_int(KEY('/general/window_halignment'))

    # future we might create a field to select which monitor you
    # wanna use
    #monitor = 0 # use the left most monitor
    monitor = screen.get_n_monitors() - 1 # use the right most monitor

    monitor_rect = screen.get_monitor_geometry(monitor)
    window_rect = monitor_rect.copy()
    window_rect.height = window_rect.height * height / 100
    window_rect.width = window_rect.width * width / 100

    if width < monitor_rect.width:
        if halignment == ALIGN_CENTER:
            window_rect.x = monitor_rect.x + (monitor_rect.width - window_rect.width) / 2
        elif halignment == ALIGN_LEFT:
            window_rect.x = monitor_rect.x
        elif halignment == ALIGN_RIGHT:
            window_rect.x = monitor_rect.x + monitor_rect.width - window_rect.width

    window_rect.y = monitor_rect.y
    return window_rect

Я беру это отсюда , но я изменился 80на 100.


1

Хорошие новости!

В версии 0.8.5 Guake будет отображаться на активном мониторе, поэтому вам больше не придется настраивать код Guake.


версия 0.5.0 (та, что в репозитории Ubuntu) также поддерживает это:apt-get install --only-upgrade guake
Артур Клесун

0

Я не проверял это, но я думаю, что вы можете просто отредактировать / usr / bin / guake, так как это скрипт на python.

найти

window_rect = screen.get_monitor_geometry(0) #line 824 на моей машине

и измените 0 на индекс монитора, в котором вы хотите отображать guake.


1
Я редактировал линию , 0чтобы 1в /usr/lib/guake/guake.py. И перезапустить guake, но ничего не меняется.
ironsand

0

Просто чтобы добавить к ответам smartmouse и wilfo, как только вы внесете изменения в / usr / bin / guake, вам придется выполнить жесткий перезапуск. Выход из сеанса гуаке не завершает процесс гуаке.

Откройте системный монитор и завершите процесс приложения guake, затем перезапустите


0

Мне пришлось изменить это на Ubuntu 16.04 LTS с 2 мониторами.

Я пробовал вышеуказанные методы, но понял, что код изменился с тех пор. Я вошел в ~/.gconf/apps/guake/generalи отредактированы %gconf.xmlи изменены display_n (int)от 0до 1моего 2 - го монитора.

Надеюсь это поможет :)


-1

Я пытаюсь в Ubuntu 14.04, я обнаружил, что вам просто нужно нажать «Preferences» на значке guake (справа вверху) на любом мониторе, затем нажать «Show» на том же мониторе, после чего вы можете увидеть, как терминал guake появляется на мониторе, который вы используете !!!


Непонятно (по крайней мере для меня), как этот подход будет "устанавливать monitor_index". Не могли бы вы отредактировать этот ответ, чтобы уточнить, как он отвечает на вопрос? Спасибо!
Старейшина Гик
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.