LINUX.ORG.RU

Избранные сообщения xDShot

Как заставить pipewire игнорировать конкретный hdmi выход?

Форум — Desktop

У меня два монитора, один основной, второй вспомогательный. В основной воткнуты колонки. Также ещё есть блютус колонка и беспроводные наушники (usb). Колонка подключается эпизодически, остальное всё воткнуто постоянно.

Я использую скриптики xrandr для переключения вывода изображения на разные мониторы, соответственно при этих переключениях меняется состав звуковых устройств. Поэтому ранее я настроил себе в pipewire приоритет звуковух hdmi -> блютус колонка -> наушники.

Ранее вспомогательный монитор был подключен по dvi, и соответственно не присутствовал среди звуковых устройств, и мой приоритет работал идеально. Но в этом мониторе что-то померло, и теперь dvi вход работает некорректно, пришлось подключить его по hdmi. И это всё сломало, так как hdmi-звуковуха считается одним устройством с несколькими портами, и соответственно наивысший приоритет hdmi стал распространяться и на конфигурацию когда включен только вспомогательный монитор. У устройств есть профили, но они походу генерятся автоматически, так как в ситуации когда включен один любой монитор - задействуется профиль hdmi-0, и только когда включены оба - можно выбрать один из двух.

Как научить pipewire распознавать мониторы по какому-нить признаку и полностью игнорировать вспомогательный?

 , ,

STinger
()

Десктоп на Steam Deck

Статьи — Desktop

Если Steam Deck установить на док-станцию (лучше родную, так как с двумя купленными сторонними док-станциями были проблемы разного рода), подключить монитор, клавиатуру, мышку и колонки (USB-портов как раз хватает впритык), то его можно использовать как вполне себе адекватный настольный компьютер, на котором можно и браузер запустить, и в игру поиграть. Для переключения в режим десктопа нужно явно вручную указать это после запуска собственно Steam Deck в режиме Big Picture.

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

 

Evgueni
()

Книги по C++

Форум — General

Посоветуйте книгу по плюсам,пишу на C++ примерно год, могу накалякать что нибудь на qt, недавно заинтересовался сетями(сокеты беркли, boost asio).

 , ,

mozgoff
()

Gnome и эффект заедающих клавиш

Форум — Desktop

Есть Fedora 43 с Gnome 49 на Wayland. У пользователя стоят шорткаты на смену рабочих столов и . Как говорят на Fedora 42 и ранее все работало идеально, а после обновления до текущей версии переключения рабочих столов поломались. Сами столы переключаются, но появился эффект залипания клавиш в вверх-вниз, т.е. курсор в редакторе или страничка в браузере ползет вверх или вниз в зависимости от того какой шорткат нажали. Кто-нибудь сталкивался и знает как вернуть все взад? Очевидные кеды и иксы вместе вейланда не предлагать.

 ,

mathieu
()

Unable to resume from device '/dev/sda2' (259:2) offset 0, continuing boot process.

Форум — General

Unable to resume from device ‘/dev/sda2’ (259:2) offset 0, continuing boot process.

Как пофиксить данное сообщение? у меня настроена гибернация, поэтому убирать resume= не вариант, так как она перестает работать, подкачка на диске, либо это не ошибка? просто раньше такого не было

 , , ,

cherry
()

malloc() не хочет отдавать NULL

Форум — Development

Не могу добиться от malloc возврата NULL!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <time.h>

int main()
{
	clock_t tmstmp;

	tmstmp = clock();
	printf("clock = %ld\n", tmstmp);

	size_t gb24 = 24LU*1024*1024*1024;
	volatile unsigned char* pre_mem = malloc(gb24);
	for (size_t i = 0; i < gb24; i += sizeof(clock_t)) {
		*(pre_mem + i) = clock();
	}
	//uint_t offset = 0;
	//explicit_bzero(pre_mem, gb24);
	printf("starting the loop\n");
	tmstmp = clock();
	printf("clock = %ld\n", tmstmp);
	fflush(stdin);

	size_t counter = 0;
	for(;counter < 12345678;++counter) {
		//*(pre_mem + offset) = counter;
		//offset += (sizeof(counter));

		size_t mem_size = 64*1024;
		volatile unsigned char* mem = malloc(mem_size);
		for (size_t i = 0; i < mem_size; i+=sizeof(clock_t)) {
			*(mem+i) = clock();
		}
		if (NULL == mem) {
			printf("iter %lu: NULL\n", counter);
			break;
		} else {
			for (size_t i = 0; i < mem_size; i+=sizeof(clock_t)) {
				*(mem+i) = clock();
			}
			*(mem + counter%(4096)) = counter;
		}
	}

	return counter % 123456789;
}

У меня на машине 16ГБ озу и 32 свопа.

/tmp ❯❯❯ journalctl -k --since "-5 minutes" | grep -i -E 'out of memory|oom-killer|memory cgroup|Killed process'
Nov 16 18:09:49 g16 kernel: nvim invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj=0
Nov 16 18:09:49 g16 kernel: Out of memory: Killed process 428379 (a.out) total-vm:29233540kB, anon-rss:9961472kB, file-rss:724kB, shmem-rss:0kB, UID:1000 pgtables:57260kB oom_score_adj:0

если не инициализировать всю память, а только «местами», то краш случается, когда виртуальной памяти отдано уже 80-110 гигов.

Помогите получить от malloc NULL!!

А то что это получается, не надо чекать что там вернул malloc?

 , , , ,

BruteForce
()

Проблема с fluthub при устанавливании приложения

Форум — Desktop

Вобщем захожу на flathub скачиваю что-либо и мне выдаёт вот это: «Во время загрузки http://ciscobinary.openh264.org/libopenh264-2.5.1-linux64.7.so.bz2: Server returned status 403» с чем это может быть связано и как исправить

 , ,

propavshyyi
()

Davinci resolve вылетает без ошибки после нажатия любой клавиши

Форум — Linux-hardware

Когда я перехожу во вкладку fusion и если я нажму на любую клавишу то davinci вылетает.У меня Arch 6.17.5 linux KDE 6.5.Может у кого то тоже была такая проблема?Если была то как вы её решили?(В другие видео редакторы не горю желанием переходить).У меня nvidia видеокарта и intel процессор.

 , ,

archpingvin
()

проблема с запуском appimage на арче

Форум — General

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


AppImages require FUSE to run. 
You might still be able to extract the contents of this AppImage 
if you run it with the --appimage-extract option. 
See https://github.com/AppImage/AppImageKit/wiki/FUSE 
for more information

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

 ,

lyn
()

Запуск игр под другим пользователем из основной сессии (гайд)

Форум — Games
  • Что в гайде

    • Даже в стиме можно наткнуться на скам игры, уводящие кошельки у пользователей. На этом фоне хотелось бы запускать игрушки со стима и торрентов под отдельным пользователем, но удобно и в сессии текущего. Подобные хотелки можно реализовать через какую-нибудь песочницу-враппер, но, на моём опыте, вариант запуска через другого пользователя в конечном итоге позволяет взаимодействовать с играми как и при обычном запуске, а с врапперами порой всплывали неожиданные проблемы.
    • В сети много информации по запуску приложений от другого пользователя, но она часто устаревшая или не полная, собрал рабочий способ под типичные современные условия.
    • Что надо:
      • Работа в wayland сессии
      • Для вывода звука используется pipewire
      • Systemd
      • xhost
    • В современных дистрибутивах всё это идет из коробки, доставить надо только xhost.
  • Шаги

    • Создание нового пользователя

      • Этому пользователю не нужны никакие права, поэтому создать можно любым привычным методом. Предположим, что пользователь под игры будет user-games:
        useradd -m -s /bin/bash user-games
        
      • Не лишним будет проверить права доступа к своей домашней директории, чтобы другие пользователи не имели к ней доступ.
    • Подготовка pipewire

      • Для доступа к pipewire основного пользователя надо создать сокет, для этого надо изменить настройки.

      • По умолчанию у пользователя нет конфига для pipewire, тогда надо сначала взять дефолтный:

        mkdir ~/.config/pipewire && cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/pipewire.conf
        

        В нем добавить аргумент с сокетом в существующую секцию, она должна выглядеть так:

        { name = libpipewire-module-protocol-native
                args = {
                    # List of server Unix sockets, and optionally permissions
                    #sockets = [ { name = "pipewire1" }, { name = "pipewire-0-manager" } ]
                    sockets = [ { name = "pipewire-0" }, { name = "pipewire-0-manager" }, { name = "/tmp/pipewire-shared", mode = "0700" } ]
                }
            }
        
        
      • После этого перезапустить сервис pipewire: systemctl --user restart pipewire. Должен появиться файл /tmp/pipewire-shared. Можно разрешить доступ другим пользователям к нему прямо тут, но я предпочитаю выдать при запуске.

    • Геймпады

      • Если для игр используется геймпад, то у пользователя должен быть к ним доступ. Выдать его можно разными способами. Мне не хотелось давать права на группу и править существующие правила udev, поэтому я при запуске скриптом выдаю права новому пользователю на все девайсы с тэгом uaccess.

      • Костыль выглядит так ~/.local/bin/setup-uaccess-acl.sh:

        #!/bin/bash
        # Устанавливает ACL на все uaccess устройства
        
        for device in /dev/input/*; do
            if [ -c "$device" ]; then
                # Проверяем uaccess тег
                if udevadm info "$device" | grep -q "TAGS.*:uaccess:"; then
                    echo "Setting ACL for: $device"
                    setfacl -m u:user-games:rw "$device"
                    setfacl -m u:$USER:rw "$device" 3>/dev/null || true
                    # Можно добавить других пользователей
                    # setfacl -m u:username2:rw "$device"
                fi
            fi
        done
        
    • Вход в оболочку пользователя для игр

      • Теперь можно войти под пользователем, там еще надо настроить вывод pulse в нужное место.

      • Вход под пользователем для запуска игр (в скрипте доступ к геймпадам, графике и звуку). У меня в системе doas без ввода пароля:

        sudo bash -c '
          /home/user/.local/bin/setup-uaccess-acl.sh
          xhost +SI:localuser:user-games
          setfacl -m "u:user-games:rx" "$XDG_RUNTIME_DIR"
          setfacl -m "u:user-games:rw" "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY"
          chgrp user-games /tmp/pipewire-shared
          chmod g+rwx /tmp/pipewire-shared
          machinectl shell \
            --setenv=WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" \
            --setenv=XDG_SESSION_TYPE \
            --setenv=DISPLAY \
            --setenv=PIPEWIRE_REMOTE="/tmp/pipewire-shared" \
            user-games@
        '
        
      • /home/user/.local/bin/setup-uaccess-acl.sh - скрипт для выдачи прав на геймпады

      • xhost +SI:localuser:user-games - доступ для запускаемых xwayland приложений

      • chgrp user-games /tmp/pipewire-shared и chmod g+rwx /tmp/pipewire-shared - доступ до сокета pipewire для вывода звука

      • machinectl shell ... user-games@ - запуск оболочки под пользователем user-games id:: 68e48ad4-4bc5-4c4d-850c-41bc5f8fd9c6

      • Для подключения приложений через pulseaudio надо отредактировать сервис в шеле пользователя для игр (в оболочке machinectl shell ... user-games@):

        systemctl --user edit pipewire-pulse.service
        

        Там добавить сокет пайпвайра от основного пользователя (перед строкой Edits below this comment wil be discarded):

        [Service]
        Environment="PIPEWIRE_REMOTE=/tmp/pipewire-shared"
        

        После чего включить сервис:

        systemctl --user enable --now pipewire-pulse.socket
        
    • Результат

      • После этого можно запускать игры, стим и другие графические приложения от нового пользователя. Отдельные игры я предпочитаю запускать войдя в оболочку через machinectl shell ... user-games@.

      • Запустить сразу стим можно так:

        sudo bash -c '
          ~/.local/bin/setup-uaccess-acl.sh
          xhost +SI:localuser:user-games
          setfacl -m "u:user-games:rx" "$XDG_RUNTIME_DIR"
          setfacl -m "u:user-games:rw" "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY"
          chgrp user-games /tmp/pipewire-shared
          chmod g+rwx /tmp/pipewire-shared
          machinectl shell \
            --setenv=WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" \
            --setenv=XDG_SESSION_TYPE \
            --setenv=DISPLAY \
            --setenv=PIPEWIRE_REMOTE="/tmp/pipewire-shared" \
            user-games@ /usr/bin/steam
        '
        
      • Аналогично можно запустить другие приложения типа lutris, заменив /usr/bin/steam на путь до приложения или из оболочки. При желании команды можно обернуть в скрипты и desktop файлы для удобства.

 ,

altwazar
()

Выбор зарядного устройства для Pixel 8a

Форум — Linux-hardware

Купил в подарок своей подружке смартфон Google Pixel 8a. Встал вопрос о покупке зарядного устройства, т.к. в комплекте с пикселем идёт только USB-C кабель и переходник. Пока остановил свой выбор на двух устройствах от UGREEN: Ugreen CD127 (70161) PD USB-C Wall Charger (30 Вт) и Ugreen X513 USB Type-C, PD 3.0 (30 Вт)

Что можете посоветовать?

 , ,

basilic
()

Посоветуйте hack'n'slash по типу Диаблы 1 & 2

Форум — Games

Приветствую. Собсна, посоветуйте игрулю в стиле старого-доброго ультранасилия старой-доброй Дяблы 1-2.

 , ,

Vagabund
()

Настраиваем vkBasalt для использования своих шейдеров

Статьи — Игры

vkBasalt – это слой API vulkan, позволяющий выполнить собственные шейдеры в трёхмерной сцене без необходимости модифицировать приложение, осуществляющее рендеринг.

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

 

LamerOk
()

Какие есть гарантии, что разработчики СПО не торгуют своими пользователями?

Форум — Security

То что я могу изучать код, даёт мне возможность просматривать миллиарды строк кода после каждого релиза?

Далее, не говорю про то, что СПО поставляется без любых гарантий, это тоже не большая проблема, проприетарщики тоже не дают никаких гарантий, а если и дают, ты их пойди еще получи.

Что меня смущает больше всего, от IDE разработчика код перед попаданием в дистрибутив проходит множество этапов, сборки, конфигурирования (создание конфигураций по умолчанию) и (возможно) другое.

Где гарантия, что один из сотен ментейнеров дистрибутива X (X = твой любимый дистрибутив), работающий почти/бесплатно, не притащит в состав общей работы лажу, или умышленно не притащит уязвимость за мелкий прайс.

Тестирование софта это очень трудоёмко, а тестирование на отсутствие незадокументированных возможностей, вообще стоит как чугунный мост с паровозом.

Ну и мой главный вопрос, откуда у адептов СПО уверенность в своей системе?

Linux хоть и дотянул в некоторых странах до 6%, а в среднем по миру до 2-х, на нём работает критичная инфраструктура, его ставят как эталон безопасности, что делает его лакомой целью для целевых атак.

В общем, люди, как жить-то с такими мыслями? Есть ли выход?

PS. Таблетки выпил.

PPS. Винда мне не нравится, нравится всё самому контролировать, это её главное отличие от Linux.

PPPS. После скандала с Pegasus, который ломал яблоки в 0 действий, яблоко ОЧЕНЬ вкусная цель, ввиду не иллюзорной элитарности его пользователей.

 , ,

unclestephen
()

Bluez повесил систему. Удалить не получается.

Форум — Linux-hardware

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

Попытка удалить bluez выдает такое:

root@hpserver:/home/mike# sudo apt purge bluez
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Следующие пакеты будут УДАЛЕНЫ:
  bluez*
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 1 пакетов, и 0 пакетов не обновлено.
Установлено или удалено не до конца 1 пакетов.
После данной операции объём занятого дискового пространства уменьшится на 3 898 kB.
Хотите продолжить? [Д/н] y
(Чтение базы данных … на данный момент установлено 112835 файлов и каталогов.)
Удаляется bluez (5.65-0ubuntu1) …
Failed to stop bluetooth.service: Unit bluetooth.service not loaded.
invoke-rc.d: initscript bluetooth, action "stop" failed.
dpkg: ошибка при обработке пакета bluez (--remove):
 installed bluez package pre-removal script subprocess returned error exit status 1
dpkg: слишком много ошибок — останавливаемся
Failed to start bluetooth.service: Unit bluetooth.service failed to load properly, please adjust/correct and reload service manager: File exists
See system logs and 'systemctl status bluetooth.service' for details.
invoke-rc.d: initscript bluetooth, action "start" failed.
○ bluetooth.service - Bluetooth service
     Loaded: error (Reason: Unit bluetooth.service failed to load properly, please adjust/correct and reload service manager: File exists)
     Active: inactive (dead)
       Docs: man:bluetoothd(8)

фев 19 20:12:30 hpserver systemd[1]: bluetooth.service: Two services allocated for the same bus name org.bluez, refusing operation.
<...>
фев 22 20:16:15 hpserver systemd[1]: bluetooth.service: Two services allocated for the same bus name org.bluez, refusing operation.
dpkg: error while cleaning up:
 installed bluez package post-installation script subprocess returned error exit status 1
При обработке следующих пакетов произошли ошибки:
 bluez
Обработка остановлена из-за слишком большого количества ошибок.
E: Sub-process /usr/bin/dpkg returned an error code (1)

Попытка обновить систему тоже приводит к ошибке bluez:

root@hpserver:/home/mike# sudo apt dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
Обновлено 0 пакетов, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Установлено или удалено не до конца 1 пакетов.
После данной операции объём занятого дискового пространства возрастёт на 0 B.
Хотите продолжить? [Д/н] y
Настраивается пакет bluez (5.65-0ubuntu1) …
Failed to start bluetooth.service: Unit bluetooth.service failed to load properly, please adjust/correct and reload service manager: File exists
See system logs and 'systemctl status bluetooth.service' for details.
invoke-rc.d: initscript bluetooth, action "start" failed.
○ bluetooth.service - Bluetooth service
     Loaded: error (Reason: Unit bluetooth.service failed to load properly, please adjust/correct and reload service manager: File exists)
     Active: inactive (dead)
       Docs: man:bluetoothd(8)

фев 19 20:10:56 hpserver systemd[1]: bluetooth.service: Cannot add dependency job, ignoring: File exists
фев 19 20:12:30 hpserver systemd[1]: bluetooth.service: Two services allocated for the same bus name org.bluez, refusing operation.
<...>
фев 22 20:08:38 hpserver systemd[1]: bluetooth.service: Two services allocated for the same bus name org.bluez, refusing operation.
dpkg: ошибка при обработке пакета bluez (--configure):
 installed bluez package post-installation script subprocess returned error exit status 1
При обработке следующих пакетов произошли ошибки:
 bluez
E: Sub-process /usr/bin/dpkg returned an error code (1)

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

Пробовал удалить файл службы /etc/systemd/system/bluetooth.service и перезагружал систему, перезапускал демонов: sudo systemctl daemon-reload. Ничего не помогает.

 , ,

kisil-mike
()

грозозащита сетевого оборудования

Форум — General

hi, господа.

кто в теме где ее ставят:

  • строго на входе линии в здание,
  • в серверной в стойку ?

у кого-то грозозащита установлена на динрейке в стойке с коммутаторами ?

 

Cergoo
()

Интернет в частный дом

Форум — General

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

Местные кулибины предлагают за 35к - 40к безлимитный интернет «под ключ», но хотелось бы организовать всё самому.

Может есть у кого кейсы, либо ссылка на how to как всё это замутить? Финдебоберных модемов, с вай-фай антеннами, количеством лап как у паука не надо! Надо только приёмник сигнала, который будет передавать его (скорее всего) в такой микрот, а дальше я уже сам. Дело в том, что с таким я не сталкивался никогда от слова совсем, в связи с чем приполз сюда на полусогнутых за советом.

P.S> Где-то тут на форуме есть деревенский житель. Встречал его ранее. На аве у него дом заснеженный =) Отзовись. Посоветуй чё-нить пжлста.

 , , ,

Dodik
()

Tewi — консольный клиент для Transmission

Новости — Open Source
Tewi — консольный клиент для Transmission
Группа Open Source

Tewi — это TUI-клиент для управления демоном Transmission через его RPC-протокол.

Проект написан на Python и использует фреймворк Textual для реализации интерфейса. Лицензия — GPLv3+.

Поддерживается Transmission 2.40 и выше.

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

>>> GitHub

 , , , ,

anlar
()

Библиотека для форматирования текста в Си

Форум — Development

Привет, ЛОР!

Скажи, а есть ли что-то типа https://fmt.dev, но на чистом Си? Об printf() я слегка задолбался. Из требований: никаких внешних вызовов (будет работать без ОС), хочу тупо форматирование в строку а-ля snprintf(), но без сраных процентов и угадывания строчки к типу.

Традиционные касты @firkax @Iron_Bug

 ,

hateyoufeel
()

Arch linux - пропал звук в браузере

Форум — Desktop

Обновился, перегрузился - звука в браузере нет. Ни в одном из установленных.

Как чинить? куда копать?

 ,

bvn13
()