LINUX.ORG.RU

Сообщения thm

 

Версия glibc и бинарники

Форум — Development

Здравствуйте! При разработке окружения рабочего стола возник такой вопрос. Со следующего релиза апплеты будут храниться отдельными *.so либами. И те, которые идут из коробки, и те, которые можно будет устанавливать из магазина апплетов. И, собственно, вопрос: а не возникнет ли проблем при обновлении glibc в системе с этими бинарниками? Не придется ли пользователю через какое-то время после установки перекомпилировать апплеты?

 , ,

thm
()

Инициализатор класса или функция

Форум — Development

Здравствуйте! Уже достаточно давно я поправляю людей, которые говорят, что в Python есть ‘функция int’, т.к. int - это, естественно, класс, у которого есть инициализатор. Так что int(‘101’, base=2) - это не вызов функции, а вызов обычного инициализатора класса int

Но недавно я, к своему удивлению, в официальной документации на странице Built-in Functions в табличке увидел все основные типы данных. Т.е. из документации следует, что int(), str(), bool() и т.д. - функции.

Так где же правда?

 ,

thm
()

Координаты виджета в QScrollArea

Форум — Development

Здравствуйте! Столкнулся с такой проблемой. У меня есть много элементов в QFrame, который я указал виджетом для QScrollArea. Когда я пытаюсь получить координаты какого-либо виджета, я получаю их относительно этого QFrame. Т.е. условно (10, 6125). А мне надо получить координаты виджета так, как я его вижу на экране. Т.е. что-то вроде (10, 310). Я могу получить координаты курсора (QCursor::pos()), но меня интересует точная геометрия виджета (т.к. я использую точки topLeft и другие). Пробовал методы mapToGlobal, mapFromGlobal и т.д., но, видимо, я так и не допонял чего-то, ни к чему это не привело. Подскажите, пожалуйста, в каком направлении думать? Спасибо

 , ,

thm
()

Перестал работать Wireguard

Форум — Admin

Здравствуйте. Сегодня днем Wireguard сначала стал очень медленно работать, потом вообще все сдохло и перестало подключаться. Я пробовал посылать UDP-пакеты через nping (быть может как-то не так?), ничем не помогло. Нашел форк официального клиента Wireguard - AmnesiaWG, но как я там ни игрался с параметрами, ничего не работает. Я так и не понял с AmnesiaWG, надо ли менять что-то на стороне сервера? Подскажите, пожалуйста, в каком направлении думать, это очень для меня критично. Спасибо большое

P.S. Дом.ру СПБ + МТС СПБ

UPD: проблему решил поднятием Vless+Reality

 ,

thm
()

Несколько устройств к Wireguard

Форум — Admin

Здравствуйте. Столкнулся с такой проблемой, когда поднимал Wireguard VPN на VPS сервере. Если подключаться с одного устройства, то все работает отлично, но если в этот же момент подключиться с какого-нибудь другого устройства, то все начинает работать дико медленно, а точнее вообще почти не работает. Подскажите, пожалуйста, с чем это может быть связано? Заранее спасибо. P.S. конфиги прилагаю

/etc/wireguard/wg0.conf на сервере

[Interface]
PrivateKey = ...
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
ListenPort = 51820

[Peer]
PublicKey = ...
AllowedIPs = 10.0.0.2/32, 10.0.0.3/32

Конфиг на клиенте

[Interface]
Address = 10.0.0.2/32
PrivateKey = ...
DNS = 8.8.8.8

[Peer]
PublicKey = ...
Endpoint = ...
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21

 

thm
()

Окно, требующее внимания

Форум — Development

Здравствуйте! Я решил расширить функционал апплета Launcher на своей панели, чтобы это была не просто иконка, которая запускает то, что прописано в ключе Exec в Desktop Entry, а чтобы она была чуточку умнее и показывала, если приложение открыто (подобно Dock в Mac OS X). Но тут же возник вопрос, как понять, что окно попросило внимания? В Qt, например, есть такой метод QApplication::alert (да и во всех других тулкитах есть подобное). На Mac OS X программа, которая требует внимания, подпрыгивает в доке (но не как при открытии, а посильнее). на винде в таскбаре окно моргает желтым цветом. Собственно, вопрос - как получить этот сигнал, что окно попросило обратить на себя внимание? Никакого подобного сигнала в классах KWindowSystem и KX11Extras я не нашел. Заранее спасибо

 , , ,

thm
()

Кеш для Desktop Entry

Форум — Development

Здравствуйте! Возник такой вопрос (опять же, контекст - разработка легковесного DE). У меня сейчас при каждом открытии меню приложений читаются все *.desktop файлы из /usr/share/applications и ~/.local/share/applications (я знаю, что это не совсем правильно, и на самом деле надо проходиться по всем директориям из $XDG_DATA_DIRS, но пока что так). Я написал с нуля класс, который читает и парсит Desktop Entry (можно было бы использовать QSettings, как я собственно и делал раньше, но формат *.ini не предполагает перечислений через точки с запятыми, а именно это представляет собой параметр Categories, поэтому раньше не было возможности сделать меню по категориям). Но как-то не очень легковесно это, по-моему, каждый раз читать, вполне возможно, за сотню с лишним файлов с диска. Я где-то видел, что для этого используется т.н. menu-cache. Вопросов встает несколько:

  • Стоит ли пользоваться этим menu-cache? Т.е., насколько я понял, создается один файл, в котором закешированы основные параметры из каждого Desktop Entry, и апплет читает уже только его, чтобы снизить нагрузку на диск. Хотя может я и неправильно понял?

  • Является ли он стандартом / есть ли подобный стандарт от тех же Freedesktop, например?

  • А как этот кеш обновляется? Вот я изменил как-нибудь, допустим, файл *.desktop в /usr/share/applicaitons. И что, при добавлении/изменении/удалении надо каждый раз прописывать какую-нибудь команду для обновления кеша? А как сделать, чтобы пакетный мендежер автоматически это делал? Например, в Debian, насколько понимаю, так это и происходит. Мы же, когда ставим пакет, пакетный менеджер этот кеш меню автоматически обновляет.

Или не стоит это все того, и лучше оставить как есть?

UPD: Либо есть еще вариант. Один раз при запуске прочитать все файлы. Допустим, повесить QFileSystemWatcher на ту же /usr/share/applications и при изменении каком-либо обновлять список приложений, чтобы не делать это при каждом открытии меню приложения.

Заранее спасибо.

 , , ,

thm
()

У меня у одного LOR тупит?

Форум — Linux-org-ru

Собственно, сабж. Последние 3-4 дня просто бывает невыносимо. Вроде работает, работает и вдруг повисает намертво, ни страницу не открыть, ни сообщение не отправить. Потом вроде все нормально, и в какой-то момент опять повисает. Это только у меня?

 

thm
()

Как добавить путь к библиотеке в кеш?

Форум — Development

Здравствуйте. Столкнулся с такой проблемой за неимением опыта работы с кастомными библиотеками.

Допустим, я написал библиотеку. Положил header-файлы в /usr/include/mylibrary, положил *.so файлы в /usr/lib/mylibrary, в Qt проекте прописал библиотеку, все компилируется, все хорошо. Но чтобы запустить этот бинарник приходится прописывать что-то подобное:

LD_LIBRARY_PATH="/usr/lib/mylibrary" ./program

Прописал ldconfig -v, моей либы там нет.

Файл называется правильно, ну т.е. условно: /usr/lib/mylibrary/libmylibrary.so.1.0.0 и symlink’и на *.so.1.0, *.so.1 и *.so.

Подскажите, пожалуйста, что делать?

 , , ,

thm
()

Подскажите утилиту для обхода DPI

Форум — General

Здравствуйте! Я вот все говорил, что с User-Agent от хрома YT работает хорошо, какое-то время это было действительно так, но вот сейчас стало просто невыносимо. При том даже в Chromium. И даже со включенным QUIC везде (правда он как-то странно работает, cloudflare-quic.com показывает все равно HTTP/2). Все время везде советуют GoodbyeDPI, но он только под оффтопик, а тот же Green Tunnel не дал никакого результата. Подскажите, пожалуйста, что-то действующее для линукса.

 , ,

thm
()

Зависают программы после сна/блокировки экрана

Форум — General

Здравствуйте! Уже долгое время достаточно мучаюсь с такой проблемой. Когда я блокирую экран либо отправляю комп в сон, обратно залогинившись, вижу, что element-desktop намертво висит. т.е. даже UI поток стоит, окно прозрачное. Что интересно, увеличивается потребление процессора и температура в этот момент. В основном это только с element-desktop происходит, но замечал пару раз подобное и за VLC (хотя между ними, наверное, общего мало - одно написано на Electron, другое на Qt). Если подождать минут 5-7, то в конце концов он отвисает. Ну либо, если прибить процесс, запустить заново, то тоже работает. Если важно:

  • Arch Linux
  • Дисплейный менеджер: LightDM (+ light-locker для блокировки экрана)
  • Оконный менеджер: Openbox
  • i7-11700F / GTX1660S (проприетарный драйвер NVIDIA ессно стоит) / ASUS PRIME B560-PLUS

Подскажите, пожалуйста, что можно сделать с этим. Мб кто-то знает, с чем это может быть связано?

 , ,

thm
()

Анимация окна

Форум — Development

Здравствуйте! Возник такой вопрос (опять же, контекст - разработка окружения рабочего стола). Есть у меня анимация при запуске панели. Реализую достаточно просто - от координаты x или y (в зависимости от расположения панели) отнимаю/прибавляю толщину панели - это получается начальная точка. А изначальное значение - конечная точка. И обычным QPropertyAnimation делаю анимацию параметра «pos». Но я один момент не учел. Я начал писать сервер уведомлений и туда такую же анимацию решил сделать. А щас, когда начал этот прототип тестить, заметил такую проблему (которую впрочем с самого начала стоило предполагать). Если уведомление справа сверху, то, соответственно, ширину этого уведомления я прибавляю к координате x, чтобы оно, как бы, выезжало с правой стороны экрана. Но у меня справа от основного монитора еще один монитор. И получается, что, естественно, окно появляется там, а затем уже передвигается на основной. Хотелось бы добиться такого поведения, чтобы окно было видно только на целевом мониторе, даже если его координата изначально задана за его пределами. Такое вообще возможно реализовать? Заранее спасибо.

 ,

thm
()

Как сделать, чтобы QWidget был всегда минимального размера?

Форум — Development

Здравствуйте! Имеется панель. У нее есть опция expand, при включении которой, панель разворачивается на всю ширину/высоту экрана. Но если ее выключить панель принимает минимально возможный размер, с учетом апплетов, которые на нее помещены. Это прекрасно работает, когда панель статического размера. Но вот если ее размер по какой-либо причине изменился (например, в списке открытых окон появилась новая кнопка или отработала анимация у Launcher’а), то после того, как все вернулось, как было, размер панели не становится снова минимальным, а остается тем, до которого она увеличилась.

Пробовал (пока что на горизонтальной панели только): this->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);

Но ни к какому результату это не привело.

Подскажите, пожалуйста, что еще можно попробовать.

UPD: раньше эта проблема решалась перезаданием геометрии панели при каждом изменении ее размера, но хотелось бы найти более легковесное решение

 ,

thm
()

Универсальный способ выключения системы

Форум — Development

Здравствуйте. Возник такой вопрос при разработке окружения рабочего стола. У меня до текущего момента кнопки выключения и перезагрузки запускали systemctl poweroff и systemctl reboot соответственно. Но как быть с системами без systemd? Я нашел способ, который работает в Artix Linux, можно прописать loginctl poweroff. Но, насколько я понял, это работает только с elogind (потому что loginctl в Арче сказал, что не знает такой команды - poweroff). Есть какой-то универсальный способ, который будет работать везде, чтобы не городить костыли?

 , , ,

thm
()

Toshiba AC100

Форум — Linux-hardware

Доброго времени суток. Нашел сие чудо в инете, уж очень вдохновил линукс на ARM-ноуте, который такой компактный и столько может держать батарейку. Хочу на барахолке купить. Они многие б/у уже даже с линуксом и продаются. Вопрос в том, что я не видел, чтобы туда кто-то ставил что-то новее, чем убунта 11.10. хз, мб потому что я один такой упоротый. Есть ли там хоть какая-то жизнь на Arch Linux ARM? нашел какой-то гайд по установке ALARM туда (https://gist.github.com/Nokius/81cd46405b537931a472e0a55abb7ccd), надо собирать ядро кастомное. ну, это в принципе не проблема. Просто хотел спросить, мб есть здесь кто-нибудь, кто имел опыт с подобного рода девайсами, как оно?

 , ,

thm
()

Домашний кокпит A320

Галерея — Рабочие места

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

Оборудование:

  • i7-11700F / GTX1660S / 32 GB RAM
  • 2 iPad’а для приборов
  • Logitech Extreme 3D Pro
  • Logitech Pro Flight Throttle Quadrant (на фото не влез, у меня под правую руку)
  • SB Play 3 + уже не помню какая гарнитура Sennheiser

Софт:

  • Arch Linux
  • X-Plane 11 (самолёт ToLiss A319 + кастомные сценарии + плагины и т.д.)
  • IVAO Pilot Client
  • AntiMicroX (для Push-To-Talk)
  • x11vnc + RealVNC Viewer

P.S. в будущем планирую собирать полный кокпит A320 :)

 , , ,

thm
()

О глобальном меню

Форум — Development

Здравствуйте! Заинтересовал вопрос глобального меню в GNU/Linux. Я разрабатываю окружение рабочего стола (уже не раз здесь упоминал свой проект) и хотелось бы добавить данный функционал. Но я столкнулся с отсутствием нормальной документации по libdbusmenu, в частности, спецификации DBusMenu. +, как я вижу, проект заброшен, да и далеко не все программы экспортируют своё меню, используя этот стандарт.

Вопрос такой. Имеет ли смысл написать с нуля свою библиотеку, реализующую функционал глобального меню (как серверную, так и клиентскую часть) и удастся ли хоть как-нибудь её распространить среди Open Source проектов (допускаю необходимость делать коммиты самому), если она, например, будет написана на чистом C, и также будет опционально иметь биндинги с Qt, GTK, версию на Python и т.д.? Суть в том, чтобы предоставить нормальную документацию по этой библиотеке и сделать её каким-никаким, но стандартом.

Либо же этим всем заниматься не стоит и лучше таки освоить имеющийся стандарт DBusMenu, и как-то оживить libdbusmenu?

Спасибо.

 , ,

thm
()

plainDE 0.7.1

Галерея — Скриншоты

На скриншоте выше моя конфигурация собственного окружения рабочего стола plainDE, которое я начал разрабатывать 2 года назад. С последнего поста о plainDE прошло чуть больше года. За это время было выпущено 9 релизов, включая последний –– 0.7.1, в которых повышена стабильность и добавлено множество новых возможностей, например:

  • апплет StatusNotifierItem-трея;
  • поддержка вертикальных панелей;
  • апплет вывода CLI команды;
  • поддержка прозрачной темы;
  • возможность установить кастомный задний фон панели;
  • многое другое.

Релиз 0.7.1, среди прочего, добавляет возможность авто-скрытия панели и позволяет автоматически установить панель по центру экрана, тем самым предоставляя инструменты, необходимые для создания Dock-панели (пример таковой на скриншоте).

Апплет CLI Output предоставляет возможность создавать своего рода апплеты самостоятельно, которые могут выводить текст вывода CLI-приложения напрямую либо информацию, указанную в конфигурационном файле, в зависимости от текста из stdout или кода выхода.

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

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

Конфигурация на скриншоте не дефолтная и является одной из множества конфигураций, возможных с plainDE.

Буду рад багрепортам и пожеланиям.

Сайт проекта: https://plainDE.github.io/

Arch Linux

plainDE + Openbox + pcmanfm + xcompmgr

Иконки: Mint-Y и Mac OS X Lion

Шрифт: Rosemary

 , , , ,

thm
()

Прозрачность окна в Qt

Форум — Development

Здравствуйте. Хочу для панели сделать возможность использовать прозрачный фон. Делаю так:

...
this->setObjectName("panel");
...
this->setAttribute(Qt::WA_TranslucentBackground);
this->setAttribute(Qt::WA_NoSystemBackground);
this->setAttribute(Qt::WA_TransparentForMouseEvents);
...
this->setPalette(Qt::transparent);
this->setAutoFillBackground(false);
this->setAttribute(Qt::WA_OpaquePaintEvent);
...

в QSS добавил:

QWidget#panel {
    background-color: transparent;
}

В итоге получается окно с черным фоном. Методом исключения выяснил, что виноват в этом вызов this->winId(); Когда закомментировал, окно стало с прозрачным фоном, но мне нужно знать WId окна, а другого способа его получить, я не нашёл. Глянул в qwidget.cpp. Единственное, что показалось странным, включение аттрибута Qt::WA_NativeWindow. Попробовал перед установкой прозрачного фона его отключить - не помогло. Подскажите, пожалуйста, почему после получения WId окна пропадает прозрачность, и что делать?

 , ,

thm
()

Микрофон C1-U

Форум — Linux-hardware

Здравствуйте! Подскажите, пожалуйста, работает ли в Linux’е микрофон C1-U из коробки? Крайне мало информации по этому поводу в интернете. Спасибо.

 

thm
()

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