Rechercher un article
Uzbl - Importer ses bookmarks Firefox
Si vous avez une masse importante de bookmarks et que vous aimeriez les retrouver dans Uzbl alors je vous propose ce script d'importation. Il se repose sur les bookmarks de la "Barre personnelle" uniquement, et configure les bookmarks avec des tags (cf le précédent article).
Pour que le script fonctionne, vous devez posséder php et vous aurez besoin de faire un export (au format json) à la racine de votre répertoire personnelle.
Il suffira de lancer le script et tout se fera automatiquement :)
#!/usr/bin/php5
<?php
$bookmarks_file = array_pop(glob(getenv('HOME').'/bookmarks-*.json'));
if (empty($bookmarks_file)) {
echo sprintf("No bookmarks found in \"%s\"/\n", getenv('HOME'));
exit(0);
}
$datas = json_decode(file_get_contents($bookmarks_file));
function get_firefox_bookmarks_for_uzbl($node, $prefix)
{
$config = '';
if (isset($node->children)) {
foreach ($node->children as $child) {
$config.= get_firefox_bookmarks_for_uzbl($child, $prefix.'/'.$node->title);
}
} else {
if (isset($node->uri)) {
$config.= str_replace(
array(
'/Barre personnelle/',
'/Barre personnelle'
),
array(
'/Barre personnelle',
'/'
),
"$node->uri $prefix $node->title\n"
);
}
}
return $config;
}
file_put_contents(
getenv('HOME').'/.local/share/uzbl/bookmarks',
get_firefox_bookmarks_for_uzbl($datas->children[2], '')
);
Uzbl-tabbed, mon nouveau navigateur hors développement, scripts
J'utilise à présent Uzbl-tabbed comme navigateur (hormis quand je fais du développement web). Il fonctionne à merveille, sans compter l'incroyable facilité de personnalisation.
Voici quelques éléments de ma configuration :
@bind <Button2> = sh 'if [ "$1" ]; then echo "event NEW_TAB $1" > "$UZBL_FIFO"; else echo "uri $(xclip -o | sed s/\\\@/%40/g)" > "$UZBL_FIFO"; fi' '\@SELECTED_URI'
@cbind <Ctrl>n = event REQ_NEW_WINDOW # nouvelle fenêtre
@cbind <Ctrl>r = reload # rechargement
@cbind <Ctrl>R = reload_ign_cache # rechargement sans cache
@cbind <Mod1>b = back # précédent
@cbind <Mod1>n = forward suivant
@cbind <Ctrl>w = exit # fermerture d'onglet/fenêtre
@on_event NEW_WINDOW sh 'uzbl-tabbed "$1"' %r
@cbind clone = event REQ_NEW_WINDOW \@uri # copie de fenêtre/fenêtre
Ce script est un hack de celui présent sur le site d'Uzbl.
- Emplacement :
@scripts_dir/bookmark_with_tags_for_folders.sh
- Bind :
@cbind <Ctrl>d = spawn @scripts_dir/bookmark_with_tags_for_folders.sh
#!/bin/bash
# @scripts_dir/bookmark_with_tags_for_folders.sh
#NOTE: it's the job of the script that inserts bookmarks to make sure there are no dupes.
file=${XDG_DATA_HOME:-$HOME/.local/share}/uzbl/bookmarks
[ -r "$file" ] || exit
DMENU_SCHEME="bookmarks"
DMENU_OPTIONS="xmms vertical resize"
. "$UZBL_UTIL_DIR/dmenu.sh"
. "$UZBL_UTIL_DIR/uzbl-dir.sh"
TAG=`cat $file | cut -d" " -f2 | sort -u | $DMENU -nb \#303030 -nf khaki -sb \#CCFFAA -sf \#303030`
goto=`grep $TAG $file | cut -d" " -f1,3- | while read url name; do [ -z "\$name" ] || name="\$name "; echo "\$name: $url"; done | $DMENU $COLORS | cut -d":" -f2-`
[ -n "$goto" ] && echo "uri $goto" > "$UZBL_FIFO"
- Emplacement :
@scripts_dir/prompt_url.sh
- Bind :
@cbind <Ctrl>l = spawn @scripts_dir/prompt_url.sh
#!/bin/sh
goto=$(zenity --entry --text "$UZBL_TITLE" --entry-text "$UZBL_URI" --title "$UZBL_TITLE")
if [ $? -eq 0 ]; then
echo "uri $goto" > "$UZBL_FIFO"
fi
- Emplacement :
@scripts_dir/prompt_search.sh
- Bind :
@cbind <Ctrl>k = spawn @scripts_dir/prompt_search.sh
#!/bin/sh
search=$(zenity --entry --text "Effectuer une recherche" --entry-text "" --title "UZBL : Effectuer une recherche")
if [ $? -eq 0 ]; then
echo "uri http://www.google.fr/search?q=$(echo "$search" | sed 's/ /%20/g')" > "$UZBL_FIFO"
fi
@cbind <Ctrl>i = js (function() { var event = document.createEvent('HTMLEvents'); event.initEvent('uzbl_zoom_in', true, true); document.dispatchEvent(event); } )();
@cbind <Ctrl><Shift>I = js (function() { var event = document.createEvent('HTMLEvents'); event.initEvent('uzbl_zoom_out', true, true); document.dispatchEvent(event); } )();
@cbind <Ctrl>à = js (function() { var event = document.createEvent('HTMLEvents'); event.initEvent('uzbl_zoom_init', true, true); document.dispatchEvent(event); } )();
@on_event LOAD_COMMIT script @scripts_dir/zoom.js
Dans @scripts_dir/zoom.js
:
function get_cookie(name) {
var dc = document.cookie;
var prefix = name + '=';
var begin = dc.indexOf('; ' + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin!= 0) {
return null;
}
}
else {
begin += 2;
}
var end = document.cookie.indexOf(';', begin);
if (end == -1) {
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}
var step = function()
{
return 0.1;
}
var get_body = function()
{
var body = document.getElementsByTagName('body');
return body ? body[0] : null;
}
var get_body_zoom = function()
{
return get_body().getAttribute('data-zoom') ? parseFloat(get_body().getAttribute('data-zoom')) : 1;
}
var set_body_zoom = function(zoom)
{
get_body().setAttribute('data-zoom', zoom);
get_body().style.zoom = zoom;
document.cookie='uzbl_zoom='+zoom+';path=/;expires=Tue, 2 Jun 2020 00:00:00 UTC;'
}
var zoom_in = function()
{
set_body_zoom(get_body_zoom() + step());
}
var zoom_out = function()
{
set_body_zoom(get_body_zoom() - step());
}
var zoom_init = function()
{
set_body_zoom(1);
}
var zoom_retrieve = function()
{
var zoom = get_cookie('uzbl_zoom');
if (zoom) {
set_body_zoom(zoom);
}
}
document.addEventListener('uzbl_zoom_in', zoom_in, true);
document.addEventListener('uzbl_zoom_out', zoom_out, true);
document.addEventListener('uzbl_zoom_init', zoom_init, true);
document.addEventListener('DOMContentLoaded', zoom_retrieve, true);
J'espère que ça vous sera utile :)