web-dev-qa-db-ja.com

Xcursorでカスタムマウスカーソルをオーバーライドする方法

rdesktopを使用してMicrosoft Windowsサーバーに接続すると、マウスカーソルがWindowsのトゥルーカラーカーソルのモノクロバージョンに設定されます。これは、輪郭のない白い矢印になるため、白い表面上でそれを見るのは非常に困難です。

Windowsマシンでカーソルを変更したくないのですが、Xcursorの動作についての私の理解は次のとおりです。

カーソルが設定されると、ファイル名で検索され(カーソルイメージのハッシュを使用)、一致が見つかった場合は、元のモノクロカーソルの代わりにそのXcursorが使用されます。

私の考えは、このファイルを提供し、その中により明確なカーソル画像(デフォルトの矢印のように)を置くことができれば、ほとんどの場合デフォルトの矢印を使用することで問題を解決できるということです。さらに、リモートマシンで必要な場合は、rdesktopがカーソルを他の何か(サイズ変更矢印など)に変更できるようにします。

  • 取得しているrdesktopカーソルイメージに使用するハッシュを見つけるにはどうすればよいですか?
  • そのハッシュを、使用しているテーマの通常の矢印カーソルにマップするにはどうすればよいですか?
8
Malvineous

私はこれを行う方法を考え出しました。まず、マウスカーソルを設定しているプログラムを実行する前に、XCURSOR_DISCOVER環境変数を設定する必要があります。私の場合はrdesktop

$ XCURSOR_DISCOVER=1 rdesktop ...

これにより、各カーソルのビットマップとハッシュが印刷されます1回のみ初めて設定されたとき。これは、デフォルトのWindowsカーソルが設定されたときに表示されるものです。これは、オーバーライドするイメージです。

Cursor image name: 24020000002800000528000084810000
...
Cursor image name: 7bf1cc07d310bf080118007e08fc30ff
...
Cursor hash 24020000002800000528000084810000 returns 0x0

Xcursorが欠落しているカーソルを探す場合、検索パスには~/.icons/default/cursorsが含まれるため、ここに欠落しているカーソルの画像を配置できます。

$ mkdir -p ~/.icons/default/cursors

ここで、ハッシュを既存の画像にポイントするだけです。アプリケーションがハッシュを設定しようとすると、代わりにそのイメージが使用されます。この場合、left_ptrテーマからVanilla-DMZ画像を使用する必要があります(これはデフォルトの矢印です)。

$ ln -s /usr/share/icons/Vanilla-DMZ/cursors/left_ptr ~/.icons/default/cursors/24020000002800000528000084810000

それでおしまい!変更はすぐに表示されます。

8
Malvineous