Какой компонент ответственен за лоток и как управлять им с помощью C++?

Моя цель состоит в том, чтобы записать рабочий стол gui приложение, которое использует эти команды, найденные в https://askubuntu.com/a/14083/18330

pacmd list-sinks to list name or index number of possible sinks

pacmd set-default-sink "SINKNAME" to set the default output sink

pacmd set-default-source "SOURCENAME" to set the default input

pacmd set-sink-volume index volume

pacmd set-source-volume index volume for volume control (0 = Mute, 65536 = 100%)

Затем приложение будет иметь значок панели задач, который показывает список звуковых устройств, которые будут активируемы по щелчку для переключения звукового устройства на то. Поскольку они нажаты, громкость звука исчезнет объем от 0 до точки объем существующей системы (поэтому, мне нужен доступ к системному тому также.)

Неизвестные:

  • Как программно добавить значок панели задач в C++
  • Как сделать выпадающий дисплей при нажатии, что значок панели задач и имеет его экспонаты, которые также активируемы по щелчку (во многом как то, как почтовый значок отображает Thunderbird),
  • Как связать события щелчка с функцией C++, которая будет работать (для переключения на то звуковое устройство, у меня будет функция C++ готовой.)

Мне просто нужно некоторое руководство об идентификации настольного компонента, которым я пытаюсь управлять и где найти документацию API для него.

Примечания:

4
задан 13 April 2017 в 05:24

1 ответ

Выезд libappindicator . Это ответственно за помещение значка в лотке. Выпадающее меню, отображенное индикатором, GtkMenu . Остальные должны быть знакомыми, если бы Вы работали с GTK +. Вот минимальный пример.

#include <gtk/gtk.h>
#include <libappindicator/app-indicator.h>

static void do_something(GtkWidget *widget, gpointer data) {
  //...
}

int main (int argc, char **argv) {
  gtk_init(&argc, &argv);
  GtkWidget *menu = gtk_menu_new();
  GtkWidget *menuitem = gtk_menu_item_new_with_mnemonic("_This is a menu item");
  gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
  g_signal_connect(menuitem, "activate", G_CALLBACK(do_something), NULL);

  /* the second parameter is the icon displayed */
  AppIndicator* ind = app_indicator_new("test", "indicator-messages-new", 
                     APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
  app_indicator_set_menu(ind, GTK_MENU(menu));
  gtk_main();
}

Вы компилируете его со следующим. Вам будет нужно libgtk2.0-dev и libappindicator-dev пакеты.

$ gcc test.c `pkg-config --cflags --libs gtk+-2.0 appindicator-0.1`

Вы выясните остальных. Самый легкий путь состоит в том, чтобы проверить другие простые приложения индикатора. Например, посмотрите индикатор от этот ответ .

1
ответ дан 17 November 2019 в 05:48

Другие вопросы по тегам:

Похожие вопросы: