
Jakiś czas temu zakupiłem blutootowy adapter na USB. Początkowo wykorzystywałem go jedynie do przesyłania plików na linii telefon <-> komputer, jednak niedawno mając trochę więcej czasu postanowiłem się rozejrzeć za jakimś oprogramowaniem, które pozwalałoby mi sterować komputerem za pomocą telefonu (głównie chodziło o odtwarzacze muzyki i filmów). Od razu przypomniało mi się, że jakiś czas temu SzArAk pisał o jakimś oprogramowaniu, które służyło właśnie do tego celu. Po przeczytaniu jego notki zabrałem się za testy, jednak Anyremote, bo o nim mowa, jakoś mi się nie spodobał (głównie przez to, że jego graficzny interfejs dla KDE zatrzymał się na etapie KDE 3 i jest po prostu koszmarny).
Po krótkim googlaniu znalazłem jednak inny warty uwagi projekt - Remuco. Do interfejsu Remuco nie mogłem się przyczepić, bo program po prostu go nie posiada ;).
Remuco składa się z javowej aplikacji na telefon, oraz zestawu skryptów odpowiedzialnych za komunikację z aplikacjami działającymi na komputerze. W chwili obecnej stabilna wersja Remuco, czyli 0.9.1.1 posiada skrypty odpowiedzialne za komunikację z:
Aktualnie w repozytorium projektu znaleźć można dodatkowe moduły do obsługi następujących programów:
Dwa ostatnie moduły przygotowałem samodzielnie - zapraszam do pobierania i testowania.. ;)
Większość skryptów umożliwia (lista skrótów klawiszowych dostępna jest w menu aplikacji na telefonie):
<
p>
<
p>
Na ekranie telefonu na bieżąco wyświetlane są podstawowe dane na temat aktualnie odtwarzanego utworu (tytuł, nazwa albumu, autor), głośność, aktualny postęp oraz okładka. Dokładne informacje na temat tego jakie funkcje są wspierane dla jakiego odtwarzacza można znaleźć na odpowiedniej podstronie.
Remuco jest dostępne w repozytoriach kilku dystrybucji, możemy także dokonać instalacji programu z paczek ze źródłami lub z repozytorium Mercuriala. Po instalacji programu w katalogu /usr/share/remuco/client/ znajdziemy plik klienta przeznaczony do instalacji w telefonie, natomiast poszczególne aplikacje kontrolować możemy po uruchomieniu skryptu remuco-NAZWA_ODTWARZACZA lub instalacji odpowiedniego dodatku do odtwarzacza. Po szczegóły odsyłam na stronę projektu.
Skrypt do kontroli przeglądarki dokumentów Okular stworzyłem samodzielnie.. ;) Jak na razie umożliwia on:
Zachęcam do testowania.. ;)
W związku z dużą ilością zapytań uprzejmie informuję, że pliki pbm w systemie Windows można otworzyć na przykład za pomocą niżej wymienionych programów:
W systemie Linux pliki te można otworzyć między innymi za pomocą dowolnego programu graficznego dla środowiska KDE, aplikacji Gimp czy OpenOffice.org Draw.
Pozdrawiam. Paweł 'pbm' Szubert.
Od jakiegoś czasu do pisania referatów i innych materiałów na uczelnię używam LaTeXa. Robię to oczywiście w moim ulubionym edytorze. Czasami jednak używanie LaTeXa do pisania niektórych dokumentów to jak strzelanie z armaty do muchy. Ostatnio znalazłem jednak ciekawy projekt - Muse, który umożliwia proste tworzenie dokumentów i eksportowanie ich do wielu formatów.
Muse jest to tryb Emacsa, który udostępnia prosty system znaczników do formatowania tekstu oraz zestaw metod, które eksportują i konwertują ten kod do różnych formatów. Na liście formatów znajdują się między innymi: HTML, XHTML, ConTeXt, LaTeX, PDF (zarówno poprzez ConTeXta jak i LaTeXa), XML oraz kilka innych. Muse może być dobrym sposobem na przygotowanie sobie prawie gotowego dokumentu, który można następnie dopieścić w LaTeXu, jednak z tego co zauważyłem produkuje on ładny, poprawny i czytelny kod.
Muse jest dostępny w repozytoriach większości dystrybucji. W Debianie i pochodnych jest to pakiet muse-el, w Gentoo ebuild app-emacs/muse, natomiast w Archu pakiet emacs-muse z repozytorium community. Jeśli w naszej ulubionej dystrybucji pakiet ten nie jest dostępny możemy pobrać najnowszą wersję pakietu i dokonać jego instalacji za pomocą typowych poleceń: make; make install.
Kiedy zainstalujemy już Muse należy dodać odpowiednie opcje do naszego pliku konfiguracyjnego Emacsa. Niezbędne będzie dodanie linii odpowiedzialnej za ładowanie Muse oraz co najmniej jednego silnika odpowiedzialnego za eksportowanie dokumentów:
(require 'muse-mode) (require 'muse-html) (require 'muse-latex)
Powyższe linie spowodują włączenie silników odpowiedzialnych za eksport do formatów (X)HTML oraz LaTeX (PDF).
Muse jest już gotowe do pracy - domyślnie tryb Muse włączany jest przy otwieraniu plików z rozszerzeniem .muse.
Składnia Muse zbliżona jest do składni wiki. W poniższej tabeli znajdują się najczęściej używane znaczniki Muse:
| Nowy akapit | Jedna pusta linia pomiędzy poprzednim akapitem |
| Centrowanie | Rozpoczęcie linii od >6 spacji lub znacznik <center> |
| Nagłówki | * Nagłówek pierwszego poziomu |
| ** Nagłówek drugiego poziomu | |
| *** Nagłówek trzeciego poziomu | |
| *** Nagłówek czwartego poziomu | |
| Kursywa | *tekst* |
| Pogrubienie | **tekst** |
| Kursywa i pogrubienie | ***tekst*** |
| Podkreślenie | _tekst_ |
| Czcionka o stałej szerokości | =tekst= |
| Lista nienumerowana | - element (przed - musi być spacja) |
| Lista numerowana | 1. element (prze numerem musi być spacja) |
| Linki | [[cel][opis]] |
| [[cel (link bez opisu]] | |
| Obrazki | [[ścieżka_do_pliku_graficznego]] |
Właściwie są to znaczniki chyba najczęściej wykorzystywane przy pracy z Muse.
Przyjmijmy, że napisaliśmy sobie jakiś tekst ze znacznikami Muse i teraz rodzi się pytanie - jak otrzymać z tego powiedzmy plik PDF? Należy skorzystać z polecenia muse-publish-this-file. Po jego wydaniu zostaniemy poproszeni o wskazanie stylu (silnika) jakiego chcemy użyć do publikacji oraz o wskazanie miejsca zapisu. Po chwili w wybranym przez nas katalogu powinien pojawić się plik wynikowy.
Skorzystanie z opcji muse-publish-this-file sprawdza się kiedy pracujemy nad jednym plikiem, jednak podczas pracy przy większej ich liczbie musielibyśmy wywoływać tę komendę dla wszystkich plików. Muse umożliwia zdefiniowanie projektu w którym zdefiniujemy jakie pliki wchodzą w jego skład, do jakich formatów mają być publikowane oraz gdzie mają zostać zapisane.
Podstawowa definicja projektu wygląda tak:
(setq muse-project-alist
'(("Website" ("~/Pages" :default "index")
(:base "html" :path "~/public_html")
(:base "pdf" :path "~/public_html/pdf"))))
W przypadku tego projektu "Website" jest jego nazwą, następnie określony jest katalog z plikami oraz główny plik projektu. W kolejnych liniach znajdują się style publikacji oraz ścieżki do których zostaną zapisane pliki danego opublikowane danym stylem. Możliwe jest oczywiście zdefiniowanie kilku różnych projektów.
Do publikacji projektu służy funkcja muse-project-publish.
Po publikacji do jakiegoś stylu zapewne stwierdzimy, że nie wszystko jest tak, jakbyśmy tego chcieli. Przykładowo po publikacji do formatu LaTeX stwierdziłem, że w kodzie użyto klasy article zamiast używanej przeze mnie klasy mwart czy stosowanie pakietu babel, co jest złym pomysłem. Oczywiście możemy za każdym razem zmieniać odpowiednie linie w pliku wynikowym, ale nie jest to sensownym rozwiązaniem. Muse podczas publikacji ze zmiennych muse-nazwa_stylu-header oraz muse-nazwa_stylu-footer wczytuje nagłówek oraz stopkę pliku wynikowego. Domyślnie dla LaTeXa jest to:
\documentclass{article}
\usepackage[english]{babel}
\usepackage{ucs}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\usepackage[pdftex]{graphicx}
\def\museincludegraphics{%
\begingroup
\catcode`\|=0
\catcode`\\=12
\catcode`\#=12
\includegraphics[width=0.75\textwidth]
}
\begin{document}
\title{(muse-publish-escape-specials-in-string
(muse-publishing-directive "title") 'document)}
\author{(muse-publishing-directive "author")}
\date{(muse-publishing-directive "date")}
\maketitle
(and muse-publish-generate-contents
(not muse-latex-permit-contents-tag)
"\\tableofcontents
\\newpage")
Zmiany tych ustawień można dokonać albo poprzez bezpośrednie ustawienie zmiennych w pliku konfiguracyjnym, albo poprzez mechanizm customize (M-x customize-variable muse-latex-header). Ja zastąpiłem pierwsze 5 linii tej zmiennej przez:
\documentclass[a4paper,12pt]{mwart}
\usepackage{polski}
\usepackage[OT4]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{ucs}
Ciekawą cechą Muse jest to, że posiada ono kilka znaczników, które pozwalają na wykonywanie kodu zawartego pomiędzy nimi. Znacznikami tymi są <command> (Bash), <perl>, <python>, <ruby> oraz <lisp>. Cały kod zawarty pomiędzy znacznikiem początku (np. <command>) a znacznikiem końca (</command>) zostanie wykonany a do dokumentu zostanie wstawiony wynik tego wykonania.
Po więcej informacji odsyłam do Manuala Muse. Polecam także zapoznanie się z plikiem QuickStart.muse dostępnym w katalogu ze expamles wraz ze źródłami programu.
Ostatnio pisałem o przeglądarce dla użytkowników Emacsa: Conkerorze i od tamtego czasu stale jej używam i muszę powiedzieć, że jest to zdecydowanie moja ulubiona przeglądarka. Jednak jej liczne zalety stanowią jej podstawową wadę - zdecydowanie nie nadaje się jako przeglądarka internetowa dla tak zwanego Zwykłego Użytkownika.. ;) Poniżej przedstawię kilka alternatywnych przeglądarek internetowych dedykowanych użytkownikom KDE czy Qt...

Pierwsza z przeglądarek to oczywiście flagowa aplikacja środowiska KDE - Konqueror. Aplikacji tej chyba nie trzeba przedstawiać nikomu, kto miał chociaż przez chwilę do czynienia z KDE na pewno poznał Konquerora. Jest to przeglądarka (oraz menadżer plików) o bardzo dużych możliwościach konfiguracji. Oferuje ona takie funkcje jak wbudowane blokowanie reklam, możliwość podziału dzielenia aktywnego okna na kilka części, przywracanie sesji, przywracanie ostatnio zamkniętych kart czy wygodny mechanizm wyszukiwania. Funkcją z której dość często korzystam jest automatyczne odświeżanie strony co pewien czas - przydaje się ona do ponawiania pewnych czynności.. ;)
Konqueror do renderowania stron wykorzystuje swój własny silnik o nazwie KHTML (na podstawie którego Apple stworzyło WebKita).






Drugą z przeglądarek wartych uwagi jest Arora. Przypomina ona trochę Firefoksa z czasów, kiedy był on jeszcze fajną przeglądarką (okolice wersji 1.0 lub wcześniej jako Phoenix/Firebird). Jest to bardzo szybka i lekka przeglądarka, nie posiadająca jednak jakichś szczególnych funkcji, a jedynie to co do przeglądania ston potrzebne.
Arora do renderowania stron wykorzystuje silnik WebKit, a do swojego działania wymaga jedynie biblioteki Qt 4.




Przeglądarka ta jest jak na razie na bardzo wczesnym etapie rozwoju, jednak jest już używalna. Rekonq wymaga bibliotek KDE (>=4.2) i docelowo ma być ona dość silnie zintegrowany z tym środowiskiem. Już teraz pobieranie plików odbywa się poprzez mechanizm pobierania plików z KDE.



Z powyższych przeglądarek jedynie Konqueror jest już ustabilizowaną przegladarką o "pełnej" funkcjonalności. Pozostałe dwie są na dość wczesnym etapie rozwoju, który jednak przebiega dość dynamicznie. Na pewno obie z nich zasługują na zainteresowanie i będę się przyglądał ich rozwojowi...
Na blogu wprowadziłem ostatnio kilka zmian.. pierwszą i najważniejszą z nich było to, że pojawił się na nim w końcu jakiś wpis.. ;) Od teraz planuję pisać bardziej regularnie - minimum 2 razy w miesiącu, bo w sumie mam już kilka szkiców i pomysłów na kolejne wpisy, ale jakoś nigdy nie chciało mi się ich dokończyć.. ;)
Drugą ze zmian jest wstawienie we wpisach widżetu folksr.com. Kiedy mój blog otrzymał zaproszenie do serwisu i znalazł się w elitarnym gronie ;) obok takich joggerowych sław jak adas, Zal czy D4rky byłem nieźle zaskoczony - bo z tego wynikało, że ktoś blogaska musi czytać.. ;) W każdym razie od pewnego czasu przy każdym wpisie można znaleźć linki do podobnych wpisów sugerowanych przez folksr.
Zmiana trzecia to dodanie na stronie głównej widżetu serwisu BLIP z którego od pewnego czasu korzystam. Jako, że domyślny widżet BLIPa dostępny jest jedynie w postaci flashowej skorzystałem z alternatywnej wklejki przygotowanej przez niejakiego steelmana.
To chyba w sumie tyle.. lecę szykować kolejną notkę.. ;)
Od pewnego czasu poszukuję swojej idealnej przeglądarki internetowej. Swego czasu byłem fanem Firefoksa, jednak Firefox w wersji 3 stał się czymś czego nie potrafię używać z przyjemnością (gdzie te czasy, kiedy była to mała, szybka i niszowa przeglądarka? ;)).
W związku z poszukiwaniami przyglądałem się wielu przeglądarkom, jednak tą o której chcę tu napisać znalazłem zupełnie przypadkiem szukając czegoś zupełnie innego w drzewie portage. Już sam opis brzmiał bardzo zachęcająco "Webbrowser based on Gecko engine, inspired by Emacs". Przeglądarką tą jest Conkeror. Wiem, że tru Emacsowiec powinien korzystać wyłącznie z emacs-w3m, jednak korzystanie z niej nie jest specjalnie wygodne a przeglądanie internetu w trybie tekstowym nie wszystkim wystarcza.. ;)
Conkeror jest przeglądarką graficzną, wykorzystującą do renderowania stron silnik Gecko. W sumie nie byłoby w tym nic niezwykłego, gdyż przeglądarek na silniku Gecko jest od groma i jeszcze trochę, jednak Conkeror jest przeglądarką nastawioną na używanie jej wyłącznie za pomocą klawiatury. Możliwe jest to dzięki rozbudowanemu zestawowi skrótów klawiaturowych w stylu Emacsa.. :) Conkeror posiada także obsługę pluginów i rozszerzeń Mozilli (oczywiście w ograniczonym zakresie).
Przeglądarkę najlepiej oczywiście zainstalować z pakietów dostępnych w repozytorium naszej dystrybucji, jednak je śli nie znajdziemy tam odpowiedniego pakietu warto posłużyć się odpowiednią instrukcją. Conkeror dostępny jest także dla systemu Windows.
Jak już napisałem wcześniej przeglądarkę możemy obsługiwać wyłącznie za pomocą klawiatury i jest to całkiem wygodne. Domyślnie myszkę możemy wykorzystać jedynie do przewijania strony oraz do otwierania odnośników (ale tylko w aktywnej karcie).
Podstawowe skróty klawiaturowe jakie wykorzystujemy to:
| klawisz | polecenie M-x | znaczenie |
|---|---|---|
| g | find-url | przechodzi do podanego adresu |
| B lub l | go-back | przechodzi do poprzedniej strony |
| F | go-forward | przechodzi do następnej strony |
| r | revert-buffer | odświeża stronę |
| C-g | abort | przerywa ładowanie strony |
Po stronie możemy poruszać się za pomocą klawiszy strzałek, klawiszy Page Up/Down, Home i End oraz zestawów klawiszy znanych z Emacsa. Po konkrety odsyłam do manuala Conkerora, który możemy obejrzeć po wciśnięciu kombinacji C-h i.
Linki oczywiście możemy klikać za pomocą myszki, jednak widząc jakie możliwości w tym zakresie daje nam Conkeror byłoby to bluźnierstwem. Kiedy chcemy kliknąć w jakiś link wciskamy przycisk f. Wszystkie linki na stronie podświetlą nam się na kolor żółty, a obok nich pojawi nam się numer linku. W tym momencie wystarczy podać ten numer i zostaniemy przeniesieni do odpowiedniej strony. Zanim jednak podamy numer możemy filtrować zaznaczone linki po prostu wpisując tekst linku - liczba zaznaczonych linków zostanie ograniczona, a jeśli to co wpiszemy będzie jednoznacznie określało link także zostaniemy przeniesieni do strony na jaką on wskazuje.

Poprzedzenie klawisza f kombinacją C-u spowoduje otwarcie linku w nowej karcie.
Conkeror tak jak każda (nowoczesna) przeglądarka internetowa posiada także opcję przeglądania w kartach. Do zarządzania kartami (w stylu Emacsa nazwanymi buforami) służą następujące klawisze:
| C-u g | otwiera URL w nowym buforze |
| C-x b | pokazuje menu przełączania buforów |
| M-p | zmienia bufor na poprzedni |
| M-n | zmienia bufor na następny |
| C-x k | zabija bufor |

Domyślnie nie są wyświetlane żadne typowe karty reprezentujące bufory, możemy jednak je włączyć. Do wyboru mamy dwa skrypty obsługujące wyświetlanie kart, które trochę różnią się możliwościami.
Tab-bar jest pierwszym ze skryptów odpowiedzialnych za wyświetlanie kart. Karty wyświetlane przez ten skrypt posiadają przycisk zamknięcia oraz faviconę. Do ich wad można zaliczyć to, że przy dużej ilości otwartych kart może spowodować wysokie obciążenie procesora oraz to, że praktycznie wcale nie da się go ostylować.

Skrypt ten aktywujemy wpisując do pliku konfiguracyjnego Conkerora (~/.conkerorrc) linię:
require("tab-bar.js");
New-tabs to drugi ze skryptów wyświetlających karty. Jego zalety to możliwość całkowitego ostylowania za pomocą reguł CSS, wyświetlanie numeru bufora oraz możliwość zadecydowania czy karty mogą być przełączane i zamykane za pomocą myszy. Z wad można wymienić brak wyświetlania favicony oraz brak przycisku zamykania karty.

Skrypt ten aktywujemy wpisując do pliku konfiguracyjnego Conkerora (~/.conkerorrc) linię:
require("new-tabs.js");
Jak już wspomniałem Conkeror posiada obsługę rozszerzeń Mozilli. Trudno jednak powiedzieć, jakie z rozszerzeń faktycznie działają. Na stronach Conkerora znajduje się krótka lista przetestowanych rozszerzeń których stan jest znany. Jako, że sam w Firefoksie nie korzystam z żadnych rozszerzeń nie wnikałem zbytnio w tą funkcjonalność. Przetestowałem jedynie rozszerzenie Adblock Plus, które działa bezproblemowo.
Jak na razie Conkeror potrafi instalować jedynie rozszerzenia z dysku. Aby zainstalować jakieś rozszerzenie musimy je najpierw pobrać. Przedstawię proces instalacji na podstawie wyżej wspomnianego Adblocka: przechodzimy na stronę domową rozszerzenia i wchodzimy na podstronę dotyczącą instalacji. Aby pobrać rozszerzenie (czy jakikolwiek inny plik) wciskamy klawisz s i w standardowy sposób wybieramy link z którego chcemy pobierać. W minibuforze otrzymujemy podstawowe informacje o pliku oraz mamy możliwość podania lokalizacji w jakiej chcemy zapisać plik.

Po potwierdzeniu lokalizacji pojawia nam się okno pobierania, które możemy zamknąć standardowym skrótem C-x k.

Po pobraniu rozszerzenia włączamy okno zarządzania rozszerzeniami: M-x extensions (wciskamy klawisz Meta (w tej roli Alt) oraz x i wpisujemy extensions, zatwierdzamy Enterem). Dalsza część instalacji rozszerzenia jest już całkowicie intuicyjna i wygląda tak jak w Firefoksie.
Wszystkie opisane poniżej wskazówki wymagają modyfikacji (lub też stworzenia) pliku konfiguracyjnego Conkerora - ~/.conkerorrc.
Stronę startową ustawiamy poprzez nadanie zmiennej homepage odpowiedniej wartości:
homepage = "http://google.pl/";
Aby móc przełączać się pomiędzy pierwszymi buforami za pomocą klawiszy 1-9 i 0 należy do naszego pliku ~/.conkerorrc wstawić następujący kod:
function define_key_buffer_switch(key, buf_num) {
define_key(content_buffer_normal_keymap, key, function (I) {
switch_to_buffer(I.window, I.window.buffers.get_buffer(buf_num));
});
define_key(download_buffer_keymap, key, function (I) {
switch_to_buffer(I.window, I.window.buffers.get_buffer(buf_num));
});
}
for (let i = 0; i < 10; ++i) {
define_key_buffer_switch(i == 9 ? "0" : (i+1).toString(), i);
}
Włączenie otwierania odnośników w nowym buforze za pomocą środkowego przycisku myszki wymaga dołączenia pliku js:
require("clicks-in-new-buffer.js");
Później możemy ustawić to, czy nowe bufory mają otwierać się w tle czy na wierzchu. Opcją domyślną jest otwieranie na wierzchu. Otwieranie w tle uzyskujemy ustawiając opcję:
clicks_in_new_buffer_target = OPEN_NEW_BUFFER_BACKGROUND;
Domyślnie Conkeror potrafi uzupełniać adresy podczas wpisywania na podstawie adresów zapisanych w zakładkach. Ze względu na pewien błąd nie może korzystać zarówno z adresów z historii jak i z zakładek. Jako, że nie korzystam z zakładek wolałem, aby adresy uzupełniane były na podstawie historii. Aby włączyć tą funkcjonalność do pliku konfiguracyjnego wystarczy dopisać następujące linie:
url_completion_use_bookmarks = false; url_completion_use_history = true;
Conkeror posiada także menadżer haseł, aby go uaktywnić do configa wklepujemy następujące linie:
session_pref("signon.rememberSignons", true);
session_pref("signon.expireMasterPassword", false);
session_pref("signon.SignonFileName", ".signons.txt");
Components.classes["@mozilla.org/login-manager;1"]
.getService(Components.interfaces.nsILoginManager);
Wpisywanie dużych porcji tekstu (takich jak na przykład ta notka) poprzez przeglądarkę nie jest zbyt wygodnym rozwiązaniem. Conkeror pozwala nam na edycję pól textarea w zewnętrznym edytorze. Aby to osiągnąć ustawiam focus na polu tekstowym i wciskamy kombinację klawiszy C-i. Spowoduje to otwarcie edytora określonego zmienną systemową EDITOR. Jeśli zmienna ta nie będzie ustawiona uruchomi się oczywiście Emacs.. :).
Conkeror może spodobać się osobom, które zazwyczaj nie korzystają z myszki i lubią Emacsa (lub też po prostu nie posiadają do niego urazu ;)). Jak dla mnie jest to jedna z fajniejszych przeglądarek dostępnych na rynku, ale (niestety czy na szczęście?) nie wszystkim się ona spodoba.. ;)
Tym których zainteresuje ona bardziej polecam dokumentację dostępną na stronie domowej.