фиктивный интерфейс в Linux

Возможные обходные пути:

Используйте пустые панели, закрывающие поврежденную область, чтобы форсировать окна, используя оставшееся пространство. Например, xfce4-panelможно хорошо настроить. Насколько хорошо это работает, зависит от среды вашего рабочего стола. Xfce и LXDE будут работать нормально, Gnome, я полагаю, создаст проблемы. Это не помогает для полноэкранных приложений, которые также закрывают панель, например, firefox+F11 или VLC в полноэкранном режиме.

Обходной путь для полноэкранных приложений. :Запуск Xephyrс желаемым размером экрана, его размещение и запуск приложений внутри него. Автоматизируйте это с помощью скрипта и xdotool `:

.

Xephyr :1 -screen 1500x800x24 &
xdotool search --name Xephyr windowmove 0 437

Запуск приложений в окне Xephyr с помощью DISPLAY=:1 firefox. Xephyr не поддерживает аппаратное ускорение, но здесь может помочь virtualgl.


Лучшее решение:

Используйте westonс Xwayland. Он поддерживает аппаратное ускорение и полноэкранные приложения.

Используйте довольно легкий оконный менеджер, такой как openboxпри запуске (или, что еще лучше, вообще без оконных украшений, напримерevilwm). Он служит только в качестве фонового окружения, его закроет Уэстон.

Создайте пользовательский myweston.iniфайл, подобный этому (см.man weston.ini):

[core]
shell=desktop-shell.so
idle-time=0

[shell]
panel-location=none
locking=false

[output]
name=X1
mode=1366x768

[output]
name=X2
mode=1500x768

Создайте скрипт, подобный этому, чтобы запустить Weston в evilwm и Xwayland в Weston (настроить положение 2 окон Weston ). Наконец, запустите желаемую среду рабочего стола :

.

# start weston with custom config and two output windows
weston --socket=wayland-1 --config=$HOME/myweston.ini --output-count=2 >$HOME/weston.log 2>&1 &
sleep 1 # wait until weston is ready

# get window id's from logfile and move windows at target (xwininfo could give id's, too)
xdotool windowmove 0x$(printf '%x\n' $(cat $HOME/weston.log | grep 'window id' | head -n1 | rev | cut -d' ' -f1 | rev))    0 0
xdotool windowmove 0x$(printf '%x\n' $(cat $HOME/weston.log | grep 'window id' | tail -n1 | rev | cut -d' ' -f1 | rev))    1369 400

# start X server Xwayland in weston
WAYLAND_DISPLAY=wayland-1 Xwayland :1 &
sleep 1 # wait until Xwayland is ready

# start your desired desktop environment
DISPLAY=:1 startlxde

Приведенный выше сценарий запуска не настраивает аутентификацию файлов cookie для X-клиентов. Вместо этого вы также можете использовать x11docker для проверки подлинности файлов cookie :

.

# start weston and Xwayland, read X environment
read Xenv < <(x11docker --weston-xwayland --gpu --output-count=2 --westonini=$HOME/myweston.ini)

# move weston windows to target locations
xdotool windowmove $(xwininfo -name "Weston Compositor - X1" | grep "Window id" | cut -d' ' -f4) 0 0
xdotool windowmove $(xwininfo -name "Weston Compositor - X2" | grep "Window id" | cut -d' ' -f4) 1367 400

# start desired desktop environment
env $Xenv startlxde

Xwayland появляется как клиентское "окно" Weston. К сожалению, из-за ошибки в Weston или Xwayland, он не всегда находится в позиции 0 :0. Вы можете переместить Xwayland в желаемую позицию с помощью [META] + левая -кнопка -мыши. Я написал отчет об ошибке , но не получил ответа.

2
09.12.2019, 17:15
0 ответов

Теги

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