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

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

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

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

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

1
задан 28 April 2012 в 14:08

3 ответа

Просто очень быстро, другое возможное обходное решение:

Проверьте Индекс/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.conf добавить 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) с прозрачностью (также здесь).

0
ответ дан 28 April 2012 в 14:08

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

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

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

0
ответ дан 28 April 2012 в 14:08

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

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

echo "GDK_CORE_DEVICE_EVENTS=true" | sudo tee ~lightdm/.pam_environment
0
ответ дан 28 April 2012 в 14:08

Другие вопросы по тегам:

Похожие вопросы: