X11   GTK3 メニュー

ホーム

GTK3 のインストール

X11 用のプログラミングを始めます。

次のようにして、GTK3 の開発環境をインストールします。
なお、GTK 以外にも、Electron、Fyne、wxWidgets も試してみましたが、 GTK 以外はうまく動作しませんでした。


// インストール
sudo yum install gtk2-devel
sudo yum install gtk3-devel

// バージョン確認
pkg-config --version
    

GTK3 でプログラミングする場合でも、GTK2 もインストールしておかなければなりません。


コーディング

menu.c というファイルを作り、次のように記述します。 ファイルの保存場所はどこでも構いませんが、私はホームディレクトリに gtk というディレクトリに作り、その中に保存しています。

menu.c


#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *vbox;
  GtkWidget *menubar;
  GtkWidget *filemenu;
  GtkWidget *filemenuitem;
  GtkWidget *quitmenuitem;

  gtk_init(&argc, &argv);

  window = gtk_window_new(0); // 0 is GTK_WINDOW_TOPLEVEL
  //gtk_window_set_title(GTK_WINDOW(window), "Menu");
  gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);
  gtk_window_set_position(GTK_WINDOW(window), 1); //1 is GTK_WIN_POS_CENTER
  vbox = gtk_box_new(1, 0); // 1 is GTK_ORIENTATION_VERTICAL 
  gtk_container_add(GTK_CONTAINER(window), vbox);
  
  menubar = gtk_menu_bar_new();
  filemenu = gtk_menu_new();
  filemenuitem = gtk_menu_item_new_with_label("File");
  quitmenuitem = gtk_menu_item_new_with_label("Quit");
  gtk_menu_shell_append(GTK_MENU_SHELL(menubar), filemenuitem);
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(filemenuitem), filemenu);
  gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), quitmenuitem);

  gtk_box_pack_start(GTK_BOX(vbox), menubar, 0, 0, 0);
  g_signal_connect(quitmenuitem, "activate",
		   G_CALLBACK(gtk_main_quit), NULL);
  /*
  g_signal_connect(window, "destroy",
		   G_CALLBACK(gtk_main_quit), NULL);
  */
  gtk_widget_show_all(window);
  gtk_main();
  return 0;
}
	


コンパイル

コンパイルは次のようにします。


gcc menu.c `pkg-config --cflags --libs gtk+-3.0` -o menu

// ` は '(シングルクォーテーション)とは違います。US キーボードなら ~(チルダ)と同じキーです。
// JIS キーボードの場合は、@キーと同じキーです。
	

今回の場合、GTK3 の定数を使用していますので、 GTK3でコンパイルしなければなりません

実行

次のようにコマンドして実行します。


./menu & X -retro
    

-retro オプションをつけておかないと、マウスポインターが見えにくくなります。

うまく表示されない場合などは、とりあえず CentOS Minimal を再起動してみてください。 結構直るみたいです。


実行結果

X11 ではウィンドウのフレーム(タイトルバーやリサイズボックス) は表示されないみたいです。


終了

menu アプリケーションの Quit メニューアイテムをクリックすると、menu アプリケーションは終了します。X11 を終了するには次のようにします。


Ctrl + Alt + F1
Ctrl + C
    
  1. Ctrl + Alt + F1 で、X11 の画面が閉じます。 起動したコンソールの番号によって、F1、F2、F3 と変えていきますが、ここでは 1つのコンソールしか使わないことを前提としていますので、F1 で大丈夫です。 というか複数のコンソールを開く方法が分からないです。
  2. Ctrl + Alt + F1 では、X11 の画面が閉じただけです。X11 のタスクは起動したままです。 Ctrl + C とすることによって、X11 は完全に終了します。


補足

menu 実行ファイルをルートディレクトリの /bin ディレクトリに入れると、 menu & X -retro だけで起動できるようになります。しかし、/bin ディレクトリにどんな名前の実行ファイルがあるかはっきりしない場合は、 うっかりと上書きしてしまう場合がありますので、あまりおすすめしません。



2612 visits
Posted: Jul. 10, 2021
Update: Jul. 10, 2021

ホーム   目次