Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 18911 - Hyprland: починить курсоры в xwayland   Make a simular bug
Summary: Hyprland: починить курсоры в xwayland
Status: CLOSED FIXED
Alias: None
Product: Ximper Linux
Classification: Продукты (Products)
Component: Общее (show other bugs)
Version: не указана
Hardware: Other Linux
: P4 minor
Target Milestone: ---
Assignee: Кирилл Уницаев
QA Contact: Кирилл Уницаев
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 18855
  Show dependency treegraph
 
In work:
Reported: 2026-02-23 03:30 MSK by Кирилл Уницаев
Modified: 2026-03-02 22:05 MSK (History)
0 users

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Кирилл Уницаев 2026-02-23 03:30:24 MSK
В hyprland для курсоров используют свой формат - hyprcursor, он не работает в XWayland, поэтому во многих программах неправильно отображается курсор.

Я дополнительно указываю тему и для xcursor, но почему-то это тоже сломалось и курсор не отображается.

Нужно починить отображение курсора в XWayland
Comment 1 Кирилл Уницаев 2026-03-02 22:05:00 MSK
Долго пробовал ставить разные темы, проверяя, может проблема в неправильной теме, но нет

помогло создание файла ~/.icons/default/index.theme и указания туда темы, но я считаю, что это не решение проблемы.

Удалил файл - курсор пропал

Сделал небольшой скрипт для проверки:
import ctypes, ctypes.util

xlib = ctypes.CDLL(ctypes.util.find_library('X11'))
xcursor = ctypes.CDLL(ctypes.util.find_library('Xcursor'))

xlib.XOpenDisplay.restype = ctypes.c_void_p
xcursor.XcursorGetTheme.restype = ctypes.c_char_p
xcursor.XcursorGetTheme.argtypes = [ctypes.c_void_p]

dpy = xlib.XOpenDisplay(None)
if dpy:
    theme = xcursor.XcursorGetTheme(dpy)
    print(f'XcursorGetTheme: {theme}')

Возвращает XcursorGetTheme: b'rose-pine', значит приложение получает тему...

Тесты завели меня к xrdb
xrdb -query - пусто

Попробовал вручную вписать переменные:
printf 'Xcursor.theme: $xcursor_theme\nXcursor.size: $cursor_size\n' | xrdb -merge

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

Добавил это в системный конфиг:
$hyprcursor_theme = rose-pine-hyprcursor
$xcursor_theme = rose-pine
$cursor_size = 24

#---------- Hyprcursor
env = HYPRCURSOR_THEME, $hyprcursor_theme
env = HYPRCURSOR_SIZE, $cursor_size

#---------- XCursor
env = XCURSOR_THEME, $xcursor_theme
env = XCURSOR_SIZE, $cursor_size

exec = printf 'Xcursor.theme: $xcursor_theme\nXcursor.size: $cursor_size\n' | xrdb -merge


Теперь тема обновляется во всех местах при обновлении переменных.
Задачу считаю выполненной.
Comment 2 Кирилл Уницаев 2026-03-02 22:05:19 MSK
Сразу закрываю