You are not logged in.
Edit: This information is out of date by a few years now, luakit works great now!, get tinkering!
Hey Guys,
As a project to teach myself C I've spent the last 3 weeks slapping the AwesomeWM Lua API on to a WebKit based micro-browser (in this case I chose surf) with the intention of creating a dynamic, easy to configure, easy to prototype, micro-browser configured and extended entirely by Lua.
I've got window creation and several functioning widgets working (webviews, textareas, hboxes, vboxes and a notebook widget for tabbing) but I've still got a long way to go.
With a bit of work on each of these widgets and the development of a "higher-level" Lua library like the AwesomeWM projects awful library the browser will be ready for every day use. The awful library (in case you are not familiar with it) provides a friendly wrapper around the AwesomeWM's raw C API, I plan on creating the same for Luakit.
I intend (like the awesome window manager) for Luakit to be more of a browser-framework and the actual look and behavior of the browser be crafted entirely by the users Lua config.
I have the project hosted here:
http://github.com/mason-larobina/luakit
And a public issue tracker and wiki setup here:
Discussion about the direction of Luakit, feature suggestions, testers (down the track) and developers welcome.
Happy hacking!
Second Edit: Screenshots of luakit in action:
Last edited by mason.larobina (2012-06-10 02:22:08)
Offline
Now available in AUR
Git branch <---- best option for most ppl.
Stable <<------ NOW in community HERE
develop <--- DON'T let the name throw you..... this branch is quite stable.
Hurry, while supplies last!!
Last edited by jwbirdsong (2011-05-09 00:49:12)
PLEASE read and try to FIX/FILE BUGS instead of assuming other have/will.
Offline
So many neat browsers to choose from,i love it!
Offline
Interesting Project. I used to use uzbl for quite some time now, but i dont like the 'new' python event handler. I thought about forking a older uzbl without external event handler, but never made it. This could be what i looked for.
Ceterum autem censeo Systemdinem esse delendam
Offline
Very sexy, this looks like just the right balance between speed and customisability, filling the gap between uzbl and jumanji/surf nicely. A big +1 for the project, thanks. Now to brush up on my lua
Edit: how do I go about loading and running javascript? Specifically I would like to get a link following script of some sort working.
Last edited by quigybo (2010-08-11 16:15:44)
Offline
Very sexy, this looks like just the right balance between speed and customisability, filling the gap between uzbl and jumanji/surf nicely. A big +1 for the project, thanks. Now to brush up on my lua
Edit: how do I go about loading and running javascript? Specifically I would like to get a link following script of some sort working.
No need, I've already got link following working
The changes can be found in the develop branch at:
http://github.com/mason-larobina/luakit
Enjoy!
Last edited by mason.larobina (2010-08-14 09:09:39)
Offline
So basically an improved jumanji? Looks incredible, will give it a go. If it works as beautifully on PPC as jumanji does, I will be thrilled.
Offline
@mason.larobina: i guess you are using this script. I noticed, that there are some links that will not be recognized with this script. Maybe you should take a look at http://bitbucket.org/portix/dwb/src/tip/data/hints.js, this script will work better. Just ignore or delete the last 3 functions and there are some variables that need to be added: hint_letter_seq, hint_font_size, hint_font_weight, hint_font_family, hint_style, hint_fg_color, hint_bg_color. hint_active_color, hint_normal_color, hint_border, hint_opacity.
Offline
No need, I've already got link following working
Even sexier. Thanks.
Offline
@mason.larobina: i guess you are using this script. I noticed, that there are some links that will not be recognized with this script. Maybe you should take a look at http://bitbucket.org/portix/dwb/src/tip/data/hints.js, this script will work better. Just ignore or delete the last 3 functions and there are some variables that need to be added: hint_letter_seq, hint_font_size, hint_font_weight, hint_font_family, hint_style, hint_fg_color, hint_bg_color. hint_active_color, hint_normal_color, hint_border, hint_opacity.
Thanks for pointing that out, I realise the script I pulled in is a few months old by now. Javascript isn't my language so I'll be a little while updating the script to support overlays and keyword matching like karottenreibe's port.
For the moment follow.js has worked for everything I've tried (except in gmail.com which is a known troublemaker) but I'll add it to my list of things to do or organise.
Offline
Can links be opened in a new window? I've tried but nothing happens.
Offline
Can links be opened in a new window? I've tried but nothing happens.
At the moment you can open a new window by binding a key to the new_window() function however new window requests from webkit won't work yet as we are not handling the "new-window-policy-decision-requested" webview event.
Offline
luakit release 2010.08.13
Summary of changes from 2010.08.07 to 2010.08.13:
* Add -v,--verbose option to toggle debugging output
* Re-licensed MIT code to GPLv3
* Add eval_js(..) webview widget method
* Add eval_js_from_file(..) helper function to load and execute a script using the eval_js webview method
* Add luakit.selection(name) which returns the contents of either the "primary", "secondary" or "clipboard" selection
* Add xdg aware file finding functions to util.lua
* Add :websearch [engine] [query] command
* Add p bind which opens the primary selection in the current tab or P to open in a new tab
* Add d to close current tab
* Add o, t & ,g as shortcuts for :open, :tabopen & :websearch google
* Add link hinting and following support
* Add Shift+Insert key binding to paste current primary selection in the input bar
* Add search history navigation
* Add proxy support
* Add ssl certificate validation options
* Add command line completion for command mode
* Add "link-hover" & "link-unhover" signal handlers to display and hide the hovered uri in the statusbar
* Add file downloading support with wget
* Add Control+w and Control-u readline bindings in the command mode
* Use util.escape to sanitise label widgets text
* Several bug fixes
Source download for 2010.08.13:
http://github.com/mason-larobina/luakit … 2010.08.13
Enjoy!
Offline
Very interesting, great job, thanks
Offline
I will definitely try this out... soon... ish.
Offline
Posting from luakit:
how do I auto-enter insert mode when focusing a text box?
how can I scroll by pages? actually, if I'm not focused on a text box and enter insert mode, then page up/down, (shift) space work normally. this probably isn't intended behavior.
when I'm editing text and exit insert mode, I expect vim's normal mode commands to work xD. someone's already ported vi to javascript actually: http://gpl.internetconnection.net/vi/
I need mouse bindings to get new tab on middle click, rocker / mouse gestures.
the rc.lua seems really big. some of these functions could be pushed out into a library.
Offline
Interesting browser, I like it
I'm not a vi addicted so I try to change some keys, but I didn't find how to use the "Shift" key.
The following line does nothing.
bind.key({ "Control", "Shift" }, "Tab", function (w, b) w:prev_tab(1) end),
Edit: Hum Shift + Up is ok, maybe we can't set two modifiers ?
2 others things :
- Backspace does nothing, delete the last char would be perfect
- Without the verbose/debug (-v) mode a line is printing for each visited page. (like that: Requested link: https://www.google.com/ (text/html)...)
Last edited by Chippeur (2010-08-14 00:50:31)
Sorry in advance for my poor english...
Offline
Interesting browser, I like it
I'm not a vi addicted so I try to change some keys, but I didn't find how to use the "Shift" key.
The following line does nothing.bind.key({ "Control", "Shift" }, "Tab", function (w, b) w:prev_tab(1) end),
Edit: Hum Shift + Up is ok, maybe we can't set two modifiers ?
Ah, you've discovered something interesting. When you hold down Control+Shift and press Tab you are actually getting an ISO_Left_Tab key.
Your bind is now:
bind.key({ "Control", "Shift" }, "ISO_Left_Tab", function (w, b) w:prev_tab(1) end),
Put this in your "key-press" signal handler to get the modifier table & key name for each key press:
print(table.concat(mods, "|"), key)
2 others things :
- Backspace does nothing, delete the last char would be perfect
What do you mean? In form fields or the input bar? Backspace works fine for me in the input bar & it works fine in insert mode.
- Without the verbose/debug (-v) mode a line is printing for each visited page. (like that: Requested link: https://www.google.com/ (text/html)...)
Alright fixed. I'll push in a little while.
Offline
Chippeur wrote:2 others things :
- Backspace does nothing, delete the last char would be perfectWhat do you mean? In form fields or the input bar? Backspace works fine for me in the input bar & it works fine in insert mode.
I think he means in command buffering.
Last edited by aeosynth (2010-08-14 07:35:08)
Offline
mason.larobina wrote:Chippeur wrote:2 others things :
- Backspace does nothing, delete the last char would be perfectWhat do you mean? In form fields or the input bar? Backspace works fine for me in the input bar & it works fine in insert mode.
I think he means in command buffering.
In that case he should use the input bar for anything that requires backspacing. The buffer is used to match a very short string of characters which relate to a given function (be it a shortcut or whatever). In other words <Ctrl+[> or <Escape> should be the only backspace you need.
Offline
Thanks for the answers
It work like a charm for me now.
Sorry in advance for my poor english...
Offline
how do I auto-enter insert mode when focusing a text box?
Easy & done already, have a look here.
how can I scroll by pages?
You can't at the moment but you can get the view size from the get_scroll_vert method:
local current, max, view_size = view:get_scroll_vert()
Then its just a simple calculation to scroll by a multiple of the view_size.
actually, if I'm not focused on a text box and enter insert mode, then page up/down, (shift) space work normally. this probably isn't intended behavior.
when I'm editing text and exit insert mode, I expect vim's normal mode commands to work xD. someone's already ported vi to javascript actually: http://gpl.internetconnection.net/vi/
The view:eval_js(script) method works really well now, I haven't tried it with that script but I imagine you could get something similar working (obviously vi embedded inside a modal browser would cause problems) but a subset of those commands would work well.
I need mouse bindings to get new tab on middle click, rocker / mouse gestures.
Mouse button bindings have been added here.
the rc.lua seems really big. some of these functions could be pushed out into a library.
Yes it is & yes they will be.
Offline
Is there any reasoning towards using one-key buffered commands instead of keybindings? For instance, why `bind.buf("^o$", ...)` instead of `bind.key({}, "o", ...)` to open urls?
Last edited by aeosynth (2010-08-15 07:16:34)
Offline
Is there any reasoning towards using one-key buffered commands instead of keybindings? For instance, why `bind.buf("^o$", ...)` instead of `bind.key({}, "o", ...)` to open urls?
In this case `bind.buf("^o$", ...)` and `bind.key({}, "o", ...)` will work interchangeably. The difference is that the `bind.key({}, "o", ...)` binding will match in all modes however `bind.buf(..)` binds will only work in modes with a buffer (which is only the "normal" mode in the default rc.lua).
Edit: By all modes I mean it will work regardless of the mode table you put it in.
Last edited by mason.larobina (2010-08-15 07:44:35)
Offline
Another nice little browser. I'm currently using it on my netbook. Keep up the good work.
Offline