You are not logged in.
Keyboard link following: we all probably have slightly different ideas how following should work. Instead trying to implement them all I would prefer that wrapper can get list of visible links (in text-url pairs) so I can do whatever I want with them from my own wrapper. Let me know if I should explain this.
hmm I understand what you mean. I like "offloading" where appropriate, but I think following links is not one of them. as human eyes go over a page (eg your reading text or just scanning briefly) you can see a link and want to follow it. Imho it would be bothersome to need to look carefully what the name says, go with your eyes to a different place then, and retype the name you just saw (potentially even needing to go back and forth). I think the vimperator/konqueror-alike approach would be better here. Also, for things like history/bookmarks/downloads etc there is some added value by handling it in an extra tool, but I don't see such advantage when doing this with following hyperlinks, which is an process that is only relevant inside the "flow" of browsing.
< Daenyth> and he works prolifically
4 8 15 16 23 42
Offline
dusanx wrote:Keyboard link following: we all probably have slightly different ideas how following should work. Instead trying to implement them all I would prefer that wrapper can get list of visible links (in text-url pairs) so I can do whatever I want with them from my own wrapper. Let me know if I should explain this.
hmm I understand what you mean. I like "offloading" where appropriate, but I think following links is not one of them. as human eyes go over a page (eg your reading text or just scanning briefly) you can see a link and want to follow it. Imho it would be bothersome to need to look carefully what the name says, go with your eyes to a different place then, and retype the name you just saw (potentially even needing to go back and forth). I think the vimperator/konqueror-alike approach would be better here. Also, for things like history/bookmarks/downloads etc there is some added value by handling it in an extra tool, but I don't see such advantage when doing this with following hyperlinks, which is an process that is only relevant inside the "flow" of browsing.
I know, I am still considering what would be better. Both vimperator and conkeror have similar approach so that is probably way to go.
Gnome -> Openbox -> Awesome -> XMonad -> dwm .
http://github.com/dusanx/uzbl/
Offline
Is it hard to access the Webkit JavaScript engine? Many of the higher level functionalities would be better off implemented in JavaScript (like link following, that's how Vimperator does it).
Think of it this way - a bare-bones browser, extensible through JavaScript. Kind of like Emacs+Lisp. Yeah, I know firefox already is extensible with JS, but it's heavy and cumbersome and writing extensions requires a lot of boilerplate code.
With JS you could make your own keyboard shortcuts for all sorts of actions - link following, speed dial, etc.
Edit: Seed? http://live.gnome.org/Seed
You gotta do this. Leave the browser with the absolute minimum functionality but put JS extensibility in it. It would rock people's socks off...
Edit2: OK, ignore me. There's already a browser done with Seed. http://svn.gnome.org/viewvc/seed/trunk/ … s/browser/
Don't reinvent the wheel, go your way I'll be sure to track your progress.
Last edited by yasen (2009-04-23 15:50:09)
Offline
maybe you should consider resource saving daemon/client architecture like urxvtd/urxvtc
Offline
maybe you should consider resource saving daemon/client architecture like urxvtd/urxvtc
I think this would be a great idea if tabs were not implemented.
archlinux - please read this and this — twice — then ask questions.
--
http://rsontech.net | http://github.com/rson
Offline
I added argument checking ( a bit hackish but it works ok)
By default it runs with the UI I added (close, back, forward, address entry, load button)
You can pass --minimal as first arg to run without it.
Examples:
./bare http://bbs.archlinux.org
./bare --minimal http://bbs.archlinux.org
Last edited by Wra!th (2009-04-23 18:54:50)
MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Offline
I've forked it so when I get a chance I may have a crack at a FIFO/socket control thingymajig.
Offline
I've forked it so when I get a chance I may have a crack at a FIFO/socket control thingymajig.
I want to fork it but have no experience with git. Is there some simple manual how to do basic things?
Gnome -> Openbox -> Awesome -> XMonad -> dwm .
http://github.com/dusanx/uzbl/
Offline
Where does the history go, if any?
Archi686 User | Old Screenshots | Old .Configs
Vi veri universum vivus vici.
Offline
http://book.git-scm.com/ is a good resource.
Offline
http://book.git-scm.com/ is a good resource.
You'll find also a lot of things here : http://www-cs-students.stanford.edu/~bl … index.html
And some github specific info here : http://github.com/guides/git-cheat-sheet
edit :
Where does the history go, if any?
- no bookmark management builtin. make your own solution. for pulling a bookmark a plaintxt-based program using dmenu
would work great here. combine with uzbltcrl and xbindkeys.
uzblctrl should support an option to query the current page so you can script something to add to your bookmarks. use
zenity or something to add tags.
- similar story for history.
Last edited by Shunpike (2009-04-23 19:35:43)
Offline
Thanks, I will try to contribute
Gnome -> Openbox -> Awesome -> XMonad -> dwm .
http://github.com/dusanx/uzbl/
Offline
Well, I've figured out how to make a FIFO, use fork, and get text from this FIFO whenever something is written there. Not bad for someone who started C last night
Offline
I added argument checking ( a bit hackish but it works ok)
By default it runs with the UI I added (close, back, forward, address entry, load button)
You can pass --minimal as first arg to run without it.
Examples:
./bare http://bbs.archlinux.org
http://omploader.org/tMWtodw
./bare --minimal http://bbs.archlinux.org
http://omploader.org/tMWtoeA
Having all those buttons is wrong :-) I really like the minimal stuff though : nothing gets in your way.
If there must be a statusbar, have a look at how vimperator (and vim, obvisously) work.
Offline
Wra!th wrote:I added argument checking ( a bit hackish but it works ok)
By default it runs with the UI I added (close, back, forward, address entry, load button)
You can pass --minimal as first arg to run without it.
Examples:
./bare http://bbs.archlinux.org
http://omploader.org/tMWtodw
./bare --minimal http://bbs.archlinux.org
http://omploader.org/tMWtoeAHaving all those buttons is wrong :-) I really like the minimal stuff though : nothing gets in your way.
If there must be a statusbar, have a look at how vimperator (and vim, obvisously) work.
to avoid confusion: I (the author of uzbl) also don't like the buttons and stuff.
PS: I've decided to stick with gtk after all. It looks like you cannot get "plain" webkit without gtk/qt/wxwidgets/... The reason must be that it *needs* some widgets (select tags, buttons etc) to render some elements on pages. So I'll have live with that. That said, I will stick to the interface plan we've discussed before
Barrucadu that's great. I've playing with fifo's myself too. I found http://www.tldp.org/LDP/lpg/node18.html a pretty good resource.
< Daenyth> and he works prolifically
4 8 15 16 23 42
Offline
This is fun
I killed both statusbar and scrollbars. Changed update_title and link_hover_cb so when you hover over some link title shows ' -> hover_uri' at the end. This is what I always wanted
I can paste code here (quick) or can wait to figure out how git works (day or two delay).
Does anybody need this changes anyway?
Gnome -> Openbox -> Awesome -> XMonad -> dwm .
http://github.com/dusanx/uzbl/
Offline
Meh no need to point out who the author is Dieter...After all the original was a slightly stripped down version of the webkit gtklauncher example... (http://trac.webkit.org/browser/trunk/We … her/main.c)
Here's all I've done on this..I'm starting to loose interest. Happy hacking
// Base code taken from the example webkit-gtk+ application. see notice below.
/*
* Copyright (C) 2006, 2007 Apple Inc.
* Copyright (C) 2007 Alp Toker <alp@atoker.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <string.h>
#include <gtk/gtk.h>
#include <webkit/webkit.h>
static GtkWidget* main_window;
static GtkStatusbar* main_statusbar;
static WebKitWebView* web_view;
static gchar* main_title;
static gint load_progress;
static guint status_context_id;
GtkWidget* address_entry;
gchar* url_argument;
static void update_title (GtkWindow* window)
{
GString* string = g_string_new (main_title);
g_string_append (string, " - Bare Browser");
if (load_progress < 100) g_string_append_printf (string, " (%d%%)", load_progress);
gchar* title = g_string_free (string, FALSE);
gtk_window_set_title (window, title);
g_free (title);
}
static void link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data)
{
gtk_statusbar_pop (main_statusbar, status_context_id);
if (link) gtk_statusbar_push (main_statusbar, status_context_id, link);
}
static void title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data)
{
if (main_title) g_free (main_title);
main_title = g_strdup (title);
update_title (GTK_WINDOW (main_window));
}
static void progress_change_cb (WebKitWebView* page, gint progress, gpointer data)
{
load_progress = progress;
update_title (GTK_WINDOW (main_window));
}
static void destroy_cb (GtkWidget* widget, gpointer data)
{
gtk_main_quit ();
}
static GtkWidget* create_browser ()
{
GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER); //change _NEVER to _AUTOMATIC for scrollbars
web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
g_signal_connect (G_OBJECT (web_view), "title-changed", G_CALLBACK (title_change_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view);
return scrolled_window;
}
static GtkWidget* create_statusbar ()
{
main_statusbar = GTK_STATUSBAR (gtk_statusbar_new ());
status_context_id = gtk_statusbar_get_context_id (main_statusbar, "Link Hover");
gtk_statusbar_set_has_resize_grip(main_statusbar,FALSE);
return (GtkWidget*)main_statusbar;
}
static GtkWidget* create_window ()
{
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
gtk_widget_set_name (window, "Bare Browser");
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL);
return window;
}
static void do_load (GtkWidget* widget, gpointer data)
{
const gchar *url;
url = gtk_entry_get_text (GTK_ENTRY (address_entry));
webkit_web_view_load_uri (web_view, url);
}
static void do_back(GtkWidget* widget, gpointer data)
{
webkit_web_view_go_back (web_view);
}
static void do_forward(GtkWidget* widget, gpointer data)
{
webkit_web_view_go_forward (web_view);
}
int main (int argc, char* argv[])
{
gtk_init (&argc, &argv);
if (!g_thread_supported ()) g_thread_init (NULL);
GtkWidget* vbox = gtk_vbox_new (FALSE, 0);
int minimal = 0;
if(argc > 1) {
if(strncmp(argv[1], "--minimal", 9) == 0)
{
printf("Bare: Running on minimal UI\n");
minimal = 1;
if(argc > 2)
{
url_argument = (gchar*) argv[2];
} else {
url_argument = "http://www.google.com";
}
} else {
url_argument = (gchar*) argv[1];
}
} else {
url_argument = "http://www.google.com";
}
if(minimal == 0){
address_entry = gtk_entry_new();
gtk_entry_set_width_chars(GTK_ENTRY(address_entry), 40);
gtk_entry_set_text(GTK_ENTRY(address_entry), "http://");
gtk_entry_set_has_frame(GTK_ENTRY(address_entry),TRUE);
gtk_box_pack_start (GTK_BOX (vbox), create_browser(), TRUE, TRUE, 0);
GtkWidget* status_box = gtk_hbox_new(FALSE, 0);
GtkWidget* go_button = gtk_button_new_with_label ("GO");
GtkWidget* forward_button = gtk_button_new_with_label (" > ");
GtkWidget* back_button = gtk_button_new_with_label (" < ");
GtkWidget* quit_button = gtk_button_new_with_label (" X ");
gtk_box_pack_start (GTK_BOX (status_box), quit_button, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (status_box), back_button, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (status_box), forward_button, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (status_box), address_entry, FALSE,TRUE , 0);
gtk_box_pack_start (GTK_BOX (status_box), go_button, FALSE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (status_box), create_statusbar(), TRUE, TRUE, 0);
gtk_signal_connect_object (GTK_OBJECT (quit_button), "clicked", GTK_SIGNAL_FUNC (destroy_cb), GTK_OBJECT (quit_button));
gtk_signal_connect_object (GTK_OBJECT (back_button), "clicked", GTK_SIGNAL_FUNC (do_back), GTK_OBJECT (go_button));
gtk_signal_connect_object (GTK_OBJECT (forward_button), "clicked", GTK_SIGNAL_FUNC (do_forward), GTK_OBJECT (go_button));
gtk_signal_connect_object (GTK_OBJECT (go_button), "clicked", GTK_SIGNAL_FUNC (do_load), GTK_OBJECT (go_button));
gtk_signal_connect_object (GTK_OBJECT (address_entry), "activate", GTK_SIGNAL_FUNC (do_load), GTK_OBJECT (address_entry));
gtk_box_pack_end (GTK_BOX (vbox), status_box, FALSE, TRUE, 0);
} else {
gtk_box_pack_start (GTK_BOX (vbox), create_browser(), TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (vbox), create_statusbar(), FALSE, TRUE, 0);
}
main_window = create_window ();
gtk_container_add (GTK_CONTAINER (main_window), vbox);
gtk_widget_grab_focus (GTK_WIDGET (web_view));
gtk_widget_show_all (main_window);
webkit_web_view_load_uri (web_view, url_argument);
gtk_main ();
return 0;
}
Last edited by Wra!th (2009-04-23 21:12:13)
MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Offline
Having all those buttons is wrong :-) I really like the minimal stuff though : nothing gets in your way.
If there must be a statusbar, have a look at how vimperator (and vim, obvisously) work.
Agreed. I would like to have status (edit?) bar only visible when I need to type something in. We don't need status bar 99% of time. If we can create status bar that pops up only when needed that would be great. Don't know if and how gtk can support this yet.
Gnome -> Openbox -> Awesome -> XMonad -> dwm .
http://github.com/dusanx/uzbl/
Offline
Meh no need to point out who the author is Dieter...After all the original was a slightly stripped down version of the webkit gtklauncher example... (http://trac.webkit.org/browser/trunk/We … her/main.c)
Here's all I've done on this..I'm starting to loose interest. Happy hacking
Well Wra!th I really like what you did. Just ran your latest code snapshot and love it. Thanks.
Offline
Dieter, I've found that the data sent to the FIFO sometimes doesn't end up in the program. I'm trying to figure out why, as it seems pretty random. Have you encountered this problem?
I've also found that if I use fork(), I can't do anything to the webkit instance (this probably should have been obvious), so clearly that's not the way to go about it. I'll investigate threading, and see if I can come up with anything. It'd be nice to have some basic commands working by the weekend
Last edited by Barrucadu (2009-04-23 22:07:26)
Offline
@Barrucadu, out of curiosity, why are you using fork when creating the fifo instead of just creating another thread and doing it there? Or are you trying to pass information between the forked processes?
Offline
OK, I have keys working
We can do everything we want now. Pasting here, learning git
// Original code taken from the example webkit-gtk+ application. see notice below.
/*
* Copyright (C) 2006, 2007 Apple Inc.
* Copyright (C) 2007 Alp Toker <alp@atoker.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <gtk/gtk.h>
#include <webkit/webkit.h>
#include <string.h>
#include <gdk/gdkkeysyms.h>
static GtkWidget* main_window;
static GtkWidget* uri_entry;
static WebKitWebView* web_view;
static gchar* main_title;
static gchar selected_url[500];
static gint load_progress;
static gchar* uri = NULL;
static gboolean verbose = FALSE;
static GOptionEntry entries[] =
{
{ "uri", 'u', 0, G_OPTION_ARG_STRING, &uri, "Uri to load", NULL },
{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "Be verbose", NULL },
{ NULL }
};
static void
activate_uri_entry_cb (GtkWidget* entry, gpointer data)
{
const gchar* uri = gtk_entry_get_text (GTK_ENTRY (entry));
g_assert (uri);
webkit_web_view_load_uri (web_view, uri);
}
static void update_title (GtkWindow* window)
{
GString* string = g_string_new (main_title);
g_string_append (string, " - Uzbl browser");
if (load_progress < 100)
g_string_append_printf (string, " (%d%%)", load_progress);
if (selected_url[0]!=0) {
g_string_append_printf (string, " -> (%s)", selected_url);
}
gchar* title = g_string_free (string, FALSE);
gtk_window_set_title (window, title);
g_free (title);
}
static void
link_hover_cb (WebKitWebView* page, const gchar* title, const gchar* link, gpointer data)
{
selected_url[0]='\0';
if (link) {
strcpy (selected_url,link);
}
update_title (GTK_WINDOW (main_window));
}
static void
title_change_cb (WebKitWebView* web_view, WebKitWebFrame* web_frame, const gchar* title, gpointer data)
{
if (main_title)
g_free (main_title);
main_title = g_strdup (title);
update_title (GTK_WINDOW (main_window));
}
static void
progress_change_cb (WebKitWebView* page, gint progress, gpointer data)
{
load_progress = progress;
update_title (GTK_WINDOW (main_window));
}
static void
load_commit_cb (WebKitWebView* page, WebKitWebFrame* frame, gpointer data)
{
const gchar* uri = webkit_web_frame_get_uri(frame);
if (uri)
gtk_entry_set_text (GTK_ENTRY (uri_entry), uri);
}
static void
destroy_cb (GtkWidget* widget, gpointer data)
{
gtk_main_quit ();
}
static void
go_back_cb (GtkWidget* widget, gpointer data)
{
webkit_web_view_go_back (web_view);
}
static void
go_forward_cb (GtkWidget* widget, gpointer data)
{
webkit_web_view_go_forward (web_view);
}
static void
key_press_cb (WebKitWebView* page, GdkEventKey* event)
{
if ((event->type == GDK_KEY_PRESS) && (event->keyval=GDK_Left) && ((event->state | GDK_MOD1_MASK)==event->state)) {
webkit_web_view_go_back (web_view);
}
}
static GtkWidget*
create_browser ()
{
GtkWidget* scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_NEVER);
web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
g_signal_connect (G_OBJECT (web_view), "title-changed", G_CALLBACK (title_change_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "load-progress-changed", G_CALLBACK (progress_change_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "load-committed", G_CALLBACK (load_commit_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "hovering-over-link", G_CALLBACK (link_hover_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "key-press", G_CALLBACK (link_hover_cb), web_view);
g_signal_connect (G_OBJECT (web_view), "key-press-event", G_CALLBACK(key_press_cb), web_view);
return scrolled_window;
}
static GtkWidget* create_window ()
{
GtkWidget* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
gtk_widget_set_name (window, "Uzbl browser");
g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy_cb), NULL);
return window;
}
int main (int argc, char* argv[])
{
gtk_init (&argc, &argv);
if (!g_thread_supported ())
g_thread_init (NULL);
GtkWidget* vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), create_browser (), TRUE, TRUE, 0);
main_window = create_window ();
gtk_container_add (GTK_CONTAINER (main_window), vbox);
GError *error = NULL;
GOptionContext* context = g_option_context_new ("- some stuff here maybe someday");
g_option_context_add_main_entries (context, entries, NULL);
g_option_context_add_group (context, gtk_get_option_group (TRUE));
g_option_context_parse (context, &argc, &argv, &error);
webkit_web_view_load_uri (web_view, uri);
gtk_widget_grab_focus (GTK_WIDGET (web_view));
gtk_widget_show_all (main_window);
gtk_main ();
return 0;
}
-No status or scroll bars.
-Hower link is part of window title. Had to use static string, app crashed with dynamic allocation -- happens too fast I guess.
-Alt+Left arrow navigates back. See key_press_cb. We can monitor all key combinations from here.
Edit:
oops, line with "key-press" is not needed (code works anyway but you can remove it).
Also messed edits but I will fix that tomorrow, should be easy thing to do...
Last edited by dusanx (2009-04-23 23:55:21)
Gnome -> Openbox -> Awesome -> XMonad -> dwm .
http://github.com/dusanx/uzbl/
Offline
someone asked for git resources. I think this is teh most awesome git documentation/tutorial stuff:
http://www-cs-students.stanford.edu/~blynn/gitmagic/
cheers Barde
(i am starting to gain interest in that project ^^)
Offline
Wra!th wrote:Meh no need to point out who the author is Dieter...After all the original was a slightly stripped down version of the webkit gtklauncher example... (http://trac.webkit.org/browser/trunk/We … her/main.c)
Here's all I've done on this..I'm starting to loose interest. Happy hackingWell Wra!th I really like what you did. Just ran your latest code snapshot and love it. Thanks.
Well there's nothing in my code that's not in the original(or coded as good as the original). Mightaswell use that
MacGregor DESPITE THEM!
7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Offline
Aha, it works! I'm not sure why I was having so many problems with threading (probably because I was tired last night), but now I have a simple control interface working.
Offline