diff --git a/CHANGES b/CHANGES index 0f9d84f..d54ae23 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,7 @@ This version of surf differs from the original on suckless.org as follows: - applied externalpipe patch (added scripts to show a save dialog on Ctrl+s, editor window on Ctrl+o) - always sets _SURF_URI before spawning (unsure about correct location, but fixes bookmarking bug) +- threw out web extensions, since they regularly seem to fail - don't show indicators - don't stop on Ctrl+c diff --git a/Makefile b/Makefile index 28e4580..4f69a57 100644 --- a/Makefile +++ b/Makefile @@ -5,12 +5,9 @@ include config.mk SRC = surf.c -WSRC = webext-surf.c OBJ = $(SRC:.c=.o) -WOBJ = $(WSRC:.c=.o) -WLIB = $(WSRC:.c=.so) -all: options surf $(WLIB) +all: options surf options: @echo surf build options: @@ -23,7 +20,7 @@ options: $(CC) $(SURFCFLAGS) $(CFLAGS) -c $< .o.so: - $(CC) -shared -Wl,-soname,$@ $(LDFLAGS) -o $@ $< $(WEBEXTLIBS) + $(CC) -shared -Wl,-soname,$@ $(LDFLAGS) -o $@ $< config.h: cp config.def.h $@ @@ -34,11 +31,10 @@ surf: $(OBJ) $(CC) $(SURFLDFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(WOBJ): - $(CC) $(WEBEXTCFLAGS) $(CFLAGS) -c $(@:.o=.c) + $(CC) $(CFLAGS) -c $(@:.o=.c) clean: rm -f surf config.h $(OBJ) - rm -f $(WLIB) $(WOBJ) distclean: clean rm -f config.h surf-$(VERSION).tar.gz @@ -47,7 +43,7 @@ dist: distclean mkdir -p surf-$(VERSION) cp -R LICENSE Makefile config.mk config.def.h README \ surf-open.sh arg.h TODO.md surf.png \ - surf.1 $(SRC) $(CSRC) $(WSRC) surf-$(VERSION) + surf.1 $(SRC) $(CSRC) surf-$(VERSION) tar -cf surf-$(VERSION).tar surf-$(VERSION) gzip surf-$(VERSION).tar rm -rf surf-$(VERSION) @@ -57,10 +53,6 @@ install: all cp -f surf $(DESTDIR)$(PREFIX)/bin chmod 755 $(DESTDIR)$(PREFIX)/bin/surf mkdir -p $(DESTDIR)$(LIBDIR) - cp -f $(WLIB) $(DESTDIR)$(LIBDIR) - for wlib in $(WLIB); do \ - chmod 644 $(DESTDIR)$(LIBDIR)/$$wlib; \ - done mkdir -p $(DESTDIR)$(MANPREFIX)/man1 sed "s/VERSION/$(VERSION)/g" < surf.1 > $(DESTDIR)$(MANPREFIX)/man1/surf.1 chmod 644 $(DESTDIR)$(MANPREFIX)/man1/surf.1 @@ -68,9 +60,6 @@ install: all uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/surf rm -f $(DESTDIR)$(MANPREFIX)/man1/surf.1 - for wlib in $(WLIB); do \ - rm -f $(DESTDIR)$(LIBDIR)/$$wlib; \ - done - rmdir $(DESTDIR)$(LIBDIR) .SUFFIXES: .so .o .c diff --git a/config.mk b/config.mk index 6941713..59e4f4c 100644 --- a/config.mk +++ b/config.mk @@ -14,8 +14,6 @@ X11LIB = `pkg-config --libs x11` GTKINC = `pkg-config --cflags gtk+-3.0 gcr-3 webkit2gtk-4.0` GTKLIB = `pkg-config --libs gtk+-3.0 gcr-3 webkit2gtk-4.0` -WEBEXTINC = `pkg-config --cflags webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -WEBEXTLIBS = `pkg-config --libs webkit2gtk-4.0 webkit2gtk-web-extension-4.0` # includes and libs INCS = $(X11INC) $(GTKINC) @@ -26,7 +24,6 @@ CPPFLAGS = -DVERSION=\"$(VERSION)\" -DGCR_API_SUBJECT_TO_CHANGE \ -DLIBPREFIX=\"$(LIBPREFIX)\" -DWEBEXTDIR=\"$(LIBDIR)\" \ -D_DEFAULT_SOURCE SURFCFLAGS = -fPIC $(INCS) $(CPPFLAGS) -WEBEXTCFLAGS = -fPIC $(WEBEXTINC) # compiler #CC = c99 diff --git a/surf.c b/surf.c index 9e83c8b..2a7976b 100644 --- a/surf.c +++ b/surf.c @@ -181,7 +181,6 @@ static void cleanup(void); /* GTK/WebKit */ static WebKitWebView *newview(Client *c, WebKitWebView *rv); -static void initwebextensions(WebKitWebContext *wc, Client *c); static GtkWidget *createview(WebKitWebView *v, WebKitNavigationAction *a, Client *c); static gboolean buttonreleased(GtkWidget *w, GdkEvent *e, Client *c); @@ -1196,8 +1195,6 @@ newview(Client *c, WebKitWebView *rv) g_signal_connect(G_OBJECT(context), "download-started", G_CALLBACK(downloadstarted), c); - g_signal_connect(G_OBJECT(context), "initialize-web-extensions", - G_CALLBACK(initwebextensions), c); v = g_object_new(WEBKIT_TYPE_WEB_VIEW, "settings", settings, @@ -1264,20 +1261,6 @@ readpipe(GIOChannel *s, GIOCondition ioc, gpointer unused) return TRUE; } -void -initwebextensions(WebKitWebContext *wc, Client *c) -{ - GVariant *gv; - - if (!pipeout[0] || !pipein[1]) - return; - - gv = g_variant_new("(ii)", pipeout[0], pipein[1]); - - webkit_web_context_set_web_extensions_initialization_user_data(wc, gv); - webkit_web_context_set_web_extensions_directory(wc, WEBEXTDIR); -} - GtkWidget * createview(WebKitWebView *v, WebKitNavigationAction *a, Client *c) { diff --git a/webext-surf.c b/webext-surf.c deleted file mode 100644 index ec471d1..0000000 --- a/webext-surf.c +++ /dev/null @@ -1,130 +0,0 @@ -#include -#include -#include -#include - -#include -#include -#include -#include - -#include "common.h" - -#define LENGTH(x) (sizeof(x) / sizeof(x[0])) - -typedef struct Page { - guint64 id; - WebKitWebPage *webpage; - struct Page *next; -} Page; - -static int pipein, pipeout; -static Page *pages; - -Page * -newpage(WebKitWebPage *page) -{ - Page *p; - - if (!(p = calloc(1, sizeof(Page)))) { - fputs("Cannot malloc!\n", stderr); - exit(1); - } - - p->next = pages; - pages = p; - - p->id = webkit_web_page_get_id(page); - p->webpage = page; - - return p; -} - -static void -msgsurf(Page *p, const char *s) -{ - static char msg[MSGBUFSZ]; - size_t sln = strlen(s); - int ret; - - if ((ret = snprintf(msg, sizeof(msg), "%c%c%s", - 2 + sln, p ? p->id : 0, s)) - >= sizeof(msg)) { - fprintf(stderr, "webext: message too long: %d\n", ret); - return; - } - - if (pipeout && write(pipeout, msg, sizeof(msg)) < 0) - fprintf(stderr, "webext: error sending: %.*s\n", ret-2, msg+2); -} - -static gboolean -readpipe(GIOChannel *s, GIOCondition c, gpointer unused) -{ - static char msg[MSGBUFSZ], msgsz; - WebKitDOMDOMWindow *view; - GError *gerr = NULL; - glong wh, ww; - Page *p; - - if (g_io_channel_read_chars(s, msg, LENGTH(msg), NULL, &gerr) != - G_IO_STATUS_NORMAL) { - fprintf(stderr, "webext: error reading pipe: %s\n", - gerr->message); - g_error_free(gerr); - return TRUE; - } - if ((msgsz = msg[0]) < 3) { - fprintf(stderr, "webext: message too short: %d\n", msgsz); - return TRUE; - } - - for (p = pages; p; p = p->next) { - if (p->id == msg[1]) - break; - } - if (!p || !(view = webkit_dom_document_get_default_view( - webkit_web_page_get_dom_document(p->webpage)))) - return TRUE; - - switch (msg[2]) { - case 'h': - if (msgsz != 4) - return TRUE; - ww = webkit_dom_dom_window_get_inner_width(view); - webkit_dom_dom_window_scroll_by(view, - (ww / 100) * msg[3], 0); - break; - case 'v': - if (msgsz != 4) - return TRUE; - wh = webkit_dom_dom_window_get_inner_height(view); - webkit_dom_dom_window_scroll_by(view, - 0, (wh / 100) * msg[3]); - break; - } - - return TRUE; -} - -static void -webpagecreated(WebKitWebExtension *e, WebKitWebPage *wp, gpointer unused) -{ - Page *p = newpage(wp); -} - -G_MODULE_EXPORT void -webkit_web_extension_initialize_with_user_data(WebKitWebExtension *e, GVariant *gv) -{ - GIOChannel *gchanpipe; - - g_signal_connect(e, "page-created", G_CALLBACK(webpagecreated), NULL); - - g_variant_get(gv, "(ii)", &pipein, &pipeout); - msgsurf(NULL, "i"); - - gchanpipe = g_io_channel_unix_new(pipein); - g_io_channel_set_encoding(gchanpipe, NULL, NULL); - g_io_channel_set_close_on_unref(gchanpipe, TRUE); - g_io_add_watch(gchanpipe, G_IO_IN, readpipe, NULL); -}