Несколько окон GUI в одном (окна приложений GUI, multiplexer/wrapper)

LightDM[1175602] - это x дисплейный менеджер, который нацелен на то, чтобы быть легким, быстрым, расширяемым и многофункциональным. Он использует различные фронт-концы для рисования интерфейсов входа в систему, так называемые Greeters.

Ключевыми особенностями являются:

Четко определенный приветственный API, позволяющий использовать несколько графических интерфейсов

Поддержка всех вариантов использования диспетчеров, с плагинами, где это уместно

Низкая сложность кода

Быстрая производительность

LightDM предлагает, по крайней мере, такую же функциональность, как и GDM, но имеет более простую кодовую базу и не загружает никакие библиотеки GNOME для работы. LightDM является менеджером дисплеев по умолчанию для [1175612]Ubuntu[1175613].


Конфигурация LighDM регулируется файлами конфигурации в [1175614]/etc/lightdm/lightdm.conf.d/[1175615]. Для добавления собственной конфигурации создайте в этом каталоге новый файл типа [1175616]/etc/lightdm/lightdm.conf.d/my.conf[1175617].GDM[1175619] (менеджер дисплеев GNOME) - это менеджер дисплеев (графическая программа входа в систему) для оконных систем X11 и Wayland. Это высоко настраиваемая реимплементация xdm, X Display Manager.

enter image description here

Gdm позволяет вам входить в систему с запущенной X Window System и поддерживает запуск нескольких различных X сеансов на вашей локальной машине одновременно.

По умолчанию X Window System использует менеджер дисплеев XDM. Однако, решение проблем с конфигурацией XDM обычно включает в себя редактирование файла конфигурации. GDM позволяет пользователям настраивать или устранять неполадки, не прибегая к командной строке.[1175211].

2
13.04.2017, 15:36
2 ответа

На самом деле это и есть цель так называемых «диспетчеров мозаичного окна», т.е. Awesome, в отличие от классических «диспетчеров плавающих окон», то есть Gnome2.

Так что да, я думаю, чтобы делать то, что вы хотите, вам нужно будет перейти с gnome на что-то более хардкорное. Но поверьте мне, вы не захотите возвращаться после того, как испытаете то, что могут предложить эти другие оконные менеджеры. Обязательно ознакомьтесь с горячими клавишами ...

This photo is an example of tiling Window Manager

Популярные менеджеры окон мозаики перечислены здесь:

https://wiki.archlinux.org/index.php/Comparison_of_tiling_window_managers

1
27.01.2020, 22:14

Ну, вот кое-что, но вряд ли идеальное:

Я только что нашел https://github.com/ponty/PyVirtualDisplay; и поскольку у меня были установлены Xephyr и awesome-wm, я смог написать скрипт на Python, который относительно легко запускает следующее:

pyvirtualdisplay-xephyr.png

Очевидно, что мой обычный стиль окружения рабочего стола (как на картинке OP) отсутствует - и вы не можете масштабировать окно (изменять размер окна: ширину и высоту, перетаскивая). Также нет интерактивной ручки "изменения размера панели" для изменения относительной высоты приложений. И самое главное - копирование/вставка текста между приложениями внутри и вне Xephyr не работает!

Кроме того, скрипт запускает awesome-wm в надежде, что он автоматически разместит мои приложения - но по какой-то причине он этого не делает, поэтому мне приходится размещать приложения вручную с помощью wmctrl. Но у внутренних окон отсутствуют строки заголовков, что, как мне кажется, сделано awesome-wm; так что, вероятно, в конечном итоге можно будет установить черепицу.

Вот сценарий - назовем его tilewm-app-tester.py:

from easyprocess import EasyProcess
from pyvirtualdisplay import Display
#~ from pyvirtualdisplay.smartdisplay import SmartDisplay # needs pyscreenshot
import logging
logging.basicConfig(level=logging.DEBUG)
import time

_W = 600
_H = 500
# height percents
hp1 = 0.6
hp2 = 1-hp1 # the rest


Display(visible=1, size=(_W , _H)).start()

# EasyProcess.start() # spawns process in background
# EasyProcess.check() # loops process in foreground


try:
  EasyProcess('awesome -c rc.lua').start() 
except Exception, detail:
  print  detail

time.sleep(2)

try:
  EasyProcess('bash -c "cd $HOME && scite"').start() 
except Exception, detail:
  print  detail

time.sleep(2)

try:
  # 0,x,y,w,h
  EasyProcess(['wmctrl', '-r', 'SciTE', '-e', '0,0,0,'+str(_W)+','+str(int(_H*hp1))]).start() 
except Exception, detail:
  print  detail

# gnome-terminal -e 'bash -c "bash --rcfile <(echo source $HOME/.bashrc ; echo PS1=\\\"\$ \\\") -i"'
# first `bash` needed, otherwise cannot do process substitution as file

try:
  EasyProcess(['gnome-terminal', '-e', 'bash -c "bash --rcfile <(echo source $HOME/.bashrc ; echo PS1=\\\"\$\ \\\") -i"']).start() # --maximize is Gnome, nowork
except Exception, detail:
  print  detail

time.sleep(0.5)

try:
  # 0,x,y,w,h
  EasyProcess(['wmctrl', '-r', 'Terminal', '-e', '0,0,'+str(int(_H*hp1))+','+str(_W)+','+str(int(_H*hp2))]).start() 
except Exception, detail:
  print  detail
1
27.01.2020, 22:14

Теги

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