204 Commits

Author SHA1 Message Date
Quentin Rameau b814567e2b Bump version to 2.0
We're using the new scheme: 2.x is for webkit2
2017-03-28 18:17:45 +02:00
Quentin Rameau 0cb1597801 Add contributors to the LICENSE 2017-03-28 18:17:03 +02:00
Quentin Rameau 7e02344a61 Install Atoms before initializing gtk
There a race condition in gtkplug/socket which is raised when setting
Atoms.
Use this workaround until
https://bugzilla.gnome.org/show_bug.cgi?id=778680 is fixed.
2017-03-22 17:20:36 +01:00
Michael Stevens 1abb2ebe7a Fix spelling of otherwise in surf.1
Add more spelling to surf.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2017-03-22 17:01:36 +01:00
Quentin Rameau 37e43501d8 Fix font-size setting parameter value type in newview 2017-03-06 11:00:04 +01:00
Quentin Rameau da5290a41a Add support for loading Webkit extensions 2016-09-22 10:21:31 +02:00
Charles Lehner c64c368d86 Reload on SIGHUP
ratiueratuie rstiure tiurest aruite rautie rautier tiue rtaruit ratiuera
This patch makes surf reload its pages when it receives a SIGHUP signal.
This makes it easier for shell scripts to trigger surf to reload.

I'm aware of using xdotool to trigger ctrl+r keypresses for reloading
but I wasn't able to get that to work in a general way. [1]

I'm sending this here in case surf maintainers and users would like to
include this in core - if not I will submit it to the wiki.

Regards,
Charles

[1] http://surf.suckless.org/files/autorefresh

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-07-08 15:02:42 +02:00
Quentin Rameau 4c41d363b7 Add a few configuration options
“enable-accelerated-2d-canvas”
“media-playback-requires-user-gesture”
“enable-site-specific-quirks”

Lookup those at
https://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html
2016-07-05 17:32:44 +02:00
Quentin Rameau 5a02d3e500 Fix GdkDisplay assignment in setup()
Init GTK before trying to get the default display.
2016-07-05 13:35:44 +02:00
Quentin Rameau f9714ab838 Get rid of getkbdevice
The GTK guys nicely took in account our request and pushed in a
convenience function to get default keyboard device.
2016-07-05 13:01:56 +02:00
Christoph Lohmann 8682a4dffb Fixing the last patch to the surf style. 2016-07-05 13:01:56 +02:00
Dmitry Bogatov cee8f0186c Check $HOME and home dir of $USER before getpwuid()->pw_dir
getpwnam(3) recommends to use $HOME instead of getpwuid()->pw_dir,
as it allows users to point programs to a different path.

Using getpwuid() also breaks namespaces-related use cases,
like `unshare -r`.

Patch was submitted by Dmitry Bogatov on the Debian bug tracker:
https://bugs.debian.org/825397

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-07-05 13:01:56 +02:00
Quentin Rameau 3530d18d8e Fix url parsing in load() 2016-07-05 13:01:56 +02:00
Quentin Rameau 7ca9421a69 Apply domain parameters each time url is changed
Urls are only changed at load (initial requested one), or while
redirected. When the page is committed, url is already final.
2016-07-05 13:01:56 +02:00
Quentin Rameau 1206b2c587 Fix inspector toggling
Always get the inspector object, and let the user eventually close it
even if it's disabled for the current page.
2016-07-05 13:01:56 +02:00
Quentin Rameau c8fdd4d583 Rectify how parameters are handled in setparameter()
Access parameters through given Arg parameter instead of accessing
global parameters.
2016-07-05 13:01:56 +02:00
Quentin Rameau 6e019362c5 Fix parameter initialization and assignment 2016-07-05 13:01:56 +02:00
Quentin Rameau 75e3fe5b95 Adapting the whole surf structure to new settings 2016-07-05 13:01:56 +02:00
Quentin Rameau 11b34c0814 Adapt default parameters to new config style 2016-07-05 13:01:56 +02:00
Quentin Rameau 2aa1c38aed Introduce new data structure for handling settings 2016-07-05 13:01:56 +02:00
Dmitrij D. Czarkoff d04fb9bff3 Disable globbing in curl command
Curl is invoked for downloading particular files.  Without "-g" flag it would
apply globbing rules to URLs, which may end badly in case URL is not properly
quoted.
2016-03-06 09:34:07 +01:00
Quentin Rameau af7522006b Get rid of JavaScript for scrolling in views
This is still a hack, until WebKitGTK gives us a more practical and
stable way to do that. Manipulating directly the DOM inside a
webextension is a pain and only usable with unstable API atm.
2016-03-02 14:46:14 +01:00
Quentin Rameau 50befe4a95 Modify linking parameter 2016-03-02 14:44:06 +01:00
Christoph Lohmann 581075796a Import the arg.h from st which fixed the oob bug. 2016-03-02 14:38:34 +01:00
Quentin Rameau 934705c420 Fix title handling
Don't forget to always set the title to the current uri, this way it's
up to date when there is no title on the page (ie for local file
exploration).
Thanks to pickfire for reporting the issue.
2015-12-01 12:31:42 +01:00
Quentin Rameau ee04671220 Fix clickexternplayer(), no need to test the target again 2015-11-24 23:18:06 +01:00
Quentin Rameau c069b76f1b Fix user agent command-line parameter
Thanks to yui for seeing that!
2015-11-23 22:13:32 +01:00
Quentin Rameau 981ade6eeb Add webkit language settings
You can now set your prefered website languages in order.
It is also possible to enable spell checking in the same way.
2015-11-22 19:13:48 +01:00
Quentin Rameau 00f9dcdf43 Fix key handling
I had forgotten to compare configured key values against lowered pressed
key values.
Integrated keypress() into winevent().
2015-11-22 17:44:40 +01:00
Quentin Rameau 971856a579 Fix target uri handling when leaving window
Introduce a new string pointer overtitle in Client to be able to keep
the targeturi intact while modifying the former for overriding or not
the window title.
Connect to GDK_ENTER_NOTIFY to restore overtitle when refocusing on
window.
2015-11-22 16:45:22 +01:00
Quentin Rameau d0020bad4f Adapt togglestyle()
We can't apply an empty stylesheet anymore, instead remove any previous
stylesheet.
2015-11-22 15:31:15 +01:00
Quentin Rameau c3a827d621 Modify decideresource() and favicon handling
Return as soon as the request has been processed.
No need to modify the favicon uri, just ignore it.
2015-11-22 15:19:10 +01:00
Quentin Rameau b70a966aa6 Style change in newview(), sort signals order 2015-11-22 13:51:05 +01:00
Quentin Rameau cdc80731fb Fix error handling in spawn()
Be more specific about process name and exit with an error.
2015-11-22 13:44:31 +01:00
Quentin Rameau b87123ac9b Modify default handling of cookiepolicy functions
It's more obvious this way that the default is to always accept cookies
and not the other way around.
2015-11-22 13:33:28 +01:00
Quentin Rameau d4ac9fb6f4 Simplify handling of c->title 2015-11-22 13:24:24 +01:00
Quentin Rameau 10105c8b87 Fix pasteuri()
The uri check had been inverted.
2015-11-22 13:15:39 +01:00
Quentin Rameau 7c24c61ab2 Style fix in sigchld() 2015-11-22 12:22:23 +01:00
Quentin Rameau 890ab510ea Replace use of EXIT_* constants to 0 and 1 2015-11-22 12:17:05 +01:00
Quentin Rameau 3e017b1a89 Fix WM_CLASS and WM_WINDOW_ROLE properties
Instead of forcing class and instance names, which is what GTK does by
default anyway, allow the user to set the instance name, but keep the
general class as “Surf”.
Is we won't support a “-name” parameter and don't implement a parsing of
RESOURCE_NAME env variable, let's fallback on the third behaviour, use
the name of the calling executable.
That would let the user do things like 'ln -s ./surf ./surf-other;
./surf-other' and set different parameters for the two instances (in dwm
for example).
Try to generate a unique WM_WINDOW_ROLE (within the surf process)
composed of “Surf” and the view ID.
2015-11-22 11:53:19 +01:00
Quentin Rameau bd17d359d6 Remove window hints settings
Setting minimum size to 1x1 is not necessary as this is the default.
2015-11-22 03:00:03 +01:00
Quentin Rameau 60c58fbf17 Style indentation fix 2015-11-22 02:25:07 +01:00
Quentin Rameau 2fb122c012 Continue making chars const 2015-11-22 02:22:38 +01:00
Quentin Rameau 6e68af115d Correct and simplify buttonreleased() gdk event
The passed event is a GdkEvent (or GdkEventButton), but not a
GdkEventKey.
Access the struct directly.
2015-11-22 02:10:18 +01:00
Quentin Rameau fef80cd56c Un(g)boolify to separate GTK dependant code from the rest 2015-11-22 02:03:26 +01:00
Quentin Rameau 6124176b89 Use char instead of gchar and make them const when possible 2015-11-22 01:52:13 +01:00
Quentin Rameau 11fa5a7a4d Style update for indentation 2015-11-22 01:42:34 +01:00
Quentin Rameau 954a718197 Add mouse function to play medias in external player
Control + left click launches mpv with the target media url.
2015-11-21 19:53:29 +01:00
Quentin Rameau 26eb2f761c Update credits 2015-11-21 19:24:19 +01:00
Quentin Rameau bc46e954f2 Style change in includes order 2015-11-21 19:22:11 +01:00
Quentin Rameau 432f3c6b53 Style change in functions ordering
Try to group and order functions in a logical manner.
Same thing for config keybindings.
2015-11-21 19:14:08 +01:00
Quentin Rameau 7e9a85a5cb Cleanup remaining unused variables and copystr() 2015-11-20 17:42:25 +01:00
Quentin Rameau adc650f399 Adapt newwindow()
Reorder cmdline options alphabetically and try to keep settings as they
have been toggled in this surf client.
2015-11-20 17:39:45 +01:00
Quentin Rameau 5bca222339 Adapt user agent handling
Now we can only append Surf version to the default WebKit user agent
instead of setting the whole string (while this remains possible to do).
2015-11-20 17:12:00 +01:00
Quentin Rameau e6cefa584e Adapt updatetitle()
Now always show loading progress, still print mouse over link uri before
page uri. Process simplyfied because we use const strings.
2015-11-20 16:59:15 +01:00
Quentin Rameau b5096b1c8f Adapt toggle statistics
Rename *togglestat to plural *togglestats, add frame flatenning
indicator, resize array in consequence.
Use a static index instead of a dynamic one as we always use all values
anyway.
2015-11-20 16:53:52 +01:00
Quentin Rameau 690118133d Adapt page statistics
Rename *pagestat to plural *pagestats, and resize array to reflect
missing proxy parameter.
2015-11-20 16:48:18 +01:00
Quentin Rameau 84611a5d29 Adapt loaduri()
Better handling of different URIs. Filter out “about:” scheme, dont
touch URI if it contains a complete scheme (we assume "://", denotes
one), else test if given path is an actual reachable file on the
filesystem, else prepend arbitrary http:// scheme.
2015-11-20 16:39:53 +01:00
Quentin Rameau 5def2e51da Adapt config MACROs SETPROP, DOWNLOAD, PLUMB
As we now use directly const strings from WebKitGTK, “constify” arg void
pointer.
2015-11-20 16:35:13 +01:00
Quentin Rameau 2d1e422368 Rename mouse functions to clickFUNCTION() 2015-11-20 16:27:02 +01:00
Quentin Rameau 82abf5154f Adapt toggle(), clean some config parameters
Regroup all toggles in an enum and handle them with a unique function
via a switch. That lets us take different actions for each toggle.
Add a frame flatenning and a dns preteching options.
2015-11-20 15:48:04 +01:00
Quentin Rameau 526b974c33 Adapt find()
Slightly new behaviour: searching again for the same string (via MOD+/)
resets the search (ie restarts search from document top).
Searching for an empty string stops the search (ie all highlights are
removed).
2015-11-20 01:12:28 +01:00
Quentin Rameau 320e4e4388 Adapt zoom() 2015-11-20 01:03:32 +01:00
Quentin Rameau acec16e685 Adapt navigate() 2015-11-20 01:00:38 +01:00
Quentin Rameau 42fdc77f5e Remove togglescrollbars()
We do not have access to scrollbars and will have to manipulate DOM to
do that.
2015-11-20 00:58:14 +01:00
Quentin Rameau a53dc90171 Adapt scrolling
In fact, we have a scrolling handle ersatz for now using JavaScript
calls as we don't have access anymore to scrollbars.
We'll have to manipulate the DOM directly (later).
2015-11-20 00:53:14 +01:00
Quentin Rameau c4f01cd18b Adapt inspector handling
The inspector is now easily manageable via API, there's no need for
keeping its state in the Client.
2015-11-20 00:46:11 +01:00
Quentin Rameau 0b5b798eb2 Adapt print() 2015-11-20 00:34:23 +01:00
Quentin Rameau 2c2a7b608e Simplify building of stylefiles path
We can directly use style file pointers instead of using temporary
string pointers.
2015-11-20 00:34:22 +01:00
Quentin Rameau ba8617e4ee Adapt setstyle()
We can't anymore pass a simple path to a stylefile, we have to read the
entire file to create a stylesheet and apply it to the view.
2015-11-20 00:34:22 +01:00
Quentin Rameau 701815a5f2 Adapt clipboard()
Replace linkhover with target uri and add some comments
2015-11-20 00:34:22 +01:00
Quentin Rameau d6794e0d75 Rename fullscreen() to togglefullscreen()
And handle c->fullscreen value in winevent(). This way we keep track of
fullscreen state even if we did not directly initiate the fullscreen.
2015-11-20 00:34:22 +01:00
Quentin Rameau b4e78555d0 Replace titlechangeleave() with catch-all winevent()
All GtkWidget events have the same function prototype with the generic
GdkEvent as parameter. This will let us handle everything in the switch.
2015-11-20 00:34:22 +01:00
Quentin Rameau d9cecc8932 Adapt JavaScript functions
Removed eval(), evalscript() is now sufficient and can directly execute
passed JavaScript string.
2015-11-20 00:34:22 +01:00
Quentin Rameau 72905b8bfc Remove windowobjectcleared(), execute scripts on load finished
The “window-object-cleared” signal is not directly accessible for
specific WebViews now. We'll have to use an Extension or rewrite the
JavaScript running functions.
2015-11-20 00:34:22 +01:00
Quentin Rameau bb1fc4195f Add createwindow() for GtkWindow creation
Move there window creation from showview().
2015-11-20 00:34:22 +01:00
Quentin Rameau 2e1fb87361 Add closeview() for JavaScript window closing
Simply call gtk_widget_destroy() on the window. Then GtkWindow closing
process will take care of the rest.
2015-11-20 00:34:21 +01:00
Quentin Rameau 04d46d1791 Remove (delete :>) deletion_interface() 2015-11-20 00:34:21 +01:00
Quentin Rameau 76940a9ab5 Integrate beforerequest() into decidepolicy() 2015-11-20 00:34:21 +01:00
Quentin Rameau d542773e75 Remove contextmenu() and menuactivate() for "context-menu" signal
Those were added because “right click menu to copy the link URI will now
work” (would not work) in 2013. It's been a while since that works without
intervention.
2015-11-20 00:34:21 +01:00
Quentin Rameau f6a35e5fbf Adapted buttonrelease()
Use the current hit test (c->mousepos) to determine where the mouse
pointer is.
It is possible to link an action to a click and still propagate the
event after that by setting the “stop event” parameter of a Button to 0.
2015-11-20 00:34:21 +01:00
Quentin Rameau 96188f83f0 Replace initdownload() and intercept global download requests.
Attach to download requests on WebKitContext, this way we can easily
manage all types of downloads (coming from views or not).
2015-11-20 00:34:21 +01:00
Quentin Rameau 26a2dbac65 Adapted progresschanged() 2015-11-20 00:34:21 +01:00
Quentin Rameau 58c4e18975 Manage ssl errors with GTlsCertificateFlags
Keep a GTlsCertificateFlags in Client for TLS errors.
If we don't use a ssl connection, set it to a value greater than maximum
error flag value (which is G_TLS_CERTIFICATE_VALIDATE_ALL for all
possible errors).
2015-11-20 00:34:20 +01:00
Quentin Rameau e9ec482049 Replace loadstatuschanged() with loadchanged() 2015-11-20 00:34:20 +01:00
Quentin Rameau bce814b30a Replace decidewindow() and decidedownload() with decidepolicy()
Now all the requests are triggered by one signal.
We then handle each type, resource download, navigation, newwindow, in
separate functions.
2015-11-20 00:34:20 +01:00
Quentin Rameau 1f99df029c Replace createwindow() with createview()
We can now perform some filtering before opening a new view (window)
when requested by JavaScript (either random or by a click).
2015-11-20 00:34:20 +01:00
Quentin Rameau 92d7ba7ed8 Replace geopolicyrequested() with permissionrequested()
The permission-request signal can now ask for than a geolocation
authorisation (though we only handle that for now).
2015-11-20 00:34:20 +01:00
Quentin Rameau 42c6c90366 Replace linkhover() with mousetargetchanged()
The “linkhover” can now be more than a simple link (image, video, etc.).
As we can't anymore perform a hit test when we want, we have to keep the
last known hit test to be able to know where the mouse is on the next
click event.
2015-11-20 00:34:20 +01:00
Quentin Rameau b9530ad5d1 Modify the context name of the hit tests
These relate more to the position of the pointer when an event occurs.
2015-11-20 00:34:20 +01:00
Quentin Rameau 60f574e4b7 Adapted titlechange()
Do not copy title strings, just carry over the const pointer.
2015-11-20 00:34:20 +01:00
Quentin Rameau 0f3e3bf669 Move all necessary initialisation to newview()
Most all the settings and callbacks are set before view creation.
Create a related view (with inherited settings) if asked to.
2015-11-20 00:34:19 +01:00
Quentin Rameau ad538bb00a Add newview() and forward related views
View creation is now done in a separate function.
That helps identifying the workflow and let us easily carry related
view (client) when asked by the WebKit for a new one.
2015-11-20 00:34:19 +01:00
Quentin Rameau 421486db18 Add showview()
Only show the window when and if the view is ready.
Move all the window rendering there.
2015-11-20 00:34:14 +01:00
Quentin Rameau f86977a6fa Separate the rendering engine process
Use one WebKitWebProcess per view instead of one for all views.
More information in the API documentation.
2015-11-20 00:23:59 +01:00
Quentin Rameau b0f35be17b No option to enforce 96DPI anymore on WebKit2 2015-11-20 00:23:59 +01:00
Quentin Rameau 42829cdad0 Scrolling is now handled through WebKit
We don't have access anymore to the scrolling process and have to rely
entirely on WebKit.
We could be able to manage scrolling and bars directly by manipulating
the DOM via a WebKitExtension. To be continued…
2015-11-20 00:23:59 +01:00
Quentin Rameau 94f2f2eace SSL policy is now handled through WebKit 2015-11-20 00:23:59 +01:00
Quentin Rameau e39b7e623c Disk cache is now handled through WebKit 2015-11-20 00:23:59 +01:00
Quentin Rameau 7c34b37786 Cookies are now handled through WebKit
Remove all soup cookie handling and use provided interface.
2015-11-20 00:23:54 +01:00
Quentin Rameau 4415c475f7 Remove source(), it has been removed from webkit2gtk
WebKit2GTK doesn't provide a direct way to view source anymore, we'll
have to do that ourselves with a GtkSourceView if we still need that.
2015-11-18 14:59:13 +01:00
Quentin Rameau b7cc1ae964 Remove proxy stuff, it's now handled by WebView 2015-11-18 14:59:13 +01:00
Quentin Rameau abcf5f06ed Switch headers to webkit2 2015-11-18 14:59:13 +01:00
Quentin Rameau 566b452b46 Port surf to gtk3 2015-11-17 17:05:05 +01:00
Quentin Rameau 9b1e1873b0 buildfile: don't forget to free temporary string bpath
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-11-04 16:47:04 +01:00
Quentin Rameau 5333171961 Be more specific about what enablestyles parameter does.
The enablestyles configuration variable and parameter flag manages the
global application of styles, not just the site-specific styles.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-11-03 19:45:50 +01:00
Quentin Rameau 2223e9ed22 Fix inspector handling when inspector is disabled.
Do not try to show the inspector window when the inspector is disabled.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-11-03 19:45:04 +01:00
Quentin Rameau 1ebb5c624e Fix usage(), -m and -M for styles were absent.
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-11-03 19:44:20 +01:00
Quentin Rameau 9a2547230a Fix fullscreen handling
Handle the fullscreen in a more consistent way with other options:
-f disables fullscreen while -F enables fullscreen.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-11-03 19:44:05 +01:00
Quentin Rameau 0290066b31 Add setstyle()
Regroup style uri setting application calls under one function.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-31 17:50:06 +01:00
Quentin Rameau d84fe71094 Fix style files handling: stop leaking strings.
Everytime getstyle() was being called, we returned newly allocated
strings without ever freing them.
Now uri stylefiles only get allocated once at setup().

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-31 17:50:03 +01:00
Christoph Lohmann d486169fa4 Style changes in config.def.h. 2015-10-31 17:49:36 +01:00
Quentin Rameau c65c8d422b Continue style fixing: function declarations, code alignement
Here are the changes we discussed on the mailing-list.
Alignement is pushed to the first parameter of the function, which seems
to be what people agrees on.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-20 17:52:54 +02:00
Markus Teich 9f5c6ff8d7 style fixes: space after keywords, () with sizeof
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-18 23:01:56 +02:00
Markus Teich c2bb8d0325 whitespace fixes
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-18 23:01:52 +02:00
Markus Teich 6a65dcb394 fix style path generation
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-18 16:34:11 +02:00
Christoph Lohmann c81fbbaf43 Style cleanup. 2015-10-13 21:48:38 +02:00
Quentin Rameau 8a898ec4df Fix the way system files are handled at surf startup.
1. Do not chmod existing directories.
2. Fix the handling of tilde expansion in paths, don't expand ~foo to
   $HOME/foo but to foo's home directory.
3. Separate the creation of files and directories. We don't have to
   worry anymore about pathnames having to end with a '/' to be correctly
   handled.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-13 21:45:14 +02:00
Quentin Rameau 1554354f16 Fix atom value parsing in SETPROP
xprop(1) encloses the returned atom string value in double quotes while
it doesn't when the value is unset. Original simple parsing would fail
and parse the atom name instead of getting an empty value.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-10-13 14:28:09 +02:00
Christoph Lohmann 3c2acda0b7 Remove the pax intermediary.
Compile webkit without jit and you don't need to disable mprotect.
2015-09-08 20:28:11 +02:00
Christoph Lohmann 8e88984a40 Fixing the paxctl check.
Thanks quinq for the tip.
2015-08-19 06:28:31 +02:00
Christoph Lohmann 294142a806 Add PaX support.
Mprotect needs to be turned off for Webkit.
2015-08-18 18:21:34 +02:00
GhostAV 957a6f0812 Torified surf is unstable
On Tue, Aug 18, 2015 at 12:38:40PM +0200, Gabriel Pérez-Cerezo wrote:
> It really seems  to be a problem with torsocks.  I have already solved
> this problem with a patch GhostAV just  sent me on this list that adds
> SOCKS support to surf. It works fine now.

As i failed to send the patch to the list, i resend it now:
-- >8 --
From: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de>
Subject: [PATCH] allow sock proxies

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-08-18 17:43:18 +02:00
Quentin Rameau 9b6998e7ae Fix type of strictssl property.
Thanks to Mark Edgar <medgar123@gmail.com> for having spotted this.
2015-07-13 13:31:22 +02:00
Christoph Lohmann b4ca032b8c Removing the debug print from the last commit. 2015-02-10 19:06:56 +01:00
Markus Teich 29c2ab207a allow buttonrelease customization in config.h
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-02-10 19:05:39 +01:00
Greg Reagle f7e358280c surf: see hover URL without changing title
On Tue, Jan 27, 2015, at 11:52 AM, Christoph Lohmann wrote:
> Then hook to the window leaving event in GTK or X11 and set the title to
> your needs. I will welcome a patch.

Patch is attached.  I am a total novice in GTK programming, so I don't
know what type the callback function is supposed to be (hence the void
pointers) or whether I registered it properly.  But it does work well
for me.

--
http://www.fastmail.com - Access your email from home and the web

From a33f06da092bf920b6a286ea7688b32944d79a50 Mon Sep 17 00:00:00 2001
From: Greg Reagle <greg.reagle@umbc.edu>
Date: Tue, 27 Jan 2015 13:22:15 -0500
Subject: [PATCH] ensure that window title is web page title (not hover link)
 when leaving window

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-02-03 17:25:26 +01:00
Christoph Lohmann b3a4392923 Some cleanup in style. 2015-02-03 17:17:04 +01:00
Christoph Lohmann b1c5e594d1 Describe the web page indicators too. 2015-01-26 21:47:18 +01:00
Christoph Lohmann e573e094d6 It wasn't really clear what was meant with site indicators in the manpage. 2015-01-26 21:44:54 +01:00
Greg Reagle ee6376ea1e surf: documented indicators in man page
Patch attached.

--
http://www.fastmail.com - The professional email service

From 4a64624fee94c16c093d2b192389bad9bd6675d8 Mon Sep 17 00:00:00 2001
From: Greg Reagle <greg.reagle@umbc.edu>
Date: Mon, 26 Jan 2015 14:29:05 -0500
Subject: [PATCH] Documented indicators

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-01-26 21:44:09 +01:00
Markus Teich 90de5cdd15 fix stylesheet interna.
* no more segfault when running `surf -m`
* allow to enable custom styles after `surf -m` with mod+shift+m
* use enablestyles instead of the webkit-setting, which clears things up a bit

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-01-20 17:45:04 +01:00
Christoph Lohmann 344efec3fb Only plumb some URI, when it's ASCII. 2015-01-20 17:38:22 +01:00
Christoph Lohmann d4e31d9472 Oh my blob!
Adding blob: to the URIS handled by the browser.
2015-01-20 01:59:53 +01:00
Christoph Lohmann 68813b3a46 Data: is part of the browser too. 2015-01-19 22:51:29 +01:00
Christoph Lohmann 87224dcdfa file:// should be handled in surf too. 2015-01-19 22:43:42 +01:00
Christoph Lohmann d511226ea6 Remove the debugging from the testing. 2015-01-19 22:31:31 +01:00
Christoph Lohmann b36921fbe8 Add some description for the plumb feature. 2015-01-19 22:16:07 +01:00
Christoph Lohmann 9c3b5ad353 Add plumbing functionality. 2015-01-19 22:15:18 +01:00
Christoph Lohmann 7c34d5061e Add a comment about how the styles are iterated.
Thanks quing for noticing.
2015-01-18 14:41:20 +01:00
Christoph Lohmann 9333d5d727 My CMD was too short. :O
Thanks Carlos Torres for mentioning this.
2015-01-18 11:44:39 +01:00
Christoph Lohmann e7d1c09916 Add the manpage changes for the disk cache support. 2015-01-17 20:52:16 +01:00
Christoph Lohmann 117d484833 Adding disk cache support for soup.
This is a merge of the patch of Ben Woolley <tautolog@gmail.com>
2015-01-17 20:50:21 +01:00
Ben Woolley 24ec46fc24 Fix extra newline, and add -g where other switches are forwarded.
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-01-17 07:23:48 +01:00
Christoph Lohmann a5b85836ac Newer libc want _DEFAULT_SOURCE. 2015-01-17 07:21:15 +01:00
Christoph Lohmann c2da2bae5d Major styles update.
In config.h there is now some styles array to apply site-specific styles.
This can be toggled using the -mM flags. If a stylefile is manually specified,
then this will overwrite everything.
2015-01-17 07:19:48 +01:00
Jakukyo Friel c467e5a3b3 Fix a typo in surf manual.
`Ctrl-/` displays incorrectly in `man surf` on my machine.

A patch is attached.

(You also access it here:
https://github.com/weakish/surf/commit/07e97eccedd96eabf14b2fbf77de75ec1b594d97)

----

 surf.1 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-01-02 14:18:23 +01:00
Christoph Lohmann 3e89b4451c Minor style change. 2014-09-28 08:03:42 +02:00
Christoph Lohmann dd705d43eb Make »Copy image address« work.
Thanks yui@blekksprut.net for the patch!
2014-09-28 08:02:48 +02:00
Christoph Lohmann 531f71f851 Mention xdotool in SEE ALSO too. 2014-08-07 17:35:27 +02:00
Christoph Lohmann d5b04aac60 Fix the manpage about xid.
Something was missing from this one sentence. Now it is complete.
2014-08-07 17:34:43 +02:00
Christoph Lohmann bb287fa2e8 Add a FAQ to surf. 2014-08-04 17:54:00 +02:00
Christoph Lohmann 285cc3843f Add information about the dmenu requirement.
Thanks <surfsup@inbox.lv>!
2014-05-17 19:24:25 +02:00
Markus Teich ea9d60c5c0 fix some indentation in config.def.h
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-02-28 18:16:22 +01:00
Christoph Lohmann f8f0c30f3e Enable resizable text areas. 2014-02-16 17:17:15 +01:00
Quentin Rameau a8267f7b95 deprecating signal “populate-popup” for “context-menu”
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-02-08 20:05:38 +01:00
Quentin Rameau 618c3dfd52 Prevent title from being empty when following an anchor
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-02-08 14:03:22 +01:00
Quentin Rameau 3cc5f87db8 deprecating signal “title-changed” for “notify::title”
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-02-06 19:14:36 +01:00
Christoph Lohmann 637902b452 The check for NULL is not necessary before free. 2014-02-06 16:49:26 +01:00
Christoph Lohmann 127dc366ef Removing a memory leak when u wasn't freed. 2014-02-06 06:47:22 +01:00
Christoph Lohmann 361da0b3c4 Making the empty title possible. 2014-02-05 21:14:16 +01:00
Quentin Rameau b7435badc2 Draw flags on window creation
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-02-05 20:17:35 +01:00
Quentin Rameau 4b623bd28a Keep cookie policies for new windows
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-02-05 20:17:26 +01:00
Christoph Lohmann 7ad886fb0b Change the accept no third party in the doc to the right meaning. 2014-01-30 20:57:24 +01:00
Christoph Lohmann fa9b187393 Add the commandline flag for the cookie policies too. 2014-01-30 20:47:03 +01:00
Christoph Lohmann 780cca964c Add a way to define the cookie policy.
This adds the -a flag to define a string of the toggle string for the cookie
policy modes. There is now a new »cookiepolicies« string in config.h and the
Mod+Shift+a now can toggle the policy but will not cause a reload, because
this would only add a burden when toggling through accept and not accept.

Thanks Quentin Rameau <quinq.ml@gmail.com> for the suggestions!
2014-01-30 20:36:06 +01:00
Christoph Lohmann e4869357f1 Replacing the deprecated ssl-ca-file with tls-database.
Thanks Steve Dee <mrdomino@gmail.com>!
2014-01-30 19:39:32 +01:00
Christoph Lohmann a78aec6630 Fix the ssl trusted check.
Thank you Steve Dee <mrdomino@gmail.com>!
2014-01-30 19:35:54 +01:00
Christoph Lohmann 9eedabe348 Make surf set the URI atom right on manual URI entering. 2014-01-13 17:58:45 +01:00
Christoph Lohmann 432f45a852 Add zoom level support. 2013-10-19 18:55:53 +02:00
David Dufberg 7e9a37f25f c->uri is unused
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-10-10 18:49:26 +02:00
Christoph Lohmann 83df29393f Make it possible to open a link in a new window with holding the mod key.
Thanks David Dufberg Tøttrup <david@dufberg.se>!
2013-09-07 11:55:23 +02:00
Christoph Lohmann f3d97922e9 Add a flag to disable fullscreen.
This also updates the usage of surf to represent the current status.
Thanks Alexander Sedov for the suggestion, but you forgot the manpage
entry so I did this patch.
2013-08-31 20:00:41 +02:00
Christoph Lohmann 237e10058a Add fullscreen mode as flag and config option. 2013-08-25 19:50:40 +02:00
Christoph Lohmann 058f7f45e2 Just some comment correction. 2013-08-09 01:36:51 +02:00
Anselm R Garbe 7001df98d1 applied Nick's 96dpi patch, thanks 2013-07-20 08:52:10 +02:00
Christoph Lohmann 2e978627dd Setting the cookie file on new instances. 2013-07-12 06:52:37 +02:00
Christoph Lohmann 0b44a5948e Updating the TODO file. 2013-06-21 07:02:45 +02:00
Christoph Lohmann c234737bea Adding a common way to enable and disable features. 2013-05-21 21:30:00 +02:00
Christoph Lohmann 4f45ae9307 There's only one escape. 2013-05-14 20:57:35 +02:00
Christoph Lohmann ffaf10bd8f Correcting the backslash in the surf manpage. 2013-05-11 22:01:02 +02:00
Christoph Lohmann 067c313e6c Allowing geo location policy decisions. 2013-04-28 21:26:56 +02:00
Alexander Sedov d0309a1a22 Disabling WebKit deletion interface feature by default.
Webkit has an amazing "feature" that shows black outline with cross
around some randomly chosen text fields. Its only fucntion is to
clear field. It's ugly and gets in the way when trying to actually
ready what you've written, so here's a patch to disable it.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-04-17 19:26:12 +02:00
Christoph Lohmann 083ea8ecde Add an option to disable the indicators. 2013-04-14 14:26:44 +02:00
Nick White a383964c95 Ensure curl follows redirects for downloads
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-03-31 11:57:34 +02:00
Alexander Sedov e0e4a844f7 A typo in SETPROP macro: should be `printf %b'', not `printf''.
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-03-30 06:49:57 +01:00
Alexander Sedov f6dc8b2541 Fixed SETPROP() macro behaviour in config.def.h to handle escapes correctly.
xprop prints information in format PROPERTY(STRING) = "escaped string",
which causes problem with repeated Ctrl-F: any non-ascii turns into
\ooo\ooo, this later turns into \\ooo\\ooo, and so on. To de-escape
string, printf(1) is used, getting information from xargs -0; without -0
xargs will try to handle escapes by itself and also do shenanigans
with quotes, which is totally undesired.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-03-21 18:10:35 +01:00
Christoph Lohmann 12101938d8 There are people not reading the existing code.
I fucking hate to have to correct all of this. People learn to read!
2013-03-15 18:37:12 +01:00
Alexander Sedov bccfe2a9a5 Fixed keys handling for multilayout environments.
There is a bug in GTK+ that does not allow capturing shortcuts using
letter keys on layouts other than "us". The bug is there for ages and
there is probably no hope that it will get fixed. This patch switches
shortcut handling method to GtkAccelGroup, which handles this case
correctly. Enjoy!

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-03-15 18:34:31 +01:00
Christoph Lohmann dcb4f81ad2 Removing the .hgtags file. 2013-03-15 14:13:20 +01:00
Christoph Lohmann a69c41ccac Support relative paths for surf.
Thanks Kurt Van Dijck <kurt.van.dijck@eia.be>!
2013-03-14 19:14:44 +01:00
Christoph Lohmann d02f73d990 Adding a default font size option.
Thanks Alexander Sedov <alex0player@gmail.com>!
2013-03-14 06:35:42 +01:00
Alexander Sedov a5dddd8fd3 Fix output redirection in surf-open.sh
Incorrect order of output rediection specifiers was causing useless
text appearing in terminal when starting surf-open (for example,
BadWindow error from xprop when tabbed window is already closed).
It isn't now.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-03-14 06:33:02 +01:00
Christoph Lohmann c6fbbd9dc6 Fixing kiosk mode when a new surf instance is run. 2013-03-11 22:08:14 +01:00
Christoph Lohmann badb84387e Adding kiosk mode.
Thanks to Christian Hesse <mail@eworm.de>!
2013-03-11 21:26:22 +01:00
Carlos J. Torres fe3bd631d4 disable/toggle scrollbars
* add flag to main
	* add flag to manual
	* add signal handler to block default scrollbar policy
	* add toggle of scrollbars (hacky - but no reload) with a twitch
	* add key map to manual
	* add commandline flag to children surfers
	* update TODO
	* sort stuff alphabetically for the style inquisition

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-02-25 13:42:19 +01:00
Christoph Lohmann 69004b2ff6 Style inquisition. 2013-02-17 00:37:43 +01:00
Christoph Lohmann bd5bbb7fc3 Add a toggle command for the stylefile.
The patch adds some better formatting for the manpage too.

Thanks to Nick <suckless-dev@njw.me.uk> for the toggle patch!
2013-02-16 16:18:05 +01:00
Christoph Lohmann 3e972f8e2a The Item struct is not used. 2013-02-15 17:43:42 +01:00
Jens Nyberg 053a8f1a73 Fixed a bug in pagestat
Forgot to add a null character at the end.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-02-15 17:42:06 +01:00
Carlos J. Torres ba634ea8e3 fix DOWNLOAD macro to use cookiefile variable
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-02-13 06:49:17 +01:00
Jens Nyberg 24f0f83197 Changed character for non-encrypted page
-/T/U: No SSL, Trusted SSL, Untrusted SSL

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-02-12 21:32:07 +01:00
Jens Nyberg 3c1ed5d56a Removed progress indicator
This removes the progress indicator and replaces it with
letters in the window title.

T/U: Trusted, Untrusted
P/-: Proxy, No proxy

Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-02-12 21:10:43 +01:00
Shayan Pooya 27dac4a157 Remove the redundant ctrl-l and ctrl-h description from the man page.
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-02-11 20:20:07 +01:00
11 changed files with 1963 additions and 1191 deletions
-10
View File
@@ -1,10 +0,0 @@
d8628fc93353faa411c9fc7eef82d11a84d26ae2 0.1
d8628fc93353faa411c9fc7eef82d11a84d26ae2 0.1
9c8ebcf54061112b5979742b403de26fc94007ff 0.1
3ef997607115303fe93873b592d152f0ec186f77 0.1.1
bffb0c3c23410ac7f260d167f4b9771497fc1127 0.1.2
a5db79d487c85615be2ecf30815c6b4977e88000 0.2
46d516fd216731adf91740496e6823c1be4f6199 0.3
ac8e058003ed2c0974529808752e5da7692fd7d8 0.4
71388899ac09d21e6c93518cc57a28395034f63c 0.4.1
f0cea0f2bfc6a32a0e352b6c69d781f1dbddbcda 0.5
+10
View File
@@ -0,0 +1,10 @@
# Frequently Asked Questions
## Surf is starting up slowly. What might happen?
The first suspect for such a behaviour is the plugin handling. Run surf
on the commandline and see if there are errors because of »nspluginwrap
per« or failed RPCs to them. If that is true, go to ~/.mozilla/plugins
and try removing stale links to plugins not on your system anymore. This
will stop surf from trying to load them.
+27 -3
View File
@@ -1,8 +1,32 @@
MIT/X Consortium License MIT/X Consortium License
© 2011-2012 Troels Henriksen <athas@sigkill.at> © 2009-2010 Enno Boland <tox@s01.de>
© 2009-2011 Enno Boland <g s01 de> © 2009 Thomas Menari <spaceinvader@chaotika.org>
© 2012 Christoph Lohmann <20h@r-36.net> © 2009 Simon Rozet <simon@rozet.name>
© 2009 Andrew Antle <andrew.antle@gmail.com>
© 2010-2011 pancake <nopcode.org>
© 2011-2013 Anselm R Garbe <anselm@garbe.us>
© 2011-2012 Troels Henriksen <athas@sigkill.dk>
© 2011 Connor Lane Smith <cls@lubutu.com>
© 2012-2017 Christoph Lohmann <20h@r-36.net>
© 2013 Shayan Pooya <shayan@liveve.org>
© 2013 Jens Nyberg <jens.nyberg@gmail.com>
© 2013 Carlos J. Torres <vlaadbrain@gmail.com>
© 2013 Alexander Sedov <alex0player@gmail.com>
© 2013 Nick White <git@njw.me.uk>
© 2013 David Dufberg <david@dufberg.se>
© 2014-2017 Quentin Rameau <quinq@fifth.space>
© 2014-2016 Markus Teich <markus.teich@stusta.mhn.de>
© 2015 Jakukyo Friel <weakish@gmail.com>
© 2015 Ben Woolley <tautolog@gmail.com>
© 2015 Greg Reagle <greg.reagle@umbc.edu>
© 2015 GhostAV <ghostav@riseup.net>
© 2015 Ivan Tham <pickfire@riseup.net>
© 2015 Alexander Huemer <alexander.huemer@xx.vu>
© 2015 Michael Stevens <mstevens@etla.org>
© 2015 Felix Janda <felix.janda@posteo.de>
© 2016 Charles Lehner <cel@celehner.com>
© 2016 Dmitry Bogatov <KAction@gnu.org>
Permission is hereby granted, free of charge, to any person obtaining a Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"), copy of this software and associated documentation files (the "Software"),
+4 -2
View File
@@ -6,6 +6,7 @@ Requirements
------------ ------------
In order to build surf you need GTK+ and Webkit/GTK+ header files. In order to build surf you need GTK+ and Webkit/GTK+ header files.
In order to use the functionality of the url-bar, also install dmenu[0].
Installation Installation
------------ ------------
@@ -26,7 +27,7 @@ See the manpage for further options.
Running surf in tabbed Running surf in tabbed
---------------------- ----------------------
For running surf in tabbed[0] there is a script included in the distribution, For running surf in tabbed[1] there is a script included in the distribution,
which is run like this: which is run like this:
surf-open.sh [URI] surf-open.sh [URI]
@@ -34,5 +35,6 @@ which is run like this:
Further invocations of the script will run surf with the specified URI in this Further invocations of the script will run surf with the specified URI in this
instance of tabbed. instance of tabbed.
[0] http://tools.suckless.org/tabbed [0] http://tools.suckless.org/dmenu
[1] http://tools.suckless.org/tabbed
+1 -2
View File
@@ -1,8 +1,7 @@
# TODO # TODO
* suckless adblocking * suckless adblocking
* integrate the WebKitWebInspector API * replace twitch() with proper gtk calls to make scrollbars reappear
* make scrollbars a switch and allow them to be disabled
* replace webkit with something sane * replace webkit with something sane
* add video player options * add video player options
* play in plugin * play in plugin
+27 -20
View File
@@ -3,39 +3,46 @@
* by 20h * by 20h
*/ */
#ifndef __ARG_H__ #ifndef ARG_H__
#define __ARG_H__ #define ARG_H__
extern char *argv0; extern char *argv0;
#define USED(x) ((void)(x)) /* use main(int argc, char *argv[]) */
#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ #define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
argv[0] && argv[0][1]\ argv[0] && argv[0][0] == '-'\
&& argv[0][0] == '-';\ && argv[0][1];\
argc--, argv++) {\ argc--, argv++) {\
char _argc;\ char argc_;\
char **_argv;\ char **argv_;\
int brk_;\
if (argv[0][1] == '-' && argv[0][2] == '\0') {\ if (argv[0][1] == '-' && argv[0][2] == '\0') {\
argv++;\ argv++;\
argc--;\ argc--;\
break;\ break;\
}\ }\
for (argv[0]++, _argv = argv; argv[0][0];\ for (brk_ = 0, argv[0]++, argv_ = argv;\
argv[0][0] && !brk_;\
argv[0]++) {\ argv[0]++) {\
if (_argv != argv)\ if (argv_ != argv)\
break;\ break;\
_argc = argv[0][0];\ argc_ = argv[0][0];\
switch (_argc) switch (argc_)
#define ARGEND }\ #define ARGEND }\
USED(_argc);\ }
}\
USED(argv);\
USED(argc);
#define EARGF(x) ((argv[1] == NULL)? ((x), abort(), (char *)0) :\ #define ARGC() argc_
(argc--, argv++, argv[0]))
#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\
((x), abort(), (char *)0) :\
(brk_ = 1, (argv[0][1] != '\0')?\
(&argv[0][1]) :\
(argc--, argv++, argv[0])))
#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\
(char *)0 :\
(brk_ = 1, (argv[0][1] != '\0')?\
(&argv[0][1]) :\
(argc--, argv++, argv[0])))
#endif #endif
+130 -59
View File
@@ -1,32 +1,55 @@
/* modifier 0 means no modifier */ /* modifier 0 means no modifier */
static char *useragent = "Mozilla/5.0 (X11; U; Unix; en-US) " static int surfuseragent = 1; /* Append Surf version to default WebKit user agent */
"AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 " static char *fulluseragent = ""; /* Or override the whole user agent string */
"Safari/537.15 Surf/"VERSION;
static char *progress = "#0000FF";
static char *progress_untrust = "#FF0000";
static char *progress_trust = "#00FF00";
static char *progress_proxy = "#FFFF00";
static char *progress_proxy_trust = "#66FF00";
static char *progress_proxy_untrust = "#FF6600";
static char *stylefile = "~/.surf/style.css";
static char *scriptfile = "~/.surf/script.js"; static char *scriptfile = "~/.surf/script.js";
static char *styledir = "~/.surf/styles/";
static char *cachedir = "~/.surf/cache/";
static char *cookiefile = "~/.surf/cookies.txt"; static char *cookiefile = "~/.surf/cookies.txt";
static time_t sessiontime = 3600;
static char *cafile = "/etc/ssl/certs/ca-certificates.crt";
static char *strictssl = FALSE; /* Refuse untrusted SSL connections */
static int indicator_thickness = 2;
/* Webkit default features */ /* Webkit default features */
static Bool enablespatialbrowsing = TRUE; static Parameter defconfig[ParameterLast] = {
static Bool enableplugins = TRUE; SETB(AcceleratedCanvas, 1),
static Bool enablescripts = TRUE; SETB(CaretBrowsing, 0),
static Bool enableinspector = TRUE; SETV(CookiePolicies, "@Aa"),
static Bool loadimages = TRUE; SETB(DiskCache, 1),
static Bool hidebackground = FALSE; SETB(DNSPrefetch, 0),
SETI(FontSize, 12),
SETB(FrameFlattening, 0),
SETB(Geolocation, 0),
SETB(HideBackground, 0),
SETB(Inspector, 0),
SETB(JavaScript, 1),
SETB(KioskMode, 0),
SETB(LoadImages, 1),
SETB(MediaManualPlay, 0),
SETB(Plugins, 1),
SETV(PreferredLanguages, ((char *[]){ NULL })),
SETB(RunInFullscreen, 0),
SETB(ScrollBars, 1),
SETB(ShowIndicators, 1),
SETB(SiteQuirks, 1),
SETB(SpellChecking, 0),
SETV(SpellLanguages, ((char *[]){ "en_US", NULL })),
SETB(StrictSSL, 0),
SETB(Style, 1),
SETF(ZoomLevel, 1.0),
};
static UriParameters uriparams[] = {
{ "(://|\\.)suckless\\.org(/|$)", {
FSETB(JavaScript, 0),
FSETB(Plugins, 0),
}, },
};
static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
WEBKIT_FIND_OPTIONS_WRAP_AROUND;
#define SETPROP(p, q) { \ #define SETPROP(p, q) { \
.v = (char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"prop=\"`xprop -id $2 $0 | cut -d '\"' -f 2 | dmenu`\" &&" \ "prop=\"`xprop -id $2 $0 " \
"| sed \"s/^$0(STRING) = \\(\\\\\"\\?\\)\\(.*\\)\\1$/\\2/\" " \
"| xargs -0 printf %b | dmenu`\" &&" \
"xprop -id $2 -f $1 8s -set $1 \"$prop\"", \ "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
p, q, winid, NULL \ p, q, winid, NULL \
} \ } \
@@ -34,15 +57,41 @@ static Bool hidebackground = FALSE;
/* DOWNLOAD(URI, referer) */ /* DOWNLOAD(URI, referer) */
#define DOWNLOAD(d, r) { \ #define DOWNLOAD(d, r) { \
.v = (char *[]){ "/bin/sh", "-c", \ .v = (const char *[]){ "/bin/sh", "-c", \
"st -e /bin/sh -c \"curl -J -O --user-agent '$1'" \ "st -e /bin/sh -c \"curl -g -L -J -O --user-agent '$1'" \
" --referer '$2'" \ " --referer '$2' -b $3 -c $3 '$0';" \
" -b ~/.surf/cookies.txt -c ~/.surf/cookies.txt '$0';" \
" sleep 5;\"", \ " sleep 5;\"", \
d, useragent, r, NULL \ d, useragent, r, cookiefile, NULL \
} \ } \
} }
/* PLUMB(URI) */
/* This called when some URI which does not begin with "about:",
* "http://" or "https://" should be opened.
*/
#define PLUMB(u) {\
.v = (const char *[]){ "/bin/sh", "-c", \
"xdg-open \"$0\"", u, NULL \
} \
}
/* VIDEOPLAY(URI) */
#define VIDEOPLAY(u) {\
.v = (const char *[]){ "/bin/sh", "-c", \
"mpv --really-quiet \"$0\"", u, NULL \
} \
}
/* styles */
/*
* The iteration will stop at the first match, beginning at the beginning of
* the list.
*/
static SiteStyle styles[] = {
/* regexp file in $styledir */
{ ".*", "default.css" },
};
#define MODKEY GDK_CONTROL_MASK #define MODKEY GDK_CONTROL_MASK
/* hotkeys */ /* hotkeys */
@@ -51,45 +100,67 @@ static Bool hidebackground = FALSE;
* edit the CLEANMASK() macro. * edit the CLEANMASK() macro.
*/ */
static Key keys[] = { static Key keys[] = {
/* modifier keyval function arg Focus */ /* modifier keyval function arg */
{ MODKEY|GDK_SHIFT_MASK,GDK_r, reload, { .b = TRUE } }, { MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") },
{ MODKEY, GDK_r, reload, { .b = FALSE } }, { MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },
{ MODKEY|GDK_SHIFT_MASK,GDK_p, print, { 0 } }, { MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") },
{ MODKEY, GDK_p, clipboard, { .b = TRUE } }, { 0, GDK_KEY_Escape, stop, { 0 } },
{ MODKEY, GDK_y, clipboard, { .b = FALSE } }, { MODKEY, GDK_KEY_c, stop, { 0 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_j, zoom, { .i = -1 } }, { MODKEY|GDK_SHIFT_MASK, GDK_KEY_r, reload, { .b = 1 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_k, zoom, { .i = +1 } }, { MODKEY, GDK_KEY_r, reload, { .b = 0 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_q, zoom, { .i = 0 } },
{ MODKEY, GDK_minus, zoom, { .i = -1 } },
{ MODKEY, GDK_plus, zoom, { .i = +1 } },
{ MODKEY, GDK_l, navigate, { .i = +1 } }, { MODKEY, GDK_KEY_l, navigate, { .i = +1 } },
{ MODKEY, GDK_h, navigate, { .i = -1 } }, { MODKEY, GDK_KEY_h, navigate, { .i = -1 } },
{ MODKEY, GDK_j, scroll_v, { .i = +1 } }, /* Currently we have to use scrolling steps that WebKit2GTK+ gives us
{ MODKEY, GDK_k, scroll_v, { .i = -1 } }, * d: step down, u: step up, r: step right, l:step left
{ MODKEY, GDK_b, scroll_v, { .i = -10000 } }, * D: page down, U: page up */
{ MODKEY, GDK_space, scroll_v, { .i = +10000 } }, { MODKEY, GDK_KEY_j, scroll, { .i = 'd' } },
{ MODKEY, GDK_i, scroll_h, { .i = +1 } }, { MODKEY, GDK_KEY_k, scroll, { .i = 'u' } },
{ MODKEY, GDK_u, scroll_h, { .i = -1 } }, { MODKEY, GDK_KEY_b, scroll, { .i = 'U' } },
{ MODKEY, GDK_KEY_space, scroll, { .i = 'D' } },
{ MODKEY, GDK_KEY_i, scroll, { .i = 'r' } },
{ MODKEY, GDK_KEY_u, scroll, { .i = 'l' } },
{ 0, GDK_F11, fullscreen, { 0 } },
{ 0, GDK_Escape, stop, { 0 } },
{ MODKEY, GDK_o, source, { 0 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_o, inspector, { 0 } },
{ MODKEY, GDK_g, spawn, SETPROP("_SURF_URI", "_SURF_GO") }, { MODKEY|GDK_SHIFT_MASK, GDK_KEY_j, zoom, { .i = -1 } },
{ MODKEY, GDK_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") }, { MODKEY|GDK_SHIFT_MASK, GDK_KEY_k, zoom, { .i = +1 } },
{ MODKEY, GDK_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND") }, { 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_n, find, { .b = TRUE } }, { MODKEY, GDK_KEY_p, clipboard, { .b = 1 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } }, { MODKEY, GDK_KEY_y, clipboard, { .b = 0 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_c, toggle, { .v = "enable-caret-browsing" } }, { MODKEY, GDK_KEY_n, find, { .i = +1 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_i, toggle, { .v = "auto-load-images" } }, { MODKEY|GDK_SHIFT_MASK, GDK_KEY_n, find, { .i = -1 } },
{ MODKEY|GDK_SHIFT_MASK,GDK_s, toggle, { .v = "enable-scripts" } },
{ MODKEY|GDK_SHIFT_MASK,GDK_v, toggle, { .v = "enable-plugins" } }, { MODKEY|GDK_SHIFT_MASK, GDK_KEY_p, print, { 0 } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_a, togglecookiepolicy, { 0 } },
{ 0, GDK_KEY_F11, togglefullscreen, { 0 } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_o, toggleinspector, { 0 } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_c, toggle, { .i = CaretBrowsing } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_f, toggle, { .i = FrameFlattening } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_g, toggle, { .i = Geolocation } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_s, toggle, { .i = JavaScript } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_i, toggle, { .i = LoadImages } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_v, toggle, { .i = Plugins } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_b, toggle, { .i = ScrollBars } },
{ MODKEY|GDK_SHIFT_MASK, GDK_KEY_m, toggle, { .i = Style } },
}; };
/* button definitions */
/* target can be OnDoc, OnLink, OnImg, OnMedia, OnEdit, OnBar, OnSel, OnAny */
static Button buttons[] = {
/* target event mask button function argument stop event */
{ OnLink, 0, 2, clicknewwindow, { .b = 0 }, 1 },
{ OnLink, MODKEY, 2, clicknewwindow, { .b = 1 }, 1 },
{ OnLink, MODKEY, 1, clicknewwindow, { .b = 1 }, 1 },
{ OnAny, 0, 8, clicknavigate, { .i = -1 }, 1 },
{ OnAny, 0, 9, clicknavigate, { .i = +1 }, 1 },
{ OnMedia, MODKEY, 1, clickexternplayer, { 0 }, 1 },
};
+6 -5
View File
@@ -1,26 +1,27 @@
# surf version # surf version
VERSION = 0.6 VERSION = 2.0
# Customize below to fit your system # Customize below to fit your system
# paths # paths
PREFIX = /usr/local PREFIX = /usr/local
MANPREFIX = ${PREFIX}/share/man MANPREFIX = ${PREFIX}/share/man
LIBPREFIX = ${PREFIX}/lib/surf
X11INC = /usr/X11R6/include X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib X11LIB = /usr/X11R6/lib
GTKINC = `pkg-config --cflags gtk+-2.0 webkit-1.0` GTKINC = `pkg-config --cflags gtk+-3.0 webkit2gtk-4.0`
GTKLIB = `pkg-config --libs gtk+-2.0 webkit-1.0` GTKLIB = `pkg-config --libs gtk+-3.0 webkit2gtk-4.0`
# includes and libs # includes and libs
INCS = -I. -I/usr/include -I${X11INC} ${GTKINC} INCS = -I. -I/usr/include -I${X11INC} ${GTKINC}
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${GTKLIB} -lgthread-2.0 LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${GTKLIB} -lgthread-2.0
# flags # flags
CPPFLAGS = -DVERSION=\"${VERSION}\" -D_BSD_SOURCE CPPFLAGS = -DVERSION=\"${VERSION}\" -DWEBEXTDIR=\"${LIBPREFIX}\" -D_DEFAULT_SOURCE
CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
LDFLAGS = -g ${LIBS} LDFLAGS = -s ${LIBS}
# Solaris # Solaris
#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\" #CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
+2 -2
View File
@@ -21,12 +21,12 @@ then
runtabbed runtabbed
else else
xid=$(cat "$xidfile") xid=$(cat "$xidfile")
xprop -id "$xid" 2>&1 >/dev/null xprop -id "$xid" >/dev/null 2>&1
if [ $? -gt 0 ]; if [ $? -gt 0 ];
then then
runtabbed runtabbed
else else
surf -e "$xid" "$uri" 2>&1 >/dev/null & surf -e "$xid" "$uri" >/dev/null 2>&1 &
fi fi
fi fi
+164 -29
View File
@@ -3,12 +3,14 @@
surf \- simple webkit-based browser surf \- simple webkit-based browser
.SH SYNOPSIS .SH SYNOPSIS
.B surf .B surf
.RB [-ipnsvx] .RB [-bBdDfFgGiIkKmMnNpPsSvx]
.RB [-a\ cookiepolicies]
.RB [-c\ cookiefile] .RB [-c\ cookiefile]
.RB [-e\ xid] .RB [-e\ xid]
.RB [-r\ scriptfile] .RB [-r\ scriptfile]
.RB [-t\ stylefile] .RB [-t\ stylefile]
.RB [-u\ useragent] .RB [-u\ useragent]
.RB [-z\ zoomlevel]
.RB "URI" .RB "URI"
.SH DESCRIPTION .SH DESCRIPTION
surf is a simple Web browser based on WebKit/GTK+. It is able surf is a simple Web browser based on WebKit/GTK+. It is able
@@ -17,38 +19,111 @@ which makes it possible to embed it in another application. Furthermore,
one can point surf to another URI by setting its XProperties. one can point surf to another URI by setting its XProperties.
.SH OPTIONS .SH OPTIONS
.TP .TP
.B \-a cookiepolicies
Define the order of
.I cookie policies.
The default is "Aa@" but could be
redefined in the
.I config.h,
with "A" meaning to
accept all cookies, "a" to deny all cookies and "@", which tells surf to
accept no third party cookies.
.TP
.B \-b
Disable Scrollbars
.TP
.B \-B
Enable Scrollbars
.TP
.B \-c cookiefile .B \-c cookiefile
Specify the cookiefile to use. Specify the
.I cookiefile
to use.
.TP
.B \-d
Disable the disk cache.
.TP
.B \-D
Enable the disk cache.
.TP .TP
.B \-e xid .B \-e xid
Reparents to window specified by xid. Reparents to window specified by
.I xid.
.TP
.B \-f
Start surf in windowed mode (not fullscreen).
.TP
.B \-F
Start surf in fullscreen mode.
.TP
.B \-g
Disable giving the geolocation to websites.
.TP
.B \-G
Enable giving the geolocation to websites.
.TP .TP
.B \-i .B \-i
Disable Images Disable Images
.TP .TP
.B \-I
Enable Images
.TP
.B \-k
Disable kiosk mode (disable key strokes and right click)
.TP
.B \-K
Enable kiosk mode (disable key strokes and right click)
.TP
.B \-m
Disable application of user style sheets.
.TP
.B \-M
Enable application of user style sheets.
.TP
.B \-n .B \-n
Disable the Web Inspector (Developer Tools). Disable the Web Inspector (Developer Tools).
.TP .TP
.B \-N
Enable the Web Inspector (Developer Tools).
.TP
.B \-p .B \-p
Disable Plugins Disable Plugins
.TP .TP
.B \-P
Enable Plugins
.TP
.B \-r scriptfile .B \-r scriptfile
Specify the user scriptfile. Specify the user
.I scriptfile.
.TP .TP
.B \-s .B \-s
Disable Javascript Disable Javascript
.TP .TP
.B \-S
Enable Javascript
.TP
.B \-t stylefile .B \-t stylefile
Specify the user stylefile. Specify the user
.I stylefile.
This does disable the site-specific styles.
.TP .TP
.B \-u useragent .B \-u useragent
Specify the useragent which surf should use. Specify the
.I useragent
which surf should use.
.TP .TP
.B \-v .B \-v
Prints version information to standard output, then exits. Prints version information to standard output, then exits.
.TP .TP
.B \-x .B \-x
Prints xid to standard output. This can be used to script the browser by using Prints xid to standard output. This can be used to script the browser in for
example
.BR xdotool(1).
.TP
.B \-z zoomlevel
Specify the
.I zoomlevel
which surf should use.
.BR xprop(1). .BR xprop(1).
.SH USAGE .SH USAGE
.B Escape .B Escape
@@ -87,13 +162,7 @@ Zooms page out
.B Ctrl\-Shift\-q .B Ctrl\-Shift\-q
Resets Zoom Resets Zoom
.TP .TP
.B Ctrl\-h .B Ctrl\-f and Ctrl\-/
Navigate back one step in history.
.TP
.B Ctrl\-l
Navigate forward one step in history.
.TP
.B Ctrl\-f and Ctrl\-\\
Opens the search-bar. Opens the search-bar.
.TP .TP
.B Ctrl\-n .B Ctrl\-n
@@ -103,14 +172,11 @@ Go to next search result.
Go to previous search result. Go to previous search result.
.TP .TP
.B Ctrl\-g .B Ctrl\-g
Opens the URL-bar. Opens the URL-bar (requires dmenu installed).
.TP .TP
.B Ctrl\-p .B Ctrl\-p
Loads URI from primary selection. Loads URI from primary selection.
.TP .TP
.B Esc
Stop loading the page.
.TP
.B Ctrl\-Shift\-p .B Ctrl\-Shift\-p
Calls Printpage Dialog. Calls Printpage Dialog.
.TP .TP
@@ -118,7 +184,7 @@ Calls Printpage Dialog.
Reloads the website. Reloads the website.
.TP .TP
.B Ctrl\-Shift\-r .B Ctrl\-Shift\-r
Reloads the website without using cache. Reloads the website without using the cache.
.TP .TP
.B Ctrl\-y .B Ctrl\-y
Copies current URI to primary selection. Copies current URI to primary selection.
@@ -126,26 +192,94 @@ Copies current URI to primary selection.
.B Ctrl\-o .B Ctrl\-o
Show the sourcecode of the current page. Show the sourcecode of the current page.
.TP .TP
.B Ctrl\-Shift\-a
Toggle through the the
.I cookie policies.
This will not reload the page.
.TP
.B Ctrl\-Shift\-b
Toggle scrollbars. This will reload the page.
.TP
.B Ctrl\-Shift\-c
Toggle caret browsing. This will reload the page.
.TP
.B Ctrl\-Shift\-i
Toggle auto-loading of images. This will reload the page.
.TP
.B Ctrl\-Shift\-m
Toggle if the
.I stylefile
file should be loaded. This will reload the page.
.TP
.B Ctrl\-Shift\-o .B Ctrl\-Shift\-o
Open the Web Inspector (Developer Tools) window for the current page. Open the Web Inspector (Developer Tools) window for the current page.
.TP .TP
.B Ctrl\-Shift\-c
Toggle caret browsing.
.TP
.B Ctrl\-Shift\-i
Toggle auto-loading of images.
.TP
.B Ctrl\-Shift\-s .B Ctrl\-Shift\-s
Toggle script execution. Toggle script execution. This will reload the page.
.TP .TP
.B Ctrl\-Shift\-v .B Ctrl\-Shift\-v
Toggle the enabling of plugins on that surf instance. Toggle the enabling of plugins on that surf instance. This will reload the
page.
.TP .TP
.B F11 .B F11
Toggle fullscreen mode. Toggle fullscreen mode.
.SH INDICATORS OF OPERATION
Surf is showing indicators of operation in front of the site title.
For all indicators, unless otherwise specified, a lower case letter means disabled and an upper case letter means enabled.
.TP
.B A
all cookies accepted
.TP
.B a
no cookies accepted
.TP
.B @
all except third-party cookies accepted
.TP
.B c C
caret browsing
.TP
.B g G
geolocation
.TP
.B d D
disk cache
.TP
.B i I
images
.TP
.B s S
scripts
.TP
.B v V
plugins
.TP
.B m M
styles
.SH INDICATORS OF WEB PAGE
The second part of the indicators specifies modes of the web page itself.
.SS First character: encryption
.TP
.B -
unencrypted
.TP
.B T
encrypted (SSL)
.TP
.B U
attempted encryption but failed
.SS Second character: proxying
.TP
.B -
no proxy
.TP
.B P
using proxy
.SH ENVIRONMENT .SH ENVIRONMENT
.B SURF_USERAGENT .B SURF_USERAGENT
If this variable is set upon startup, surf will use it as the useragent string If this variable is set upon startup, surf will use it as the
.I useragent
string
.TP .TP
.B http_proxy .B http_proxy
If this variable is set and not empty upon startup, surf will use it as the http proxy If this variable is set and not empty upon startup, surf will use it as the http proxy
@@ -164,6 +298,7 @@ will help you.
.BR dmenu(1), .BR dmenu(1),
.BR xprop(1), .BR xprop(1),
.BR tabbed(1), .BR tabbed(1),
.BR nspluginwrapper(1) .BR nspluginwrapper(1),
.BR xdotool(1)
.SH BUGS .SH BUGS
Please report them! Please report them!
+1579 -1046
View File
File diff suppressed because it is too large Load Diff