苦労の末、wxPHP 用の PHP モジュールをコンパイルし、何ができるかを確認するためにいくつかのスクリプトを作成しています。私の最初のデモでは、ウィンドウとタスク バー アイコンを作成しましたが、後者が機能しません。
これをUbuntu 14.04 LTSで実行しています。
私が使用しているスクリプトは次のとおりです。
<?php
// Create an icon (does not appear on Ubuntu 14.04 LTS)
$icon = new wxTaskBarIcon();
echo "Task bar available: " .
(wxTaskBarIcon::IsAvailable() ? 'Yes' : 'No') . "\n";
echo "Create task bar icon: " . ($icon ? 'OK' : 'Failed') . "\n";
$wxIcon = new wxIcon('icon.ico');
$ok = $icon->setIcon($wxIcon);
echo "Set image for icon: " . ($ok ? 'OK' : 'Failed') . "\n";
// Create a window (works fine)
$main = new wxFrame(null, wxID_TOP, "Title" );
$main->Show();
wxEntry();
ここで、Unity の「タスク バー」は、左側のアプリ ドックではなく、時計、サウンド、ネットワーク コントロールを備えたトップ バーであると想像できます。PHPタスクが実行されているときに、ドックに空白の灰色のアプリアイコンが表示されますが、それは私が求めている上部のステータスアイコンです。
上記のスクリプトからのコンソール出力は、すべてが正常であることを示しています。
Task bar available: Yes
Create task bar icon: OK
Set image for icon: OK
を存在しないファイルに変更しようとしましたicon.ico
が、これによりバックトレース ダイアログが表示され、使用しているアイコンが正常に読み込まれていることが示されます (そして、おそらく許容される形式です)。
編集:さらなる研究は次のことを示しています:
- 以前のバージョンの Ubuntu では、特にホワイトリストに登録されていない限り、アプリはタスクバー
gsettings
を使用できませんでした (ここで参照されているキーは、私の新しいバージョンの Ubuntu では見つからないことに注意してください)。 - それ以降のバージョンではAppIndicators と呼ばれるものが必要です
したがって、現時点では、Unity が操作を妨げていなければ私のコードは機能し、Mint などの他のディストリビューションでもすぐに機能すると思います。
Ubuntu 14でホワイトリストに登録する方法を説明するこのガイドを見つけましたが、これは最も満足のいくものではありません。些細なことをするために、信頼できるレポリストを変更する必要はありません。私が wxPHP で書かれたアプリケーションを配布したい場合、ユーザーはこれを受け入れられないと思うでしょう (またすべきです)。
調査にはいくつかの方法があり、現在アドバイスを求めています。
- wxPHP (または上流の wxWidgets) が AppIndicators をサポートしている場合に備えて、wxPHP で別のことを行います (私の推測では、サポートされていません)。
- AppIndicators が実行されているかどうかを検出し、実行されている場合は、PHP を使用して DBus メッセージを送信し、アイコンを作成します (AppIndicators の DBus メッセージ仕様を無駄に探しましたが)。
もう一度編集します。これはかなりニッチな質問であり、Ask Ubuntuには Ubuntu プラットフォームのプログラミング関連の質問が多数掲載されているため、そのサイトでDBus 固有の質問をしました。