Po pewnym wysiłku skompilowałem moduł PHP dla wxPHP i piszę kilka skryptów, aby zobaczyć, co można zrobić. Moje pierwsze demo tworzy okno i ikonę paska zadań, i nie mogę zmusić tego drugiego do działania.Jak utworzyć ikonę paska zadań z wxPHP w Ubuntu/Unity?
Używam tego na Ubuntu 14.04 LTS.
Oto skrypt używam:
<?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();
Teraz chciałbym sobie wyobrazić „pasek zadań” w jedności jest górny pasek wyposażony w elementy sterujące zegar, dźwięku i sieci, a nie aplikacja zadokować na po lewej stronie. Dostaję pustą ikonę szarej aplikacji w stacji dokującej, gdy zadanie PHP jest uruchomione, ale jest to ikona stanu na górze, którą szukam.
Wyjścia konsoli z powyższym skrypcie pokazać wszystko jest OK:
Task bar available: Yes
Create task bar icon: OK
Set image for icon: OK
Próbowałem zmieniając icon.ico
do nieistniejącego pliku, a ten wyskakuje dialog śledzenia wstecznego, który pokazuje, że ikona jestem używanie ładuje się pomyślnie (i prawdopodobnie ma dopuszczalny format).
Edit: dalsze badania wskazują, że:
- wcześniej wersje Ubuntu zapobiec aplikacji z użyciem taskbar unless specifically whitelisted (zauważ, że
gsettings
klucze użyte tutaj nie znajdują się w mojej późniejszej wersji Ubuntu) - nowsze wersje wymagają something called AppIndicators
Stąd moje przypuszczenie, że w chwili obecnej jest mój kod będzie działać, jeśli nie było dla Unity uniemożliwić działanie - i że natychmiast w drugiej di stros takie jak Mint.
Znalazłem this guide, który wyjaśnia, jak dodać białą listę do Ubuntu 14, ale jest to najbardziej niesatysfakcjonujące; aby zrobić coś tak trywialnego, nie trzeba zmieniać zaufanej listy repo. Jeśli chcę rozpowszechniać aplikację napisaną w wxPHP, użytkownicy będą (i powinni) uznać to za niedopuszczalne.
Istnieje kilka możliwości dla badań, które mam teraz szukają porady na:
- Zrób coś inaczej w wxPHP, w przypadku (lub przed wxWidgets) posiada wsparcie AppIndicators (domyślam się, że to nie)
- wykryć, czy AppIndicators jest uruchomiony, a jeśli jest wysyłanie wiadomości dBus PHP skonstruować ikonę (choć szukałem na dBus wiadomości spec AppIndicators na marne)
Edycja ponownie: ponieważ jest to pytanie raczej niszowe, i s Zapytaj, czy Ubuntu niesie ze sobą wiele pytań związanych z programowaniem dla platformy Ubuntu, poprosiłem o nią na tej stronie a DBus-specific question.