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 というディレクトリに作り、その中に保存しています。
#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
menu & X -retro
だけで起動できるようになります。しかし、/bin
ディレクトリにどんな名前の実行ファイルがあるかはっきりしない場合は、
うっかりと上書きしてしまう場合がありますので、あまりおすすめしません。