mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-10 07:50:19 +00:00
Adjust for GTK3 github actions compile testing.
fixed gtk2 compiling.
This commit is contained in:
@@ -273,3 +273,25 @@ sysinfo_backend_get_network(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static const char *sysinfo_detect_toolkit(void)
|
||||
{
|
||||
#if defined(HAVE_GTK3)
|
||||
return "GTK3";
|
||||
#elif defined(HAVE_GTK2)
|
||||
return "GTK2";
|
||||
#elif defined(HAVE_GTK)
|
||||
return "GTK";
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
char *sysinfo_backend_get_ui(void)
|
||||
{
|
||||
const char *toolkit = sysinfo_detect_toolkit();
|
||||
if (toolkit)
|
||||
return g_strdup_printf("%s / Quartz", toolkit);
|
||||
|
||||
return g_strdup("Quartz");
|
||||
}
|
||||
|
||||
@@ -30,4 +30,10 @@ char *sysinfo_backend_get_sound(void);
|
||||
char *sysinfo_backend_get_uptime(void);
|
||||
char *sysinfo_backend_get_network(void);
|
||||
|
||||
/*
|
||||
* Short description of the UI/toolkit + display backend.
|
||||
* Examples: "GTK3 / Wayland", "GTK2 / X11", "Windows / GTK3".
|
||||
*/
|
||||
char *sysinfo_backend_get_ui(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,7 +41,7 @@ static zoitechat_plugin *ph;
|
||||
static char name[] = "Sysinfo";
|
||||
static char desc[] = "Display info about your hardware and OS";
|
||||
static char version[] = "1.0";
|
||||
static char sysinfo_help[] = "SysInfo Usage:\n /SYSINFO [-e|-o] [CLIENT|OS|CPU|RAM|DISK|VGA|SOUND|ETHERNET|UPTIME], print various details about your system or print a summary without arguments\n /SYSINFO SET <variable>\n";
|
||||
static char sysinfo_help[] = "SysInfo Usage:\n /SYSINFO [-e|-o] [CLIENT|UI|OS|CPU|RAM|DISK|VGA|SOUND|ETHERNET|UPTIME], print various details about your system or print a summary without arguments\n /SYSINFO SET <variable>\n";
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@@ -54,11 +54,22 @@ typedef struct
|
||||
static char *
|
||||
get_client (void)
|
||||
{
|
||||
return g_strdup_printf ("ZoiteChat %s", zoitechat_get_info(ph, "version"));
|
||||
char *ui = sysinfo_backend_get_ui();
|
||||
const char *ver = zoitechat_get_info(ph, "version");
|
||||
char *out;
|
||||
|
||||
if (ui != NULL && *ui != '\0')
|
||||
out = g_strdup_printf ("ZoiteChat %s (%s)", ver, ui);
|
||||
else
|
||||
out = g_strdup_printf ("ZoiteChat %s", ver);
|
||||
|
||||
g_free (ui);
|
||||
return out;
|
||||
}
|
||||
|
||||
static hwinfo hwinfos[] = {
|
||||
{"client", "Client", get_client},
|
||||
{"ui", "UI", sysinfo_backend_get_ui},
|
||||
{"os", "OS", sysinfo_backend_get_os},
|
||||
{"cpu", "CPU", sysinfo_backend_get_cpu},
|
||||
{"memory", "Memory", sysinfo_backend_get_memory},
|
||||
@@ -235,7 +246,8 @@ zoitechat_plugin_init (zoitechat_plugin *plugin_handle, char **plugin_name, char
|
||||
|
||||
zoitechat_hook_command (ph, "SYSINFO", ZOITECHAT_PRI_NORM, sysinfo_cb, sysinfo_help, NULL);
|
||||
|
||||
zoitechat_command (ph, "MENU ADD \"Window/Send System Info\" \"SYSINFO\"");
|
||||
/* Match the classic label from HexChat so people can actually find it. */
|
||||
zoitechat_command (ph, "MENU ADD \"Window/Display System Info\" \"SYSINFO\"");
|
||||
zoitechat_printf (ph, _("%s plugin loaded\n"), name);
|
||||
return 1;
|
||||
}
|
||||
@@ -243,6 +255,8 @@ zoitechat_plugin_init (zoitechat_plugin *plugin_handle, char **plugin_name, char
|
||||
int
|
||||
zoitechat_plugin_deinit (void)
|
||||
{
|
||||
/* Keep both in case older builds used a different label. */
|
||||
zoitechat_command (ph, "MENU DEL \"Window/Send System Info\"");
|
||||
zoitechat_command (ph, "MENU DEL \"Window/Display System Info\"");
|
||||
zoitechat_printf (ph, _("%s plugin unloaded\n"), name);
|
||||
return 1;
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
*/
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#if defined(HAVE_GTK3) || defined(HAVE_GTK2) || defined(HAVE_GTK)
|
||||
#include <gdk/gdk.h>
|
||||
#endif
|
||||
#include "parse.h"
|
||||
#include "match.h"
|
||||
#include "sysinfo.h"
|
||||
@@ -168,3 +172,86 @@ char *sysinfo_backend_get_network(void)
|
||||
|
||||
return g_strdup (ethernet_card);
|
||||
}
|
||||
|
||||
static const char *sysinfo_detect_toolkit(void)
|
||||
{
|
||||
#if defined(HAVE_GTK3)
|
||||
return "GTK3";
|
||||
#elif defined(HAVE_GTK2)
|
||||
return "GTK2";
|
||||
#elif defined(HAVE_GTK)
|
||||
return "GTK";
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static const char *sysinfo_detect_display_backend(void)
|
||||
{
|
||||
const char *backend = NULL;
|
||||
const char *gdk_backend = g_getenv("GDK_BACKEND");
|
||||
const char *session = g_getenv("XDG_SESSION_TYPE");
|
||||
const gboolean session_wayland = session && g_ascii_strcasecmp(session, "wayland") == 0;
|
||||
|
||||
/* Best-effort: ask GDK what it actually opened, if available. */
|
||||
#if defined(HAVE_GTK3) || defined(HAVE_GTK2) || defined(HAVE_GTK)
|
||||
{
|
||||
GdkDisplay *display = gdk_display_get_default();
|
||||
if (display)
|
||||
{
|
||||
const char *type_name = G_OBJECT_TYPE_NAME(display);
|
||||
if (type_name)
|
||||
{
|
||||
if (g_strrstr(type_name, "Wayland"))
|
||||
backend = "Wayland";
|
||||
else if (g_strrstr(type_name, "X11"))
|
||||
backend = "X11";
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Next best: honor explicit backend preference. */
|
||||
if (!backend && gdk_backend)
|
||||
{
|
||||
if (g_strrstr(gdk_backend, "wayland"))
|
||||
backend = "Wayland";
|
||||
else if (g_strrstr(gdk_backend, "x11"))
|
||||
backend = "X11";
|
||||
}
|
||||
|
||||
/* Last resort: infer from common env vars. */
|
||||
if (!backend)
|
||||
{
|
||||
const gboolean has_wayland = g_getenv("WAYLAND_DISPLAY") != NULL;
|
||||
const gboolean has_x11 = g_getenv("DISPLAY") != NULL;
|
||||
if (has_wayland && !has_x11)
|
||||
backend = "Wayland";
|
||||
else if (has_x11 && !has_wayland)
|
||||
backend = "X11";
|
||||
else if (session_wayland)
|
||||
backend = "Wayland";
|
||||
else
|
||||
backend = NULL;
|
||||
}
|
||||
|
||||
/* If we're using X11 inside a Wayland session, call it what it is. */
|
||||
if (backend && g_strcmp0(backend, "X11") == 0 && session_wayland)
|
||||
return "XWayland";
|
||||
|
||||
return backend;
|
||||
}
|
||||
|
||||
char *sysinfo_backend_get_ui(void)
|
||||
{
|
||||
const char *toolkit = sysinfo_detect_toolkit();
|
||||
const char *display = sysinfo_detect_display_backend();
|
||||
|
||||
if (toolkit && display)
|
||||
return g_strdup_printf("%s / %s", toolkit, display);
|
||||
if (toolkit)
|
||||
return g_strdup(toolkit);
|
||||
if (display)
|
||||
return g_strdup(display);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -103,3 +103,30 @@ static char *get_memory_info (void)
|
||||
|
||||
return sysinfo_format_memory (meminfo.ullTotalPhys, meminfo.ullAvailPhys);
|
||||
}
|
||||
|
||||
static const char *sysinfo_detect_toolkit(void)
|
||||
{
|
||||
#if defined(HAVE_GTK3)
|
||||
return "GTK3";
|
||||
#elif defined(HAVE_GTK2)
|
||||
return "GTK2";
|
||||
#elif defined(HAVE_GTK)
|
||||
return "GTK";
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
char *
|
||||
sysinfo_backend_get_ui (void)
|
||||
{
|
||||
const char *toolkit = sysinfo_detect_toolkit();
|
||||
|
||||
/* On Windows we don't have X11/Wayland. Keep it simple. */
|
||||
if (toolkit)
|
||||
{
|
||||
return g_strdup_printf ("Windows / %s", toolkit);
|
||||
}
|
||||
|
||||
return g_strdup ("Windows");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user