如何在Elementary OS Luna中向WingPanel添加状态图标?

时间:2013-12-02 08:45:45

标签: linux ubuntu gtk glade vala

在Elementary OS Luna(或Ubuntu)中,如何将应用程序图标添加到WingPanel(桌面上的顶部栏,显示状态图标,如Wi-Fi连接状态,声音属性以及日期和时间,示例

enter image description here

我使用的是Vala编程语言。

1 个答案:

答案 0 :(得分:5)

以前在https://wiki.gnome.org/Projects/Vala/Examples页面上有一个例子来处理添加托盘图标,这可能会解决这个问题。我无法找到它的链接,所以我将在这里提供源代码和编译命令。

using Gtk;

public class Main {

  class AppStatusIcon : Window {
    private StatusIcon trayicon;
    private Gtk.Menu menuSystem;

    public AppStatusIcon() {
      /* Create tray icon */
      trayicon = new StatusIcon.from_stock(Stock.HOME);
      trayicon.set_tooltip_text ("Tray");
      trayicon.set_visible(true);

      trayicon.activate.connect(about_clicked);

      create_menuSystem();
      trayicon.popup_menu.connect(menuSystem_popup);
    }

    /* Create menu for right button */
    public void create_menuSystem() {
      menuSystem = new Gtk.Menu();
      var menuAbout = new ImageMenuItem.from_stock(Stock.ABOUT, null);
      menuAbout.activate.connect(about_clicked);
      menuSystem.append(menuAbout);
      var menuQuit = new ImageMenuItem.from_stock(Stock.QUIT, null);
      menuQuit.activate.connect(Gtk.main_quit);
      menuSystem.append(menuQuit);
      menuSystem.show_all();
    }

    /* Show popup menu on right button */
    private void menuSystem_popup(uint button, uint time) {
      menuSystem.popup(null, null, null, button, time);
    }

    private void about_clicked() {
      var about = new AboutDialog();
      about.set_version("0.0.0");
      about.set_program_name("Tray");
      about.set_comments("Tray utility");
      about.set_copyright("vala");
      about.run();
      about.hide();
    }
  }

  public static int main (string[] args) {
    Gtk.init(ref args);
    var App = new AppStatusIcon();
    App.hide();
    Gtk.main();
    return 0;
  }
}

运行它的编译命令是:valac icon_test.vala -o build_test --pkg gtk+-3.0

我不确定这会以您想要的方式将其添加到面板,但 会创建传统的托盘图标。祝好运。希望这可以帮助。