Przejdź


Vimperator dla Opery

21 Lis 2009 @ 16:35:07 groszek 11 komentarzy

Ok, niezupełnie. Ale nad tym pracuję :)
Sprawa ma się tak, że zawsze w Operze mi brakowało jakiegoś systemu dodatków. Chociaż Opera ma większość i trochę funkcji które mają dodatki Firefox, to czasem jednak czegoś brakuje. Opera Software mogła to rozwiązać dwojako (2 liniami kodu?) - umożliwiając dokowanie widgetów w oknie opery (w końcu by się na coś przydały) lub ustawienie "paneli" na górze lub dole ekranu. Nie da się, trudno, napisałem nieco inne rozwiązanie.

Nie jest może doskonałe, głównie z powodu ograniczeń UserJS. Niestety mój panel narzędziowy pokazuje się dopiero po załadowaniu całego drzewka DOM strony. Przy szybkim internecie nie ma to jednak aż takiego znaczenia. A i na stronę startową można zamiast about:blank dać http://localhost/blank.html.

Ok, do rzeczy. Dodatek mój dodaje zupełnie nową funkcję do opery, pasek komend prawie-jak-vim, przynajmniej w przyszłości. Sprawa jest prosta, do każdej strony dokleja odpowiednio ostylowany input (choć tak naprawdę obok można umieścić dowolny html i go dowolnie oskryptować - działa na dwóch moich frameworkach do tego ;)). Skrypt następnie parsuje komendy tam wstawiane - proste.

Ważną częścią instalacji jest odpowiednie ustawienie skrótów klawiszowych w operze. Dlatego udajemy się do Preferences->Advanced->Shortcuts->Edit .. i w sekcji Application trzeba dodać nowy klucz. Jako przycisk proponuję ustawić ":", jako akcję:

Go to page, "javascript:document.getElementById( 'oocmd' ).focus( );"

Spowoduje to że wciśnięcie shift-; ustawi focus na nasz pasek komend. Oczywiście nie będzie to przeszkadzać w pisaniu, nie będzie reagowało gdy mamy podświetlone dowolne inne pole tekstowe.
Z okna ustawień należy też usunąć hotkeye dla strzałek góra/dół - nie będzie się już dało przewijać tak strony, ale coś za coś; ja tego i tak nie używałem. Za to będzie historia ostatnio używanych komend.

Jeśli o komendach mowa, to z reguły są to jednoznakowe, takie by były szybkie i użyteczne. Na razie nie ma ich zbyt wiele, skupiałem się raczej na dopracowaniu głównego kodu, tak by dzialał dobrze i stabilnie. Zatem na tę chwilę mamy:

- b - otwiera bugmenot dla aktualnej strony
- g [tekst] - szukanie w google
- a [tekst] - szukanie w allegro
- k [tag/.klasa/#id] - zmienia widzialność elementu (elementów), przełączając none/block
- e [kod js] - eval
- r - reload
- s - stop
- < - poprzednia strona
- > - następna strona
- o [adres] - otwarcie strony

Oprócz tego po wpisaniu po prostu http://.... otworzy taką stronę.
Planuję dodać więcej elementów, no ale to w przyszłości, gdy poczuję że jej potrzebuję. Może jakieś rapidshare-downloader, albo coś? :)

A więc najnudniejsza część: instalacja. Jako że jestem leniwy a wy już ustawiliście hotkeye jak trzeba, rzucę tylko linkami:
- Do usercss wklejamy: http://dl.dropbox.com/u/28596/Stuff/userjs/user.css
- Do katalogu z userjs wrzucamy: http://dl.dropbox.com/u/28596/Stuff/userjs/lib.js oraz http://dl.dropbox.com/u/28596/Stuff/userjs/user.js

voila! Wszystko powinno już działać. Wciśnięcie shift-; i mamy focus w odpowiednim miejscu; potem komenda enter i już. Ja się już uzależniłem od "k", oraz "e", natomiast "g" i "a" używałem już wcześniej - z poziomu paska adresu. Teraz się poważnie zastanawiam nad jego usunięciem (i przycisków też).

Wciąż mi brakuje funkcji "szukaj na stronie", a jedyne co mi przychodzi do głowy to podświetlanie znalezionych słów css-em... niezbyt mi się to podoba.
Żeby jeszcze się dało wywoływać opera:/button/akcja z poziomu userjs... :)


Komentarze:

21 Lis 2009 @ 17:09:31 Zal

Vimperator w wersji operowej to byłoby coś naprawdę bajeranckiego. Przyznaję bez bicia, że dla mnie właśnie możliwość wykorzystania Vimperatora jest największą zaletą Firefoksa.

21 Lis 2009 @ 18:55:10 groszek

A przetestowałeś to moje? :> łatwo dodawać nowe funkcjonalności. Natomiast ja musze zrobić jakieś sensowne zarządzanie kodem...

21 Lis 2009 @ 21:01:20 Wasacz

A tak btw, to bezsensownie wywoływać tę libkę twoją na selektor, skoro Opera ma API selektorów ;)

21 Lis 2009 @ 21:02:18 groszek

Yyy… ma? Gdzie, co? Aaa… to moje działa i jest ładne, i tak :P

21 Lis 2009 @ 21:07:20 Wasacz

jlib( p ).toggle( );

vs.

try {
document.querySelectorAll( p );
// i toggle w pętli
}(); } catch (e) {}

21 Lis 2009 @ 21:07:52 groszek

Hrm. Będę musiał się zastanowić nad tym :] dzięki.

21 Lis 2009 @ 22:40:13 Wasacz

Ja bym jeszcze zamiast div-ów dał jakieś własne elementy, np. „oobar” po prostu. Wtedy zostaną potraktowane jak liniowe, a nie złapią żadnej reguły z CSS strony.

A jakby tak wcisnąć kod JS do przycisku operowego, nie dałoby się jakoś wcześniej tego wywołać?

21 Lis 2009 @ 22:59:43 groszek

Co masz na myśli? Pokazanie toolbara po naciśnięciu operowego przycisku? Raczej niewielki problem, o ile wsadzimy tam skrypt+libki ;). A co do elementów, to dobry pomysł, ale czy nie będzie mi to spamowało error console? Później to sprawdzę. A swoją drogą, testowałeś całość? Jakieś wrażenia z użyteczności?

21 Lis 2009 @ 23:12:37 Wasacz

Zastanawiam się tylko, czy skrypt wpakowany do takiego przycisku ma szansę wywołać się wcześniej, ale pewnie nie, bo musi korzystać z runtime aktywnej karty.

W konsoli spamować tamto nie powinno, właściwie nie wiem, kiedy tam coś jest pokazywane związanego z HTML.

Jeśli Opera wyświetla obrazek, to nadal traktuje go jako dokument HTML, nie ma sensu wykluczać adresów z obrazkami, moim zdaniem :)

Testowałem tylko JS, ale zapowiada się świetnie ;) Pomyśl może o dołączaniu tego CSS jako data: URI, chociaż nie jestem pewien, czy to dobry pomysł ;)

24 Lis 2009 @ 21:27:07 mina86

Ale tak na poważnie, to czy w chwili obecnej to cudo oferuje coś czego nie da się bez użycia JS dodać do Opery? Tzn. poza funkcją "k" oraz "e"? Bo otwieranie stron oraz wyszukiwanie to się robi poprzez pasek adresu, a pod reload/stop zawsze można podpiąć jakie się tam chce klawisze.

W ogóle, czy nie lepiej by było podpiąć się pod zdarzenie KeyPress (czy jakie tam) i przechwytywać literki, żeby nie trzeba było tego dwukropka wciskać?

08 Sie 2011 @ 18:54:29 www.crazystuff.bb3host.com

Submit your site into my website...is dofollow and pr2

Pierdol licencje, kopiuj na zdrowie!