a66fed62cc
[ci:skip-build]: already built successfully in CI [ci:skip-vercheck]
58 lines
1.6 KiB
C
58 lines
1.6 KiB
C
#include <gtk/gtk.h>
|
|
#include <stdlib.h>
|
|
|
|
static void onclick(GtkWidget *widget, gpointer command)
|
|
{
|
|
system((const char *)command);
|
|
}
|
|
|
|
static void activate(GtkApplication *app, gpointer user_data)
|
|
{
|
|
GtkWidget *window = gtk_application_window_new(app);
|
|
gtk_window_set_title(GTK_WINDOW(window), "postmarketOS demos");
|
|
|
|
GtkWidget *button_box = gtk_button_box_new(
|
|
GTK_ORIENTATION_VERTICAL);
|
|
gtk_container_add(GTK_CONTAINER(window), button_box);
|
|
|
|
const char *programs[] = {
|
|
"GTK3 Demo",
|
|
"gtk3-demo &",
|
|
"Firefox (XWayland, needs to be installed)",
|
|
"firefox &",
|
|
"weston-presentation-shm (Animation)",
|
|
"weston-presentation-shm &",
|
|
"weston-simple-damage (Animation)",
|
|
"weston-simple-damage &",
|
|
"weston-smoke (Touch)",
|
|
"weston-smoke &",
|
|
"weston-editor (Touch)",
|
|
"weston-editor &",
|
|
"htop (Terminal)",
|
|
"weston-terminal -f --shell=/usr/bin/htop &",
|
|
"Restart Weston",
|
|
"killall weston &",
|
|
};
|
|
|
|
for (int i = 0; i < (sizeof(programs) / sizeof(const char *)); i += 2) {
|
|
const char *title = programs[i];
|
|
const char *command = programs[i + 1];
|
|
|
|
GtkWidget *button = gtk_button_new_with_label(title);
|
|
gtk_widget_set_size_request(button, 200, 70);
|
|
g_signal_connect(button, "clicked", G_CALLBACK(onclick),
|
|
(void *)command);
|
|
gtk_container_add(GTK_CONTAINER(button_box), button);
|
|
}
|
|
gtk_widget_show_all(window);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
GtkApplication *app = gtk_application_new("org.postmarketos.demos",
|
|
G_APPLICATION_FLAGS_NONE);
|
|
g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
|
|
int status = g_application_run(G_APPLICATION(app), argc, argv);
|
|
g_object_unref(app);
|
|
return status;
|
|
}
|