Building Your Own System Tray Application Using PHP-GTK
(Page 1 of 6 )
You have seen how easy it is to write your own desktop applications using PHP-GTK in the article “Building Your Own Desktop Notepad Application Using PHP-GTK.” Once you have learned how to write desktop applications using PHP-GTK, you will be pleased to know that writing system tray applications is just a matter of adding a couple of lines of code. The bulk of your code remains exactly the same!
In this article, I will use the Notepad application which we developed in the previous articleand turn that into a system tray application. As usual, the complete sample code is available for download at the end of the article.
Assumptions
This article assumes that you have successfully installed PHP-GTK v2.0 or v2.0.1, with the glade library properly set up.
It is also recommended that you have Glade 3 installed, so that you can load the glade file and explore the widgets and their respective settings.
And lastly, it is assumed that you have read the article “Building Your Own Desktop Notepad Application Using PHP-GTK” and are familiar with the framework, the various components, the classes and the methods used in the Notepad application. Try to understand that base code first so that you can appreciate the beauty of PHP-GTK in linking the system tray icon to the main application.
So, are you ready? Let’s get started!
Hello World GtkStatusIcon
The system tray application is made possible in PHP-GTK with the help of the GtkStatusIcon widget.
To make it easier for you to understand this widget, I’ve developed a hello world GtkStatusIcon program. This is the simplest complete system tray application that can be written using PHP-GTK, with just 20 lines of code:
<?php
// setup main application
$window = new GtkWindow();
$window->set_size_request(240, 120);
$window->connect_simple('destroy', array('Gtk','main_quit'));
$label = new GtkLabel('Hello World, GtkStatusIcon!');
$window->add($label);
$window->hide_all();
// setup system tray icon
$statusicon = new GtkStatusIcon();
$statusicon->set_from_stock(Gtk::STOCK_FILE);
$statusicon->connect('activate', 'on_activate');
Gtk::main();
function on_activate($statusicon) {
global $window;
if ($window->is_visible()) $window->hide_all();
else $window->show_all();
}
?>
When you first start the application, you will see only a file icon appearing in the system tray (the leftmost icon):

When you click on the file icon, the main application window will open up:

When you click on the file icon again, the application window will be hidden again.
Next: Set up the main application >>
More PHP Articles
More By K.K.Sou