diff --git a/README.md b/README.md index 61693aa..050ea1d 100644 --- a/README.md +++ b/README.md @@ -15,4 +15,16 @@ Default theme can be set using the envar `DIYA_DEFAULT_THEME`, this will cause t # Virtual keyboard layout Default virtual keyboard keymap can be set via the `DIYA_VKB_KEYMAP` environment variable. When created virtual keyboard, -the shell will search for keymap file in: `/home/$USER/.config/diya/xkb/${DIYA_VKB_KEYMAP}.keymap` \ No newline at end of file +the shell will search for keymap file in: `/home/$USER/.config/diya/xkb/${DIYA_VKB_KEYMAP}.keymap` + + +# Launch terminal based application + +create file in `/home/$USER/bin/xdg-terminal-exec` with: + +```sh +#! /bin/sh +foot $@ +``` + +this allows gtk4-launch to launch a terminal based application \ No newline at end of file diff --git a/resources/ui/dashboard.ui b/resources/ui/dashboard.ui index 0b9d559..399481c 100644 --- a/resources/ui/dashboard.ui +++ b/resources/ui/dashboard.ui @@ -45,10 +45,10 @@ horizontal - + 1 - User - + Terminal + diff --git a/src/launcher.c b/src/launcher.c index 29f7452..588aca7 100644 --- a/src/launcher.c +++ b/src/launcher.c @@ -192,6 +192,7 @@ void diya_session_shell_launcher_init(DiyaSessionShell * shell) g_warning("%s", g_app_info_get_display_name(element_data)); g_warning("%s", g_app_info_get_id(element_data)); g_warning("%s", g_app_info_get_name(element_data)); + g_warning("%s", g_app_info_get_executable(element_data)); //g_warning("%s", g_app_info_get_icon(element_data)); } g_list_free_full(apps, g_object_unref); diff --git a/src/session-shell.c b/src/session-shell.c index cd8907d..80e7cf8 100644 --- a/src/session-shell.c +++ b/src/session-shell.c @@ -105,7 +105,7 @@ static void diya_session_on_key_pressed(DiyaShell* shell, struct xkb_keymap *xkb DiyaSessionShell* self = DIYA_SESSION_SHELL(shell); uint32_t keycode = key + 8; xkb_keysym_t sym = xkb_state_key_get_one_sym(xkb_state, keycode); - + g_debug("Key press %d", sym); switch(sym) { case XKB_KEY_Escape: diff --git a/src/widgets/dashboard-widget.c b/src/widgets/dashboard-widget.c index fa50be3..8b4a79c 100644 --- a/src/widgets/dashboard-widget.c +++ b/src/widgets/dashboard-widget.c @@ -108,6 +108,29 @@ static void diya_dashboard_get_property(GObject *object, guint property_id, GVal } } +static void diya_dashboard_launch(GtkButton* btn, DiyaDashboardWidget* self) +{ + g_debug("Clicked %d %d", DIYA_IS_DASHBOARD_WIDGET(self), GTK_IS_BUTTON(btn)); + + GError* error = NULL; + GAppInfo* app = g_app_info_create_from_commandline("htop", "Foot", G_APP_INFO_CREATE_NEEDS_TERMINAL, &error); + if(error) + { + g_critical("Unable to create app info: %s", error->message); + g_error_free(error); + return; + } + error = NULL; + g_app_info_launch(app, NULL, NULL, &error); + if(error) + { + g_critical("Unable to launch application: %s", error->message); + g_error_free(error); + return; + } + g_object_set(self, DIYA_PROP_DASHBOARD_ACTIVE, false, NULL); +} + static void diya_dashboard_widget_class_init(DiyaDashboardWidgetClass* class) { GObjectClass *gobject_class = G_OBJECT_CLASS(class); @@ -122,7 +145,7 @@ static void diya_dashboard_widget_class_init(DiyaDashboardWidgetClass* class) gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), DiyaDashboardWidget, revealer); gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), DiyaDashboardWidget, search_entry); - //gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), diya_dashboard_toggle); + gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), diya_dashboard_launch); gtk_widget_class_set_css_name(GTK_WIDGET_CLASS(class), "diya-dashboard"); //gtk_widget_class_bind_template_child(GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);