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.