ランチャーが1つにまとめられているが、起動後に別のアイコンを作成するいくつかのプログラムに問題があります。ランチャーは、生成されたウィンドウを追跡して、整理しやすくすることはできますか?または、これはUnity自体のバグですか?
問題ではないかもしれませんが、この特定のプログラムはモノラルプログラムであり、生成されたアイコンがパネルとしてリストされます。
このような問題は、Unityのアプリケーションマッチングフレームワークに関連しています。技術的な詳細を簡素化するために、プログラムウィンドウとアプリケーションはUbuntuにとって2つの別個のものです。 Ubuntuは、どのアプリケーションが特定のウィンドウを所有しているかを「推測」する必要があります。そして、時にはその推測が失敗し、ランチャーに疑問符が表示されます。
失敗の原因は次のとおりです。
質問(KeePass2)に示されているアプリケーションには、タイプ1の問題があります 適切なバグトラッカーに報告されています 。
以下の例は技術的であり、Ubuntuランチャーで独自のアプリケーションを適切に表示したいプログラマーを対象としています。
アプリケーションをUnityと統合するには、つまり、ダッシュで検索してランチャーに配置するには、デスクトップエントリが必要です。このようなエントリは、/usr/share/applications/
、/usr/local/share/applications/
、および$HOME/.local/share/applications/
に配置されます(後者の2つは、システム全体およびユーザー専用のサードパーティソフトウェア用です)。これらは.desktop
拡張子で終わり、次の基本形式に従います。
[Desktop Entry]
Type=Application
Name=My Application's Name
Icon=/file/path/of/my/icon
Exec=/file/path/of/my/executable
このエントリは、Exec
実行可能ファイルを呼び出してプログラムを開始します。そのプログラムがウィンドウまたはダイアログを表示するたびに、Unityはその実行可能ファイルがこのアプリケーション記述に「属している」ことに気付き、ランチャーで指定されたName
およびIcon
を使用します。
これは最低限の例です。 正式な仕様 は、多くの高度な機能をカバーしています。
my_app.desktop
は有効なアプリケーションディレクトリに存在すると仮定しますが、
/file/path/of/my/icon
はファイルシステムに存在しません。/file/path/of/my/icon
は画像ではありません。上記のいずれの場合でも、Ubuntuはランチャーでアプリケーションウィンドウを適切にリストできません。
Ubuntu 11.10の時点で、BAMFにはアプリケーションの正しいマッチングを妨げる多数のバグがあります。一般的な(一時的な)落とし穴は次のとおりです。
Exec
パスは、通常のファイルではなく シンボリックリンク ですこれらの場合、プログラマには、シンボリックリンクの抽象化を削除したり、実行可能ファイルに直接リンクするなどの回避策を使用する以外の選択肢はありません。これらのどちらも、デスクトップエントリの仕様自体には必要ありません。
ウィンドウは、WM_CLASSプロパティが設定されている場合にのみ、アプリケーションに一致させることができます。 X11でこれを行うには、次を使用します。
XSetClassHint( display, window, &class_hints );
フィールド 'res_name'および 'res_class'を持つXClassHint構造体にポインターを渡す必要があります。