LINUX.ORG.RU

Сообщения Set440

 

Systemd-Ukify: Миграция системы на Secure Boot

Secure Boot на линуксе нужен для того, чтобы Windows в дуалбуте была в безопасности, и проходила все тесты на безопасность в Защитнике Windows.
Руководство ориентировано на дистрибутивы из семейства Arch Linux.

( читать дальше... )

 , , , ,

Set440
()

Создание скринсейвера на базе mpv и swayidle

Это мини-руководство показывает, как создавать скринсейверы для систем на базе Wayland с фрагментами видео. Swayidle — это служба управления простоями (idle management daemon), совместимая с любыми Wayland-композиторами, поддерживающими протокол ext-idle-notify.

Для начала можно с помощью yt-dlp скачать с ютуба видео какого-нибудь коммерческого скринсейвера, типа Dream Aquarium. В моём примере видео будет начинаться со случайной позиции, в полноэкранном режиме, зациклено и будет выключаться по нажатию пробела.
Приступим.

pacman -S swayidle mpv


/home/seth/.s44-programs/Dream Aquarium/aqua-start.sh

#!/usr/bin/env bash

cd "$(dirname "$0")" # Определяем директорию скрипта, как текущую рабочую

# запускаем MPV на весь экран, зациклено, со случайной позиции видео
mpv --osc=no --start=$(shuf -n1 -i0-7200) --fs --loop-file "$HOME/Видео/DreamAquarium.webm" &
echo $! >./aquarium.pid # Записываем PID запущенного экземпляра MPV

--start=$(shuf -n1 -i0-7200) — это функция получения случайной позиции видео. Вместо 7200 впишите длительность своего видео в секундах.


/home/seth/.s44-programs/Dream Aquarium/aqua-kill.sh
#!/usr/bin/env bash

cd "$(dirname "$0")" # Смена каталога по месту нахождения скрипта

kill -15 $(cat ./aquarium.pid) # Завершаем MPV

Далее нужно создать ярлычок SwayIdle в автозагрузке:
swayidle timeout 300 ./aqua-start.sh resume ./aqua-kill.sh

Укажите в качестве рабочей директории программы путь к папке со скриптами!

Не забудьте дать права на выполнение:

chmod +x aqua-start.sh
chmod +x aqua-kill.sh

=======================
Поздравляю! Вы самостоятельно сделали скринсейвер! Молодцы!

 , , swayidle,

Set440
()

Как запустить XboxDrv в режиме демона

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

Выход один: Запустить его демоном без флага --daemon.

Но тут возникает проблема: при попытке запуска демона в обычном режиме xboxdrv — он падает из-за того, что занимает консоль интерактивным выводом.

РЕШЕНИЕ ЕСТЬ!!! Нужно использовать команду bash -c и вписать вначале nohup и в конце &.

# Systemd unit to enable xboxdrv driver for Xbox 360 controller
# Usage:
# save to /lib/systemd/system/xboxdrv-s44.service
# to start: sudo service xboxdrv-s44 start
# to enable on boot: sudo systemctl enable xboxdrv-s44

[Unit]
Description=Xbox controller driver daemon-S44

[Service]
Type=forking
User=root
ExecStart=/usr/bin/bash -c "nohup xboxdrv --evdev /dev/input/by-id/usb-DragonRise_Inc._Generic_USB_Joystick-event-joystick --axismap -Y1=Y1,-Y2=Y2 --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RZ=y2 --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --evdev-keymap BTN_BASE5=tl,BTN_BASE6=tr --evdev-keymap BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE=lt,BTN_BASE2=rt --evdev-keymap BTN_BASE4=start,BTN_BASE3=back --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y --mimic-xpad --silent &"

[Install]
WantedBy=multi-user.target

Теперь у вас xboxdrv работает в режиме демона, поздравляю!

 , ,

Set440
()

Исправление кракозябров в региональной локали (en_DE, ru_UA...)

Я с одного немецкого форума украл гениальное решение кракозябров для региональных кодировок типа en_DE и ru_UA (многие репаки и старые игры типа NWN2 и VTMB сыпят кракозябрами, если вы используете эти региональные кодировки).

Рассматривать буду своё решение для кодировки ru_UA.

Первым делом, нужно сгенерировать локаль ru_RU

/etc/locale.gen
ru_RU.UTF-8 UTF-8
# locale-gen

Далее САМОЕ ИНТЕРЕСНОЕ: export LANG=ru_RU.UTF-8 даёт лишь временный эффект, вписывание LANG в locale.conf не даёт ощутимых результатов. И тут я прочитал интересное решение.

Берём делаем:

$ export LANG=ru_RU.UTF-8
$ locale

Получается вот такой вывод:

LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_UA.UTF-8
LC_TIME=ru_UA.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_UA.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_UA.UTF-8
LC_NAME=ru_UA.UTF-8
LC_ADDRESS=ru_UA.UTF-8
LC_TELEPHONE=ru_UA.UTF-8
LC_MEASUREMENT=ru_UA.UTF-8
LC_IDENTIFICATION=ru_UA.UTF-8
LC_ALL=

Что здесь примечательно:

  • в сгенерированный выхлоп добавились значения сразу нескольких полей;
  • сгенерированы дополнительные поля, которые отсутствовали в locale.conf;
  • кодировка всех сообщений принудительно задана как ru_RU, в то время как региональные стандарты ru_UA не пострадали.

Теперь САМОЕ ВАЖНОЕ: Заменяем содержимое /etc/locale.conf на этот сгенерированный выхлоп программы locale.

Перезагружаемся.

Кому это может быть полезно?

  • это хороший воркэраунд для русских кодировок республик бывшего СССР;
  • может быть полезно для английских кодировок стран Европы и Америки.

Примечание: Ваше DE может затирать LANG=, потому по этому вопросу нужно разбираться с конкретным DE. Например, для KDE нужно сделать env-скрипт с экспортом LANG.

Теперь в инсталляторах репаков и старых играх типа NWN2 и VTMB все надписи на русском.

Приятной игры!

 ,

Set440
()

Включение поддержки джойстика DragonRise Inc. Generic USB

Джойстик DragonRise Inc. — хороший китайский геймпад, похожий на старый джой плэйстейшена. Поддерживает только режимы Dendy и DInput, потому чтобы играть с XInput, используйте xboxdrv с такими опциями:

xboxdrv --evdev /dev/input/by-id/usb-DragonRise_Inc._Generic_USB_Joystick-event-joystick --axismap -Y1=Y1,-Y2=Y2 --evdev-absmap ABS_X=x1,ABS_Y=y1,ABS_RX=x2,ABS_RZ=y2 --evdev-absmap ABS_HAT0X=dpad_x,ABS_HAT0Y=dpad_y --evdev-keymap BTN_BASE5=tl,BTN_BASE6=tr --evdev-keymap BTN_TOP2=lb,BTN_PINKIE=rb,BTN_BASE=lt,BTN_BASE2=rt --evdev-keymap BTN_BASE4=start,BTN_BASE3=back --evdev-keymap BTN_THUMB2=a,BTN_THUMB=b,BTN_TOP=x,BTN_TRIGGER=y --mimic-xpad --silent

У меня так работает под вайном Ведьмак 3 из GOG'а.

Создайте такой ярлычок в своём DE или запустите эту команду. Внимание, xboxdrv конфликтует со Steam! Поэтому, когда играете в вайне — стим закрывайте.

Не забудьте, что если у вас подключено несколько таких джоев, то by-id может быть другой. Посмотрите имя своего джоя в /dev/input/by-id/.

 , ,

Set440
()

RSS подписка на новые темы