LINUX.ORG.RU

setxkbmap периодически отваливается в manjaro

 , , ,


0

2

Добрый,

У меня AwesomeWM. В rc.lua у меня такое:

awful.spawn.with_shell('setxkbmap -option "grp:alt_shift_toggle,grp_led:scroll" "pl,ru"')

т.е. при запуске путем startx awesomewm я запускаю setxkbmap, чтобы иметь возможность переключать язык (или там «раскладка» это правильно называется).

Это работает, но периодически перестает и язык уже переключить становится нельзя, он остается таким каким был последним. Я не знаю (вернее пока не заметил), от чего конкретно это зависит, но у меня предположение, что это происходит при закрытии/открытии крышки лаптопа. Поэтому я добавил вот такое в /etc/acpi/handler.sh:

on_lid_open()
{
    logger 'LID opened'
    echo 9287534 > /sys/class/backlight/intel_backlight/brightness # 70%
    setxkbmap -option "grp:alt_shift_toggle,grp_led:scroll" "pl,ru"
    xset -b
}

...skip...
    button/lid)
        case "$3" in

...skip...
            open)
                on_lid_open
                ;;
            *)
...skip...

Но это не помогает. Подозреваю, что это связано с тем, что handler.sh запускается как-то слишком рано после sleep’а, потому что когда я вместо:

echo 9287534 > /sys/class/backlight/intel_backlight/brightness # 70%

делал:

xbacklight -set 70

тоже не работало.

Что on_lid_open выполняется я знаю точно: если я его уберу то после закрытия/открытия крышки гр…, простите, лаптопа ‘xbacklight -get’ покажет 100 и глаза начнут выедать фотоны, а так покажет 70.

У меня нет ни одной большее идеи ни почему переключение раскладки периодически перестает работать, ни почему setxkbmap ничего не делает когда запускается handler.sh. Вставлять туда sleep я даже с целью проверки не хочу, потому что это ничего не расскажет мне о причине.

Кто-нибудь может подсказать что-нибудь?

PS Что интересно, в Arch при таком же сетапе такое не происходило, но меня задолбал его процесс установки и я с дуру поставил Manjaro. Не мяла баба клопоту, купила порося.

★★

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

setxkbmap -option "grp:alt_shift_toggle,grp_led:scroll" "pl,ru"

А это вообще работает? Для языка ЕМНИП нужно указывать ключ -layout.

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

А это вообще работает? Для языка ЕМНИП нужно указывать ключ -layout.

Я это сделал методом Копи и Паста откуда-то и работает. Не думаю, что отсутствие -layout может как-то влиять на отваливание этой настройки. Тем более, что после запуска никакой setxkbmap в памяти не висит, так что он просто что-то где-то конфигурирует. Может отваливается какой-то демон, которого он конфигурирует? Может достаточно будет его перегрузить и после сделать setxkbmap? Кто-нибудь может мне подсказать, есть ли такой демон и как он называется?

dissident ★★
() автор топика
Последнее исправление: dissident (всего исправлений: 1)
Ответ на: комментарий от evgeny_aa

/etc/default/keyboard

Сорри не заметил этого сообщения. Т.е. достаточно будет туда вписать:

XKBLAYOUT="pl,ru"

и все костыли с setxkbmap убрать как из rc.lua, так и и из handler.sh?

Спрашиваю, не проверив, потому что опаздываю к врачу. По приходу (нет, не тому самому приходу) проверю.

Спасибо!

PS Только вот если оно дальше будет продолжать отваливаться?…

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

Не уверен на 100%, что поможет, проверишь напиши. Я давно эту проблему решал, не уверен, что именно помогло тогда.

evgeny_aa ★★☆
()

Для работы setxkbmap нужен $DISPLAY, который он не всегда может найти, будучи запущеным из скрипта, ещё и от другого пользователя вне графической сессии.

Забей на костыли и делай нормально — либо через xorg.conf, либо через дефолты (которые по сути дёргаются xinit).

mord0d ★★★★★
()

Это работает, но периодически перестает и язык уже переключить становится нельзя, он остается таким каким был последним. Я не знаю (вернее пока не заметил), от чего конкретно это зависит, но у меня предположение, что это происходит при закрытии/открытии крышки лаптопа.

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

почему setxkbmap ничего не делает когда запускается handler.sh.

Наверняка потому что в окружении не установлена переменная DISPLAY, без которой нет доступа к X-серверу.

Кто-нибудь может подсказать что-нибудь?

Вам нужно избавиться от костылей и настроить с помощью localectl set-x11-keymap pl,ru pc105 '' grp:alt_shift_toggle.

Rootlexx ★★★★★
()
Последнее исправление: Rootlexx (всего исправлений: 1)
Ответ на: комментарий от mord0d

Слыыыш, а если юзер несколькими конфигурациями жонглирует? У меня вот куча раскладок самодельных, то одни включаю, то другие, иксы же больше четырёх кряду не умеют. Сам ты костыль.

anonymous
()

А у Тебя разве нет каталога /etc/X11/xorg.conf.d Там создать файл 00-keyboard.conf(если нет) и в нем вписать необходимые параметры.

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

Слыыыш

Проблемы мышей кота не волнуют.

У меня вот куча раскладок самодельных

Больше двух-трёх и не нужно. Из-за одной-двух дополнительных букв, используемых не так часто (как ß в немецком, например) держать целую дополнительную раскладку не рационально.

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

Вам нужно избавиться от костылей и настроить с помощью localectl set-x11-keymap pl,ru pc105 '' grp:alt_shift_toggle.

Спасибо. Я сделал так: sudo localectl set-x11-keymap 'pl,ru' 'pc105' '' 'grp:alt_shift_toggle,grp_led:scroll

Это поменяло мне настройки в /etc/X11/xorg.conf.d/00-keyboard.conf на:

# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "pl,ru"
        Option "XkbModel" "pc105"
        Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll"
EndSection

Как можно прочитать из комментария, действительно, не советуется менять этот файл руками а делать согласно твоему совету. Спасибо!

EDIT: Только вот теперь переключение пол альт_шифт не работает, можно только мышкой. Пошел читать https://wiki.archlinux.org/index.php/Xorg/Keyboard_configuration

dissident ★★
() автор топика
Последнее исправление: dissident (всего исправлений: 3)
Ответ на: комментарий от dissident

Разобрался посмотря в /home/sr/.local/share/xorg/Xorg.0.log. Он тупо кончался на: [ 812.297] (**) Option "xkb_options" "terminate:ctrl_alt_bksp".

Проблема была в 01-ctrl-alt-bksp.conf:

/etc/X11/xorg.conf.d >>>  ls -1
00-keyboard.conf
01-ctrl-alt-bksp.conf
20-intel.conf
/etc/X11/xorg.conf.d >>>  cat 01-ctrl-alt-bksp.conf
Section "ServerFlags"
    Option "DontZap" "false"
EndSection

Section "InputClass"
    Identifier      "Keyboard Defaults"
    MatchIsKeyboard "yes"
    Option          "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

Я перенес terminate:ctrl_alt_bksp в 00-keyboard.conf, убрал Section "InputClass" из 01-ctrl-alt-bksp.conf и переименовал его в 01-dont-zap.conf (правда руками, может это тоже лучше localectl делать?

1:

~/tmp >>> sudo localectl set-x11-keymap 'pl,ru' 'pc105' '' 'grp:alt_shift_toggle,grp_led:scroll,terminate:ctrl_alt_bksp'

что породило /etc/X11/xorg.conf.d/00-keyboard.conf:

/etc/X11/xorg.conf.d >>> cat 00-keyboard.conf
# Written by systemd-localed(8), read by systemd-localed and Xorg. It's
# probably wise not to edit this file manually. Use localectl(1) to
# instruct systemd-localed to update it.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "pl,ru"
        Option "XkbModel" "pc105"
        Option "XkbOptions" "grp:alt_shift_toggle,grp_led:scroll,terminate:ctrl_
alt_bksp"
EndSection

2:

Руками поменял 01-ctrl-alt-bksp.conf на 01-dont-zap.conf и убрал оттуда Section "InputClass":

/etc/X11/xorg.conf.d >>> ls -1                                                 
00-keyboard.conf
01-dont-zap.conf
20-intel.conf
/etc/X11/xorg.conf.d >>> cat 01-dont-zap.conf                                  
Section "ServerFlags"
    Option "DontZap" "false"
EndSection

И теперь так и все работает. Спасибо еще раз!

dissident ★★
() автор топика
Последнее исправление: dissident (всего исправлений: 3)
Ответ на: комментарий от evgeny_aa

Не уверен на 100%, что поможет, проверишь напиши.

setxkbmap периодически отваливается в manjaro (комментарий)

Rootlexx все верно сказал. Я выполнил:

~/tmp >>> sudo localectl set-x11-keymap 'pl,ru' 'pc105' '' 'grp:alt_shift_toggle,grp_led:scroll,terminate:ctrl_alt_bksp'

что породило /etc/X11/xorg.conf.d/00-keyboard.conf, ну или его поменяло там и все работает. А setxkbmap только для данной X сессии работает, так что и вправду костыль. Надеюсь больше не повиснет.

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

Я так понимаю можно создать /etc/X11/xorg.conf.d/01-my-configs.conf и там сделать как тут: https://askubuntu.com/a/52028. Или действительно распихать по разным файлам как советует mord0d.

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

Тьфу, блин! Я думал, в баше крутой оператор, чтобы содержимое директории передавать вместо ls -1 dir/*|, а это промпт такой…

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

Тьфу, блин! Я думал, в баше крутой оператор, чтобы содержимое директории передавать вместо ls -1 dir/*|, а это промпт такой…

Это zsh. Был в манжаре по дефолту Несмотря на то, что я его вообще не умею (поэтому и все дефолтное (включая и такой стремный промпт) кроме добавленных в ~/.zshrc альясов) он оказался в 100500 раз круче баша. Страшно подумать, что будет когда я его научусь.

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

Нет, его больше

Да хоть меньше. Запятая здесь лишняя.

надо в /etc/X11/xorg.conf.d/00-keyboard.conf пихать.

Те же яйца, только под другим углом.

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

А я тыкал когда-то ZSH, настраивал-настраивал — получился Bash. Так и вернулся на Bash.

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

Нет, это теперь фасеточные яйца.

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

Да хоть меньше. Запятая здесь лишняя.

Слишком много галоперидола съел.

Те же яйца, только под другим углом.

Ну правильно, надо же какой-то х-ней заниматься, хобби какое-то иметь. Например разбивать файл на много файлов. Или переносить из директории в директорию. Разработка…

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

Это не х-ня, это устранение проблем при автоматическом добавлении элементов конфига.

Только она их не устраняет. Например, я создал /etc/X11/xorg.conf.d/666-set-my-ass-photo-as-wallpaper.conf, а следом сделал apt-get install myassphotoaswallpapersetter, который надписал мой конфиг, над которым я трудился две недели.

dissident ★★
() автор топика
Последнее исправление: dissident (всего исправлений: 3)
Ответ на: комментарий от anonymous

Ты там часом в коллизии хэшей не веруешь?

Ну а почему не оставить xorg.conf, в нем сделать include /path/to/xorg.conf.d/*?

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

Это неуниверсально, ты инклюд куда угодно написать можешь, а пакетам надо конкретное место, куда свои мини-конфиги класть.

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

Это неуниверсально, ты инклюд куда угодно написать можешь, а пакетам надо конкретное место, куда свои мини-конфиги класть.

Я думал 00-keyboard.conf часть xorg. Если нет и xorg может работать без него, то ок. А где кстати теперь такие вещи задаются?

Section "Device"
    Identifier "Intel Graphics SNA+TearFree"
    Driver "intel"
    Option "AccelMethod" "sna"
    Option "TearFree" "true" # this is supposed to fix graphical artifacts
EndSection

Я для этого TearOff 20-intel.conf создал взяв название из потолка. Что удивительно, без этого все работало (правда с артифактами). Значит теперь есть какие-то дефолты (как раньше было vesa) и они в константах в коде?

Я просто не знаю. Так по-человечески если подумать, то вот есть xorg, он должен иметь N обязательных настроек, они лежат в xorg.conf, где написано - не трогай этот файл, он сгенерирован xorg-configure или чем-нибудь, клади свое в /path/to/xorg.conf.d и называй как хочешь). Мини пакет - это же тоже по сути свое.

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

Я думал 00-keyboard.conf часть xorg

Без разницы, что откуда. В рамках одного пакета можно так химичить и делать какие угодно директории. Если цель сделать совместимость с юзерскими конфигами без необходимости прибегать к костылями типа ucf при обновлении (свят-свят), и обеспечить совместимость с другими пакетами, в том числе не из официального репозитория (привет проприетарным дровам от невидии и прочему дерьму) — будь добр сделать папочку по определённому стандартному пути.

взяв название из потолка

И ты в целом угадал, формат там произвольный, только циферки должны быть в начале — они обозначают приоритет.

он должен иметь N обязательных настроек

Квадратно-гнездовой X.Org, ага. Распиливать крупные файлы — всегда хороший тон, не 1990-й же год, чтобы на блоках экономить.

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

Лучше снеси Манжару и накати Арча, православного. А Манжара – Убунта для бедных.

Тру, тру. Я думал, что это тоже самое что Арч с установщиком, а оно мне наставило, наконфигурировало…

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

И ты в целом угадал, формат там произвольный, только циферки должны быть в начале — они обозначают приоритет.

Так а где теперь дефолт прописан для драйвера видеокарты? Или xorg’у это уже теперь не надо и он это он какого-нибудь udev’а берет? А зачем раньше было надо?

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

А при чём тут видеокарта, когда тред о клавиатуре?

Иксам так-то с появлением KMS это вообще не надо, KMS настраивает вывод задолго до того, как иксы вообще запустятся.

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

А при чём тут видеокарта, когда тред о клавиатуре?

Иксам так-то с появлением KMS это вообще не надо, KMS настраивает вывод задолго до того, как иксы вообще запустятся.

Видеокарта, клавиатура, все то г.. которое раньше в xorg.conf было (я думал это дефолты). Раз оно теперь не надо то ок… Я отстал от жизни.

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

Раз оно теперь не надо

Ну смотря где, у проприетарного драйвера невидии всё по-своему, оно ни с KMS толком не дружит, ни с фреймбуферной консолью ни с Wayland, и конфигурацию иксов делает само и через жопу. А так на нуво, на остальных видюхах, и тем более на недесктопах, всё через KMS — его среди прочего для того и делали, чтобы обеспечить фреймбуферную консоль на любых платформах, вместо VGA-шной, которая есть только на PC. И вроде ещё есть некоторые старые редкие карточки мёртвых вендоров, на которых тоже KMS не работает, но при этом есть иксовый драйвер.

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