ファイル/アプリを開いたときに失われたビジーカーソルを復元するにはどうすればよいですか?

ファイル/アプリを開いたときに失われたビジーカーソルを復元するにはどうすればよいですか?

これに関するバグレポートがありますバグ:ですが、最近になって、それが本当に Nautilus のバグなのかどうかわからなくなってきました。Precise をインストールする前に、PCManFM をインストールして、そこからファイルを開くと待機中にビジー カーソルが表示されるかどうかをテストしましたが、ビジー カーソルはまだ表示されません。

ビジー カーソルは Oneiric と Precise Live USB の両方で機能し、以前 Oneiric を使用していたときも機能していました。その後、Precise をインストールし、ホーム フォルダーを未フォーマットのままにしましたが、問題は解決しませんでした。また、ホーム フォルダー内の構成フォルダーとファイルを削除し (実際には、復元できるようにフォルダーに移動します)、ログアウトして再度ログインしてみましたが、問題は解決しませんでした (Oneiric では、構成の問題かどうかを確認するために新しいユーザーを作成しましたが、これも役に立ちませんでした)。

したがって、ビジーカーソルがライブセッションで機能することを考慮するとインストールされたシステムでビジー カーソルを正常に動作させる方法 (システム構成の編集など) はありますか?

これは一般的な問題ですか、それとも特定のハードウェアでのみ発生しますか?

答え1

このバグを回避するには、次の 2 つの方法があります。

  • インストール「gdm」パッケージインストーラーは、優先するログイン マネージャーを尋ねます。「lightdm」ではなく「gdm」を選択してください。
  • lightdm を使い続けてください。ただし、ログイン時にパスワードを入力しなくてもよいようにアカウントを設定してください。ホーム フォルダが暗号化されている場合は、残念ながらそれは不可能です。暗号化されていない場合は、システム設定パネルの [ユーザー アカウント] セクションの [自動ログイン] オプションを有効にしてください。

この解決策は完璧ではないことに注意してください。起動時にカーソルがビジー状態になるのは GTK アプリケーションだけです。Qt や、VLC、Libreoffice などの他のアプリケーションでは、カーソルがビジー状態になりません。

答え2

簡単に言えば、もう 1 つの回避策は次のとおりです。

チェック/doc/startup-notification-devel-0.12/examples のインデックスそして get 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

add ; および mylightdm-startup.sh` では次のようになります/etc/lightdm/lightdm.conf:session-setup-script=/path/to/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

関連情報