rosenrot/rose.c

75 lines
1.6 KiB
C
Raw Normal View History

2022-05-09 21:03:14 +00:00
#include "rose.h"
2022-05-10 21:47:17 +00:00
#define MSGBUFSZ 8
#define LENGTH(x) (sizeof(x) / sizeof(x[0]))
guint xid;
2022-05-13 10:30:15 +00:00
void setatom(int a, const char *v)
2022-05-10 21:47:17 +00:00
{
XChangeProperty(dpy, xid,
atoms[a], atoms[AtomUTF8], 8, PropModeReplace,
(unsigned char *)v, strlen(v) + 1);
XSync(dpy, False);
}
2022-05-13 10:30:15 +00:00
const char* getatom(int a)
2022-05-10 21:47:17 +00:00
{
static char buf[BUFSIZ];
Atom adummy;
int idummy;
unsigned long ldummy;
unsigned char *p = NULL;
XSync(dpy, False);
XGetWindowProperty(dpy, xid,
atoms[a], 0L, BUFSIZ, False, atoms[AtomUTF8],
&adummy, &idummy, &ldummy, &ldummy, &p);
if (p)
strncpy(buf, (char *)p, LENGTH(buf) - 1);
else
buf[0] = '\0';
XFree(p);
return buf;
}
static void setup()
{
if (!(dpy = XOpenDisplay(NULL))) {
puts("Can't open default display");
exit(1);
}
atoms[AtomFind] = XInternAtom(dpy, "_ROSE_FIND", False);
atoms[AtomGo] = XInternAtom(dpy, "_ROSE_GO", False);
atoms[AtomUri] = XInternAtom(dpy, "_ROSE_URI", False);
atoms[AtomUTF8] = XInternAtom(dpy, "UTF8_STRING", False);
}
2022-05-09 21:03:14 +00:00
static void run(GtkApplication *app)
{
2022-05-10 15:35:37 +00:00
RoseWindow *window = rose_window_new(app);
2022-05-09 21:03:14 +00:00
2022-05-10 15:35:37 +00:00
if (dark_mode) {
g_object_set(gtk_settings_get_default(), "gtk-application-prefer-dark-theme", true, NULL);
}
2022-05-09 21:03:14 +00:00
2022-05-11 01:26:23 +00:00
xid = rose_window_show(app, window, homepage);
2022-05-10 21:47:17 +00:00
setatom(AtomUri, homepage);
2022-05-09 21:03:14 +00:00
}
int main(int argc, char **argv)
{
2022-05-10 17:52:56 +00:00
if (argc == 2) {
homepage = argv[1];
argv++; argc--;
}
2022-05-10 21:47:17 +00:00
setup();
2022-05-10 18:28:39 +00:00
GtkApplication *app = gtk_application_new("org.gtk.rose", G_APPLICATION_NON_UNIQUE);
2022-05-09 21:03:14 +00:00
g_signal_connect(app, "activate", G_CALLBACK(run), NULL);
g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
2022-05-09 21:03:14 +00:00
}