2015-11-21 17 views
5

私はwxPHP用のPHPモジュールをコンパイルして、何ができるのかを見るためにいくつかのスクリプトを書いています。私の最初のデモでは、ウィンドウとタスクバーのアイコンが作成されています。Ubuntu/UnityでwxPHPを使ってタスクバーのアイコンを作成するには?

私はこれをUbuntu 14.04 LTSで実行しています。私はUnityがクロック、音とネットワークのコントロールを備えたトップバーでの「タスクバー」を想像ではなく、アプリのドッキングなり、今

<?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(); 

:ここ

は、私が使用していますスクリプトです左手側。ドックには、PHPタスクが実行されているときに、空の灰色のアプリアイコンが表示されますが、その前にステータスアイコンが表示されます。上記のスクリプトから

コンソール出力はすべてがOKであることを示す:

Task bar available: Yes 
Create task bar icon: OK 
Set image for icon: OK 

アイコンは私がいることを示しており、私は存在しないファイルへicon.icoを変更しようとしているが、これはバックトレースの対話をポップusingは正常に読み込まれています(おそらく許容される形式です)。

編集:Ubuntuでの

したがって、現在のところ、私のコードは、Unityが動作を妨げていない場合、私のコードが動作するということです - それは他のdiミントのようなストロス。

私はthis guideがUbuntu 14でホワイトリストを作成する方法を説明していますが、これは最も不満足です。非常に些細なことをすると、信頼できるレポリストを変更する必要はありません。 wxPHPで書かれたアプリケーションを配布したい場合、ユーザーはこれを容認できないと判断します。

が、私は今、時にアドバイスを求めている研究のための道、のカップルがあります:それは(またはwxWidgetsの上流には)AppIndicatorsをサポートしている場合には、

  • が異なっwxPHPで何かをする(私の推測はそれということですしない)
  • がAppIndicatorsが実行されているかどうかを検出し、それは私が

編集再び無駄にAppIndicators)のためのDバスメッセージ仕様のために見てきたのに(アイコンを構築するためにPHPを使用してDバスメッセージを送信された場合:これはむしろニッチな質問なので、 ince Ubuntuに質問するは、Ubuntuプラットフォームに関するプログラミング関連の質問を数多く運んでいるので、私はそのサイトにa DBus-specific questionと尋ねました。

答えて

1

ほとんどの場合、wxPHPまたはwxWidgets経由で、Ubuntuにタスクバーアイコンを作成することはできません。これはUbuntuユーザビリティチームのdeliberate design decisionであり、アプリケーションレベルのステータスアイコンの使用に一貫性とアクセシビリティを導入しています。

私はこれを提起しましたas a bugとwxPHPのメンテナーから非常に有益な情報をたくさん得ました。私は彼に同意するが、この機能はwxWidgetsの上流側にあるほうがいいだろうが、オンラインのコメントからはそこに追加することが多いようだ。

短期的な解決策は、独自のアプリケーションインジケータ(Ubuntuリポジトリのpython-appindicator)を使用するようにPythonプロセスを設定し、2つのプロセス間で通信することです(PHPをPythonに変更するアイコン、PythonをPHPに送信する)メニュー選択イベント)。私はまずwxWidgetsイベントループの中でうまく動作するので、私は単純な通信システムとしてwxFileSystemWatcherを使用しています。

もっと良い解決策は、PHPのためのappindicatorバインディングを持つことですが、それはより関与していると思われますので、私は今それを残します。

関連する問題