当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : surf 辅助浏览器(添加 bookmarks 补丁)
帖子发表于 : 2011-01-09 22:38 

注册: 2006-07-09 12:22
帖子: 1331
地址: 南京
送出感谢: 0 次
接收感谢: 2
因为连 EE 都不知晓这神器,故推荐。基于 gtk+/webkit,源代码 800+ 行,不想开 firefox/opera/chrome 之流时非常实用,譬如临时搜索个东东,用下 google 翻译,看下 google news,打开 irc 上帖的网页等。

用法:(高手都会想到在 WM 中绑定个 google 的快捷键)
surf url

快捷键:(c 指 Ctrl 键)
c-h: 后退
c-r: 刷新
c-g: 输入 url(需要 dmenu 支援)
c-d: 添加到收藏夹
c-b: 打开收藏夹

我只会这么多,其余看 man。:P

遗憾:
需手动編輯收藏夹条目,位于 ~/.surf/bookmarks 文件中。

下载见附件(i386 版本)。另一个附件伪装得还可以吧。XD

忘了说,我动态编译的这个是 0.4.1 版本,主页:http://surf.suckless.org/

14/01/2011 更新:我给补个 dirty patch,用以收藏夹功能,并顺带将下载目录改到 ~/download 下,而不是家目录:
代码:
diff -r 7a931a352cf9 Makefile
--- a/Makefile   Thu Sep 09 11:15:02 2010 +0200
+++ b/Makefile   Fri Jan 14 18:30:40 2011 +0800
@@ -20,7 +20,7 @@
 
 ${OBJ}: config.h config.mk
 
-config.h:
+config.h: config.def.h
    @echo creating $@ from config.def.h
    @cp config.def.h $@
 
diff -r 7a931a352cf9 config.def.h
--- a/config.def.h   Thu Sep 09 11:15:02 2010 +0200
+++ b/config.def.h   Fri Jan 14 18:30:40 2011 +0800
@@ -5,6 +5,7 @@
 static char *stylefile      = ".surf/style.css";
 static char *scriptfile     = ".surf/script.js";
 static char *cookiefile     = ".surf/cookies.txt";
+static char *bookmarkfile   = ".surf/bookmarks";
 static time_t sessiontime   = 3600;
 #define NOBACKGROUND 0
 
@@ -14,8 +15,14 @@
    p, q, winid, NULL } }
 #define DOWNLOAD(d) { \
    .v = (char *[]){ "/bin/sh", "-c", \
-   "xterm -e \"wget --load-cookies ~/.surf/cookies.txt '$0';\"", \
+   "xterm -e \"wget --load-cookies ~/.surf/cookies.txt '$0' -P ~/download;\"", \
    d, NULL } }
+#define GETBOOKMARKS(p, q) { \
+   .v = (char *[]){ "/bin/sh", "-c", \
+   "prop=\"`cat ~/.surf/bookmarks | dmenu`\" &&" \
+   "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
+   p, q, winid, NULL } }
 #define MODKEY GDK_CONTROL_MASK
 static Key keys[] = {
     /* modifier               keyval      function    arg             Focus */
@@ -37,4 +44,6 @@
     { MODKEY,               GDK_f,      spawn,      SETPROP("_SURF_FIND", "_SURF_FIND") },
     { MODKEY,               GDK_n,      find,       { .b = TRUE } },
     { MODKEY|GDK_SHIFT_MASK,GDK_n,      find,       { .b = FALSE } },
+    { MODKEY,               GDK_d,      bookmarks,  { 0 } },
+    { MODKEY,               GDK_b,      spawn,      GETBOOKMARKS("_SURF_URI", "_SURF_GO") },
 };
diff -r 7a931a352cf9 surf.c
--- a/surf.c   Thu Sep 09 11:15:02 2010 +0200
+++ b/surf.c   Fri Jan 14 18:30:40 2011 +0800
@@ -82,6 +82,7 @@
 static char *geturi(Client *c);
 void gotheaders(SoupMessage *msg, gpointer user_data);
 static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
+static void bookmarks(Client *c, const Arg *arg);
 static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c);
 static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *c);
 static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c);
@@ -337,6 +338,26 @@
    return FALSE;
 }
 
+void
+bookmarks(Client *c, const Arg *arg) {
+    char *uri;
+    char buf[512];
+    FILE *f;
+    gboolean exists = FALSE;
+
+    uri = (char *)webkit_web_view_get_uri(c->view);
+    f = fopen(bookmarkfile, "r+");
+    while(fgets(buf, sizeof buf, f)) {
+        if(strncmp(buf, uri, strlen(uri)) == 0) {
+            exists = TRUE;
+            break;
+        }
+    }
+    if(!exists)
+        fputs(strcat(uri, "\n"), f);
+    fclose(f);
+}
+
 gboolean
 keypress(GtkWidget* w, GdkEventKey *ev, Client *c) {
    guint i;
@@ -692,6 +713,7 @@
    cookiefile = buildpath(cookiefile);
    scriptfile = buildpath(scriptfile);
    stylefile = buildpath(stylefile);
+   bookmarkfile = buildpath(bookmarkfile);
 
    /* request handler */
    s = webkit_get_default_session();

15/01/2011 更新:收藏夾帶標題,但多個 zenity 依賴了,悲劇(要讓 dmenu 搞出中文更悲劇啊 XD):
代码:
diff -r 7a931a352cf9 Makefile
--- a/Makefile   Thu Sep 09 11:15:02 2010 +0200
+++ b/Makefile   Sat Jan 15 16:02:08 2011 +0800
@@ -20,7 +20,7 @@
 
 ${OBJ}: config.h config.mk
 
-config.h:
+config.h: config.def.h
    @echo creating $@ from config.def.h
    @cp config.def.h $@
 
diff -r 7a931a352cf9 config.def.h
--- a/config.def.h   Thu Sep 09 11:15:02 2010 +0200
+++ b/config.def.h   Sat Jan 15 16:02:08 2011 +0800
@@ -5,6 +5,7 @@
 static char *stylefile      = ".surf/style.css";
 static char *scriptfile     = ".surf/script.js";
 static char *cookiefile     = ".surf/cookies.txt";
+static char *bookmarkfile   = ".surf/bookmarks";
 static time_t sessiontime   = 3600;
 #define NOBACKGROUND 0
 
@@ -14,8 +15,15 @@
    p, q, winid, NULL } }
 #define DOWNLOAD(d) { \
    .v = (char *[]){ "/bin/sh", "-c", \
-   "xterm -e \"wget --load-cookies ~/.surf/cookies.txt '$0';\"", \
+   "xterm -e \"wget --load-cookies ~/.surf/cookies.txt '$0' -P ~/download;\"", \
    d, NULL } }
+#define GETBOOKMARKS(p, q) { \
+   .v = (char *[]){ "/bin/sh", "-c", \
+   "prop=$(sel=`cut -d '@' -f 1 ~/.surf/bookmarks | \
+    zenity --list --column='Bookmarks' --width=320 --height=280` && \
+    awk -F@ -v a=\"$sel\" '{if($1==a) print $2}' ~/.surf/bookmarks) &&" \
+   "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
+   p, q, winid, NULL } }
 #define MODKEY GDK_CONTROL_MASK
 static Key keys[] = {
     /* modifier               keyval      function    arg             Focus */
@@ -37,4 +45,6 @@
     { MODKEY,               GDK_f,      spawn,      SETPROP("_SURF_FIND", "_SURF_FIND") },
     { MODKEY,               GDK_n,      find,       { .b = TRUE } },
     { MODKEY|GDK_SHIFT_MASK,GDK_n,      find,       { .b = FALSE } },
+    { MODKEY,               GDK_d,      bookmarks,  { 0 } },
+    { MODKEY,               GDK_b,      spawn,      GETBOOKMARKS("_SURF_URI", "_SURF_GO") },
 };
diff -r 7a931a352cf9 surf.c
--- a/surf.c   Thu Sep 09 11:15:02 2010 +0200
+++ b/surf.c   Sat Jan 15 16:02:08 2011 +0800
@@ -82,6 +82,7 @@
 static char *geturi(Client *c);
 void gotheaders(SoupMessage *msg, gpointer user_data);
 static gboolean initdownload(WebKitWebView *v, WebKitDownload *o, Client *c);
+static void bookmarks(Client *c, const Arg *arg);
 static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c);
 static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *c);
 static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c);
@@ -337,6 +338,32 @@
    return FALSE;
 }
 
+void
+bookmarks(Client *c, const Arg *arg) {
+    char uri[256];
+    char tit[512];
+    char buf[512];
+    FILE *f;
+    gboolean exists = FALSE;
+
+    memcpy(uri, webkit_web_view_get_uri(c->view), sizeof(uri) - 1);
+    uri[255] = '\0';
+    memcpy(tit, webkit_web_view_get_title(c->view), sizeof(uri) - 1);
+    strcat(tit, "@");
+    strcat(tit, uri);
+
+    f = fopen(bookmarkfile, "r+");
+    while(fgets(buf, sizeof buf, f)) {
+        if(strncmp(buf, tit, strlen(tit)) == 0) {
+            exists = TRUE;
+            break;
+        }
+    }
+    if(!exists)
+        fputs(strcat(tit, "\n"), f);
+    fclose(f);
+}
+
 gboolean
 keypress(GtkWidget* w, GdkEventKey *ev, Client *c) {
    guint i;
@@ -692,6 +719,7 @@
    cookiefile = buildpath(cookiefile);
    scriptfile = buildpath(scriptfile);
    stylefile = buildpath(stylefile);
+   bookmarkfile = buildpath(bookmarkfile);
 
    /* request handler */
    s = webkit_get_default_session();

以上二個 patch,自己權衡了。


附件:
文件注释: 收藏夾帶標題的 surf
surf_ti.tar [40 KiB]
被下载 32 次
文件注释: 带收藏夹功能的 surf
surf.tar [40 KiB]
被下载 34 次
2011-01-09-221400_304x600_scrot.png
2011-01-09-221400_304x600_scrot.png [ 25.94 KiB | 被浏览 1811 次 ]



最后由 aBiNg 编辑于 2011-01-15 16:18,总共编辑了 5 次
页首
 用户资料  
 
2 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-09 22:41 
头像

注册: 2008-02-17 23:47
帖子: 22120
地址: 美丽富饶的那啥星球
送出感谢: 11
接收感谢: 84
不愧是老鸟,有档次 :em11


_________________
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手


页首
 用户资料  
 
3 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-09 22:43 
头像

注册: 2008-04-26 12:41
帖子: 11000
送出感谢: 11
接收感谢: 38
:em06


_________________
[新手必读]wubi安装常见问题(FAQ)
[分享]装双系统的同学必看——Windows与Linux系统共享交换分区的方法
kde下唯美的暗黑内透主题(无需编译)
无穷老机上的Trinity Desktop Environment


页首
 用户资料  
 
4 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-09 22:50 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
这东西弱到我都佩服了……
我比较期待jumanji


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org


页首
 用户资料  
 
5 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-09 22:53 
头像

注册: 2008-02-17 23:47
帖子: 22120
地址: 美丽富饶的那啥星球
送出感谢: 11
接收感谢: 84
哇哈哈,居然是类vi的键绑定 :em05


_________________
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手


页首
 用户资料  
 
6 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-09 22:57 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
800+ 行源码用来学习浏览器倒是不错,就好像用linux0.01学OS


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org


页首
 用户资料  
 
7 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-10 12:46 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
支持bt的,上。


_________________
● 鸣学


页首
 用户资料  
 
8 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-11 10:08 

注册: 2009-10-03 23:31
帖子: 3030
送出感谢: 1
接收感谢: 14
喜欢VI风格浏览器的不妨试试这个:http://opensource.conformal.com/wiki/XXXTerm


页首
 用户资料  
 
9 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-11 20:07 
头像

注册: 2007-07-11 21:43
帖子: 3382
地址: 东江边
系统: archlinux
送出感谢: 15
接收感谢: 7
EE竟然不知道,神,你已经堕落神坛了


_________________
我来了,我看见了,我征服了!
求勾搭,不管饭。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-11 21:36 

注册: 2008-10-31 3:18
帖子: 697
送出感谢: 8
接收感谢: 2
susbarbatus 写道:
800+ 行源码用来学习浏览器倒是不错,就好像用linux0.01学OS

这个给力


_________________
Ubuntu 桌面培训
Duo T6400 GeForce 9300MGS 4G win7 Lubuntu16.04 64bit奔跑中
P3 667 512M GeForce MX200 Lbuntu10.04
从零开始学游泳 萨顶顶


页首
 用户资料  
 
11 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-12 16:44 
头像

注册: 2010-04-10 16:14
帖子: 2903
系统: Arch Linux
送出感谢: 8
接收感谢: 69
levee 写道:
喜欢VI风格浏览器的不妨试试这个:http://opensource.conformal.com/wiki/XXXTerm

试了一下,不好用……


_________________
dz,U,EIS. cies.
dz-cies@github
小香猪杀手@cc98.org


页首
 用户资料  
 
12 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-12 16:57 
头像

注册: 2010-02-16 16:58
帖子: 299
送出感谢: 0 次
接收感谢: 0 次
:em03

不好意思。这东西 怎么用啊???


_________________
代码:
我一定要在我选择的道路上,疯狂,执着,勇敢的走下去!

youworld时尚服装
我的微博


页首
 用户资料  
 
13 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-12 20:31 
头像

注册: 2008-02-17 23:47
帖子: 22120
地址: 美丽富饶的那啥星球
送出感谢: 11
接收感谢: 84
后山人 写道:
:em03

不好意思。这东西 怎么用啊???

用神器的第一步,鼠标扔掉,其他的慢慢就知道了


_________________
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手


页首
 用户资料  
 
14 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-12 20:39 

注册: 2008-05-03 23:42
帖子: 3681
送出感谢: 4
接收感谢: 7
:em01


页首
 用户资料  
 
15 楼 
 文章标题 : Re: surf 辅助浏览器
帖子发表于 : 2011-01-12 22:08 
头像

注册: 2010-02-16 16:58
帖子: 299
送出感谢: 0 次
接收感谢: 0 次
adagio 写道:
后山人 写道:
:em03

不好意思。这东西 怎么用啊???

用神器的第一步,鼠标扔掉,其他的慢慢就知道了



你说的没懂。不过我把他拷到/bin 下了。不知道这样有没有什么不好的?


_________________
代码:
我一定要在我选择的道路上,疯狂,执着,勇敢的走下去!

youworld时尚服装
我的微博


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译