What is x client in linux

X-клиенты и X-протокол графической системы X Window System

Второй важной компонентой оконной системы X являются X-клиенты — приложения, получающие в свое распоряжение окна и отображающие в них графическую информацию.

Точнее, X-клиенты всего лишь взаимодействуют с сервер при помощи X-протокола и могут вовсе не создавать окон, как это делают «простейшие» xdpyinfo, xrandr и glxinfo, xlsclients, xwininfo, xprop, но «полновесные» X-клиенты всегда создают хотя бы одно окно.

Список созданных окон (упорядоченный в дерево) и системные атрибуты каждого из них можно запросить у X-сервера при помощи xwininfo.

В листинге ниже построено полное дерево окон (начиная с «корневого» окна самого X-сервера), среди которых отобраны окна с именем gnome-terminal (предположительно принадлежащие gnome-terminal, узнать явно нет возможности).

При этом оказывается, что только одно окно изображается X-сервером на дисплее, а еще одно находится в скрытом состоянии.

Дерево окон X-сервера и их атрибуты

[email protected]:~$ xwininfo -tree -root | grep gnome-terminal
0x4400001 «Терминал»: («gnome-termtnal» «Gnome-terminal») 10×10+10+10 +10+10
0x4400006 «[email protected]: («gnome-terminal» «Gnome-terminal») 882×530+0+0 +483+51
[email protected]:~$ xwininfo -id 0x4400001
Map State: IsUnMapped

[email protected]:~$ xwininfo -id 0x4400006
Absolute upper-left X: 483

Absolute upper-left Y: 51
Width: 882

Depth: 32
Map State: IsVlewable

Кроме системных атрибутов, каждое окно наделяется свойствами (properties), широко используемыми для взаимодействия между X-клиентами (см. W:[ICCCM]), особенно между «обычными» клиентами и оконным менеджером (window manager). Оконный менеджер является «особенным» X-клиентом, обрабатывающим события создания окон «обычных» X-клиентов.

Именно он добавляет к «чужим» создаваемым окнам «свои» декорирующие элементы: заголовок (title) окна — для его перемещения, бордюр (border) — для изменения его размеров и т. д.

В листинге ниже показаны некоторые свойства окна, установленные программой-владельцем окна для оконного менеджера.

Например, свойство WM_NAME используется оконным менеджером для текста заголовка (отображаемых) окон, свойство WM_LOCALE_NAME указывает на язык и кодировку текста, содержащегося в WM_NAME, свойство WM_CLIENT_MACHINE содержит имя сетевого узла X-клиента, а свойство WM_COMMAND — команду, при помощи которой был запущен клиент.

Читайте также:  Горячие клавиши проводник linux

Свойства окон X-сервера

[email protected]:~$ xprop -id 0x4400001

WM_CLASS(STRING) = «gnome-terminal», «Gnome-terminal»

[email protected]:~$ xprop -id 0x4400006

Свойства окон X-клиентов могут использоваться не только оконным менеджером, но и другими клиентами, например xlsclients, который опрашивает X-сервер и выводит список «клиентов», имеющих окна с установленными свойствами WM_CLIENT_MACHINE и WM_COMMAND, которые в действительности устанавливаются (не всегда) X-клиентами только для «основных» окон.

Список клиентов X-сервера

[email protected]:~$ xlsclients -l | grep -С 3 gnome-terminal

Name: «unknown type C0MP0UN0_TEXT (363) or format 8>

Icon Name: gnome-terminal Command: gnome-terminal

Взаимодействие X-клиентов и X-сервера происходит при помощи локальных или сетевых сокетов в зависимости от их взаимного месторасположения и согласно адресу подключения, указываемому на стороне X-клиентов при помощи переменной окружения DISPLAY в формате host:number.

Адрес подключения состоит из имени (или IP-адреса) узла X-сервера host и номера его дисплея number (например, DISPLAY=ubuntu.local:9 или 192.168.0.5:6). В качестве host может выступать любое имя, для которого можно получить IP-адрес, используя службу имен, а в случае локального взаимодействия host не указывается вовсе (т. е. displays:0).

Номер дисплея указывает на экземпляр X-сервера, запущенного на узле host для управления некоторым набором оборудования, (графическими дисплеями видеокартами и мониторами, клавиатурами и пр.).

Проиллюстрировать разные виды X-взаимодействия проще всего при помощи «виртуальных» X-серверов Xnest и Xephyr, В отличие от «обычного» X-сервера, организующего доступ X-клиентов к аппаратному дисплею, эти серверы организуют доступ своих клиентов к виртуальному «дисплею», в качестве которого выступает их собственное окно аппаратного сервера.

В листинге ниже показан запуск X-сервера Xnest с, номером дисплея :1 (т. к. дисплей :0 обычно занят аппаратным X-сервером), который создает сокет семейства ip для подключения сетевых клиентов и сокет семейства unix для локальных.

Виртуальный X-сервер Xnest

[email protected]:~$ Xnest :0 &
Fatal server error:
Server is already active for display 0
If this server is no longer running, remove /tmp/.X0-lock and start again.

[email protected]:~$ Xnest :1 &
[1] 10365
[email protected]:~$ lsof -p 16365
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Xnest 10365 homer cwd DIR 252,0 69632 20316162 /home/kotoff
Xnest 10365 homer rtd DIR 252,0 40% 2 /
Xnest 10365 homer txt REG 252,0 1754384 3831580 /usr/bin/Xnest
Xnest 10365 homer 1u IPv4 17552891 0t0 TCP ftxll-1 (LISTEN)
Xnest 10365 homer 2u CHR 136,1 0t0 4 /dev/pts/1
Xnest 10365 homer 3u Unix 0x00000000 0t0 17552892 socket
Xnest 10365 homer 4u unix 0x00000000 0t0 17552893 /tmp/.X11-unix/X1
Xnest 10365 homer 5r REG . 252,0 31246 6817286 /usr/lib/xorg/protocol.txt
Xnest 10365 homer 6u unix 0x00000000 0t0 175528% socket

Читайте также:  Linux get path to program

В примере из листинга ниже показана трассировка демонстрационного X-клиента xeyes, иллюстрирующая использование клиентом локального и сетевого сокетов, в зависимости от значения переменной окружения DISPLAY.

Сетевые и локальные подключения клиента X-сервера

При работе в оконной системе переменную display обычно устанавливают в начале сеанса, а затем при запуске X-клиентов их вывод будет попадать на нужный X-сервер, как это показано на примере сервера Xnest и клиентов xterm, xcalc и xeyes.

Впоследствии при запуске одними X-клиентами других X-клиентов (например, по команде пользователя из эмулятора терминала xterm, переменная окружения наследуется порожденными процессами, и вывод запускаемых клиентов «интуитивным» (так же как и стандартные потоки вводам вывода) образом попадает на тот же X-сервер.

X-сеанс пользователя

[email protected]:~$ xterm & xcalc & xeyes &

Нужно заметить, что все окна по умолчанию открываются в левом верхнем углу (координата +0+0) экрана, а возможность управлять их размером и местоположением отсутствует.

Каждый X-клиент может самостоятельно управлять размером и местоположением своих окон, и даже многие из них запоминают при выходе эти параметры в своих dot-файлах, а при последующем запуске восстанавливают окна в прежних размерах и местах, но интерактивным перемещением окон и изменением их размера занимается оконный менеджер.

Источник

X Client Definition

An X client is an application program that displays on an X server but which is otherwise independent of that server.

An X server is a program in the X Window System that runs on local machines (i.e., the computers used directly by users) and handles all access to the graphics cards, display screens and input devices (typically a keyboard and mouse) on those computers for the GUIs (graphical user interfaces). The X Window System, often referred to merely as X, is a complete, cross-platform and free client-server system for managing GUIs on single computers and on networks of computers. The client-server model is an architecture (i.e., network design) that divides the work between two separate but linked applications, referred to as clients and servers.

Читайте также:  Check what linux kernel version

In the typical client/server relationship, the client application runs on the local machine and the server application can run on either the local machine or a remote machine (i.e., any other computer on the network). In X, however. this relationship is inverted in that each local machine contains X server software and can access X client programs that run either on the same machine or on a remote machine. This has the advantage of eliminating the need for the application programs to be aware of the details of the graphics cards, monitors and other hardware, thereby simplifying the development of such programs and facilitating their servicing of multiple users on the network simultaneously.

Any application program that runs in a GUI provided by X, which is virtually every GUI used on Linux and other Unix-like operating systems, is an X client. Thus OpenOffice, Apache, gedit, gFTP, the GIMP, rCalc and Xpdf are all X clients when used on such operating systems.

A major feature of X is network transparency, which means that any X client can run either on the local machine or on a remote machine without any obvious difference to the user in most cases. This offers several important advantages, including greater ease of use for ordinary users and simplified administration.

Created December 28, 2005.
Copyright © 2005 The Linux Information Project. All Rights Reserved.

Источник

Оцените статью
Adblock
detector