●ラズベリーパイにワンクリックでシャットダウンできるボタンの作成

RaspberryPiのGUIのデスクトップにボタンを押すだけでシャットダウンできるアプリをC言語で作成し、 自動起動するようにします。



■ GTK+のインストール

ターミナル(LXTerminal)を開いて、次のコマンドを実行しインストールします。

sudo apt-get install libgtk-3-dev

LXTerminalとは、Windowsで言うコマンドプロンプトのみたいなものでコレです。




■アプリケーションの作成

次に、デスクトップ上に test.c という名前で空のファイルを作成します。
ファイルには、次のプログラムを書き込みます。
#include <gtk/gtk.h>

void button1 (GtkWidget *widget, gpointer data)
{
	system("shutdown -r now");//再起動
}

int main (int argc, char *argv[])
{
    GtkWidget *window, *button;
    gtk_init(&argc, &argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect(window, "delete-event",G_CALLBACK(gtk_main_quit), NULL );
    button = gtk_button_new_with_label("shutdown");
    g_signal_connect(button, "clicked", G_CALLBACK(button1), NULL );
    gtk_container_add(GTK_CONTAINER(window), button);
    gtk_widget_show(window);
    gtk_widget_show(button);

    gtk_main();
}
ターミナルを開いて、
cd Desktop
と入力して作業フォルダをデスクトップに移動します。
次に、プログラムをコンパイルします。
gcc test.c -o test `pkg-config --cflags --libs gtk+-3.0`
コンパイルが完了したら、
./test
と打ち込んでみて実行を確認してみましょう。
shutdownのボタンを押すとRaspberryPiが再起動するはずです。




■自動起動の設定

数ある自動起動の方法の中で、LXDEで起動させたいと思います。
まずは、ターミナルを開いて必要なディレクトリと設定ファイルを作成

mkdir -p ~/.config/lxsession/LXDE-pi
cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi/


次に、エクスプローラーみたいなファイルマネージャを開いて
/home/pi/.config/lxsession/LXDE-pi/autostart ファイルを開きます。
.configは隠しファイルのため、表示→隠しファイルを表示する をONにしないと見えません。

開いたファイルに @/home/pi/Desktop/test を追加して自動起動するようにします。


これで、次回から起動後に自動的にプログラムが動作するようになりました。


■再起動からシャットダウンに変更

今のプログラムではボタンを押すと再起動します、それをシャットダウンに変更したいと思います。
プログラム中の赤文字行部分
system("shutdown -r now");//再起動
の部分の -r-h に変更すると再起動からシャットダウンに変わります。

system("shutdown -h now");//シャットダウン
変更後は再びプログラムをコンパイルすれば次回からボタンを押すとシャットダウンできるようになります。


▲トップページ > マイコンなど