LINUX.ORG.RU

Сообщения thm

 

[РЕШЕНО] Откуда segfault?

Форум — Development

Здравствуйте. Имеется QListWidget* menuAppsList и QString mask. Пишу функцию для поиска по меню приложений:

void AppMenu::searchApps(QListWidget* menuAppsList, QString mask) {
    QList<QListWidgetItem*> searchResults = menuAppsList->findItems(mask, Qt::MatchContains);
    menuAppsList->clear();
    foreach (QListWidgetItem* item, searchResults) {
        menuAppsList->addItem(item);
    }
}

При обращении к элементу item (будь то item->text() или добавление в QListWidget - получаю Segmentation Fault). Пробовал по-разному (составлять список searchResults вручную циклом, тоже самое; пробовал динамически выделять память под список searchResults - тоже самое). Проходился дебагом, доходит до ассемблера. Проблема кроется именно где-то в функции, т.к., перенеся функцию в новый проект без сигналов и слотов, получаю тот же segfault. Подскажите, пожалуйста, в чем может быть проблема. Спасибо.

 , ,

thm
()

Обработка XEvent как сигнала

Форум — Development

Здравствуйте. Для отображения списка открытых окон в текущий момент из документации я выбрал способ через обработку события XEvent. В итоге получилось как-то так:

...
Display* display;
...
void updateWindowList(QHBoxLayout* windowList) {
    XEvent event;
    XNextEvent(display, &event);
    if (event.type == CreateNotify) {
        // обновление списка окон в windowList
    }
}
...
int result;
display = XkbOpenDisplay(getenv("DISPLAY"), NULL, NULL, NULL, NULL, &result);
Таймером обрабатывать событие не получилось (таймер, также как и цикл, который для теста делал, просто перестает выполняться) (да и не эффективно это). Подскажите, пожалуйста, каким образом можно сделать событие XEvent слотом, который можно обработать сигналом. Спасибо.

 , , ,

thm
()

Получение текущей раскладки клавиатуры C++/Qt [РЕШЕНО]

Форум — Development

Здравствуйте. Имеем C++, Qt, Xorg, setxkbmap. Подскажите, пожалуйста, как получить текущую раскладку клавиатуры вида us или ru. Пробовал разные варианты:

  • Стандартными функциями Qt (возвращает us вне зависимости от реальной раскладки)

  • https://github.com/nonpop/xkblayout-state (дает результат, но запрашивать данные с него, пусть даже раз в 0.5 сек, сильно потребляет ресурсы)

  • setxkbmap -print | awk -F"+" ‘/xkb_symbols/ {print $2}’ (также дает результат, но костыльно и также потребляет ресурсы)

Собственно, вопрос, как средствами Qt или чем-то другим (но желательно не очень костыльно) получить текущую раскладку в системе? Спасибо

 , , ,

thm
()

Сигналы и слоты - проблема [РЕШЕНО]

Форум — Development

Есть форма, на которой есть Label. Нужно обновлять его раз в секунду (выводить время).

Есть функция setTime, которая получает время от другой функции и выводит на форму:

void setTime(Ui::panel* ui, bool showSeconds) {
    QString currentTime = clockApplet::getCurrentTime(showSeconds);
    ui->timeLabel->setText(currentTime);
}

Нужно делать это раз в секунду, поэтому использую QTimer.

void setRepeatingActions(Ui::panel* ui, panel* w) {
    QTimer* timeSetTimer = new QTimer();
    timeSetTimer->setInterval(1000);
    if (!config["showSeconds"].toBool()) {
        //!  w->connect(timeSetTimer, SIGNAL(timeout()), w, SLOT(setTime(ui,false)));
        //!  w->connect(timeSetTimer, &QTimer::timeout, w, setTime(ui,false));
    }
    else {

    }
    timeSetTimer->start();
}

Оба варианта под восклицательным знаком не работают. В первом случае все компилируется, но в консоль падает: No such slot panel::setTime(ui,false). Во втором случае ему в принципе аргументы функции connect() не нравятся, no matching member function for call to ‘connect’. Подскажите, пожалуйста, что сделать, чтобы исправить.

 , , ,

thm
()

Получение системного трея

Форум — Development

Здравствуйте! Подскажите, пожалуйста, каким образом можно получить системный трей из Python+PyQt5? Я хочу сделать, примерно как это реализовано в KDE.

 , , , ,

thm
()

Как получить текущую раскладку клавиатуры из Python?

Форум — Development

Здравствуйте! Нужно получить раскладку клавиатуры из Python. Пробовал просто из консоли через setxkbmap (и пробовал из Python запускать), работает, но очень громоздко:

setxkbmap -print | grep xkb_symbols | awk '{print $4}' | awk -F"+" '{print $2}'

Собственно, вопрос, можно ли покороче, или есть может какая-нибудь библиотека для Python, которая это умеет? Если в Wayland это проще, то как?

 , , , ,

thm
()

Работа с D-Bus

Форум — Development

Здравствуйте. Подскажите, пожалуйста, с чего начать изучение D-Bus. И где его юзать проще, в Python или в C++?

 , , , ,

thm
()

Получение глобального меню

Форум — Development

Здравствуйте! Вопрос такой. Каким образом можно получить из терминала глобальное меню какого-либо окна (допустим, по ID из wmctrl -l) и взаимодействовать с ним (Xorg)? Имею ввиду так, как это реализовано в Unity или Aqua в Mac OS X.

 , , , ,

thm
()

Сломанные ссылки при скачивании через wget

Форум — General

Здравствуйте! Есть такая проблема. Допустим, я хочу скачать весь сайт wiki.archlinux.org. Я запускаю wget так:

wget --mirror -p --convert-links --no-parent -P ./ https://wiki.archlinux.org/
, либо так
wget -r -k -l 7 -p -E -nc --no-parent https://wiki.archlinux.org/
. Результат один и тот же. Ссылки остаются нерабочими. А именно: на страницах, которые ведут на другую страницу Arch Wiki ссылка вида:
<a href="/title/...">...</a>
. А т.к., это не https://wiki.archlinux.org/title/..., то параметр --convert-links не переделывает его под локальный путь и ссылка ессно не работает. Подскажите, пожалуйста, что с этим делать.

 , ,

thm
()

[РЕШЕНО] Получение имени окна с помощью xdotool / wmctrl

Форум — Development

Здравствуйте! Есть вопрос насчет утилит xdotool / wmctrl. Как получить заголовок окна по его ID? У меня есть ID (я его получил с помощью wmctrl -l), мне нужно по нему найти нужное окно. Искал в интернете, нашел только наоборот поиск по заголовку окна.

 , , ,

thm
()

Выбор оконного менеджера / разработка оконного менеджера

Форум — Development

Здравствуйте! Хочу написать окружение рабочего стола на Qt, и начать решил с оконного менеджера. Подскажите, пожалуйста, какой оконный менеджер подойдет для этих целей (можно написать свою тему для него, + он не является полноценным окружением, таким как OpenBox), либо с чего стоит начать разработку своего собственного оконного менеджера? Спасибо.

 , ,

thm
()

[РЕШЕНО] Создание интерфейса VIRTUAL1 в конфигах Х

Форум — General

Здравствуйте! Возникла необходимость подключить устройство по VNC в качестве второго монитора к компьютеру, подключить провод нет возможности. Для этого нашел x11vnc. Я уже разобрался как просто дублировать экран, но мне надо «расширить». Пробовал создавать по инструкции в интернете файл по пути /usr/share/X11/xorg.conf.d/20-intel.conf содержания (без точек): Section «Device» ……..Identifier.«intelgpu0» ……..Driver……«intel» ……..Option…..«DRI»……«3» EndSection Но после перезапуска Х’ов с таким конфигом они перестали почему-то запускаться. Удалил, запустились ессно. Подскажите, пожалуйста, как сделать интерфейс VIRTUAL1 для его последующего использования через x11vnc. Спасибо. Intel Core i7-10510U / Intel UHD 620 / Arch Linux Вопрос решен. После того, как написал 20-intel.conf нужно было установить xf86-video-intel драйвер.

 , ,

thm
()

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