~carbslinux/repository

2ea4eeac8c9fe7d0e786e99e188948d4c981a3f5 — Cem Keylan 3 months ago 4646a7d
yad: add new package at 13.0
A community/yad/build => community/yad/build +22 -0
@@ 0,0 1,22 @@
#!/bin/sh -e

patch -p1 < 0001-Separate-X11-dependent-modules.patch

autoreconf -fi

./configure \
    --prefix=/usr \
    --disable-nls \
    --disable-html \
    --disable-sourceview \
    --disable-spell \
    --disable-tray

clsed '/gdkx\.h/d;s/Window xid/unsigned long xid/' src/yad.h
clsed 's/gdk\/gdkx\.h/gtk\/gtkx.h/' src/main.c


make
make DESTDIR="$1" install

rm -r "$1/usr/share/locale"

A community/yad/checksums => community/yad/checksums +3 -0
@@ 0,0 1,3 @@
%BLAKE3
1653edf7002cdf9c96fa6b28dbc7e06c77917752a0d72437c92fbd635b99b77f  yad-13.0.tar.xz
5c10ad490b77d29baabe1f5e7373bc667937d6aaf63576df8d3f6a7ea82080ac  0001-Separate-X11-dependent-modules.patch

A community/yad/depends => community/yad/depends +9 -0
@@ 0,0 1,9 @@
atk
automake make
cairo
freetype-harfbuzz
gdk-pixbuf
gettext-tiny make
glib
gtk+3
pango

A community/yad/meta => community/yad/meta +3 -0
@@ 0,0 1,3 @@
description: Yet Another Dialog (GTK+3)
license: GPL-3.0-or-later
maintainer: Cem Keylan <cem@carbslinux.org>

A community/yad/patches/0001-Separate-X11-dependent-modules.patch => community/yad/patches/0001-Separate-X11-dependent-modules.patch +430 -0
@@ 0,0 1,430 @@
From add8246df3a3e7e2bda84a813d4fabcf17ce39d7 Mon Sep 17 00:00:00 2001
From: Cem Keylan <cem@ckyln.com>
Date: Tue, 27 Feb 2024 13:01:10 +0100
Subject: [PATCH] Separate X11-dependent modules

---
 configure.ac    | 17 +++++++++++++++++
 src/Makefile.am |  6 ++++--
 src/main.c      | 28 ++++++++++++++++++++++++----
 src/option.c    | 26 +++++++++++++++++++++++---
 src/util.c      |  4 ++++
 src/yad.h       |  8 +++++++-
 6 files changed, 79 insertions(+), 10 deletions(-)

diff --git a/configure.ac b/configure.ac
index 252cace..e0adf21 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,6 +46,23 @@ if test x$have_html = xyes; then
     AC_DEFINE([HAVE_HTML], [1], [Define this if you have webkit2gt library])
 fi
 
+dnl paned and notebook
+AC_ARG_WITH([x11],
+    [AS_HELP_STRING([--with-x11],
+        [Build YAD modules that require x11 (notebook, paned)])],
+    [with_x11=$enableval], [with_x11=yes]
+)
+if test x$with_html = xyes; then
+   PKG_CHECK_MODULES([GTK_X11], [gtk+-x11-3.0], [with_x11=yes], [with_x11=no])
+else
+    with_x11=no
+fi
+AM_CONDITIONAL([X11], [test x$with_x11 = xyes])
+
+if test x$with_x11 = xyes; then
+   AC_DEFINE([HAVE_X11], [1], [Define this if you are using GTK+3 with X11 backend])
+fi
+
 dnl status icon widget
 AC_ARG_ENABLE([tray],
 	[AS_HELP_STRING([--enable-tray],
diff --git a/src/Makefile.am b/src/Makefile.am
index efe905c..f9f2d55 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -20,9 +20,7 @@ yad_SOURCES = 		\
 	form.c			\
 	icons.c			\
 	list.c			\
-	notebook.c		\
 	option.c		\
-	paned.c			\
 	picture.c       \
 	print.c			\
 	progress.c		\
@@ -42,6 +40,10 @@ if HTML
 yad_SOURCES += html.c
 endif
 
+if X11
+yad_SOURCES += notebook.c paned.c
+endif
+
 if STANDALONE
 yad_SOURCES += defaults.h
 endif
diff --git a/src/main.c b/src/main.c
index 1359a14..53e7a43 100644
--- a/src/main.c
+++ b/src/main.c
@@ -28,7 +28,9 @@
 
 #ifndef G_OS_WIN32
 # include <sys/shm.h>
-# include <gdk/gdkx.h>
+#endif
+#ifdef HAVE_X11
+#include <gdk/gdkx.h>
 #endif
 
 #include "yad.h"
@@ -290,6 +292,7 @@ create_layout (GtkWidget *dlg)
     case YAD_MODE_LIST:
       mw = list_create_widget (dlg);
       break;
+#ifdef HAVE_X11
     case YAD_MODE_NOTEBOOK:
       if (options.plug == -1)
         mw = notebook_create_widget (dlg);
@@ -298,6 +301,7 @@ create_layout (GtkWidget *dlg)
       if (options.plug == -1)
         mw = paned_create_widget (dlg);
       break;
+#endif
     case YAD_MODE_PICTURE:
       mw = picture_create_widget (dlg);
       break;
@@ -612,6 +616,7 @@ create_dialog (void)
         gtk_window_fullscreen (GTK_WINDOW (dlg));
     }
 
+#ifdef HAVE_X11
   /* print xid */
   if (is_x11 && options.print_xid)
     {
@@ -632,6 +637,7 @@ create_dialog (void)
             fflush (xf);
         }
     }
+#endif
 
   return dlg;
 }
@@ -648,10 +654,12 @@ create_plug (void)
       tabs = get_tabs (options.plug, FALSE);
     }
 
+#ifdef HAVE_X11
   while (!tabs[0].xid)
     usleep (1000);
 
   win = gtk_plug_new (0);
+#endif
   /* set window borders */
   if (options.data.borders == -1)
     options.data.borders = (gint) gtk_container_get_border_width (GTK_CONTAINER (win));
@@ -666,7 +674,9 @@ create_plug (void)
   /* add plug data */
   /* notebook/paned will count non-zero xids */
   tabs[options.tabnum].pid = getpid ();
+#ifdef HAVE_X11
   tabs[options.tabnum].xid = gtk_plug_get_id (GTK_PLUG (win));
+#endif
   shmdt (tabs);
 }
 
@@ -699,12 +709,14 @@ yad_print_result (void)
     case YAD_MODE_LIST:
       list_print_result ();
       break;
+#ifdef HAVE_X11
     case YAD_MODE_NOTEBOOK:
       notebook_print_result ();
       break;
     case YAD_MODE_PANED:
       paned_print_result ();
       break;
+#endif
     case YAD_MODE_SCALE:
       scale_print_result ();
       break;
@@ -885,6 +897,7 @@ main (gint argc, gchar ** argv)
       return ret;
     }
 
+#ifdef HAVE_X11
   if (!is_x11)
     {
       if (options.mode == YAD_MODE_NOTEBOOK || options.mode == YAD_MODE_PANED
@@ -897,6 +910,7 @@ main (gint argc, gchar ** argv)
           return 1;
         }
     }
+#endif
 
   switch (options.mode)
     {
@@ -921,20 +935,24 @@ main (gint argc, gchar ** argv)
     default:
       dialog = create_dialog ();
 
+#ifdef HAVE_X11
       if (is_x11)
         {
           /* add YAD_XID variable */
           str = g_strdup_printf ("0x%lX", GDK_WINDOW_XID (gtk_widget_get_window (dialog)));
           g_setenv ("YAD_XID", str, TRUE);
         }
+#endif
 
       /* make some specific init actions */
-      if (options.mode == YAD_MODE_NOTEBOOK)
+      if (options.mode == YAD_MODE_TEXTINFO)
+        text_goto_line ();
+#ifdef HAVE_X11
+      else if (options.mode == YAD_MODE_NOTEBOOK)
         notebook_swallow_childs ();
       else if (options.mode == YAD_MODE_PANED)
         paned_swallow_childs ();
-      else if (options.mode == YAD_MODE_TEXTINFO)
-        text_goto_line ();
+#endif
       else if (options.mode == YAD_MODE_PICTURE)
         {
           if (options.picture_data.size == YAD_PICTURE_FIT)
@@ -963,10 +981,12 @@ main (gint argc, gchar ** argv)
             }
         }
 #ifndef G_OS_WIN32
+#ifdef HAVE_X11
       if (options.mode == YAD_MODE_NOTEBOOK)
         notebook_close_childs ();
       else if (options.mode == YAD_MODE_PANED)
         paned_close_childs ();
+#endif
       /* autokill option for progress dialog */
       if (!options.kill_parent)
         {
diff --git a/src/option.c b/src/option.c
index 322e2b1..e6577ae 100644
--- a/src/option.c
+++ b/src/option.c
@@ -77,11 +77,13 @@ static gboolean html_mode = FALSE;
 #endif
 static gboolean icons_mode = FALSE;
 static gboolean list_mode = FALSE;
+#ifdef HAVE_X11
 static gboolean notebook_mode = FALSE;
+static gboolean paned_mode = FALSE;
+#endif
 #ifdef HAVE_TRAY
 static gboolean notification_mode = FALSE;
 #endif
-static gboolean paned_mode = FALSE;
 static gboolean picture_mode = FALSE;
 static gboolean print_mode = FALSE;
 static gboolean progress_mode = FALSE;
@@ -519,6 +521,7 @@ static GOptionEntry list_options[] = {
   { NULL }
 };
 
+#ifdef HAVE_X11
 static GOptionEntry notebook_options[] = {
   { "notebook", 0, G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &notebook_mode,
     N_("Display notebook dialog"), NULL },
@@ -536,6 +539,7 @@ static GOptionEntry notebook_options[] = {
     N_("Use stack mode"), NULL },
   { NULL }
 };
+#endif
 
 #ifdef HAVE_TRAY
 static GOptionEntry notification_options[] = {
@@ -553,6 +557,7 @@ static GOptionEntry notification_options[] = {
 };
 #endif
 
+#ifdef HAVE_X11
 static GOptionEntry paned_options[] = {
   { "paned", 0, G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &paned_mode,
     N_("Display paned dialog"), NULL },
@@ -564,6 +569,7 @@ static GOptionEntry paned_options[] = {
     N_("Set focused pane (1 or 2)"), N_("PANE") },
   { NULL }
 };
+#endif
 
 static GOptionEntry picture_options[] = {
   { "picture", 0, G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &picture_mode,
@@ -1128,6 +1134,7 @@ set_justify (const gchar * option_name, const gchar * value, gpointer data, GErr
   return TRUE;
 }
 
+#ifdef HAVE_X11
 static gboolean
 set_tab_pos (const gchar * option_name, const gchar * value, gpointer data, GError ** err)
 {
@@ -1144,6 +1151,7 @@ set_tab_pos (const gchar * option_name, const gchar * value, gpointer data, GErr
 
   return TRUE;
 }
+#endif
 
 static gboolean
 set_expander (const gchar * option_name, const gchar * value, gpointer data, GError ** err)
@@ -1182,6 +1190,7 @@ set_ellipsize (const gchar * option_name, const gchar * value, gpointer data, GE
   return TRUE;
 }
 
+#ifdef HAVE_X11
 static gboolean
 set_orient (const gchar * option_name, const gchar * value, gpointer data, GError ** err)
 {
@@ -1194,6 +1203,7 @@ set_orient (const gchar * option_name, const gchar * value, gpointer data, GErro
 
   return TRUE;
 }
+#endif
 
 static gboolean
 set_print_type (const gchar * option_name, const gchar * value, gpointer data, GError ** err)
@@ -1534,14 +1544,16 @@ yad_set_mode (void)
     options.mode = YAD_MODE_ICONS;
   else if (list_mode)
     options.mode = YAD_MODE_LIST;
+#ifdef HAVE_X11
   else if (notebook_mode)
     options.mode = YAD_MODE_NOTEBOOK;
+  else if (paned_mode)
+    options.mode = YAD_MODE_PANED;
+#endif
 #ifdef HAVE_TRAY
   else if (notification_mode)
     options.mode = YAD_MODE_NOTIFICATION;
 #endif
-  else if (paned_mode)
-    options.mode = YAD_MODE_PANED;
   else if (picture_mode)
     options.mode = YAD_MODE_PICTURE;
   else if (print_mode)
@@ -1821,6 +1833,7 @@ yad_options_init (void)
   options.list_data.col_align = NULL;
   options.list_data.hdr_align = NULL;
 
+#ifdef HAVE_X11
   /* Initialize notebook data */
   options.notebook_data.tabs = NULL;
   options.notebook_data.borders = 5;
@@ -1828,6 +1841,7 @@ yad_options_init (void)
   options.notebook_data.active = 1;
   options.notebook_data.expand = FALSE;
   options.notebook_data.stack = FALSE;
+#endif
 
 #ifdef HAVE_TRAY
   /* Initialize notification data */
@@ -1836,10 +1850,12 @@ yad_options_init (void)
   options.notification_data.menu = NULL;
 #endif
 
+#ifdef HAVE_X11
   /* Initialize paned data */
   options.paned_data.orient = GTK_ORIENTATION_VERTICAL;
   options.paned_data.splitter = -1;
   options.paned_data.focused = 1;
+#endif
 
   /* Initialize picture data */
   options.picture_data.size = YAD_PICTURE_ORIG;
@@ -2029,11 +2045,13 @@ yad_create_context (void)
   g_option_group_set_translation_domain (a_group, GETTEXT_PACKAGE);
   g_option_context_add_group (tmp_ctx, a_group);
 
+#ifdef HAVE_X11
   /* Adds notebook option entries */
   a_group = g_option_group_new ("notebook", _("Notebook options"), _("Show notebook dialog options"), NULL, NULL);
   g_option_group_add_entries (a_group, notebook_options);
   g_option_group_set_translation_domain (a_group, GETTEXT_PACKAGE);
   g_option_context_add_group (tmp_ctx, a_group);
+#endif
 
 #ifdef HAVE_TRAY
   /* Adds notification option entries */
@@ -2044,11 +2062,13 @@ yad_create_context (void)
   g_option_context_add_group (tmp_ctx, a_group);
 #endif
 
+#ifdef HAVE_X11
   /* Adds paned option entries */
   a_group = g_option_group_new ("paned", _("Paned dialog options"), _("Show paned dialog options"), NULL, NULL);
   g_option_group_add_entries (a_group, paned_options);
   g_option_group_set_translation_domain (a_group, GETTEXT_PACKAGE);
   g_option_context_add_group (tmp_ctx, a_group);
+#endif
 
   /* Adds picture option entries */
   a_group = g_option_group_new ("picture", _("Picture dialog options"), _("Show picture dialog options"), NULL, NULL);
diff --git a/src/util.c b/src/util.c
index 6750dff..c65f0f4 100644
--- a/src/util.c
+++ b/src/util.c
@@ -305,11 +305,15 @@ get_tabs (key_t key, gboolean create)
       for (i = 1; i < max_tab; i++)
         {
           t[i].pid = -1;
+#ifdef HAVE_X11
           t[i].xid = 0;
+#endif
         }
       t[0].pid = shmid;
       /* lastly, allow plugs to write shmem */
+#ifdef HAVE_X11
       t[0].xid = 1;
+#endif
     }
 
   return t;
diff --git a/src/yad.h b/src/yad.h
index 2ed7be9..bc05c9e 100644
--- a/src/yad.h
+++ b/src/yad.h
@@ -27,7 +27,9 @@
 #include <sys/ipc.h>
 #include <fcntl.h>
 
+#ifdef HAVE_X11
 #include <gdk/gdkx.h>
+#endif
 
 #include <gtk/gtk.h>
 #include <gtk/gtkx.h>
@@ -82,11 +84,13 @@ typedef enum {
 #endif
   YAD_MODE_ICONS,
   YAD_MODE_LIST,
+#ifdef HAVE_X11
   YAD_MODE_NOTEBOOK,
+  YAD_MODE_PANED,
+#endif
 #ifdef HAVE_TRAY
   YAD_MODE_NOTIFICATION,
 #endif
-  YAD_MODE_PANED,
   YAD_MODE_PICTURE,
   YAD_MODE_PRINT,
   YAD_MODE_PROGRESS,
@@ -629,7 +633,9 @@ extern gboolean ignore_esc;
 /* TABS */
 typedef struct {
   pid_t pid;
+#ifdef HAVE_X11
   Window xid;
+#endif
 } YadNTabs;
 
 /* pointer to shared memory for tabbed dialog */
-- 
2.43.2


A community/yad/sources => community/yad/sources +2 -0
@@ 0,0 1,2 @@
https://github.com/v1cont/yad/releases/download/v13.0/yad-13.0.tar.xz
patches/0001-Separate-X11-dependent-modules.patch

A community/yad/version => community/yad/version +1 -0
@@ 0,0 1,1 @@
13.0 1