Index: head/www/surf/files/patch-surf.c =================================================================== --- head/www/surf/files/patch-surf.c (revision 448060) +++ head/www/surf/files/patch-surf.c (nonexistent) @@ -1,329 +0,0 @@ ---- surf.c.orig 2015-12-19 14:59:30 UTC -+++ surf.c -@@ -6,6 +6,9 @@ - #include - #include - #include -+#if GTK_MAJOR_VERSION >= 3 -+#include -+#endif - #include - #include - #include -@@ -99,7 +102,11 @@ typedef struct { - static Display *dpy; - static Atom atoms[AtomLast]; - static Client *clients = NULL; -+#if GTK_MAJOR_VERSION >= 3 -+static Window embed = 0; -+#else - static GdkNativeWindow embed = 0; -+#endif - static gboolean showxid = FALSE; - static char winid[64]; - static gboolean usingproxy = 0; -@@ -213,6 +220,10 @@ static void windowobjectcleared(GtkWidge - JSContextRef js, JSObjectRef win, Client *c); - static void zoom(Client *c, const Arg *arg); - -+#ifdef BUILTIN_DOWNLOAD -+static void download(WebKitDownload *o, GParamSpec *pspec, Client *c); -+#endif -+ - /* configuration, allows nested code to access above variables */ - #include "config.h" - -@@ -451,6 +462,52 @@ cookiepolicy_set(const SoupCookieJarAcce - return 'A'; - } - -+#ifdef BUILTIN_DOWNLOAD -+struct client_size_tuple { -+ Client* c; -+ gint s; -+}; -+ -+static void -+late_download_update(WebKitWebView* view, GParamSpec *pspec, struct client_size_tuple* t){ -+ char script[1024]; char* s= script; -+ snprintf(script, 1024, "c(%d, %d)", t->s, t->s); -+ const Arg a= {.v = (void*) &s}; -+ eval(t->c, &a); -+ free(t); -+} -+ -+static void -+download(WebKitDownload *o, GParamSpec *pspec, Client *c) { -+ WebKitDownloadStatus status; -+ char script[2048]; char* s= script; -+ -+ status = webkit_download_get_status(o); -+ if(status == WEBKIT_DOWNLOAD_STATUS_STARTED || status == WEBKIT_DOWNLOAD_STATUS_CREATED) { -+ snprintf(script, 2048, "u(%d, %d, %d)", -+ (gint)webkit_download_get_current_size(o), -+ (gint)webkit_download_get_total_size(o), -+ (gint)(webkit_download_get_progress(o) * 100)); -+ const Arg a= {.v = (void*) &s}; -+ eval(c, &a); -+ } -+ else if (status == WEBKIT_DOWNLOAD_STATUS_FINISHED){ -+ if( webkit_web_view_get_load_status(c->view) == WEBKIT_LOAD_FINISHED ){ -+ snprintf(script, 2048, "c(%d, %d)", -+ (gint)webkit_download_get_current_size(o), -+ (gint)webkit_download_get_total_size(o)); -+ const Arg a= {.v = (void*) &s}; -+ eval(c, &a); -+ } -+ else { -+ struct client_size_tuple* t= calloc(1, sizeof(struct client_size_tuple)); -+ t->c= c; t->s= (gint)webkit_download_get_current_size(o); -+ g_signal_connect(c->view, "document-load-finished", G_CALLBACK(late_download_update), t); -+ } -+ } -+} -+#endif -+ - void - evalscript(JSContextRef js, char *script, char* scriptname) - { -@@ -625,7 +682,11 @@ getatom(Client *c, int a) - unsigned long ldummy; - unsigned char *p = NULL; - -+#if GTK_MAJOR_VERSION >= 3 -+ XGetWindowProperty(dpy, GDK_WINDOW_XID(gtk_widget_get_window(GTK_WIDGET(c->win))), -+#else - XGetWindowProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window), -+#endif - atoms[a], 0L, BUFSIZ, False, XA_STRING, - &adummy, &idummy, &ldummy, &ldummy, &p); - if (p) -@@ -685,12 +746,114 @@ handleplumb(Client *c, WebKitWebView *w, - gboolean - initdownload(WebKitWebView *view, WebKitDownload *o, Client *c) - { -+#ifdef BUILTIN_DOWNLOAD -+ gchar *uri, *path; -+ const gchar *filename; -+ Client *n; -+ const char template[] = -+"" \ -+"" \ -+"Download - %s" \ -+"" \ -+"" \ -+"" \ -+"
" \ -+"

Downloading

" \ -+"

%s

" \ -+"to %s
" \ -+"" \ -+" " \ -+" " \ -+" " \ -+" " \ -+" " \ -+" " \ -+" " \ -+" 0/0" \ -+"" \ -+"
" \ -+"" \ -+"" \ -+""; -+ char html[sizeof(template)+2048]; -+ filename = webkit_download_get_suggested_filename(o); -+ -+ path = g_build_filename(downdir, filename, NULL); -+ uri = g_filename_to_uri(path, NULL, NULL); -+ -+ webkit_download_set_destination_uri(o, uri); -+ webkit_download_start(o); -+ -+ n = newclient(); -+ snprintf(html, sizeof(template)+2048, template, filename, filename, path); -+ webkit_web_view_load_string(n->view, html, NULL, NULL, NULL); -+ -+ g_signal_connect(o, "notify::progress", G_CALLBACK(download), n); -+ g_signal_connect(o, "notify::status", G_CALLBACK(download), n); -+ -+ n->title = g_strdup_printf("Downloading %s", filename); -+ n->progress = 0; -+ updatetitle(n); -+ -+ g_free(path); -+ g_free(uri); -+ -+ return TRUE; -+#else - Arg arg; - - updatewinid(c); - arg = (Arg)DOWNLOAD((char *)webkit_download_get_uri(o), geturi(c)); - spawn(c, &arg); - return FALSE; -+#endif - } - - void -@@ -873,6 +1036,9 @@ newclient(void) - GdkScreen *screen; - gdouble dpi; - char *ua; -+#if GTK_MAJOR_VERSION >= 3 -+ GdkWindow *window; -+#endif - - if (!(c = calloc(1, sizeof(Client)))) - die("Cannot malloc!\n"); -@@ -900,6 +1066,10 @@ newclient(void) - */ - gtk_window_set_role(GTK_WINDOW(c->win), "Surf"); - } -+#if GTK_MAJOR_VERSION >= 3 -+ gtk_widget_realize(GTK_WIDGET(c->win)); -+ window = gtk_widget_get_window(GTK_WIDGET(c->win)); -+#endif - gtk_window_set_default_size(GTK_WINDOW(c->win), 800, 600); - g_signal_connect(G_OBJECT(c->win), - "destroy", -@@ -912,10 +1082,18 @@ newclient(void) - addaccelgroup(c); - - /* Pane */ -+#if GTK_MAJOR_VERSION >= 3 -+ c->pane = gtk_paned_new(GTK_ORIENTATION_VERTICAL); -+#else - c->pane = gtk_vpaned_new(); -+#endif - - /* VBox */ -+#if GTK_MAJOR_VERSION >= 3 -+ c->vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); -+#else - c->vbox = gtk_vbox_new(FALSE, 0); -+#endif - gtk_paned_pack1(GTK_PANED(c->pane), c->vbox, TRUE, TRUE); - - /* Webview */ -@@ -997,8 +1175,13 @@ newclient(void) - gtk_widget_show(c->win); - gtk_window_set_geometry_hints(GTK_WINDOW(c->win), NULL, &hints, - GDK_HINT_MIN_SIZE); -+#if GTK_MAJOR_VERSION >= 3 -+ gdk_window_set_events(window, GDK_ALL_EVENTS_MASK); -+ gdk_window_add_filter(window, processx, c); -+#else - gdk_window_set_events(GTK_WIDGET(c->win)->window, GDK_ALL_EVENTS_MASK); - gdk_window_add_filter(GTK_WIDGET(c->win)->window, processx, c); -+#endif - webkit_web_view_set_full_content_zoom(c->view, TRUE); - - runscript(frame); -@@ -1032,7 +1215,11 @@ newclient(void) - * It is equivalent to firefox's "layout.css.devPixelsPerPx" setting. - */ - if (zoomto96dpi) { -+#if GTK_MAJOR_VERSION >= 3 -+ screen = gdk_window_get_screen(window); -+#else - screen = gdk_window_get_screen(GTK_WIDGET(c->win)->window); -+#endif - dpi = gdk_screen_get_resolution(screen); - if (dpi != -1) { - g_object_set(G_OBJECT(settings), -@@ -1071,7 +1258,11 @@ newclient(void) - if (showxid) { - gdk_display_sync(gtk_widget_get_display(c->win)); - printf("%u\n", -+#if GTK_MAJOR_VERSION >= 3 -+ (guint)GDK_WINDOW_XID(window)); -+#else - (guint)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window)); -+#endif - fflush(NULL); - if (fclose(stdout) != 0) { - die("Error closing stdout"); -@@ -1282,7 +1473,11 @@ void - setatom(Client *c, int a, const char *v) - { - XSync(dpy, False); -+#if GTK_MAJOR_VERSION >= 3 -+ XChangeProperty(dpy, GDK_WINDOW_XID(gtk_widget_get_window(GTK_WIDGET(c->win))), -+#else - XChangeProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window), -+#endif - atoms[a], XA_STRING, 8, PropModeReplace, - (unsigned char *)v, strlen(v) + 1); - } -@@ -1301,7 +1496,11 @@ setup(void) - sigchld(0); - gtk_init(NULL, NULL); - -+#if GTK_MAJOR_VERSION >= 3 -+ dpy = GDK_DISPLAY_XDISPLAY(gdk_display_get_default()); -+#else - dpy = GDK_DISPLAY(); -+#endif - - /* atoms */ - atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False); -@@ -1624,7 +1823,11 @@ void - updatewinid(Client *c) - { - snprintf(winid, LENGTH(winid), "%u", -+#if GTK_MAJOR_VERSION >= 3 -+ (int)GDK_WINDOW_XID(gtk_widget_get_window(GTK_WIDGET(c->win)))); -+#else - (int)GDK_WINDOW_XID(GTK_WIDGET(c->win)->window)); -+#endif - } - - void Property changes on: head/www/surf/files/patch-surf.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/surf/files/patch-config.def.h =================================================================== --- head/www/surf/files/patch-config.def.h (revision 448060) +++ head/www/surf/files/patch-config.def.h (nonexistent) @@ -1,73 +0,0 @@ ---- config.def.h.orig 2015-12-19 14:59:30 UTC -+++ config.def.h -@@ -22,6 +22,10 @@ static char *cafile = "/etc/ssl/ - static Bool strictssl = FALSE; /* Refuse untrusted SSL connections */ - static time_t sessiontime = 3600; - -+#ifdef BUILTIN_DOWNLOAD -+static char *downdir = "/tmp"; -+#endif -+ - /* Webkit default features */ - static Bool enablescrollbars = TRUE; - static Bool enablespatialbrowsing = TRUE; -@@ -84,6 +88,51 @@ static SiteStyle styles[] = { - */ - static Key keys[] = { - /* modifier keyval function arg Focus */ -+#if GTK_MAJOR_VERSION >= 3 -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_r, reload, { .b = TRUE } }, -+ { MODKEY, GDK_KEY_r, reload, { .b = FALSE } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_p, print, { 0 } }, -+ -+ { MODKEY, GDK_KEY_p, clipboard, { .b = TRUE } }, -+ { MODKEY, GDK_KEY_y, clipboard, { .b = FALSE } }, -+ -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_j, zoom, { .i = -1 } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_k, zoom, { .i = +1 } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_q, zoom, { .i = 0 } }, -+ { MODKEY, GDK_KEY_minus, zoom, { .i = -1 } }, -+ { MODKEY, GDK_KEY_plus, zoom, { .i = +1 } }, -+ -+ { MODKEY, GDK_KEY_l, navigate, { .i = +1 } }, -+ { MODKEY, GDK_KEY_h, navigate, { .i = -1 } }, -+ -+ { MODKEY, GDK_KEY_j, scroll_v, { .i = +1 } }, -+ { MODKEY, GDK_KEY_k, scroll_v, { .i = -1 } }, -+ { MODKEY, GDK_KEY_b, scroll_v, { .i = -10000 } }, -+ { MODKEY, GDK_KEY_space, scroll_v, { .i = +10000 } }, -+ { MODKEY, GDK_KEY_i, scroll_h, { .i = +1 } }, -+ { MODKEY, GDK_KEY_u, scroll_h, { .i = -1 } }, -+ -+ { 0, GDK_KEY_F11, fullscreen, { 0 } }, -+ { 0, GDK_KEY_Escape, stop, { 0 } }, -+ { MODKEY, GDK_KEY_o, source, { 0 } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_o, inspector, { 0 } }, -+ -+ { MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") }, -+ { MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") }, -+ { MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") }, -+ -+ { MODKEY, GDK_KEY_n, find, { .b = TRUE } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_n, find, { .b = FALSE } }, -+ -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_c, toggle, { .v = "enable-caret-browsing" } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_i, toggle, { .v = "auto-load-images" } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_s, toggle, { .v = "enable-scripts" } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_v, toggle, { .v = "enable-plugins" } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_a, togglecookiepolicy, { 0 } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_m, togglestyle, { 0 } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_b, togglescrollbars, { 0 } }, -+ { MODKEY|GDK_SHIFT_MASK,GDK_KEY_g, togglegeolocation, { 0 } }, -+#else - { MODKEY|GDK_SHIFT_MASK,GDK_r, reload, { .b = TRUE } }, - { MODKEY, GDK_r, reload, { .b = FALSE } }, - { MODKEY|GDK_SHIFT_MASK,GDK_p, print, { 0 } }, -@@ -127,6 +176,7 @@ static Key keys[] = { - { MODKEY|GDK_SHIFT_MASK,GDK_m, togglestyle, { 0 } }, - { MODKEY|GDK_SHIFT_MASK,GDK_b, togglescrollbars, { 0 } }, - { MODKEY|GDK_SHIFT_MASK,GDK_g, togglegeolocation, { 0 } }, -+#endif - }; - - /* button definitions */ Property changes on: head/www/surf/files/patch-config.def.h ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/surf/Makefile =================================================================== --- head/www/surf/Makefile (revision 448060) +++ head/www/surf/Makefile (revision 448061) @@ -1,92 +1,78 @@ # Created by: Christopher Knaust # $FreeBSD$ PORTNAME= surf -PORTVERSION= 0.7 +DISTVERSION= 2.0 CATEGORIES= www MASTER_SITES= http://dl.suckless.org/${PORTNAME}/ PKGNAMESUFFIX= -browser -MAINTAINER= ports@FreeBSD.org -COMMENT= Simple Web browser based on WebKit/Gtk+ +MAINTAINER= dg@syrec.org +COMMENT= Simple Web browser based on WebKit2/GTK+ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE -LIB_DEPENDS= libwebkitgtk-1.0.so:www/webkit-gtk2 -RUN_DEPENDS= dmenu:x11/dmenu +LIB_DEPENDS= libwebkit2gtk-4.0.so:www/webkit2-gtk3 \ + libsoup-2.4.so:devel/libsoup +RUN_DEPENDS= dmenu:x11/dmenu \ + curl:ftp/curl \ + xterm:x11/xterm -USE_GNOME= gtk20 -USE_XORG= x11 USES= pkgconfig +USE_GNOME= gtk30 pango cairo gdkpixbuf2 +USE_XORG= x11 +CONFLICTS= surf-1* # math/surf + +PLIST_FILES= bin/surf \ + man/man1/surf.1.gz \ + share/pixmaps/surf.png PORTDOCS= FAQ.md README TODO.md PORTEXAMPLES= surf-open.sh -PLIST_FILES= bin/surf man/man1/surf.1.gz share/pixmaps/surf.png DESKTOP_ENTRIES="Surf" "" "${PREFIX}/share/pixmaps/surf.png" "surf" "" true -CONFLICTS= surf-1* # math/surf +OPTIONS_DEFINE= DOCS EXAMPLES -OPTIONS_DEFINE= BUILTIN_DOWNLOAD DOCS EXAMPLES -OPTIONS_SINGLE= TOOLKIT -OPTIONS_SINGLE_TOOLKIT= GTK2 GTK3 -OPTIONS_DEFAULT= GTK2 - -# http://surf.suckless.org/patches/download -# http://surf.suckless.org/patches/smoothscrolling-via-GTK3 -BUILTIN_DOWNLOAD_DESC= Built-in download support -BUILTIN_DOWNLOAD_CFLAGS= -DBUILTIN_DOWNLOAD -GTK2_LIB_DEPENDS= libwebkitgtk-1.0.so:www/webkit-gtk2 -GTK2_USE= gnome=gtk20 -GTK2_MAKE_ENV= GTKINC="$$(pkg-config --cflags webkit-1.0)" \ - GTKLIB="$$(pkg-config --libs webkit-1.0)" -GTK3_LIB_DEPENDS= libwebkitgtk-3.0.so:www/webkit-gtk3 -GTK3_USE= gnome=gtk30 -GTK3_MAKE_ENV= GTKINC="$$(pkg-config --cflags webkitgtk-3.0)" \ - GTKLIB="$$(pkg-config --libs webkitgtk-3.0)" -TOOLKIT_DESC= Gtk+ toolkit - -.include - pre-everything:: @${ECHO_MSG} "You can build surf with your own config.h using the SURF_CONF knob:" @${ECHO_MSG} "make SURF_CONF=/path/to/surf/config.h install clean" + @${ECHO_MSG} "Note: Pre-${PORTVERSION} config.h-files may not work." post-extract: .if defined(SURF_CONF) @${ECHO_MSG} "creating config.h from ${SURF_CONF}" - @${CP} ${SURF_CONF} ${WRKSRC}/config.h + @${LN} -sf ${SURF_CONF} ${WRKSRC}/config.h .endif post-patch: - ${REINPLACE_CMD} -e \ + @${REINPLACE_CMD} -e \ '/^PREFIX/s| =| ?=| ; \ /^MANPREFIX/s|/share/man|/man| ; \ /^X11/s|/usr/X11R6/|$${LOCALBASE}/| ; \ /^GTKINC/s| =| ?=| ; \ /^GTKLIB/s| =| ?=| ; \ /^INCS/s|-I/usr/include || ; \ /^LIBS/s|-L/usr/lib -lc || ; \ /^CPPFLAGS/s| =| +=| ; \ /^CFLAGS/s| =| +=| ; \ /^CFLAGS/s|-Os || ; \ /^LDFLAGS/s| =| +=| ; \ /^LDFLAGS/s|-g || ; \ /^CC/s| =| ?=|' ${WRKSRC}/config.mk + @${REINPLACE_CMD} -e 's|st -e|xterm -e|' ${WRKSRC}/config.def.h post-install: - ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/surf - (cd ${WRKSRC} && ${INSTALL_DATA} surf.png \ - ${STAGEDIR}${PREFIX}/share/pixmaps) + @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/surf + ${INSTALL_DATA} ${WRKSRC}/surf.png ${STAGEDIR}${PREFIX}/share/pixmaps post-install-DOCS-on: - ${MKDIR} ${STAGEDIR}${DOCSDIR} - (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR}) + @${MKDIR} ${STAGEDIR}${DOCSDIR} + cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${STAGEDIR}${DOCSDIR} post-install-EXAMPLES-on: - ${MKDIR} ${STAGEDIR}${EXAMPLESDIR} - (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTEXAMPLES} \ - ${STAGEDIR}${EXAMPLESDIR}) + @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + cd ${WRKSRC} && ${INSTALL_DATA} ${PORTEXAMPLES} ${STAGEDIR}${EXAMPLESDIR} .include Index: head/www/surf/distinfo =================================================================== --- head/www/surf/distinfo (revision 448060) +++ head/www/surf/distinfo (revision 448061) @@ -1,2 +1,3 @@ -SHA256 (surf-0.7.tar.gz) = 95608546fb64d01c7a8153c356be0e284ebe120c3c596a94eb3f3ad47e1c494a -SIZE (surf-0.7.tar.gz) = 18792 +TIMESTAMP = 1502724289 +SHA256 (surf-2.0.tar.gz) = faee4c7a62c38fc9791eff1ad06787c3c9b2b79f338806827f5152a7bc54951d +SIZE (surf-2.0.tar.gz) = 19056 Index: head/www/surf/pkg-descr =================================================================== --- head/www/surf/pkg-descr (revision 448060) +++ head/www/surf/pkg-descr (revision 448061) @@ -1,6 +1,6 @@ -surf is a simple web browser based on WebKit/GTK+. It is able to display +surf is a simple web browser based on WebKit2/GTK+. It is able to display websites and follow links. It supports the XEmbed protocol which makes it possible to embed it in another application. Furthermore, one can point surf to another URI by setting its XProperties. WWW: http://surf.suckless.org