Window manager i3

Менеджер окон i3.

Содержание

1 Общая информация

2 Репозиторий конфигурации

3 Файл конфигурации

  • Файлы конфигурации просматриваются в следующем порядке:
    • $XDG_CONFIG_HOME/i3/config (~/.config/i3/config);
    • ~/.i3/config;
    • $XDG_CONFIG_DIRS/i3/config (/etc/xdg/i3/config);
    • /etc/i3/config.
  • Начиная с версии 4.20, можно подключать другие файлы конфигурации из основного файла конфигурации i3.
    • Примеры использования директивы include:
       1# Тильда преобразуется в домашний каталог пользователя
       2include ~/.config/i3/assignments.conf
       3
       4# Переменные среды разыменовываются
       5include $HOME/.config/i3/assignments.conf
       6
       7# Символы подстановки раскрываются
       8include ~/.config/i3/config.d/*.conf
       9
      10# Можно выполнять команду
      11include ~/.config/i3/`hostname`.conf
      12
      13# Каждый путь загружается только один раз
      14include ~/.config/i3/config
      15
      16# Относительные пути интерпретируются относительно каталога конфигурационного файла
      17include assignments.conf
      

4 Навигация

4.1 Клавиша-модификатор

  • В качестве модификатора обычно используется:
    • Alt:
      1set $mod Mod1
      
    • Super (Клавиша со значком Windows):
      1set $mod Mod4
      
    • Предпочитаю Super, чтобы не конфликтовать с Emacs.

4.2 Основные комбинации клавиш

  • Mod + Enter: открыть терминал.

4.3 Перемещение фокуса

  • Фокус можно перемещать как с помощью стрелок, так и с помощью буквенных клавиш, как в редакторе vi.
    • Mod + h или Mod + Left: сдвиг фокуса влево.
    • Mod + j или Mod + Down: сдвиг фокуса вниз.
    • Mod + k или Mod + Up: сдвиг фокуса вверх.
    • Mod + l или Mod + Right: сдвиг фокуса вправо.
  • Конфигурация выглядит следующим образом:
     1## Home row direction keys, like vim
     2set $left h
     3set $down j
     4set $up k
     5set $right l
     6## Move your focus around
     7bindsym $mod+$left focus left
     8bindsym $mod+$down focus down
     9bindsym $mod+$up focus up
    10bindsym $mod+$right focus right
    11## Or use $mod+[up|down|left|right]
    12bindsym $mod+Left focus left
    13bindsym $mod+Down focus down
    14bindsym $mod+Up focus up
    15bindsym $mod+Right focus right
    
  • Впрочем, следует заметить, что также могут использоваться и другие соглашения:
    • j: влево;
    • k: вниз;
    • l: вверх;
    • ;: вправо.
  • Поскольку в данном менеджере окон поддерживаются контейнеры, то можно переключить фокус на родительский контейнер:
    • Mod + a: переключить фокус на родительский контейнер.
    • Конфигурация:
      1## Move focus to the parent container
      2bindsym $mod+a focus parent
      
  • Mod + Space: переключить режим фокуса.

4.4 Перемещение окон

  • Делается аналогично перемещению фокуса, но с добавлением модификатора Shift:
    • Mod + Shift + h или Mod + Shift + Left: перемещение влево;
    • Mod + Shift + j или Mod + Shift + Down: перемещение вниз;
    • Mod + Shift + k или Mod + Shift + Up: перемещение вверх;
    • Mod + Shift + l или Mod + Shift + Right: перемещение вправо.
  • Конфигурация выглядит следующим образом:
     1## Move the focused window with the same, but add Shift
     2bindsym $mod+Shift+$left move left
     3bindsym $mod+Shift+$down move down
     4bindsym $mod+Shift+$up move up
     5bindsym $mod+Shift+$right move right
     6## Ditto, with arrow keys
     7bindsym $mod+Shift+Left move left
     8bindsym $mod+Shift+Down move down
     9bindsym $mod+Shift+Up move up
    10bindsym $mod+Shift+Right move right
    

4.5 Modifying windows

  • Mod + f toggle fullscreen
  • Mod + v split a window vertically
  • Mod + h split a window horizontally
  • Mod + r resize mode

4.6 Структура расположения контейнеров

  • Поддерживаются следующие расположения контейнеров:
    • Mod + e: переключение разделённого расположения (split layout);
    • Mod + s: стековое размещение (stacking layout);
    • Mod + w: размещение с табами (tabbed layout).
  • Конфигурация:
    1## Switch the current container between different layout styles
    2bindsym $mod+s layout stacking
    3bindsym $mod+w layout tabbed
    4bindsym $mod+e layout toggle split
    
  • Для раскладки по умолчанию я использую табы:
    1### Layout mode for new containers
    2## default|stacking|tabbed
    3workspace_layout tabbed
    

4.7 Floating

  • Mod + Shift + Space toggle floating
  • Mod + Left click drag floating

4.8 Рабочие области (workspaces)

  • Сконфигурим рабочие области:
     1## Define names for workspaces
     2set $ws1    1
     3set $ws2    2
     4set $ws3    3
     5set $ws4    4
     6set $ws5    5
     7set $ws6    6
     8set $ws7    7
     9set $ws8    8
    10set $ws9    9
    11set $ws10   10
    
  • Mod + 09: переключиться на соответствующую рабочую область:
     1## Switch to workspace
     2bindsym $mod+1 workspace $ws1
     3bindsym $mod+2 workspace $ws2
     4bindsym $mod+3 workspace $ws3
     5bindsym $mod+4 workspace $ws4
     6bindsym $mod+5 workspace $ws5
     7bindsym $mod+6 workspace $ws6
     8bindsym $mod+7 workspace $ws7
     9bindsym $mod+8 workspace $ws8
    10bindsym $mod+9 workspace $ws9
    11bindsym $mod+0 workspace $ws10
    
  • Mod + Shift + 09: перенести окно на соответствующую рабочую область:
     1## Move focused container to workspace
     2bindsym $mod+Shift+1 move container to workspace $ws1
     3bindsym $mod+Shift+2 move container to workspace $ws2
     4bindsym $mod+Shift+3 move container to workspace $ws3
     5bindsym $mod+Shift+4 move container to workspace $ws4
     6bindsym $mod+Shift+5 move container to workspace $ws5
     7bindsym $mod+Shift+6 move container to workspace $ws6
     8bindsym $mod+Shift+7 move container to workspace $ws7
     9bindsym $mod+Shift+8 move container to workspace $ws8
    10bindsym $mod+Shift+9 move container to workspace $ws9
    11bindsym $mod+Shift+0 move container to workspace $ws10
    

4.9 Opening applications / Closing windows

  • Mod + d open application launcher (dmenu)
  • Mod + Shift + q kill a window

4.10 Выход/Перезапуск

  • Mod + Shift + c: перечитать конфигурационный файл.
    1## ~/.config/i3/config
    2
    3## reload the configuration file
    4bindsym $mod+Shift+c reload
    
  • Mod + Shift + r: перестартовать i3, сохранив сессию.
    1## ~/.config/i3/config
    2
    3## restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
    4bindsym $mod+Shift+r restart
    
  • Mod + Shift + e: выход из i3.
    1## ~/.config/i3/config
    2
    3## exit i3 (logs you out of your X session)
    4bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
    

5 Настройка

5.1 Терминал

  • В качестве терминала я использую kitty.

  • Конфигурация запуска терминала:

    1set $term kitty
    2bindsym $mod+Return exec $term
    
    • В этом случае запускается одно окно терминала.
  • Для работы я использую специальную настройку сессии терминала. Я её запускаю при входе в сессию. Для этого я приспособил комбинацию Mod + Shift + Enter:

    1bindsym $mod+Shift+Return exec kitty --session ~/.config/kitty/startup
    

5.2 Управление окном с помощью мышки

  • Можно управлять окнами с помощью мышки.

  • Привязка осуществляется следующей командой:

    1bindsym [--release] [--border] [--whole-window] [--exclude-titlebar] [<Modifiers>+]button<n> command
    
    • По умолчанию привязка запускается только при нажатии на строку заголовка окна.
    • Если указан флаг --release, он запустится, когда кнопка мыши будет отпущена.
    • Если указан флаг --whole-window, то привязка также будет выполняться при щелчке по любой части окна, за исключением границы.
    • Чтобы привязка выполнялась при щелчке границы, нужно указать флаг --border.
    • Если задан флаг --exclude-titlebar, заголовок не будет учитываться для привязки клавиш.
  • Примеры.

    • Средняя кнопка на заголовке закрывает окно:
      1bindsym --release button2 kill
      
    • Средняя кнопка и модификатор над любой частью окна закрывает окно:
      1bindsym --whole-window $mod+button2 kill
      
    • Правая кнопка мыши переключает плавающий режим:
      1bindsym button3 floating toggle
      2bindsym $mod+button3 floating toggle
      
    • Боковые кнопки мыши перемещают окно:
      1bindsym button9 move left
      2bindsym button8 move right
      

5.3 Строка статуса

5.3.1 i3bar

  • Отрисовку панели осуществляет утилита i3bar.
  • Отображается вверху или внизу экрана.
  • Содержит:
    • область с кнопками переключения рабочих областей i3;
    • системную строку, генерируемую при помощи i3status или аналогов;
    • системный трей с иконками программ.
  • В конфигурационном файле задаётся следующим образом (https://i3wm.org/docs/userguide.html#_configuring_i3bar):
    1# ~/.config/i3/config -*- mode: conf-unix; -*-
    2## Start i3bar to display a workspace bar
    3bar {
    4    status_command i3status
    5    position top
    6}
    
  1. Поддержка иконок в i3bar

    • В i3bar можно использовать шрифты иконок (см. Моноширинные шрифты).
    • Наиболее распространённым является шрифт Font Awesome.
    • Установка:
      • Gentoo
        1emerge media-fonts/fontawesome
        
    • Для вставки шрифта в файл можно использовать список кодов для иконок https://fontawesome.com/cheatsheet.
    • Шрифт лучше явно обозначить в конфигурации:
      1## ~/.config/i3/config
      2bar {
      34    font pango:Source Sans Pro, FontAwesome 5 Free 10
      56}
      
    • Для набора символа по его коду следует использовать конфигурации клавиш. Например, для набора символа с кодом 0xf004, требуется набрать:
      • приложения на основе GTK: Ctrl + Shift + u, f004, Enter;
      • emacs: Ctrl + x, 8, Enter, f004, Enter;
      • vim: Ctrl + v, uf004;
      • urxvt: удерживая Ctrl + Shift, наберите f004.
  1. i3status

    • Использовано https://igancev.ru/2020-05-11-configuring-i3status-in-i3wm.
    • i3status генерирует строку состояния для i3bar.
    • Содержит встроенные модули:
      • IPv6 — получает и выводит IPv6 адрес.
      • Disk — отображает информацию о занятом и свободном месте в файловой системе.
      • Run-watch — мониторинг определённого процесса в системе.
      • Path-exists — проверяет на существование путь в файловой системе.
      • Wireless — позволяет выводить подключения к WIFI сети, уровень сигнала, имя точки доступа.
      • Ethernet — предоставляет IP адрес и скорость соединения сетевого интерфейса.
      • Battery — показ уровня заряда батареи.
      • CPU-Temperature — показ температуры процессора.
      • CPU Usage — использование процессора в процентах.
      • Memory — использование оперативной памяти.
      • Load — среднее значение загрузки системы за 1, 5 и 15 минут (Load Overage).
      • Time — время в текущей временной зоне.
      • TzTime — время в заданной временной зоне.
      • DDate — дата.
      • Volume — управление громкостью звука.
      • File Contents — вывод содержимого указанного файла.
    • Модули в строке можно переиспользовать по нескольку раз, управляя порядком вывода.
    • Конфигурацию условно можно разделить на 3 части:
      • блок general — содержит общие параметры;
      • переменная order — в неё записывается порядок вывода интересующих модулей;
      • блоки конфигурации модулей — непосредственно настройки самих блоков с метриками.
    • В конфигурации i3bar задаётся конфигурационный файл для i3status:
      1# ~/.config/i3/config -*- mode: conf-unix; -*-
      2## Start i3bar to display a workspace bar
      3bar {
      4    font pango:Source Sans Pro, FontAwesome 5 Free 10
      5    status_command	i3status --config ~/.config/i3/i3status/config
      6    position		top
      7}
      
    • Структура информационной панели задаётся в конфигурационном файле:
        1### -*- mode: conf-unix; -*-
        2## ~/.config/i3/i3status/config
        3
        4general {
        5    colors = true # включение/выключение поддержки цветов true/false
        6    interval = 1 # интервал обновления строки статуса, в секундах
        7    output_format = "i3bar" # формат вывода, устанавливаем i3bar (JSON)
        8}
        9
       10# порядок вывода модулей
       11order += "run_watch openvpn"
       12order += "run_watch openconnect"
       13order += "volume master"
       14order += "wireless _first_"
       15order += "battery all"
       16order += "disk /"
       17order += "memory"
       18order += "cpu_usage"
       19order += "cpu_temperature 0"
       20order += "tztime local"
       21
       22# отслеживание процесса openvpn
       23# служит как индикатор работы openvpn клиента
       24# при запуске openvpn необходимо
       25# указывать параметр --writepid /var/run/openvpn.pid
       26run_watch openvpn {
       27    pidfile = "/var/run/openvpn.pid"
       28    format = " openvpn"
       29    # если пареметр format_down оставить пустым,
       30    # то при неактивном процессе блок будет отсутствовать
       31    format_down=""
       32}
       33
       34# аналогичный блок индикатор openconnect vpn клиента
       35# требуется запуск клиента с параметром --pid-file=/var/run/openconnect.pid
       36run_watch openconnect {
       37    pidfile = "/var/run/openconnect.pid"
       38    format = " openconnect vpn"
       39    format_down=""
       40}
       41
       42# управление громкостью звука
       43volume master {
       44    format = " %volume" # шаблон громкости в активном состоянии
       45    format_muted = " %volume" # шаблон громкости в состоянии muted (без звука)
       46    device = "default"
       47    mixer = "Master"
       48    mixer_idx = 0
       49}
       50
       51# индикатор WIFI
       52wireless _first_ {
       53    # шаблон вывода, можно дополнить
       54    # наименованием подключения %essid
       55    # и ip адресом %ip
       56    format_up = "%quality %frequency"
       57    format_down = ""
       58}
       59
       60# состояние заряда батареи
       61battery all {
       62    # шаблон вывода, можно дополнить
       63    # оставшимся временем работы %emptytime
       64    # энергопотреблением %consumption в ваттах
       65    format = "%status %percentage"
       66
       67    # true - показ процента заряда от 0 до 100
       68    # false - показ процента заряда от 0 до n, с учетом
       69    # изношенности аккумулятора
       70    last_full_capacity = true
       71    format_down = ""
       72    status_chr = "" # статус подзарядки
       73    status_bat = "" # статус в режиме работы от батареи
       74    status_unk = "? UNK" # неизвестный статус
       75    status_full = "" # статус полного заряда
       76    path = "/sys/class/power_supply/BAT%d/uevent"
       77
       78    # нижний порог заряда, после которого блок
       79    # будет окрашен в "color_bad" (по умолчанию красный)
       80    # подробнее в man i3status
       81    low_threshold = 10
       82}
       83
       84# отслеживаемый накопитель
       85disk "/" {
       86    # доступные переменные:
       87    # %used, %percentage_used - занятое пространство
       88    # %free, %percentage_free - свободное пространство
       89    # %avail, %percentage_avail - доступное пространство
       90    # %total - всего
       91    format = " %avail"
       92
       93    # будет окрашен в "color_bad" (по умолчанию красный)
       94    # при достижении нижнего порога менее 10GB доступного пространства
       95    low_threshold = "10"
       96    threshold_type = "gbytes_avail"
       97    format_below_threshold = " Warning: %avail"
       98}
       99
      100# миниторинг оперативной памяти
      101memory {
      102    # доступные переменные:
      103    # %total, percentage_total
      104    # %used, percentage_used
      105    # %free, percentage_free
      106    # %available, percentage_available
      107    # %shared, percentage_shared
      108    format = " %used"
      109
      110    # порог, при котором вывод окрасится в
      111    # желтый (degraded) или красный (critical)
      112    # а формат вывода изменится на format_degraded
      113    threshold_degraded = "1G"
      114    threshold_critical = "200M"
      115    format_degraded = "MEMORY < %available"
      116}
      117
      118# температура процессора
      119cpu_temperature 0 {
      120    format = " %degrees"
      121
      122    # верхний порог температуры, при достижении которого
      123    # вывод окрасится красным,
      124    # и формат изменится на format_above_threshold
      125    max_threshold = "80"
      126    format_above_threshold = " %degrees"
      127    path = "/sys/class/thermal/thermal_zone0/temp"
      128}
      129
      130# использование центрального процессора
      131cpu_usage {
      132    # %usage - процентное использование ЦП
      133    # %cpu<N> - начиная с %cpu0 и далее показывает использование ядер
      134    format = " %usage"
      135
      136    # доступны параметры:
      137    # degraded_threshold, окрас в желтый, по умолчанию 90
      138    # max_threshold, окрас в красный, по умолчанию 95
      139    # и кастомные форматы для них
      140    # format_above_degraded_threshold и format_above_threshold
      141}
      142
      143# вывод даты и времени по заданному формату
      144tztime local {
      145    format = " %d %b %Y  %H:%M:%S"
      146}
      

5.3.2 py3status

  • py3status — это расширяемая оболочка для i3status, написанная на python.
  • Сайт: https://py3status.readthedocs.io/.
  • Репозиторий: https://github.com/ultrabug/py3status.
  • Можно управлять i3bar:
    • используя один из доступных модулей, поставляемых с py3status;
    • группировать несколько модулей и автоматически или вручную циклически отображать их отображение;
    • писать свои собственные модули и отображать их вывод на панели;
    • обрабатывать события кликов на i3bar.
  • Отображается вверху или внизу экрана.
  • Содержит:
    • область с кнопками переключения рабочих областей i3;
    • системную строку;
    • системный трей с иконками программ.
  1. Запуск py3status

    • Запускается вместо i3bar:
      1# ~/.config/i3/config -*- mode: conf-unix; -*-
      2## Start py3status to display a workspace bar
      3bar {
      4    font pango:Iosevka Nerd Font 12
      5    status_command py3status
      6    position top
      7}
      
    • Использует конфигурационный файл от i3status или собственную конфигурацию.
    • Порядок поиска конфигурационного файла:
      • $XDG_CONFIG_HOME/py3status/config;
      • $XDG_CONFIG_HOME/i3status/config;
      • $XDG_CONFIG_HOME/i3/i3status.conf;
      • ~/.i3status.conf;
      • ~/.i3/i3status.conf;
      • $XDG_CONFIG_DIRS/i3status/config;
      • /etc/i3status.conf.

5.3.3 polybar

  • Отдельное приложение для строки статуса.

  • Применяется для замены i3bar.

  • https://polybar.github.io/

  • https://github.com/polybar/polybar

  • Темы для polybar: https://github.com/adi1090x/polybar-themes

  • Одним из побудительных мотивов установки polybar может быть то, что здесь можно без проблем настроить индикатор раскладки клавиатуры.

  • Установка

    • Gentoo:
      1USE="i3wm" emerge x11-misc/polybar
      
  • Конфигурационный файл:

    • стандартное расположение: ~/.config/polybar/config ($XDG_CONFIG_HOME/polybar/config);
    • использую для локальных настроек только для i3: ~/.config/i3/polybar/config.
  1. Скрипт запуска

    • Создадим скрипт запуска polybar.
       1#!/bin/bash
       2# ~/.config/i3/polybar/launch.sh
       3
       4# Terminate already running bar instances
       5killall -q polybar
       6# If all your bars have ipc enabled, you can also use
       7# polybar-msg cmd quit
       8
       9# Wait until the processes have been shut down
      10while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
      11
      12# Launch Polybar, using config location ~/.config/i3/polybar/config
      13polybar --config=~/.config/i3/polybar/config i3 &
      14
      15echo "Polybar launched..."
      
    • Установим права на исполнение:
      1chmod +x ~/.config/i3/polybar/launch.sh
      
    • Добавим вызов polybar в файл конфигурации i3. Конфигурацию для i3bar следует закомментировать.
       1## ~/.config/i3/config
       2
       3## Start i3bar to display a workspace bar
       4# bar {
       5#     font pango:Source Sans Pro, FontAwesome 5 Free 10
       6#     status_command	i3status --config ~/.config/i3/i3status/config
       7#     position		top
       8# }
       9
      10## Start polybar
      11exec_always --no-startup-id ~/.config/i3/polybar/launch.sh
      

5.4 Запуск приложений

5.4.1 rofi

  • Используется для запуска приложений, переключения окон.
  • https://github.com/davatorium/rofi
  • Конфигурация по умолчанию находится в ~/.config/rofi/config.
  • Для выбора темы можно использовать команду:
    1rofi-theme-selector
    
  • Для запуска программ используется несколько мод:
    • run: запускать приложения из пути ($PATH) с возможностью запуска в терминале.
    • drun: запускать приложения на основе desctop-файлов (по стандарту XDG).
    • window: переключение между окнами в оконном менеджере, совместимом со спецификацией EWMH.
    • ssh: подключение к удаленному хосту через ssh.
    • file-browser: базовый файловый броузер для открытия файлов.
    • keys: список внутренних привязок клавиш.
    • script: использование простых скриптов.
    • combi: объединяет несколько мод в одну.
  • Использование запятых в файле настроек i3 может привести к проблемам. Лучше использовать файл настроек rofi или замените запятые символом #, например, заменить строку
    1rofi -combi-modi window,drun,ssh
    
    на
    1rofi -combi-modi window#drun#ssh
    
  • Возможная конфигурация в командной строке команды rofi:
    1## ~/.config/i3/config
    2set $menu rofi -combi-modi window#drun -show combi -modi combi -show-icons
    
  • Конфигурация с помощью конфигурационного файла (поместим его в ~/.config/i3/rofi/config).

5.5 Блокировка экрана

  • Для отключения экрана можно использовать DPMS:

    1exec --no-startup-id xset dpms 1800
    
    • Отключается через 30 минут.

5.5.1 Блокировщик экрана i3lock

  • В качестве блокировщика экрана используем i3lock.

    • Установка
      • Gentoo
        1emerge x11-misc/i3lock
        
  • Использование в конфигурационном файле:

    1set $Locker i3lock --color=000000 && sleep 1
    
    • sleep 1 добавляет небольшую задержку, чтобы предотвратить возможное состояние гонки.
  • Для блокировки экрана после заданного периода времени можно использовать xautolock или xss-lock.

  • Использование xautolock.

  • Установка

    • Gentoo
      1emerge x11-misc/xautolock
      
  • Использование в конфигурационном файле:

    1exec --no-startup-id xautolock -time 10 -locker "$Locker"
    
    • Блокирует через 10 минут.
  • Использование xss-lock.

  • Установка

    • Gentoo
      1emerge x11-misc/xss-lock
      
  • Использование в конфигурационном файле:

    1exec --no-startup-id xss-lock -- "$Locker"
    

5.5.2 Блокировщик экрана i3lock-color

  1. Дополнительные возможности в i3lock-color

    • Дополнительное управление цветом элементов.
    • Размытие текущего экрана и использование его в качестве фона блокировки.
    • Отображение часов в индикаторе.
    • Обновление по таймеру, а не при каждом нажатии клавиши.
    • Отображение раскладки клавиатуры.
  1. Установка

    • Gentoo
      • Порт находится в оверлее guru:
        1emerge x11-misc/i3lock-color
        

6 Приложения

6.1 Снимки экрана

  • Для скриншотов можно использовать scrot.

    • Gentoo
      1emerge media-gfx/scrot
      
  • Добавим в конфигурационный файл:

     1## Screenshot
     2
     3## Screenshot active display
     4bindsym --release Print exec --no-startup-id scrot '%Y-%m-%d_%H-%M-%S_$wx$h.png' -e 'mv $f `xdg-user-dir PICTURES` 2>/dev/null'
     5
     6## Screenshot current window
     7bindsym --release $mod+Print exec --no-startup-id scrot -u '%Y-%m-%d_%H-%M-%S_$wx$h.png' -e 'mv $f `xdg-user-dir PICTURES` 2>/dev/null'
     8
     9## Screenshot selected region
    10bindsym --release $mod+Shift+Print exec --no-startup-id scrot -s '%Y-%m-%d_%H-%M-%S_$wx$h.png' -e 'mv $f `xdg-user-dir PICTURES` 2>/dev/null'
    
    • По клавише PrtScr делается скриншот.
    • По клавише mod + PrtScr делается скриншот активного окна.
    • По клавише mod + Shift + PrtScr предлагается выделить область экрана, скриншот которой следует сделать.
    • Скриншоты переносятся в каталог $XDG_PICTURES_DIR (обычно ~/Pictures или ~/Изображения) (см. XDG. Пользовательские каталоги).

7 Совместимость приложений

7.1 Java

7.1.1 Серое окно, приложения не меняют размер с помощью WM, меню сразу закрываются

  • В стандартных тулкитах для Java жестко зашит список оконных менеджеров.
  • Следует установить переменную окружения:
    1export _JAVA_AWT_WM_NONREPARENTING=1
    

7.1.2 Меню в приложениях плавает отдельно, им невозможно пользоваться

  • В выпусках Java до версии 9 GTK интерфейс ориентирован на GTK2, в последующих версиях на GTK3.
  • GTK LookAndFeel может работать с GTK версий 2, 2.2 и 3.
  • По умолчанию используется GTK3.
  • Следует явно задать более старую версию:
    1export JAVA_TOOL_OPTIONS='-Djdk.gtk.version=2.2'
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие