LINUX.ORG.RU

i3 не обрабатывает навигационные хоткеи (или «подымали иксы всем ЛОР'ом»)

 , , , ,


0

1

Патрег конечно не врет что если накатывать слаку оптом то справится даже моя бабушка. Но хотелось немножко спорта и я его нажил себе на корму; немножко даже больше чем хотелось.

Дано: slackware 14.1 голая базовая система; ядро и консольная обвязка. Задача: напильником, ломом и молитвами о душе проматери получить легкую графическую среду, вышибая из процесса максимум опыта.

Краткое содержание предыдущих серий: Иксы условно поднялись. Без dm, запускаются через xinit или startx. Но в них не работали мышь и клавиатура. Гугление навело на два варианта решения. Один — очевидно костыльно-гнездовой, зато уже работает, в данный момент. Однако он не устраивает, по скольку есть подозрение что именно это подкостыливание и вызвало девиантное поведение i3, суть которого в следующем: некоторые сочетания клавиш, жизненно необходимые для навигации, не перехватываются WM а реализуются окном находящимся в фокусе, например при нажатии mod+Shift+L окно должно прыгать вверх, вместо этого вижу букву L в терминале. Конфиг i3 проверял. Там все по умолчанию.

Второе решение выглядит здравым и технологичным, интуиция подсказывает что именно оно верно, однако оно у меня не срабатывает. Вот как заставить его работать — я желал бы услышать советов мудрых. Верую что его правильная реализация решит мою проблему.

Исходная проблема: клава и мышь не действовали в иксах. /var/log/Xorg.0.conf рапортовал

hotplug is on, devices using drivers 'kbd', 'mouse' will be disabled

Нагугленый костыль заключается в следующем: запрещаем автоопределение оборудования ввода-вывода иксами, исклюаем evdev из этого процесса, настаивая на использовании ручного конфигурирования. Ключевые места /etc/xorg.conf реализующие этот механизм:

Section "ServerFlags"
	Option "AllowEmptyInput"	"no"
	Option "AutoAddDevices"		"no"
	Option "AutoEnableDevices"	"no"
EndSection


Section "InputDevice"
	Identifier  	"Keyboard0"
	Driver 		"kbd"
	Option 		"XkbModel" "pc105"
	Option		"XkbOptions"  "grp:rctrl_toggle,terminate:ctrl_alt_bksp,grp_led:scroll,compose:rwin" 
	Option		"XkbLayout" "us,ru"
EndSection

Section "InputDevice"
	Identifier "Mouse0"
	Driver "mouse"
	Option "Protocol" "auto"
	Option "Device" "/dev/input/mice"
	Option "ZAxisMappint" "4 5 6 7"
EndSection

Однако не сомневаюсь, что расово верным, идеологически выдержаным и богоугодным является другое решение:

Section "ServerLayout"
	Identifier     "X.org Configured"
	Screen      0  "Screen0" 0 0
	Screen      1  "Screen1" RightOf "Screen0"
	Screen      2  "Screen2" RightOf "Screen1"
	Screen      3  "Screen3" RightOf "Screen2"
#исключаем упоминания о девайсах из ServerLayout
#	InputDevice    "Mouse0" "CorePointer"
#	InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Module"
	Load	"glx"
#вопрос знатокам, не в суе ли здесь будет упоминание kbd? 
#Интуитивно его поставил. 
#Но не работает что с ним что без него.
	Load	"kbd"
EndSection

#ересь коментим
#Section "ServerFlags"
#	Option "AllowEmptyInput" "no"
#	Option "AutoAddDevices" "no"
#	Option "AutoEnableDevices"	"no"
#EndSection

#и доверяем таки evdev его кухню, 
#все по советам гугла. 
#У людей работает.

Section "InputClass"
	Identifier  	"keyboard-all"
	Driver 		"evdev"
	Option 		"XkbModel" "pc105"
	Option		"XkbOptions"  "grp:rctrl_toggle,terminate:ctrl_alt_bksp,grp_led:scroll,compose:rwin" 
	MatchIsKeyboard "1"
	Option		"XkbLayout" "us,ru"
EndSection

Section "InputClass"
	Identifier  "Mouse"
	MatchIsPointer      "1"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"
EndSection

Но у меня это не работает.

Вопросы:

1) действительно ли текущая проблема (не срабатывание хоткеев) связана со способом подключения устройств? Может дело вовсе не в этом? Может просто кривовато поставил i3? Или может необходимо логиниться непременно через DM чтобы все было ровно?

2) правильно ли оформлен xorg.conf, во втором варианте? Может дело всего лишь в нем? А если правильно, и дело не в нем, то как проверить корректность определения устройств этим evdev? Может каких драйверов/пакетов не хватает (я все ставил ручками, может чего забыл?) А что с udev и его правилами?

Я в общем пока погуглю, но уже устал превозмогать самостоятельно, на текущий момент пресыщен спортивным гуглением. Буду признателен за спойлеры.



Последнее исправление: Csandriel (всего исправлений: 2)

Ответ на: комментарий от bormant

К своему стыду не помню, заглядывал я туда или еще нет. Начал почему-то с манов по xorg.conf Ну сейчас вместе посмотрим. *facepalm.jpg

[  1295.254] (II) modesetting(0): Damage tracking initialized
[  1295.254] (II) modesetting(0): Setting screen physical size to 270 x 203
[  1295.334] (II) config/udev: Adding input device Power Button (/dev/input/event3)
[  1295.334] (**) Power Button: Applying InputClass "evdev keyboard catchall"
[  1295.334] (**) Power Button: Applying InputClass "keyboard-all"
[  1295.334] (**) Power Button: Applying InputClass "keyboard-all"
[  1295.334] (II) LoadModule: "evdev"
[  1295.334] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[  1295.335] (EE) Failed to load /usr/lib/xorg/modules/input/evdev_drv.so: libmtdev.so.1: cannot open shared object file: No such file or directory
[  1295.335] (II) UnloadModule: "evdev"
[  1295.335] (II) Unloading evdev
[  1295.335] (EE) Failed to load module "evdev" (loader failed, 7)
[  1295.335] (EE) No input driver matching `evdev'
[  1295.335] (II) config/udev: Adding input device Power Button (/dev/input/event2)
[  1295.335] (**) Power Button: Applying InputClass "evdev keyboard catchall"
[  1295.335] (**) Power Button: Applying InputClass "keyboard-all"
[  1295.335] (**) Power Button: Applying InputClass "keyboard-all"
[  1295.335] (II) LoadModule: "evdev"
[  1295.335] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[  1295.336] (EE) Failed to load /usr/lib/xorg/modules/input/evdev_drv.so: libmtdev.so.1: cannot open shared object file: No such file or directory
[  1295.336] (II) UnloadModule: "evdev"
[  1295.336] (II) Unloading evdev
[  1295.336] (EE) Failed to load module "evdev" (loader failed, 7)
[  1295.336] (EE) No input driver matching `evdev'
[  1295.336] (II) config/udev: Adding drm device (/dev/dri/card0)
[  1295.336] (II) config/udev: Adding input device AT Translated Set 2 keyboard (/dev/input/event1)
[  1295.336] (**) AT Translated Set 2 keyboard: Applying InputClass "evdev keyboard catchall"
[  1295.336] (**) AT Translated Set 2 keyboard: Applying InputClass "keyboard-all"
[  1295.336] (**) AT Translated Set 2 keyboard: Applying InputClass "keyboard-all"
[  1295.336] (II) LoadModule: "evdev"
[  1295.337] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[  1295.337] (EE) Failed to load /usr/lib/xorg/modules/input/evdev_drv.so: libmtdev.so.1: cannot open shared object file: No such file or directory
[  1295.337] (II) UnloadModule: "evdev"
[  1295.337] (II) Unloading evdev
[  1295.337] (EE) Failed to load module "evdev" (loader failed, 7)
[  1295.337] (EE) No input driver matching `evdev'
[  1295.337] (II) config/udev: Adding input device ImPS/2 Generic Wheel Mouse (/dev/input/event4)
[  1295.337] (**) ImPS/2 Generic Wheel Mouse: Applying InputClass "evdev pointer catchall"
[  1295.337] (**) ImPS/2 Generic Wheel Mouse: Applying InputClass "Mouse"
[  1295.337] (II) LoadModule: "evdev"
[  1295.337] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[  1295.338] (EE) Failed to load /usr/lib/xorg/modules/input/evdev_drv.so: libmtdev.so.1: cannot open shared object file: No such file or directory
[  1295.338] (II) UnloadModule: "evdev"
[  1295.338] (II) Unloading evdev
[  1295.338] (EE) Failed to load module "evdev" (loader failed, 7)
[  1295.338] (EE) No input driver matching `evdev'
[  1295.338] (II) config/udev: Adding input device ImPS/2 Generic Wheel Mouse (/dev/input/mouse0)
[  1295.338] (**) ImPS/2 Generic Wheel Mouse: Applying InputClass "Mouse"
[  1295.338] (II) No input driver specified, ignoring this device.
[  1295.338] (II) This device may have been added with another device file.
[  1295.339] (II) config/udev: Adding input device Speakup (/dev/input/event0)
[  1295.339] (**) Speakup: Applying InputClass "evdev keyboard catchall"
[  1295.339] (**) Speakup: Applying InputClass "keyboard-all"
[  1295.339] (**) Speakup: Applying InputClass "keyboard-all"
[  1295.339] (II) LoadModule: "evdev"
[  1295.339] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so
[  1295.339] (EE) Failed to load /usr/lib/xorg/modules/input/evdev_drv.so: libmtdev.so.1: cannot open shared object file: No such file or directory
[  1295.339] (II) UnloadModule: "evdev"
[  1295.339] (II) Unloading evdev
[  1295.339] (EE) Failed to load module "evdev" (loader failed, 7)
[  1295.339] (EE) No input driver matching `evdev'
[  1310.050] (EE) Server terminated successfully (0). Closing log file.

Csandriel
() автор топика

Но у меня это не работает.

У меня все работает с таким конфигом (openbox и notion). Тупо скопипастил из примеров. Вижу единственное отличие: у меня там есть строка

MatchDevicePath "/dev/input/event*"

bread
()
Ответ на: комментарий от bormant

Мда. То ли я сидя на мониторе лог читал, то ли не читал вовсе. Сейчас глянул и все ясно. Поставил пакет mtdev и клава заработала. Однако i3 по прежнему загадочен и неоднозначен. Значит дело было не в бобине.

Если у кого есть соображения, приветствую. Ну а сам разберусь, поведаю что да как.

Csandriel
() автор топика
Ответ на: комментарий от FeyFre

Ну ок, это я по привычки портянки не читаю, перехожу сразу к примерам :/ Странный вид спорта конечно.

bread
()
Ответ на: комментарий от bread

Чтобы вникнуть что по чем и зачем. Например вчера с удивлением узнал зачем существует xinit. Можно не запуская dm&&wm/de запустить любое целевое приложение напрямую, типа xinit $application — все, будет только само приложение и все. Браузер так запускал. Прикольно. Менюшки не работают правда, они же окна тоже.

Кстати там выше во втором варианте тоже ошибка, в секции для мыши нужно еще указать

Section «InputClass» 
..... 
Driver «mouse» 
.... 
EndSection

Сейчас у меня работают мышь/клава в варианте evdev (хохо сделал свитчер для вариантов xorg.conf, софтлинки перекидывает. Может сделать вообще переключение noveau/blob?)

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

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Прикольно. Менюшки не работают правда, они же окна тоже

...а управляь ими некому. Вообще я так понял это для приложений нижнего уровня типа dm/wm предусмотрено. Но здесь возможно творчество. Для однооконных приложений типа игор наверное ценный вариант, в плане выжимки ресурсов на игру.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Так постепенно все и доставишь из набора в инсталляторе :) С минимальной слакой тяжко будет с доустановкой из сторонних реп. Они то рассчитывают, что у тебя достаточно полная установка, придется поработать пакетным менеджером.

bread
()
Ответ на: комментарий от Csandriel

Вообще я так понял это для приложений нижнего уровня типа dm/wm предусмотрено.

Просто xinit поднимает иксы и запускает то, что ты ему скажешь. Обычно это wm с приблудами, но может быть что угодно. Юниксвей.

bread
()
Ответ на: комментарий от bread

придется поработать пакетным менеджером.

Да он сам уже работает как негр на галерах. И их аж триЧего от слаки не ожидал так это аж трех пакет менеджеров — для обычных бинарных пакетов в сетевых репо, для слагбулдов в сетевых репах и еще для локальных пакетов тулзы. Неразберихи как в семействе apt еще нет, но инструмента валом.

Если конкретнее,

Есть меню-драйвен «браузер слакбулдов» — sbopkg по сути являющийся полноценным пакетменеджером. Правда создание очередей зависимостей для слакбулд-пакета — другой утилью - sqg

Есть pkgtoll работающий с конфигурационными скриптами и локальными пакетами в меню-режиме

Есть еще slackpkg работающий с бинарными пакетами в сетевом репо.

Интересно что в слаке таки контролируются зависимости, в механизме sbopkg. Но только для каждого конкретного пакета. Тоесть кольцевые конфликты, таким образом, вроде как исключены, как мне видится. Интересное решение. Я бы даже назвал его изящным. По своему. Хотя еще маловато опыта работы с этим механизмом, чтобы говорить категорично, но мне уже нравится идея. Автоматизация есть, но без фанатизма, без попытки объять необъятное и довести пользователя до инсульта конфликтами, как это умеет apt

В общем рад решению переезжать на слаку окончательно. Предчувствую что не разочаруюсь.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Ну я имел ввиду, что разрешение зависимостей там ручное в основном, хотя есть какие-то тулзы для автоматики, но я не копал. Сам недавно репатриировался на слаку. Остановился на slackpkg+, по мне это самый простой и прозрачный инструмент. Sbopkg прикольный, но мне лень компилять, на крайний случай скачать и запустить слакбилд не проблема.

bread
()
Ответ на: комментарий от bread

Не все. mod+v по идее должен резать окно пополам по вертикали, чего не делает. Вместо этого v в терминале. В качесве mod у меня win

Вообще интересная идея. Почему работают не все? Может быть при деле этот их keymap? С другой стороны, я думал что wm подхватывает лишь то, что не хавает терминал. Но похоже я не прав. mod+shift+q ловит, mod+j ловит, а mod+h и mod+v нет. А в чем разница не пойму. Надо еще раз конфиг поковырять и с модом поэкспериментировать.

Csandriel
() автор топика
Ответ на: комментарий от bread

хотя есть какие-то тулзы для автоматики, но я не копал.

Покопай, не пожалеешь. Например

sbopkg -g *gimp*

(найти пакет)

sqg -p gimp-uti-puti-x9000
создать для него очередь зависимостей

потом sbopkg без аргументов (интерактивный режим) выбираешь очередь (load queue) и КЛАЦ, все стало.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

WM должен бы все перехватывать. Попробуй другой wm, может это баги i3.

bread
()
Ответ на: комментарий от Csandriel

потом sbopkg без аргументов (интерактивный режим)

Хотя он наверное из строки тоже умеет, я еще не втыкал глубоко

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Да, я уже поиграл в sbopkg и оценил: это очень годный инструмент. Лень ждать пока скомпиляется. Бинарные пакеты со slackonly ставятся со свистом, не успеваю даже чайку попить

bread
()
Ответ на: комментарий от bread

Тут пользуясь случаем передаю привет тормознутому апту. Да я в уме разрешаю зависимости быстрее, хехе. Но не в дебиане конечно, где суровый такой граф и упоротые имена пакетов.

bread
()
Ответ на: комментарий от bread

Ставлю в курс развернуто относительно sbopkg:

Он в качестве репо использует git и хранилища и любые другие сайты с сырцами. В слакбулдах (внутри) и прописаны адреса до сырцов, а в его «репозиториях» только сами слакбулды, в них же и списки зависимостей по которым sqg генерит очереди.

В принципе можно инсталять пакеты в один присест не выходя из slackpg, из него же бровся репо. Но вот правда если хочешь чтобы вместе с зависимостями тогда надо в другом терминале кастать sqg переодически. Или сразу налепить очередей на топовые пакеты (корневые в дереве зависимостей) а потом их штамповать кнопкой download/compile/install

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Или сразу налепить очередей на топовые пакеты (корневые в дереве зависимостей) а потом их штамповать кнопкой download/compile/install

И кстати там есть кнопки upgrade и uninstall. Патриг таки думает переезжать на slakbuild технологию плотно, я так понял. Судя по тому что для бинарных пакетов такого сервиса я не наблюдаю.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Патриг таки думает переезжать на slakbuild технологию плотно, я так понял.

Так вроде уже всё на слакбилдах. Кое-что я пересобрал дедовским методом забирая с ftp и правя ебилдыслакбилды. А так меня устраивают бинарные репы вполне.

bread
()
Ответ на: комментарий от bread

А между тем, похоже, проблема i3 оказалась такой же смешной как и проблема мыши/клавы

For Slackware systems older than 14.1, you need to install i3 version 4.2. For Slackware 14.1, the highest i3 version that will build without replacing Slackware stock packages will be i3 4.8.

i3-v i3 version 4.13 (2016-11-08) © 2009 Michael Stapelberg and contributors
bash-4.2# 

Начинать надо было с этого. V_v Сейчас или постарше найти i3 или апнуть (предварительно погуглив ^_^) релиз.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Проверь конфиг sbopkg, там должна быть прописана правильная версия слаки, иначе будут загадочные проблемы как вот с i3.

bread
()
Ответ на: комментарий от bread

А как ты его ставил? Sbopkg тянет самую свежую версию что ли?

Я понял именно так. Но как его переключить - не понял. Кажется можно просто в конфиге поправить строку

REPO_BRANCH=${REPO_BRANCH:-14.2}
Но мне больше нравится идея апнуть релиз. По скольу он не обкатанный и не вточеный можно поэкспериментировать, так сказать, потренироваться на нем. Если что даже полная переустановка болью не будет.

Csandriel
() автор топика
Ответ на: комментарий от bread

Докладываю: Переключил релиз поменяв переменную в конфиге. В директории /var/lib/SBo появилась помимо 14.2 директорий 14.1. И они не дерутся.

Короче хитроплан такой. Удаляю тем же sbopkg этот i3, ничего другого из установленного им (по версии 14.2) не трогая. Ставлю из репо 14.1 И радуюсь.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

пока все кроме i3 нормально крутится

Это потому что Патрик бох ;) Ну где еще можно накатывать на олдстейбл свежайшие пакеты и даже не заметить подвоха?

bread
()
Ответ на: комментарий от bread

Рассказываю как было.

поудалял из sbopkg все установленные им пакеты (в списке значились пакеты из обоих бранчей — и 14.1 и 14.2 Любопытно что он помнит что установлено им даже если сменена версия бренча. А вот для установки показывает только текущий) Для чистоты эксперимента. Потом

sbopkg -g i3

высыпало список пакетов включая desktop/i3

Потом

sqg -p i3 && sbopkg -i i3.sqf
(sbopkg хавает либо пакет либо очередь, — узнает по расширению, где лежит и сам знает) создать и выполнить очередь. Позалипал на бегущие строки. Все скачалось скомпилилось и стало.

но i3 продолжал выеживаться. Удалил конфиг, прогнал мастер настройки снова — все нормально заработало.

Где здесь кнопка [ solved ]?

Csandriel
() автор топика
Ответ на: комментарий от bread

Это потому что Патрик бох

Согласен, чем дальше тем больше.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

налепить очередей

sqg -a
в помощь. В комстроке очередь указывается с суффиксом .sqf:
sbopkg -Rki нечто.sqf

На неполной установке, как выше уже сказали, сборка может приносить много «сюрпризов».
В отношении пакетов с множеством настроек, таких как ffmpeg, использовать slackonly не стоит, там дефолт, который пуст и бесполезен (смотреть на варианты, управляемые ключами и варианты, подключаемые системой сборки автоматически при наличии установленных библиотек).
Под полной установкой НЕ имеется в виду обязательное наличие наборов KDEI, KDE, XFCE, E, T (нужен некоторым пакетам для сборки документации).

Зело полезен на неполной установке может оказаться sbbdep (собранный есть у Эрика).

Можно посмотреть на Salix — репы с зависимостями, slapt-get/gslapt пакетным менеджером.

Про список лишнего можно глянуть на MLED. Или в Salix на список минимально необходимого.

bormant ★★★★★
()
Ответ на: комментарий от Csandriel

для бинарных пакетов такого

Сходите на зеркале в каталог /source, Slackware всегда собиралась слакбилдами (до версии 7 немного другими). SBo был поднят энтузиастами для однотипной сборки невошедшего в дистрибутив.

bormant ★★★★★
()
Ответ на: комментарий от Csandriel

Любопытно что он помнит что установлено им даже если сменена версия бренча

Никакой магии, по метке (tag) пакетов «_SBo» получает список:

$ ( cd /var/log/packages/ ; ls *_SBo )

bormant ★★★★★
()
Ответ на: комментарий от bread

Проверь конфиг sbopkg

Тут надо добавить, что sbopkg в далоговом (от названия программы dialog) режиме в меню позволяет выбирать репозиторий из списка, предлагает сохранить настройку в ~/.sbopkg.conf.
Естественно, этот файлик имеет приоритет над настройками /etc/sbopkg/sbopkg.conf.

bormant ★★★★★
()

и эту слаку.

да выкинь ты уже этот i3 и эту слаку. давно уже понятно, что не надо терять время с этими кривыми ВМ и дистрибутивами.

darkenshvein ★★★★★
()
Ответ на: и эту слаку. от darkenshvein

Ну как сказать. Из того что крутил (сюзя, дебчик) слака пока самое благоприятное производит впечатление. То, что искал.

с этими кривыми

Ну этот тред показывает что все же дело не в бобине было, по обеим заявленным проблемам. Я сейчас уже точно знаю почему у меня хоткеи не работали. Но не скажу. Стыдно признаться.

Что i3 касается, то дошел до него через кеды, крысы гномы и тд. Тайловые wm — это для компьютера. Флойтовые — на столько же тяжелы в издержках времени и неудобны в работе на сколько «интутивно понятны». Они хороши лишь для бабушек, которым поздно отучаться от «рабочего стола» и костяных счетов.

Csandriel
() автор топика
Ответ на: комментарий от Csandriel

Но не скажу.

Нет все-таки обязан признаться, ради тех кто на эти грабли еще наступит. У меня ощущение, что я так был занят манами, изначально, что забыл прогнать i3-configure, ну после доустановки mtdev, в смысле.

Хотя точно историческую правду уже не восстановлю: слишком много было разной суеты, слишком много сделано разного в темпе истерики.

Csandriel
() автор топика
Ответ на: комментарий от bormant

T (нужен некоторым пакетам для сборки документации)

Я так понял, что T мастхэв, потому как моментально огреб ошибки при сборке. Думаю что в наше время самое оптимальное не мудрить и ставить всё, даже KDE. Сколько там места сэкономишь, слёзы, а потом тратить время на доустановку.

anonymous
()
Ответ на: комментарий от anonymous

Речь естественно о десктопе.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.