Открытие и заключительные приложения Ubuntu в нескольких дисплеях

Я сталкиваюсь со специфической проблемой в Ubuntu 18.04. У меня есть расширенный дисплей в офисе, и я открыл файл CSV с libreoffice и просмотрел его в расширенном дисплее и затем закрыл его тот дисплей.

Теперь я дома и имею в наличии только дисплей портативного компьютера, и когда я пытаюсь открыть тот же файл (или любой другой файл CSV), файл открыт, но я не вижу его на экране. Я знаю, что файл открыт, потому что в вертикальной панели на левой стороне экрана, я вижу librecalc значок с одной красной точкой на нем, и когда я щелкаю правой кнопкой по тому значку и нажимаю "All Windows" затем, я вижу значок файла, который открыт с его 3 строками данных. Также, когда я делаю "PS-ef | grep Весы", я вижу процесс, все еще работающий.

home/xxx$ ps -ef | grep libre
xxx       7948  1227  0 20:57 ?        00:00:00 /usr/lib/libreoffice/program/oosplash --calc file:///home/xxx/Desktop/desktop_files/try/x1.csv
xxx       7966  7948  1 20:57 ?        00:00:04 /usr/lib/libreoffice/program/soffice.bin --calc file:///home/xxx/Desktop/desktop_files/try/x1.csv --splash-pipe=5

На следующий день, когда в офисе и расширенном дисплее, снова доступном, я мог теперь открыть тот же файл CSV - приложение, открытое в расширенном дисплее. Но на этот раз я перетащил приложение к дисплею портативного компьютера и закрыл приложение там. После этого, когда я открыл файл CSV снова, на этот раз файл, открытый правильно в дисплее портативного компьютера.

Так, как я сбрасываю приложение, так, чтобы оно теперь открылось только в дисплее, который доступен?Примечание: Файл CSV является очень маленьким, примерно 300 байтов и 3 строки данных, и это открывается прекрасный MS инструменты WPS или Excel.

Я не знаю, происходит ли эта проблема со всеми приложениями, но я также заметил его со скайпом.

Примечание: Jacob попросил, чтобы я предоставил информацию о xrandr, и это дано ниже. В этом сценарии я закрыл libreoffice в расширенном окне, затем разъединил то окно, и попробованный для открытия libreoffice в окне ноутбука. Как обычно, значок приложения говорит, что это открыто, но окно не видимо.

$ xrandr
Screen 0: minimum 320 x 200, current 2390 x 768, maximum 8192 x 8192
LVDS-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
   1366x768      59.97*+  39.97  
   1360x768      59.80    59.96  
   1280x720      60.00    59.99    59.86    59.74  
   1024x768      60.04    60.00  
   960x720       60.00  
   928x696       60.05  
   896x672       60.01  
   1024x576      59.95    59.96    59.90    59.82  
   960x600       59.93    60.00  
   960x540       59.96    59.99    59.63    59.82  
   800x600       60.00    60.32    56.25  
   840x525       60.01    59.88  
   864x486       59.92    59.57  
   800x512       60.17  
   700x525       59.98  
   800x450       59.95    59.82  
   640x512       60.02  
   720x450       59.89  
   700x450       59.96    59.88  
   640x480       60.00    59.94  
   720x405       59.51    58.99  
   684x384       59.88    59.85  
   680x384       59.80    59.96  
   640x400       59.88    59.98  
   576x432       60.06  
   640x360       59.86    59.83    59.84    59.32  
   512x384       60.00  
   512x288       60.00    59.92  
   480x270       59.63    59.82  
   400x300       60.32    56.34  
   432x243       59.92    59.57  
   320x240       60.05  
   360x202       59.51    59.13  
   320x180       59.84    59.32  
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
VGA-1-2 connected 1024x768+1366+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
  1024x768 (0x43) 65.000MHz -HSync -VSync
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock  48.36KHz
        v: height  768 start  771 end  777 total  806           clock  60.00Hz
  800x600 (0x44) 40.000MHz +HSync +VSync
        h: width   800 start  840 end  968 total 1056 skew    0 clock  37.88KHz
        v: height  600 start  601 end  605 total  628           clock  60.32Hz
  800x600 (0x45) 36.000MHz +HSync +VSync
        h: width   800 start  824 end  896 total 1024 skew    0 clock  35.16KHz
        v: height  600 start  601 end  603 total  625           clock  56.25Hz
  640x480 (0x47) 25.175MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.47KHz
        v: height  480 start  490 end  492 total  525           clock  59.94Hz
$ 
1
задан 17 May 2019 в 01:13

4 ответа

Переместите все окна в единственный перенесенный экран с нажатием клавиши

То, что Вы описываете, является ошибкой, которая происходит на определенных аппаратных средствах. После разъединения второго экрана это все еще показывает в выводе xrandr как "фантомный" монитор. Необходимо сообщить об этом.

Как работать вокруг?

Хотя это - соответствующие меры на коротком сроке, это не будет большая часть справки, так как этот вид ошибок обычно живет дольше, чем один или два релиза Ubuntu.

Вы нашли обходное решение, но это кажется настоящей стычкой. С другой стороны, можно установить сценарий ниже под сочетанием клавиш. Это переместит все "нормальные" окна в оставшийся монитор, расположенный как в изображении ниже, таким образом готовый выбрать окно, с которым Вы хотите работать:

enter image description here

Сценарий

#!/usr/bin/env python3
import gi
gi.require_version("Wnck", "3.0")
from gi.repository import Wnck
import subprocess

scr = Wnck.Screen.get_default()
scr.force_update()
wins = [
    w for w in scr.get_windows() if
    w.get_window_type() == Wnck.WindowType.NORMAL
]

def get(cmd):
    try:
        return subprocess.check_output(cmd).decode("utf-8".strip())
    except subprocess.CalledProcessError:
        pass

def get_yshift(window):
    """
    windows with property NET_FRAME_EXTENTS are not positioned correctly.
    we can fix that by looking up the top- extent value, add it to the
    targeted y- position.
    """
    wid = window.get_xid()
    xprop_data = get(["xprop", "-id", str(wid)])
    try:
        check = [
            l.split("=")[1].strip().split(", ")
            for l in xprop_data.splitlines()
            if "_NET_FRAME_EXTENTS(CARDINAL)" in l
        ][0]
        y_shift = - int(check[2])
    except IndexError:
        y_shift = 0
    return y_shift

x = 120
y = 70

for w in wins:
    print(w.get_name(), x, y)
    w.unmaximize()
    g = Wnck.WindowGravity.NORTHWEST
    flags = Wnck.WindowMoveResizeMask.X | \
        Wnck.WindowMoveResizeMask.Y | \
        Wnck.WindowMoveResizeMask.WIDTH | \
        Wnck.WindowMoveResizeMask.HEIGHT
    w.set_geometry(g, flags, x, y + get_yshift(w), 200, 300)
    x = x + 90
    y = y + 50

Установка

  1. Скопируйте сценарий в пустой файл, сохраните его как collect_windows.py
  2. Создайте ярлык, выполнив команду:

    python3 /path/to/collect_windows.py
    

    (Перейдите к Настройкам-> Устройства-> Клавиатура-> Пользовательские Ярлыки, нажмите +)

Это все

0
ответ дан 7 December 2019 в 15:05

Фоновый процесс , чтобы установить, на каком мониторе должны появляться новые окна.
Вы можете запустить этот скрипт при наличии одного монитора и остановить его, когда их несколько. Он был написан для разных целей, но подходит для вашей ситуации. С уважением и одобрением к сценарию @JacobVlijm .
Добавьте некоторую задержку перед выполнением, если вы поместите этот скрипт в автозагрузку приложений. Передать имя монитора в качестве аргумента ./script LVDS-1

1
ответ дан 7 December 2019 в 15:05

Я ждал месяц, и никто не ответил. Тогда я разместил это на панели запуска, и вот ответ, опубликованный там (цитируется ниже). Это сработало для меня.

Я рекомендую прочитать https://help.ubuntu.com/stable/ubuntu-help/shell-windows.html.en#working-with-windows

Согласно https://help.ubuntu.com/stable/ubuntu-help/shell-windows-states.html.en вы сможете переместить невидимое окно, выбрав его на панели задач, нажав alt + F7, затем нажмите клавиши со стрелками, чтобы переместить окно на главный экран, а затем нажмите «Ввод». Если расширенный экран находится справа от экрана вашего ноутбука, вам, вероятно, придется использовать «левую» клавишу.

0
ответ дан 7 December 2019 в 15:05

Нечто подобное происходит, когда я возобновляю работу из режима ожидания, и один из трех мониторов (обычно старый монитор № 3 заменяли в прошлом месяце) неактивен.

Я вижу в тире, что приложение работает, но окно не видно.

  • Используйте Alt + Tab , чтобы выбрать невидимое окно.
  • Нажмите Alt + F7 , чтобы перетащить невидимое окно.
  • Указатель мыши исчезает с экрана.
  • Перемещайте мышь (без щелчка), пока не появится перекрестный указатель мыши там, где я хочу, чтобы окно было.
  • Левый клик и вуаля! Окно снова видно.

Вы можете попробовать это с видимой Windows на рабочем столе для экспериментов.

0
ответ дан 7 December 2019 в 15:05

Другие вопросы по тегам:

Похожие вопросы: