# &kde; - "Grzebanie pod maską"

Nicolas
Goutte
goutte@kde.org

## Ręczna edycja plików konfiguracyjnych

### Wprowadzenie

W &kde; można łatwo edytować pliki konfiguracyjne za pomocą prostego edytora tekstowego jak &kate;, bowiem są one zapisane w formacie zwykłego tekstu.

Przykład pliku tekstowego:

    [General]
    AutoSave=1
    LastFile=/var/tmp/test.txt

Pliki konfiguracyjne zalogowanego użytkownika są przechowywane w katalogu `.kde/share/config` (zamień `.kde` na ustawienie $`KDEHOME`), zaś pliki globalne znajdują się w podkatalogach `share/config` katalogu instalacyjnego &kde; (możesz go znaleźć przez wydanie polecenia `kde-config --prefix`). Nazwy plików konfiguracyjnych są zwykle zakończone na literki rc np. `kopeterc` od multikomunikatora &kopete;.

Ręczna edycja plików konfiguracyjnych może narazić &kde; na utratę stabilności. Programy zwykle nie sprawdzają tego, co odczytują z plików konfiguracyjnych. Oznacza to, że przez niepoprawne ustawienia, program może pracować nieprawidłowo, a nawet wyłączyć się.

### Kopie zapasowe

A więc pierwszą zasadą jest zrobienie kopii zapasowej pliku, który chcesz edytować. Kopie najlepiej przechowywać poza katalogiem `.kde` (lub odpowiednio $`KDEHOME`). Abstrahując, robienie kopii jest dobrym pomysłem w ogóle. Może się zdarzyć, że jakiś program się zawiesi i zniszczy plik konfiguracyjny (np. ustawienia &kmail-dopelniacz;, które są przechowywane w pliku `kmailrc`. Teoretycznie nic takiego nie powinno mieć miejsca, ale lepiej dmuchać na zimne.

### Edycja

Po co w ogóle modyfikować pliki konfiguracyjne? Np. po to, żeby włączyć tryb pracy w kawiarence internetowej. Być może programista poprosił Cię o dodanie jakiegoś wpisu przy próbie rozwiązania problemu z programem. A może chcesz naprawić jakiś problem bez konieczności usuwania całego katalogu `.kde`. Możliwe też, że chcesz zgłębić wiedzę na temat &kde;.

Jakikolwiek masz powód, zakładamy, że chcesz zmodyfikować ręcznie plik konfiguracyjny.

Gdy planujesz wyedytować jakiś plik, upewnij się, że program korzystający z tego pliku jest w tej chwili wyłączony. Jeśli jest to plik używany przez ważne programy &kde;, które nie mogą być wyłączone, rozważ edycję przy wyłączonym &kde;.

Gotowy? Zrób więc kopię pliku (powtarzam się?), uruchom ulubiony edytor (powiedzmy, że będzie to &kate;), otwórz w nim plik (zwróć uwagę na wybór kodowania, powinno być UTF-8, &kate; wyświetla tą pozycję pod nazwą utf8).

Zobaczysz plik w postaci:

    [Grupa]
    Klucz1=Wartość1
    Klucz2=Wartość2
    Klucz3=Wartość3

Możesz teraz zmodyfikować ten plik (uważnie!), a później zapisać go (upewnij się, że zapisujesz w kodowaniu UTF-8).

Następnie możesz wypróbować działanie programu. Jeśli program nie działa poprawnie, zamknij go i przywróć kopię zapasową pliku.

#### Dodatkowe informacje

- zawiera więcej informacji o strukturze katalogów &kde;, dzięki temu znajdziesz plik, który chcesz zmodyfikować.

## Zautomatyzowanie wykonywania zadań dzięki zastosowaniu skryptów

&kde; zawiera potężny system komunikacji międzyprocesowej nazywany &DCOP; (Desktop COmmunication Protocol - protokół komunikacji na pulpicie).Za pomocą &DCOP; możesz sterować wieloma funkcjami &kde; z linii poleceń lub za pomocą skryptu napisanego w Twoim ulubionym języku skryptowym. Możesz również uzyskać informacje z programów &kde;: na przykład kilka z odtwarzaczy multimedialnych dla &kde; umożliwia uzyskanie nazwy aktualnie odtwarzanego utworu.

Ogólnie mówiąc, każdy program &kde; udostępnia jeden lub więcej interfejsów &DCOP;, które dalej zawierają metody (lub, jeśli wolisz taką nazwę, funkcje), które inne program może wywołać. Tak więc, pierwszym krokiem w używaniu &DCOP; jest znalezienie odpowiedniej metody do wybranego zadania. Najprostszym sposobem zrobienia tego jest użycie interfejsu graficznego do &DCOP; zwanego kdcop.

Uruchom kdcop z &konsole-dopelniacz; lub mini-CLI (okienka, które pojawia się po naciśnięciu &Alt;F2 ). Okno programu kdcop pokaże w postaci struktury drzewiastej obecnie działające programy, które udostępniają interfejsy &DCOP;,. Ogólnie rzecz biorąc, znalezienie odpowiedniej metody wymaga trochę poszukiwań w tym drzewie, ale użyteczną informacją jest to, że zwykle interfejs oznaczony jako (domyślny) zawiera najczęściej używane funkcje.

Aby sprawdzić, że funkcja działa zgodnie z oczekiwaniami, kliknij dwa razy na funkcji setColor. Aby ustawić kolor `c`, kliknij na przycisku wyboru koloru i wybierz kolor. Ustaw, czy kolor ma być kolorem A za pomocą opcji. Kliknij OK, aby ustawić kolor tła.

Aby użyć metod &DCOP; z Twojego ulubionego języka skryptowego, możesz użyć interfejsów językowych &DCOP;, o ile są dostępne w module kdebindings, lub możesz uruchomić program `dcop` z linii poleceń. Do prostych zastosowań używanie programu `dcop` wystarcza. Aby wywołać metodę &DCOP; z linii poleceń, konieczne jest podanie programu, interfejsu, w którym znajduje się metoda, nazwy metody i argumentów, w postaci odpowiedniej dla poleceń powłoki.

Podaje się kolejno: nazwę programu, nazwę interfejsu, nazwę metody, a po nich argumenty w takiej kolejności, jak są one pokazane w programie kdcop. `dcop` posiada mnóstwo innych opcji: aby je poznać, proszę zobaczyć wynik wykonania polecenia ``dcop` `--help``.

Tyle teorii, czas na przykład:

### Skrypt zmieniający kolor tła za pomocą &DCOP;

Za pomocą programu `dcop` i odrobiny kodu Perla, stworzymy skrypt, który powoli zmienia kolor tła pulpitu przez całe spektrum.

Najpierw, szukamy odpowiedniej metody w kdcop. W tym przykładzie pominiemy wyszukiwanie i od razu idziemy tam, gdzie potrzeba: metoda, której szukamy to kdesktop KBackgroundIface setColor . Argumenty i typ zwracany przez funkcję są pokazane w stylu języka C++. Argumenty funkcji `setColor`to kolor, `c`, który określa nowy kolor tła, oraz wartość logiczna (prawda lub fałsz), `isColorA`, która określa, czy podany kolor to kolor pierwszy, czy drugi (używany do ustawienia gradientów, itp.).

Aby użyć metody `setColor` z linii poleceń, użyjemy następującego polecenia:

    % dcop kdesktop KBackgroundIface setColor '#ffffff' false

Aby podać kolor, użyliśmy szesnastkowej wartości RGB, takiej jak używana w &HTML;-u. Proszę zauważyć, że wartość podana jest w apostrofach, aby zabezpieczyć # przed interpretacją przez powłokę.

Aby poznać szesnastkową wartość RGB dla koloru, otwórz jakiekolwiek okienko wyboru koloru w programie &kde; (na przykład, w &kcontrolcenter-miejscownik;, Wygląd i motywy Kolory ), wybierz kolor, który chcesz, a potem użyj wartości podanej w polu tekstowym HTML.

Tak więc, to wszystko czego potrzebujemy od &DCOP;. Teraz to po prostu sprawa napisania skryptu używającego go. Oto (bardzo) siermiężna implementacja:

    $min=49;  # Minimum value of R, G, or B colour
    $max=174; # Maximum value of R, G, or B colour
    $step=5;  # Amount to step colour by on each step
    $sleeptime=15; # Interval in seconds between each step

    @start = ($max, $min, $min);
    @colour = @start;

    while (1) {
            foreach (0..5) {
                    my $which = $_ % 3; # Which colour (R, G or B) to change
                    my $updown = $_ % 2; # Whether to increase or decrease the colour value
                    do {
                            if ($updown == 0) { $colour[$which]+=$step; }
                            if ($updown == 1) { $colour[$which]-=$step; }
                            my $dcopcall=sprintf "dcop kdesktop KBackgroundIface setColor '#%x%x%x' true\n", @colour;
                            system($dcopcall);
                            sleep $sleeptime;
                            } while (($colour[$which]
    >= $min) and ($colour[$which] <= $max));
                    }
    }

Po prostu uruchom ten skrypt bez argumentów, a będzie on zmieniał kolor przez prawie całe spektrum, dopóki nie zostanie przerwany. Voilà!

Oczywiście, Perl to nie jedyny język, w którym możesz pisać skrypty używające &DCOP;— jeśli wolisz użyć skryptów powłoki, można to też zrobić:

### Ustawianie tła z Internetu

Ten skrypt pobiera główny obrazek ze strony komiksowej User Friendly i ustawia go jako tapetę pulpitu, wykorzystując powszechnie dostępne narzędzia i odrobinę &DCOP;:

    #!/bin/sh
    COMICURL=`wget -qO - http://www.userfriendly.org/static/index.html | \
              grep Latest | sed -e "s,.*SRC=\",," -e "s,\"
    >.*,,"`
    TMPFILE=`mktemp /tmp/$0.XXXXXX` || exit 1
    wget -q -O $TMPFILE $COMICURL
    dcop kdesktop KBackgroundIface setWallpaper $TMPFILE 1

Pierwsza linia za #!/bin/sh wykorzystuje `wget` i trochę magii wyrażeń regularnych, aby uzyskać adres obrazka ze źródła &HTML; strony głównej. Druga i trzecia linia zajmują się pobraniem obrazka i w końcu polecenie `dcop` powoduje ustawienie pobranego obrazka jako tapety.

## Dodawanie specjalnych skrótów klawiaturowych

Wiele nowoczesnych klawiatur posiada różne dodatkowe klawisze, które domyślnie nie są przyporządkowane żadnemu działaniu.

Klawisze multimedialne często generują sygnał, który może być w łatwy sposób wykorzystany jako skrót klawiaturowy dla jakiegoś programu, tak, jak każdy inny klawisz na klawiaturze. Mimo to, niektóre klawisze nie są wykrywane i ich naciskanie w oknie Konfiguracja skrótów nie przynosi żadnego efektu.

Przykładowo niektóre laptopy firmy IBM posiadają dodatkowe klawisze koło strzałek, które wyglądają, jak ikony strona w lewo i strona w prawo.

1. Użyj polecenia `xev` do ustalenia kodów przycisków. W tym przypadku będą to 233 i 234

2. Wybierz jakieś kody klawisza. Istnieje wiele kodów, które nie są domyślnie używane, więc możesz je wykorzystać. Listę znajdziesz w pliku `/usr/X11R6/include/X11/keysymdef.h` (lub jego odpowiedniku w Twoim systemie).

3. W katalogu domowym utwórz plik o nazwie `.Xmodmap` i dodaj do niego coś takiego:

       keycode 233 = Next_Virtual_Screen
       keycode 234 = Prev_Virtual_Screen

4. Uruchom polecenie ``xmodmap` `~/.Xmodmap``

Teraz możesz uruchomić ponownie program `xev` i upewnić się, że przyciski generują kod klawisza, który został im przez Ciebie przypisany. Kody możesz teraz zwyczajnie przypisać do jakiegoś działania.

### Dodatkowe informacje

- Możesz przejrzeć pomoc programu `xev` przez wpisanie `man:/xev` w oknie &konqueror-dopelniacz; lub ``man` xev` w terminalu.

## Dodawanie skrótów klawiaturowych dla nowych działań

Większość działań dostępnych na pulpicie lub w programach można też bardzo łatwo przypisać do skrótów klawiaturowych. Jeśli działanie, dla którego chcesz utworzyć skrót zostało napisane przez Ciebie lub nie jest dostępne, ciągle możesz utworzyć skrót.

Żeby zebrać razem 2 poprzednie sekcje, być może chcesz przypisać któryś z nieużywanych klawiszy do jakiegoś skryptu lub polecenia DCOP. Nasz przykład przypiszemy dwa klawisze, które dodaliśmy w sekcji , żeby służyły do przechodzenia do poprzedniego lub następnego wirtualnego pulpitu. Są to dwie funkcje, do których potrzebny będzie DCOP (który został omówiony w sekcji ).

Można łatwo uzyskać opisany efekt, korzystając z następującej metody:

1. Otwórz &kcontrol;, w sekcji Regionalne i dostępność wybierz Skróty i gesty

2. Wybierz Nowe działanie

3. Nazwij je jakoś, np. `Następny wirtualny pulpit`

4. Ustaw Typ działania: jako Skrót klawiaturowy -> Polecenie/URL (proste)

5. Na zakładce Skrót klawiszowy wymyśl kombinację, którą chcesz uruchamiać polecenie. Dla naszego przykładu niech będzie to jeden z klawiszy z symbolem następny. Na ilustracji skrótu pojawi się napis Next_Virtual_Screen.

6. Na zakładce Ustawienia poleceń/URL wpisz polecenie: ``dcop kwin default nextDesktop``

Powtórz poprzednie czynności z klawiszem Prev_Virtual_Screen, ale wpisz tym razem: ``dcop kwin default previousDesktop``.

Teraz, naciskając klawisze Prev_Virtual_Screen lub Next_Virtual_Screen możesz się przełączać odpowiednio do poprzedniego wirtualnego pulpitu lub do następnego.

Oczywiście możesz przypisać każdy wolny klawisz do każdego działania.

### Dodatkowe informacje

- Sprawdź w &khelpcenter-miejscownik; dokumentację programu KHotKeys. Możesz też wpisać w oknie &konqueror-dopelniacz; `help:/khotkeys`.

Adriaan
de Groot
groot@kde.org

## &kdebugdialog; - Kontrola wyjścia debugowania &kde;

### Użycie podstawowe

&kdebugdialog;nie znajduje się domyślnie w &kmenu;. Musisz więc użyć konsoli lub Alt + F2 i wpisać ``kdebugdialog``. &kdebugdialog;wyświetli okno z długą listą pozycji do debugowania.Każda pozycja ma pole wyboru, które może być zaznaczone lub odznaczone odpowiednio w celu włączenia lub wyłączenia wyjścia debugowania przez program, który jest częścią &kde;.

Lista pozycji jest posortowana numerycznie, nie alfabetycznie, więc kio (127) znajduje się przed artskde (400). Numery docierają do ok. 200000, ale tak naprawdę jest tylko 400 pozycji. Nie musisz przedzierać się przez całą listę, żeby znaleźć żądaną pozycję; powyżej znajdziesz wyszukiwarkę. Lista wyświetlanych wpisów jest filtrowana na bieżąco. Wpisanie `k` nie odfiltruje zbyt wielu pozycji, ale wpisanie `kont` pokaże tylko wpisy dotyczące &kontact-dopelniacz;. Jako jeszcze szybszy sposób włączania i wyłączania wyjścia debugowania, znajdziesz też przyciski Zaznacz wszystko i Usuń zaznaczenie, które nakazują &kde; generowanie wielu informacji diagnostycznych, albo bardzo małej ilości.

### KDebugDialog w trybie pełnym

W trybie pełnym, który można uzyskać, uruchamiając program kdebugdialog w sposób: ``kdebugdialog` `--fullmode``, wyświetlana jest ta sama lista wpisów, co w trybie zwykłym, ale jednocześnie możesz wybrać tylko jeden wpis z listy rozwijalnej. Następnie możesz niezależnie ustawić wyjście dla różnych typów wiadomości, jak: Informacja, Ostrzeżenie, Błąd, Błąd krytyczny. Dla każdego z tych typów możesz wybrać, gdzie wiadomości zostaną wysłane. Wyborem mogą być:

Plik, który możesz nazwać. Plik zostanie zapisany do katalogu $`HOME`.

Komunikat. Każda wiadomość debugowania jest wyświetlana w oknie informacyjnym, gdzie trzeba kliknąć OK w celu kontynuacji pracy z programem.

Powłoka, domyślny wybór. Wiadomości są zapisywane do standardowego wyjścia błędów, czyli pojawiają w oknie powłoki, gdzie program został uruchomiony lub dodawane są do pliku `.xsession-errors`.

Syslog (dziennik systemowy). Ta opcja powoduje przesłanie wiadomości z wyjścia programu do systemowego demona syslog, który może dokonać dalszej obróbki wiadomości.

Brak. Ta opcja tłumi wyjście wiadomości wybranego typu.

Dla wiadomości wygenerowanych przez błędy krytyczne zwykle niedobrym pomysłem jest wybranie opcji Brak lub Syslog (dziennik systemowy), ponieważ dla tych wyborów zwyczajnie nie zobaczysz owych wiadomości i program, który napotka na błąd krytyczny, zniknie bez podania przyczyny. Zachowanie, czy program ma zostać zamknięty przy napotkaniu na błąd krytyczny można kontrolować za pomocą pola wyboru Przerwij przy krytycznych błędach, które domyślnie jest zaznaczone — jednak możesz chcieć, żeby program przerwał działanie (w brzydkim stylu), jeśli napotka na błąd krytyczny.