Скрыть курсор мыши linux

Как скрыть указатель мыши под Linux / X11?

Как скрыть указатель мыши под X11? Я хотел бы использовать встроенные библиотеки, чтобы сделать это, а не что-то вроде SDL (SDL_ShowCursor(0)) или glut (glutSetCursor(GLUT_CURSOR_NONE)). Кроме того, указатель мыши должен быть скрыт независимо от местоположения указателя, а не только в собственном окне.

9 ответов

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

к сожалению, возможность изменения темы глобального курсора во время выполнения неоднородна в приложениях и наборах инструментов X11. Вы можете изменить ресурс сервера Xcursor.theme , и никто не заметит (обычно это запрашивается только при запуске); вы можете сообщить xsettings который, похоже, влияет только на Gtk+ программы; KDE использует некоторую связь через свойства в корневом окне и т. д.

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

здесь описание как unclutter утилита делает это.

Unclutter-это программа, которая постоянно работает в фоновом режиме X11 сессия. Он проверяет положение указателя X11 (курсора) каждые несколько секунды, и когда он находит, что он не переместился (и нет кнопок нажатии на мышь, и курсор находится не в корневом окне) он создает небольшое подокно в качестве дочернего элемента окна, в котором находится курсор. Новое окно устанавливает курсор размера 1×1 но маска все 0, т. е. невидимый курсор. Это позволяет увидеть весь текст в например, xterm или xedit. Толпа людей согласится с этим. следует делать меньше отвлекает.

после создания программа ожидает, пока указатель покинет окно а потом уничтожает его, восстанавливая первоначальную ситуацию. События Button прозрачно передаются в родительское окно. Они обычно заставляют курсор появляться снова, потому что активный захват будет сделано программой пока кнопка вниз, поэтому указатель по-видимому, покинет окно, даже если его положение x y не изменится.

Я бы предпочел использовать более простой метод:

Читайте также:  Ntp установка времени linux

вы почти не видите курсор, все еще он доступен. Чтобы отключить мышь:

или отключить модуль мыши постоянно где-то в /etc/. Обратитесь к руководству по распределению.

альтернатива unclutter

Unclutter не работал для меня, так как он не хорошо играет с аппаратными ускоренными поверхностями (например, теми, которые производятся VA-API intels при декодировании видео). Поэтому я нашел программу, которая спрятала указатель мыши менее окольным путем,hhp, и переписал его в C с минимальными зависимостями, результат hhpc. Я сделал это, чтобы избавить Хаскелла от необходимости скомпилируйте его и потому, что hhp иногда перестает скрывать указатель мыши.

hhpc, полагается только на glibc и xlib , поэтому его легко построить, просто сделайте make release . Вы можете получить код и инструкции от мой репозиторий. Это очень эффективная память и процессор (потому что он почти ничего не делает).

Я закончил с использованием XDefineCursor как ephemient упомянул. Управляющее приложение изменило курсор корневого окна по умолчанию, а другие приложения (которые находятся под моим контролем) унаследовали его.

специфика кода выглядит так:

// Hide the cursor if (NULL==(display=XOpenDisplay(NULL))) < printf("Unable to open NULL display\n"); exit(1); >window = DefaultRootWindow(display); Cursor invisibleCursor; Pixmap bitmapNoData; XColor black; static char noData[] = < 0,0,0,0,0,0,0,0 >; black.red = black.green = black.blue = 0; bitmapNoData = XCreateBitmapFromData(display, window, noData, 8, 8); invisibleCursor = XCreatePixmapCursor(display, bitmapNoData, bitmapNoData, &black, &black, 0, 0); XDefineCursor(display,window, invisibleCursor); XFreeCursor(display, invisibleCursor); XFreePixmap(display, bitmapNoData); 

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

// Restore the X left facing cursor Cursor cursor; cursor=XCreateFontCursor(display,XC_left_ptr); XDefineCursor(display, window, cursor); XFreeCursor(display, cursor); 

для восстановления курсора левой руки X (так как это корневое окно, и я не хочу, чтобы он оставался невидимым. Я не уверен, но я также мог бы использовать

XUndefineCursor(display, window); 

Источник

Скрипт, скрывающий курсор мышки

Просто оставлю это здесь, потому как сам долго искал/пытался запилить скрипт на хоткей, который бы скрывал курсор мышки, а специальная для этого софтина unclutter, последняя версия которой вышла в 1994 году — уже не работает на современных wm/de, например на осоме и bspwm оно либо сегфолтится, либо течет.

Читайте также:  Rust linux no servers

Автор скрипта, Винсент Загарра II, не считал нужным публиковать его где-либо по причине уверенности в том, что это никому не нужно кроме него. Поделился кодом только после переписки по почте.

#!/bin/zsh ############################################################################ # author: milomouse # # detail: banish the mouse cursor to bottom-right corner of the screen and # # disable touchpad (optional); also undo this by returning mouse # # to last position (or center of screen) and enabling touchpad. # ############################################################################ # depend: xdotool: for controlling the mouse # # xdpyinfo: for finding screen dimensions # # synclient: for controlling the touchpad in laptops (optional) # ############################################################################ unsetopt nomatch scriptname=$(print - $0(^:t)) ## VARIABLE: set a temporary file for storing mouse position. FILE="/tmp/user-keep/$/.$" ## CODE: do not edit below this line unless you know what you are doing. function _help() < << EOF usage: $[option] options: -t | --toggle Enable or disable mouse -d | --disable Force disabling of mouse -e | --enable Force enabling of mouse -s | --show Display \$FILE location -h | --help Display this message depends: xdotool ($(print $/=*/not found>/\/*/installed>)) xdpyinfo ($(print $/=*/not found>/\/*/installed>)) synclient ($(print $/=*/not found>/\/*/installed>)) [optional] EOF exit > function __dimensions() < for exe in xdotool xdpyinfo; do which $&>/dev/null || < print "Missing required program: $" ; _err=1 > done [[ $ == 1 ]] && exit 1 xy=$<$<$<$<$<(M)$<"$(xdpyinfo 2>/dev/null)">#*dimensions:*\)>#*dimensions*:>/pixels*>// >/x/ > x=$<$<(s: :)xy>[1]> y=$<$<(s: :)xy>[2]> > function _mayberat() < if [[ $== "0" ]]; then print "You must set a temp file; see source code." && exit 1 fi if [[ ! -d $ ]]; then print "Directory for file does not existing, attempting to create. " mkdir -p $ || < print "Could not create \"$\", make sure you have proper write permissions." ; exit 1 > fi if [[ -f $ ]]; then _yesrat else _norat fi > function _yesrat() < __dimensions if [[ $== 1 ]]; then if [[ -f $ && $<#$(<$)> -eq 2 ]]; then xdotool mousemove $(<$) &>/dev/null rm -f $ &>/dev/null else xdotool mousemove $(($(print $)/2)) $(($(print $)/2)) &>/dev/null rm -f $ &>/dev/null fi which synclient &>/dev/null && synclient TouchpadOff=0 &>/dev/null else print "\$DISPLAY unavailable, aborting." exit 1 fi > function _norat() < __dimensions if [[ $== 1 ]]; then print $<$<$<$(xdotool getmouselocation 2>/dev/null)[1,2]//:/>#x>#y> >>! $ xdotool mousemove $(print $) &>/dev/null which synclient &>/dev/null && synclient TouchpadOff=1 &>/dev/null else print "\$DISPLAY unavailable, aborting." exit 1 fi > [[ -z $1 ]] && _help case $1 in '-t'|'--toggle') _mayberat ;; '-d'|'--disable') _norat ;; '-e'|'--enable') _yesrat ;; '-s'|'--show') print $ ; exit ;; '-h'|'--help') _help ;; *) [[ -z $@ ]] && _help || < print "unrecognized operation: $@ (see --help for usage)" ; exit 1 >;; esac 

Источник

Unclutter

Иногда замечал и, что указатель мыши закрывает ту часть экрана, где находится слово, которое вы читаете? Передвинуть мышь или догадаться, что скрывает указатель — небольшое беспокойство, но все-таки.

Unclutter — небольшой, но особенный пакет для X11. Он делает очень простую вещь, если вы не используете мышь, указатель скрывается — нет необходимости его видеть, если он не используется.

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

Unclutter лег ко использовать, п росто добавьте строку в меню «Сеансы»:

Теперь, если вы не будете двигать мышь, курсор пропадет после 5 секунд .

При возникновении проблем, в некоторых оконных менеджерах (например xmonad или i3), необходимо использовать команду:

-idle 2 Прятать курсор после 2 секунд.

-keystroke Прятать курсор, как только вы начинаете печатать на клавиатуре.

-not Не прятать курсор в окнах, перечисленных как аргументы этой опции.

Unclutter — поддержив аемый, стабильный и практически свободный от ошибок пакет, включенный почти во все дистрибутивы GNU/Linux.

Источник

Оцените статью
Adblock
detector