DS Log
In my blog, I delve into the world of programming web technologies, Linux, Unix-like, and graphic design using free tools on Linux.
KINGCODE
KingCode Editor (ex Texty Editor) is my project developed using Java Swing. Project is still in development and in beta version. I plan to add additional features focused for PYTHON, PHP, JAVA, C, JS and BASH.
Read more ↗
VUE on Linux
In this guide, I'll walk you through the step-by-step process of setting up Vue.js on your Linux system, empowering you to create dynamic and interactive web applications. Let's harness the power of Vue.js together on the Linux platform!
Read more ↗
Symfony PHP
Dive into the world of Symfony PHP with this comprehensive introduction. In this guide, you'll learn the essential steps to create and manage posts and users, empowering you to build dynamic web applications with ease.
Read more ↗
Trying Linux from Windows
How to set up a PHP development server on Ubuntu 22.04
Text editors
List of text editors for developers.
Read more ↗
Fonts
Important fonts everyone needs to know.
Read more ↗
Try Linux from Windows
Here are some quick videos I made showing how to try out Linux Mint on Windows.
Read more ↗
Sunday, September 21, 2025
LibAdwaita Ubuntu App
Libadwaita is a library designed for creating modern user interfaces in applications that use the GNOME desktop environment. It is part of the GNOME ecosystem and is built on top of GTK (GIMP Toolkit), which is the primary toolkit for creating graphical user interfaces in GNOME applications.
Install Libs
sudo apt install libadwaita-1-dev libgtk-4-dev build-essential
Code
#include <gtk/gtk.h>
#include <adwaita.h>
static void
on_window_close_request(GtkWindow *window,
gpointer user_data)
{
g_application_quit(G_APPLICATION(user_data));
}
static void
activate (GtkApplication *app,
gpointer user_data)
{
adw_init();
GtkWidget *window = adw_application_window_new(app);
gtk_window_set_title(GTK_WINDOW(window), "Hello, World!");
gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
g_signal_connect(window, "close-request", G_CALLBACK(on_window_close_request), app);
// Create toolbar view
GtkWidget *toolbar_view = adw_toolbar_view_new();
// Create header bar
GtkWidget *header_bar = adw_header_bar_new();
adw_header_bar_set_title_widget(ADW_HEADER_BAR(header_bar), gtk_label_new("Hello, World!"));
adw_toolbar_view_add_top_bar(ADW_TOOLBAR_VIEW(toolbar_view), header_bar);
// Create content
GtkWidget *content = gtk_box_new(GTK_ORIENTATION_VERTICAL, 12);
gtk_widget_set_margin_top(content, 12);
gtk_widget_set_margin_bottom(content, 12);
gtk_widget_set_margin_start(content, 12);
gtk_widget_set_margin_end(content, 12);
GtkWidget *label = gtk_label_new("Hello, World!");
gtk_widget_set_halign(label, GTK_ALIGN_CENTER);
gtk_widget_set_valign(label, GTK_ALIGN_CENTER);
gtk_box_append(GTK_BOX(content), label);
adw_toolbar_view_set_content(ADW_TOOLBAR_VIEW(toolbar_view), content);
adw_application_window_set_content(ADW_APPLICATION_WINDOW(window), toolbar_view);
gtk_window_present(GTK_WINDOW(window));
}
int main(int argc, char *argv[])
{
AdwApplication *app = adw_application_new("com.example.HelloAdwaita", G_APPLICATION_DEFAULT_FLAGS);
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;
}
Compile
gcc one.c -o one `pkg-config --cflags --libs gtk4 libadwaita-1`