Как вернуть потерянный курсор занятости при открытии файла/приложения?

Как вернуть потерянный курсор занятости при открытии файла/приложения?

Об этом есть сообщение об ошибке вhttps://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/862662, хотя в последнее время я не уверен, действительно ли это баг Nautilus или нет. Перед установкой Precise я протестировал его, установив PCManFM, чтобы посмотреть, показывает ли открытие файлов из него занятый курсор во время ожидания, но занятый курсор по-прежнему не отображается.

Занятый курсор работает и в Oneiric, и в Precise Live USB, и в более раннее время, когда я использовал Oneiric, он также работал. Затем я установил Precise, оставив свою домашнюю папку неотформатированной, но проблема осталась. Я также попытался удалить папки и файлы конфигурации в своей домашней папке (на самом деле переместить их в папку, чтобы их можно было восстановить), выйти из системы и войти снова, но проблема все еще осталась (в Oneiric я создал нового пользователя, чтобы проверить, не проблема ли это с конфигурацией, но тоже безрезультатно).

Таким образом,учитывая, что занятый курсор работает в сеансе Live, есть ли способ заставить курсор занятости работать нормально в установленной системе (например, отредактировав некоторые настройки системы)?

Это распространенная проблема или она возникает только на определенном оборудовании?

решение1

Два возможных решения этой ошибки:

  • Установитьпакет "gdm". Установщик спросит, какой менеджер входа вы предпочитаете, выберите «gdm» вместо «lightdm».
  • Придерживайтесь lightdm, но настройте свою учетную запись так, чтобы вам не приходилось вводить пароль для входа. Если ваша домашняя папка зашифрована, не повезло, это невозможно. Если нет, активируйте опцию «автоматический вход» в разделе «учетные записи пользователей» на панели настроек системы.

Обратите внимание, что это решение не идеально. Только приложения GTK будут иметь занятый курсор при запуске. Qt и другие, такие как VLC и Libreoffice, по-прежнему не будут.

решение2

Очень быстро, еще один возможный обходной путь:

ПроверятьИндекс /doc/startup-notification-devel-0.12/examplesи получить test-monitor.c; изменить файл так, чтобы он соответствовал:

...
//#include <config.h>
#ifndef SN_API_NOT_YET_FROZEN
#define SN_API_NOT_YET_FROZEN
#endif
#include <libsn/sn.h>
...
int
main (int argc, char **argv)
{
  Display *xdisplay;
  SnDisplay *display;
  SnMonitorContext *context;

  setbuf (stdout, NULL);

  xdisplay = XOpenDisplay (NULL);
...

Построить с:

sudo apt-get install libstartup-notification0-dev
gcc -I/usr/include/startup-notification-1.0 test-monitor.c -o test-monitor -lX11 -lstartup-notification-1

Затем:

$ sudo apt-get install python-osd
$ cat > osd.py <<"EOF" 
import pyosd # XOSD
import time
import sys
import os

# default_font="-*-helvetica-medium-r-normal-*-*-360-*-*-p-*-*-*"
# xlsfonts | less # to find fonts, say
# -misc-fixed-bold-r-normal--0-0-75-75-c-0-iso10646-1:
tfont="-*-fixed-bold-r-normal--*-*-100-*-c-*-*-*"
osd = pyosd.osd(font=tfont, colour='#FF0000', lines=3)
osd.set_align(pyosd.ALIGN_CENTER)
osd.set_pos(pyosd.POS_MID)
display = osd.display
osd.set_timeout(1)
# display will last as long the python program hasn't exited!
#display("Hello") 
#display(50, type=pyosd.TYPE_SLIDER, line=0) 

display("Hello from pyosd/XOSD", line=1)


# disable stdin buffering (ok on Python 2.7)
ttfo = os.fdopen(sys.stdin.fileno(), 'r', 0)

while 1:
  try:
    inline = ttfo.readline().rstrip()
  except KeyboardInterrupt:
    break
  if not inline:
    break
  print(inline)
  for ix in range(0,50):
    display(ix, type=pyosd.TYPE_PERCENT, line=0) 
    display(inline, line=1)
    display(ix, type=pyosd.TYPE_PERCENT, line=2) 
    time.sleep(0.02)
  time.sleep(1)
EOF

... и тест:

./test-monitor | stdbuf -oL grep description | python osd.py

В /etc/lightdm/lightdm.confadd session-setup-script=/path/to/mylightdm-startup.sh; и в mylightdm-startup.sh`:

SND=/path/to/folder
($SND/test-monitor | stdbuf -oL grep description | python $SND/osd.py) &

Это должно дать вам простое уведомление на экране; другая (более сложная) возможность — использованиеGhosd — экранное меню (OSD) с прозрачностью(такжездесь).

решение3

Эта ошибка присутствует, если вы используете менеджер входа lightdm. Ошибка связана с lightdm, GDK3 и спецификацией Xorg, и она подробно описана вОшибка Launchpad #1024482.

Чтобы исправить это, необходимо установить GDK_CORE_DEVICE_EVENTSпеременную окружения, которая заставит GDK3 не использовать вызов Xorg при возникновении ошибки.

echo "GDK_CORE_DEVICE_EVENTS=true" | sudo tee ~lightdm/.pam_environment

Связанный контент