Klipper - zastosowania praktyczne (część 2)
Z powodu rozszerzenia możliwości moich nożyczek w obszarze powiadamiania(choć niestety współcześnie, z powodu naprawdę wielu ikonek obszarem powiadamiania już to nie jest; w moim przypadku się z tym jakoś uporałem), czyli Klippera, piszę ten wpis.
Sprostowanie
Ponieważ poprzednio miałem trudności z dołączeniem grafik, to postaram się je wrzucić tym razem.
Sposób na uruchomienie narzędzia konfiguracji Klippera pokazany jest w grafice numer 1. Trzeba znaleźć ikonkę nożyczek, kliknąć w ikonkę, a nie pole obok lewym przyciskiem myszy, a następnie wybrać Konfiguracja Klippera(takie mam tłumaczenie w systemie).
Na zrzucie drugim pokazane jest okno działań(te po prawej), a także okno edycji działania(te po lewej). Okno działań jest tym jaśniejszym.
Nowe polecenia
Pora przejść do dalszego przygotowania naszego systemu. Ja postanowiłem: a) Dodać możliwość wykonywania nieskomplikowanych obliczeń(czysto dla zabawy - Krunner dostarcza mi znacznie lepszy kalkulator niż ten stworzony przeze mnie) b) Dodać możliwość oczekiwania na jakieś zdarzenie (przydatne mimo obecności plazmy, bo mogę mieć dużo liczników/stoperów) c) Sprawdzanie pisowni - niby nic wielkiego, bo obecne w prawie każdym programie, jednak może się komuś przydać(np. do sprawdzania pisowni na stronie internetowej, itd.) d) Sortowanie - coś niezwykle przydatnego - możemy zaznaczyć dowolny tekst, kazać go posortować, a następnie wkleić - nie trzeba uruchamiać żadnego pakietu biurowego, otwierać terminala, ani nic takiego
Jak zapewne zauważyliście, to powoli kończą mi się pomysły. Klipper bardzo ułatwił mi życie, i kiedy znajdę obejście problemu z dodawaniem zdarzenia do organizatora, to opublikuję chyba już ostatni wpis. Możemy oczywiście sami dodawać nowe opcje, jak rozpoznawanie adresów e-mail lub identyfikatorów JID, ale jest to zbyt łatwe zagadnienie do opisania.
Przejdźmy jednak do problemu wykonywania obliczeń. Jako iż nie korzystamy z Krunnera trzeba było znaleźć jakiś zamiennik. Tu z pomocą przychodzi Python. Będziemy wywoływać pythona, przekazując mu wyrażenie matematyczne za pomocą parametru, a on będzie nam zwracać wynik, który będziemy wklejać do schowka. Wyrażenie regularne do rozpoznawania czegoś, co przydałoby się wyliczyć: ^\s*[0-9]*\s*([\(\)+\-*/]\s*[0-9]\s*)*$ Polecenie:
/usr/bin/python -c "print %s"
Uwaga: Być może Pythona masz zainstalowanego w innej lokalizacji. W każdym Linuksie powinien być w miejscu podanym przeze mnie, ale w innych systemach może być np. w /bin Opis: Oblicz
Zajmiemy się teraz drugim zagadnieniem. Często grając w jakąś grę w przeglądarce(w takie grywam od czasu do czasu) przydaje się konieczność ustawienia stopera na czas zakończenia budowy czegoś. Wykorzystałem do tego celu nieco skomplikowane polecenie:
/bin/bash -c "sleep $(( `echo %s | cut -d: -f1 ` * 3600 + `echo %s | cut -d: -f2 ` * 60 + ` echo %s | cut -d: -f3 ` )); xmessage zakończono odliczanie od %s & play /usr/share/sounds/pop.wav"
Oczywiście za %s zostanie podstawiony zaznaczony przez nas tekst. Trzeba jedynie nauczyć Klippera rozpoznawać tekst. Tworzymy więc działanie dla takiego wzorca: [0-9]{1,2}(\:[0-9]{1,2}){1,2} Można dodać do powyższego wzorca ^\s* i \*s$ odpowiednio dla początku i dla końca wyrażenia, uzyskując: ^\s*[0-9]{1,2}(\:[0-9]{1,2}){1,2}\*s$ Opis: Ustaw stoper
Trzecim zagadnieniem jest sprawdzanie pisowni. Dodajemy polecenie do działania przeznaczonego dla tekstu(wzorzec był podawany poprzednio). Poleceniem będzie:
/usr/bin/X11/xterm -T 'Sprawdzanie pisowni' -e 'echo '"%s"' | aspell -d polish -a; read a'
Ostatnie read a zapobiega zamknięciu okna xterma po wykonaniu polecenia. Jeżeli ktoś chce, to może przeczytać dokumentację xterma i przekazać odpowiedni parametr, by uzyskać to samo.
Ostatnim zagadnieniem, jak obiecałem, będzie sortowanie linijek tekstu. Wyrażenie regularne(działanie): \n Polecenie : echo "%s" | /bin/sort
Niestety, ale nie mogłem zmusić KOrganizera przez DBus-a to utworzenia zdarzenia w danym terminie. Można przekazywać temat zdarzenia, dłuższy opis, jednak nie termin.
Jeżeli ktoś chce, to w podobny sposób może użyć jakiegoś syntezatora mowy do odczytywania tekstu, Można wykonywać znacznie więcej rzeczy, np. pobawić się w szablony Django czy innego rodzaju szablony i lokalną bazę danych.