Konfiguracja wstępna Debiana :: Zaawansowana konsola - framebuffer i mysz :: Sortowanie w polskich localach :: Klawiatura numeryczna i kropka :: man oraz info :: Network File System :: Przywracanie gruba :: GRUB i boot'owalne CD :: Wyłączanie zasilania :: IPMI :: problem z while(1) { fork(); } :: Wirtualizacja - XEN :: Subversion (svn) :: problemy z Ghostscript :: Czytniki kart pamięci (USB Mass Storage) :: Nvidia i problemy ... :: Ustawienia serwera X'ów - ładniejsze czcionki :: Zdalny pulpit :: Konfiguracja i sztuczki z managerem okien :: Dostrajanie KDE :: Autostart, menu i skojarzenia plików :: pliki .desktop :: mymenu - czyli generowanie menu KDE oraz menu kontekstowych dla różnych typów plików :: inne informacje :: Klawiatura multimedialna :: Linki

Poradnik linuxowy (2) - porady konfiguracyjne Debiana

W artykule tym przedstawię kilka porad dotyczących instalacji i konfiguracji systemu Debian GNU/Linux (3.1 - "Sarge"), zarówno w roli serwera jak i komputera biurkowego.

Konfiguracja wstępna Debiana

Na świeżo zainstalowanym systemi Debiana warto dodać pakiety: gawk, less, psmisc, vim, vim-scripts, bc, iproute, openssh-client, openssh-server. Usunąć można natomiast vim-tiny i mawk Konieczne może się także okazać ustawienie właściwej strefy czasowej (konfiguracja pakietu tzdata), locale itp. Jeżeli zamierzamy kozystać z LVM oraz RAID potrzebne są także pakiety: mdadm, lvm2.

Zaawansowana konsola - framebuffer i mysz

Istnieje możliwość uruchomienia konsoli linuxowej w trybie "graficznym". Umożliwia to wyświetlanie plików graficznych, oglądanie telewizji, granie w niektóre gry, jak również wyświetlanie dużo większej liczby linii tekstu. Aby uruchomić system z taką konsolą konieczne jest dodanie do parametrów startowych jądra parametru vga=XXX, gdzie XXX jest zapisanym szesnastkowo (dla GRUB) lub dziesiętnie (dla LILO) kodem danego trybu. Poniżej tabelka dostępnych kodów (w postaci szesnastkowej, zaczerpnięta z linux/Documentation/fb/vesafb.txt):

    | 640x480  800x600  1024x768 1280x1024
----+-------------------------------------
256 |  0x301    0x303    0x305    0x307   
32k |  0x310    0x313    0x316    0x319   
64k |  0x311    0x314    0x317    0x31A   
16M |  0x312    0x315    0x318    0x31B   

Kożystanie z framebuffera może prowadzić do pewnych problemów (o czym poniżej). Najczęściej wykorzystywany jest standardowy sterownik vesafb istnieją jednak moduły dla poszczególnych kart graficznych.

Przydatną rzeczą na konsoli jest również myszka. Aby móc z niej korzystać należy zainstalować pakiet gpm , który umożliwia uzycie komputerowego gryzonia na konsoli oraz kopiowanie i wklejanie przy jego pomocy tekstu. Konfiguracja tak aby wszystko działało dobrze (zwłaszcza gdy chcemy mieć też X'y) może przysporzyć trochę zabawy. W moim wypadku (radiowa myszka z rolką) największym problemem było dobranie rodzaju myszki w X'ach aby ta nie była nadwrażliwa ... wcześniejsze imps2 nie chciało poprawnie działać z /dev/gpmdata, w którym kopie danych z myszki umieszcza gpm; działająca konfiguracja wygląda natomiast tak:

/etc/gpm.conf :

# dla PS/2:
device=/dev/psaux
# dla USB (wymaga modolow hid i usbmouse):
#device=/dev/input/mice
# lub:
#device=/dev/input/mouse0

type=autops2
#type=imps2

responsiveness=
repeat_type=ms3
append=""
sample_rate=

/etc/X11/XF86Config-4 :

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "mouse"
        Option          "CorePointer"
        Option          "Device"                "/dev/gpmdata"
        Option          "Protocol"              "IntelliMouse"
        Option          "ZAxisMapping"          "4 5"
EndSection

Może się zdażyć że aby gpm działało wymaga dwu-trzykrotnego uruchomienia ...

Sortowanie w polskich localach

Domyślna konfiguracja sortowania w polskich (i nie tylko) lokalizacjach jest taka że występujące na początku nazw plików znaki takie jak kropki, wykrzykniki, małpy itp. są ignorowane. Mnie to się nie podobało i postanowiłem to zmienić: odnalazłem plik źródłowy dla pl_PL - /usr/share/i18n/locales/pl_PL i przerobiłem sortowanie na (w mojej opinii) bardziej normalne. Tutaj zamieszczam zmodyfikowany plik źródłowy należy go wrzucić do podanej lokalizacji (lepiej wcześniej zrobić backup tego co tam jest) i przebudować locale - np. przez rekonfigurację stosownego pakietu.

Klawiatura numeryczna i kropka

Aby uzyskamy kropkę zamiast przecinka na klawiaturze numerycznej należy wykomentować w pliku /usr/share/X11/xkb/symbols/pl linijkę include "kpdl(comma)" (dawniej include "keypad(comma)") w sekcji odpowiadającej naszej klawiaturze (dla "polski programisty" sekcja "basic").

man oraz info

Dla poprawnego działania komendy apropos systemu man konieczne po dodaniu (niekiedy też zmienianiu) strony manuala jest przebudowanie indeksu tych stron przy pomocy komendy mandb. Z kolei w przypadku dokumentacji info (na systemach debianowych) występuje niekiedy problem związany z błędem skryptu instalującego tą dokumentację (generującego plik dir zawierający główny spis treści); problem ten objawia się niemożnością bezpośredniego dotarcia do dokumentacji poprzez wywołanie np: info cp. Zamieszczam łatkę do tego skryptu rozwiązującą (w dość nieelegancki sposób) ten problem; celem jej użycia patchujemy skrypt (warto wcześniej zrobić kopię) - patch /usr/sbin/install-info install-info.diff i wywołujemy jako root na wszystkich plikach z katalogu z stronami info (for f in /usr/share/info/*.info.gz ; do install-info $f ; done).

Network File System

NFS jest opartym o protokół IP (UDP lub TCP) protokołem do udostępniania systemów plików poprzez sieć. Udostępnianie zasobów dyskowych po nfs wymaga zainstalowanego serwera NFS (dla linuxów występuje on w dwóch wersjach - działającej w przestrzeni jądra oraz działającej jako normalny daemon). Konfiguracja udostępnianych zasobów ustawiana jest w /etc/exports i zatwierdzana (przeładowywana) przy pomocy komendy exportfs (opcja -r dla ponownego eksportu - przeładowania configu, -v dla pokazania co jest obecnie wyeksportowane). Plik składa się z dwóch kolumn - w pierwszej podawana jest ścieżka do udostępnianego systemu plików, w drugiej podawane są adresy uprawnionych hostów i opcje exportu dla każdego z hostów. Konfiguracja montowania odbywa się standardowo w /etc/fstab i wymaga podania jako typu systemu plików nfs.

Przywracanie gruba

Istnieje wiele metod przywracania gruba zapisanego w MBR, po nadpisaniu tego fragmentu dysku (co niektóre systemy operacyjne lubią robić bez pytania o zgodę). Opisane tutaj zostaną dwa dość podobne:

  1. uruchamiamy komputer z płytki/dyskietki boot'owalnej grub'a i wydajemy polecenia: root (hd0,1) oraz setup (hd0) (oczywiście dostosowując numerację dysków i partycji).
  2. uruchamiamy Knoppix'a z CD/DVD/... wydajemy grub-install --root-directory=/mnt/hda2 /dev/hda; grub i w uruchomionej konsoli grub'a(tak dla pewności) te same polecenia co w punkcie 1.

GRUB i boot'owalne CD

Niekiedy chciałoby się mieć w swoim menu GRUBA pozycję umożliwiającą odpalenie boot'owalnego CD. Niestety sam grub nie potrafi (jeszcze - pozycja ta jest na liście TODO) bootować CD-ROMu, jednak z pomocą przychodzi tutaj Smart Boot Manager - możemy go wywołać z menu gruba przy pomocy MEMDISK z pakietu SYSLINUX. W tym celu pobieramy obraz MEMDISK'a i podajemy go w opcji kernel menu GRUB'a, następnie tworzymy lub pobieramy obraz Smart Boot Manager (osobiście polecam utworzyć na dyskietce, uruchomić z dyskietki, skonfigurować i zgrać do obrazu) i podajemy go w opcji initrd (przykładowy plik konfiguracyjny GRUBa). Zobacz też:GRUB/Chainloaded CD-ROM.

Zobacz także plik konfiguracyjny grub'a z wsparciem dla konsoli na porcie szeregowym z projektu SerwerConfigSwitch.

Wyłączanie zasilania

Aby komputer wyłączał zasilanie w przypadku jąder z serii 2.4 należy załadować moduł apm (insmod apm), można go też dopisać do listy automatycznie ładowanych modułów (/etc/modules). W niektórych przypadkach (np. jądra SMP) lepiej używać jest systemu acpi.

W przypadku problemów z wyłączaniem gdy korzystamy z KDE warto sprawdzić czy KDE wywołuje odpowiedni program: poweroff lub halt z parametrem -p (halt bez parametrów może nie wydawać polecenia wyłączenia zasilania). Jeżeli mimo załadowanych modułów i wyłączania odpowiednią komendą mamy problem z wyłączaniem warto spróbować usunąć inne moduły z systemu (niektóre z nich mogą psuć wyłączanie zasilania) - jeżeli mamy na stałe wkompilowane np. acpi wystarczy w /etc/init.d/halt przed wywołaniem halt dopisać (najlepiej dwa trzy razy pod rząd - wzajemne zależności) wywołanie: rmmod `lsmod | cut -f1 -d' ' | tr '\n' ' '`. Niestety nawet pomimo nie podawania opcji -i (ustawienia NETDOWN=no w /etc/default/halt) interfejsy sieciowe bywają wyłączane dzieje się to za sprawą ifdown (a także powyżej opisanego usuwania modułów), dlatego jeżeli zależy nam na możliwości "wake-on-lan" nalezy pomiędzy usuwaniem modułów a halt wstawić: ifup -a --exclude=lo.

IPMI

IPMI jest specyfikacją komunikacji systemu zarządzającego sprzętem z interfejsem administracyjnym. Aby korzystać z pod Linuxa z dobrodziejstw tego wynalazku należy posiadać płytę główną (ew. inne urządzenie) wspierające ten protokół oraz zainstalować OpenIPMI i ipmitool. IPMI umożliwia m.in. (zdalny) podgląd informacji z sensorów, wyłączenie, włączenie czy też reset zasilania, a także zdalny dostęp do konsoli.

Lokalne używanie ipmi wymaga załadowania modułów ipmi_devintf i ipmi_si, zainstalowania wspomnianego openipmi oraz połączenia się przy pomocy komendy ipmitool -I open -H 192.168.0.102 shell. Możemy wtedy dokonać konfiguracji dostępu sieciowego:

# w testowanej płycie były dwie karty sieciowe z których mógł korzystać IPMI
# - identyfikowane w nim jako interfejsy 6 i 7
lan set 6 ipaddr 192.168.0.100
lan set 6 netmask 255.255.0.0
lan set 6 ipsrc static
lan set 6 auth ADMIN PASSWORD
lan set 6 auth OPERATOR PASSWORD
lan set 6 auth USER PASSWORD
lan set 6 auth CALLBACK PASSWORD
lan set 6 user
lan set 6 password NASZE_TAJNE_HASLO
lan set 6 access on
lan set 6 vlan id off
lan set 6 macaddr MAC:adres:karty:z:IPMI
isol set enabled true
isol set bit-rate 115.2
# u mnie poniższa opcja nie chciała zadziałać, ale da się to obejść
lan set 6 arp respond on

Następnie możemy połączyć się zdalnie do IPMI przy pomocy ipmitool -I lan -H 192.168.0.100 shell lub do konsoli wystawionej na port szeregowy (w wypadku testowanego sprzętu był to /dev/ttyS1, ponadto wymagał użycia starszego trybu isol zamiast sol) - ipmitool -I lan -H 192.168.0.100 isol activate. Testowana płyta (SE7501WV2) posiadała także w biosie opcje przekierowania konsoli na port szeregowy (w odróżnieniu od innej testowanej płyty bez IPMI) ta przekierowywała też gruba więc wystarczyło wystawić jądro i getty. Zobacz w Sieci: Howto setup IPMI under Linux (Debian / Sarge) on the Intel SR2300 Server Chassis (Intel Server Board SE7501WV2) (uwaga od czasu powstania tamtego artykułu trochę się zmieniło - ipmitool obsługuje isol, inne nazwy modułów).

problem z while(1) { fork(); }

Jak łatwo się przekonać wykonanie programu zawierającego powyższy kod kompletnie zablokuje system (w skutek zapełnienia pamięci / tablicy procesów). Aby to uniemożliwić należy w pliku /etc/security/limits.conf dodać linijkę * hard nproc 200 i w konfiguracji PAM'a (np. /etc/pam.d/common-session) dodać: session required pam_limits.so. W tym celu możnaby także uzyć starszego pliku /etc/limits (będącego plikiem konfiguracji pakietu shadow), jednak beardziej preferowane jest kozystanie z konfiguracji PAM (podobnie jak z większością opcji z /etc/login.defs).

Wirtualizacja - XEN

Xen jest monitorem maszyn wirtualnych. Na komputerze na którym funkcjonuje uruchamiany jest najpierw sam Xen, a dopiero potem on uruchamia wskazane jądro systemu operacyjnego (odbywa się to poprzez odpowiedni wpis w bootloaderze, w którym ścieżka obrazu jądra i jego ram dysku są przekazywane jako parametry do ładowanego jądra xen'a). Podstawowy system operacyjny uruchamiany przez Xen określany jest jako dom0, inne jako domU. Wspomniany dom0 charakteryzuje się posiadaniem dostępu do całego sprzętu, który nie został jawnie przekazany któremuś z domU (tak samo z pamięcią i czasem procesora). Poszczególne domU uruchamiane (i kontrolowane/zarządzane) są z dom0 przy pomocy komendy xm, do startu mogą wykorzystywać nawet ten sam obraz jądra, initrd i (ew.) dysku co dom0. Zobacz man xm i man xmdomain.cfg.

Xen zapewnia komunikację sieciową z systemami wirtualnymi. Realizowane jest to poprzez tworzenie w dom0 wirtualnych interfejsów związanych z interfejsami w domU (normalnie na każdy domU jeden interfejs, ale łatwo możemy uzyskać więcej poprzez podanie w konfiguracji domU vif = [ 'ip=ip.1,mac=MAC:1', 'ip=ip.2,mac=mac:2' ] - w tym wpisie ip jest tak dla porządku - można go nie pisać i tak konfiguruje to system w domU, MAC jest ważniejszy aby wiedzieć co jest co oraz aby udev w domU nie przenumerowywał kart, gdyż jeżeli go nie podamy za każdym startem domU będzie generowany losowy z prefiksem 00:16:3E). Następnie w zależności od wybranego trybu konfiguracji możemy te wirtualne interfejsy wykorzystać do utworzenia bridge'a (biorą w nim udział interfejsy wirtualne i interfejs fizyczny pethX, samemu bridge'owi jak i jego składnikom nie nadajemy IP, nadajemy je interfejsom ethX powiązanymi z odpowiednimi vifY.X), routingu (nawet takiemu /32) czy też NATu - to wszystko w dom0. Odpowiedni model udostępniania sieci wybiera się w /etc/xen/xend-config.sxp poprzez wskazanie stosownych skryptów vif-script (sterujących tworzeniem interfejsów dla domU i network-script (sterujących obsługą fizycznej karty i interfejsu w dom0). Skrypty te znajdują się w /etc/xen/scripts/ i mogą być dostosowywane do naszych potrzeb. Zamieszczam także prosty skrypt (dla Xen 3.1) network-dummy, który powoduje wstawanie dom0 z dwoma bridgowanymi interfejsami i umożliwia łatwe udostępnianie dwóch interfejsów dla każdego z domU. Skrypt można zastosować także dla Xen 3.2 jeżeli usunie się bridge=* z listy parametrów przekazywanych do network-bridge.

Ogólnie tworzone prze Xen'a 3.1 w dom0 interfejsy vifX.Y oznaczają "drugi koniec" ethY w domU numer X. W dom0 dostępne są też fizyczne karty - nazywane ethY (gdy są udostępniane tylko w dom0 - nie wchodzą w skład bridgea) lub pethY gdy utworzono odpowiedni ethY i vif0.1 wchodzący w skład bridgea. Czyli eth1 w dom0 jest podpięte do vif0.1 natomiast fizyczna karta sieciowa (w nie-xenowym systemie eth1) nazwana jest peth1 i aby była ona dostępna przez eth1 bridgujemy peth1 z vif0.1. Filozofia ta uległa zmianie w Xen 3.2 gdzie nie ma xenbr* gdyż interfejsy eth* w dom0 są bridgeami. Konfiguracja routera NAT w dom0 na Xen 3.1 jest utrudniona gdyż to co trafia do FORWARD to nie trafia do POSTROUTING i PREROUYTING, wygląda iż związane jest to z podmienianiem oznaczeń eth -> peth, w związku z powyższymi zmianami w Xen 3.2 problem ten może tam nie występować.

W niektórych wersjach Xen'a występuje problem z wbudowaną synchronizacją zegarów domU z dom0. Jego rozwiązaniem jest rezygnacja z tego mechanizmu (bez niej nie da się ustawić zegara w domU) poprzez wpisanie 1 do /proc/sys/xen/independent_wallclock oraz wykorzystanie np. ntpdate do synchronizacji czasu.

W przypadku Xen 3.2 (testowane w Ubuntu 8.04) gdy Xen odpalany jest z przekierowaniem swojej konsoli na ttyS0 nie należy uruchamiać getty dom0 na tym urządzeniu tylko od razu na /dev/console. Podobnie należy czynić z getty DomU aby mieć konsolę pod xm console (nie odpalamy na /dev/tty1 tylko na /dev/console).

Oprócz xen'a mamy także inne systemy wirtualizacji, takie jak (więcej na stronie z technicznym porównaniem systemów wirtualizacji:

  • (k)qemu - w zasadzie to jest emulacja platformy x86
  • Kernel-based Virtual Machine (KVM) - najbardziej zbliżony do Xen'a z pośród opisywanych, główną różnicą jest to iż (jak sama nazwa wskazuje) oparty jest na jądrze linux'owym a nie niezależnym "hypervisor"
  • VirtualBox - wirtualizacja na poziomie systemu
  • Linux-VServer, OpenVZ - wzbogacone systemy typu chroot/jail, to nie jest prawdziwa wirtualizacja (OpenVZ zawiera dodatkowo zwirtualizowany stos sieciowy), wydają się dobre jako zastosowania "serwer dla każdego użytkownika"

Zobacz w Sieci: Xen Wiki - XenNetworking.

Subversion (svn)

Subversion jest systemem zarządzania wersjami. Narzędzia tego typu używane są głównie przez programistów, ale mogą się przydać także administratorom np. do wersjonowania konfiguracji. Podstawowymi narządziami są komendy svn (do zarządzania kopią roboczą) i svnadmin (do zarządzania repozytorium po stronie serwera. Kilka przykładów użycia:

  • zmiana adresu URL repozytorium w kopii roboczej - svn switch --relocate STARY NOWY
  • historia zmian pliku - svn log PLIK
  • podgląd starszej wersji pliku svn cat -r revision PLIK
  • wykonanie zrutu z wybranych rewizji (np. tylko aktualnego) - svnadmin dump katalog -r revision
  • import zrzutu (do pustego spowoduje zaimportowanie UUID) - svnadmin load katalog

URL może wskazywać dostęp np. w oparciu o ssh - svn+ssh://host/katalog/repo.

 


problemy z Ghostscript

Rozwiązaniem licznych problemów z poleceniem gs i pochodnymi (przetwarzanie plików eps, wyświetlanie plików ps w domyślnej przeglądarce KDE ...) rozwiązuje instalacja pakietu "gs-esp" ...

Czytniki kart pamięci (USB Mass Storage)

Urządzenia te obsługiwane są bez większych problemów, emulują one urządzenia SCSI. Warto jednak przy podłączaniu takiego czytnika (najlepiej od razu z włożoną kartą) przełączyć się na konsolę i zobaczyć co jest tam wypisane (m.in. jako jakie urządzenie widoczna jest karta). W przypadku problemów z ustaleniem typu partycji warto skorzystać z fdiska, najczęściej fdisk /dev/sdX (X = a,b,...) i wyświetlić listę partycji (klawisz p). Warto też umieścić odpowiednie wpisy w /etc/fstab np:

/dev/sdd1      /media/mmc      vfat    rw,user,noauto      0    0

Nvidia i problemy ...

Niekiedy sterowniki nvidii gryzą się z sterownikami framebuffera (dziać się tak może np. gdy korzystamy - mamy podłączony TV-out). Podobno nowsza wersja "vesafb" - "vesafb-tng" rozwiązuje ten problem. Można jednak rozwiązać go tworząc alternatywne wersje konfiguracji - można do tego wykorzystać opisywaną wyżej modyfikację skryptów init (z różnymi wpisami GRUBa/LILO), wraz z różnymi wersjami pliku /etc/X11/XF86Config-4. Zamieszczam starowane odpowiednie pliki - nvidia_warianty.tgz.

Ustawienia serwera X'ów - ładniejsze czcionki

Jeżeli nasze czcionki, pomimo przyzwoitej rozdzielczości wyświetlanego obrazu, nie wyglądają zbyt ładnie, są zbyt małe, opcje antyaliasingu często wręcz pogarszają sytuację, przyczyną może być zbyt mała rozdzielczość optyczna wyświetlanych obrazów (ta wyrażana w ppi, niekiedy niepoprawnie nazywanym niekiedy dpi). Rozdzielczość tą możemy sprawdzić poleceniem xdpyinfo | grep resolution, rozdzielczość ta wraz z rozdzielczością całego ekranu przekłada się na jego (wirtualne) wymiary (które możemy sprawdzić xdpyinfo | grep dimensions). Aby temu zaradzić w sekcji Monitor pliku konfiguracyjnego serwera X należy określić właśnie tą wielkość ekranu (w mm): DisplaySize X Y gdzie X i Y to odpowiednie wymiary obliczone z zależności X,Y = pikseleX,Y / rozdzielczosc_ppi * 25.4 i przybliżone w dół do liczby całkowitej. Dobrą wartości ppi wydaje się być 96. Zobacz w sieci: Zmiana rozdzielczości X serwera.

Zdalny pulpit

Oprócz możliwości odpalenia zdalnych programów na lokalnym X-serwerze (np. przez ssh z opcją -X), odpalenia programu na sesji innego użytkownika (gdy zezwolił nam na to poprzez xhosts) czy też podłączenia się do zdalnego serwera X'ów i odpalenia na nim sesji (X-terminale), mamy także możliwość zdalnego podłączenia się do sesji X-serwrera. W tym celu po stronie zdalnej należy uruchomić serwer vnc (w wariancie x11vnc), np. przy pomocy komendy x11vnc -passwd 123 -forever --display :0. Po stronie lokalnej potrzebować będziemy klienta vnc - vncviewer -encodings Hextile IP.lubdomena.strony.zdalnej:5900. Zobacz też VNC, NX.

Konfiguracja i sztuczki z managerem okien

Często pomimo zastosowania całkiem bogatych opcji konfiguracyjnych managera okien nie udaje się uzyskać pożądanego zachowania niektórych okien. Chyba najbardziej konfigurowalnym managerem okien jest kwin (np. w fluxboxie brakowało mi rozbudowanych opcji regulacji wielkości okna, możliwości wywołania programu po wyświetleniu nowego okna, a także zarządzania przyciskami na belce tytułowej dla poszczególnych okien - kwin też niestety tego nie posiada) i dlatego w tych przykładach oprę się na nim. Pomocne mogą się wtedy okazać programy takie jak: devilspie czy też wmctrl oraz ... system obsługi zdarzeń, który (przynajmniej w kde) nie tylko może odtworzyć dźwięk przy otwarciu okna ale również wykonać jakiś program.

wmctrl umożliwia m.in. przeniesienie wybranego okna na bieżący pulpit i aktywację go, ukrywanie i pokazywanie okien, ustawianie pomijania paska zadań, przypinanie okien. W skrypcie, który wywoływany jest w zdarzeniu związanym z wyświetleniem nowego okna, jest on uruchamiany gdy wywołane było okno programu Psi i aktywuje je przełączając się na jego pulpit. Konieczność stosowania takiej sztuczki wynika z tego iż przy normalnej konfiguracji kwin'a, gdy wymuszamy otwarcie na wskazanym pulpicie to przy wywoływaniu z tray'a nie następuje przełączenie na niego i niekiedy prowadzi to nawet do zgubienia tego okna. Trudniejsze do uzyskania (ale myślę że także możliwe) byłoby wymuszenie na kmail'u aby po wywołaniu z tray'a otwierał się na bieżącym pulpicie (czego w odróżnieniu od standardowego zachowania psi nie che normalnie robić; co najciekawsze np. w fluxboxie zachowanie jest dokładnie odwrotne).

Dostrajanie KDE

Autostart, menu i skojarzenia plików

Katalogiem z którego programy uruchamiane są automatycznie po starcie KDE jest $HOME/.kde/Autostart. Można w nim umieszczać dowiązania symboliczne do programów oraz skrypty uruchamiające programy z zadanymi parametrami (w tym wypadku należy pamiętać o ustawieniu atrybutu wykonywalności oraz rozpoczęciu skryptu linia określającą interpretator np: #!/bin/bash).

Z kolei konfiguracja menu przechowywana jest w katalogu $HOME/config/menus/ (plik applications-kmenuedit.menu). Jest ona zapisana w XML'u jako różnica w stosunku co do konfiguracji domyślnej opartej na kategoriach (patrz /etc/xdg/menus/). Natomiast opisy poszczególnych pozycji menu ("skróty do programów") odpowiedzialne za opisy, ikony, oraz skojarzenia z obsługiwanymi typami MIME przechowywane są w postaci plików .desktop w $HOME/.local/share/applications/ (całosystemowe: /usr/share/applications/) oraz w starym systemie menu (pliki tam umieszczone nie maja wpisu o kategorii - odpowiada jej katalog w którym znajduje się plik) w $HOME/.kde/share/applnk i /usr/share/applnk/. Podobnie informacje o pozycjach katalogowych znajdują się jako pliki *.directory w $HOME/.local/share/desktop-directories i /usr/share/desktop-directories/ oraz w podkatalogach starego systemu menu. Zobacz w Sieci: opis plików .desktop/.directory, opis menu.

pliki .desktop

Już wspomniałem że za skojarzenia plików w KDE odpowiedzialne są te same pliki .desktop co tworzą menu (oczywiście mogą być pozycję menu bez skojarzonych typów plików - brak lub pusty wpis MimeType, jak też pozycje nie wyświetlane w menu - katalog .hidden). Skojarzenia możemy edytować z menu edycji skojarzeń plików, z właściwości danego pliku .desktop oraz przez tekstową edycję tych plików. Jeżeli przy dwóch pierwszych z tych metod są problemy z zapamiętaniem należy zmienić też inne pole (np. komentarz) - wtedy zmiany MIME zostaną zapamiętane.

Poprzez operowanie na plikach .desktop możemy też rozszerzać menu "działania" z Konqueror'a (pliki z odpowiednim wpisem w $HOME/.kde/share/apps/konqueror/servicemenus; np. umieszczenie tam pdflatex.desktop umożliwi nam budowanie PDF'ów z plików TeX z pod prawego przycisku myszy.

Warto też zwrócić uwagę na katalog $HOME/.kde/share/services/, gdzie przechowywane są ustawienia skojarzeń dla opcji "podgląd" w Konquerorze oraz jego podkatalog searchproviders gdzie przechowywane są informacje o konfigurowanych przez użytkownika skrótach wyszukiwania (wpisywanych w pasku adresu tak jak nazwy protokołów takich jak: http: ftp: mailto: man: info: audiocd: (rippowanie CD) tar: zip: imap: (dostęp do konta IMAP) pop3: smb: (przeglądanie sieci Windows) programs: (przeglądanie menu KDE) czy już zdefiniowanych wyszukiwań jak gg: (Google) wp: (Wikipedia)). Zamieszczam także kilka plików *.desktop oraz jeden skrypt, sprawiające wygodniejszą obsługę archiwów: archiwa.tgz (skrypt należy umieścić w $HOME/.config/ a dołączone plik .desktop w $HOME/.kde/share/applnk/.hidden/). Z kolei w menu.desktop pokazuje jak można utworzyć menu które znajdzie się jako podmenu w menu kontekstowym akcji lub na poziomie równym z nim.

mymenu - czyli generowanie menu KDE oraz menu kontekstowych dla różnych typów plików

Jest to system generacji menu dla KDE mojego autorstwa. Korzysta on z katalogowej struktury w której umieszczane są plik .desktop poszczególnych aplikacji. Każdy z katalogów odpowiada kategorii w menu i posiada plik .directory który opisuje wygląd kategorii (ikonę, nazwę itp). Nazwy plików i katalogów nie mają większego znaczenia, ale warto je rozpoczynać od liczby celem zapewnienia odpowiedniego sortowania w menu (odbywa się ono właśnie w oparciu nie o nazwy kategorii/aplikacji a plików). System generuje także pliki .desktop menu akcji Konquerora. Konfiguracja przypisań aplikacji do menu kontekstowego zależnego od typów mime odbywa się w service_menus.cfg. Jeżeli w tym pliku podano cały katalog wypełniane ono jest w kolejności określonej poprzez nazwy plików na niego się składających.

Pliki .desktop mogą posiadać określenia typów mime które obsługują i będą one wykorzystywane do generacji klasycznego systemu skojarzeń w konquerorze (niestety mamy tutaj tylko ograniczony wpływ na kolejność - poprzez parametr InitialPreference=. Aby nie dublować wpisów w menu "otwórz w" (różne pliki .desktop wskazujące na tą samą aplikację) zaleca się umieszczenie w standardowej lokalizacji plików opisu aplikacji plików .desktop z standardowymi nazwami (aby mogły nadpisywać ogólnosystemowe) ale bez z pustym atrybutem MimeType=; możliwe jest też usunięcie plików ogólnosystemowych. W standardowym systemie skojarzeń Konquerora można także wykorzystać mechanizm mailcap (man mailcap, man run-mailcap, man update-mime) poprzez utworzenie wpisów z maksymalnym np. InitialPreference=9 wskazującym na wrapper(-y) tego systemu.

Skrypt instalujący system (mymenu_install.sh) dodaje dowiązanie do własnego pliku menu w pliku z standardowym menu KDE. Ze względu na czytelność zaleca się przeniesienie oryginalnych kategorii do jakiejś zbiorczej kategorii (przykład). Całość systemu można pobtrać jako archiwum tar.gz.

inne informacje

Przy zabawie z konfiguracją KDE przydatne może być polecenie kbuildsycoca przebudowywujące cache konfiguracji bez potrzeby przelogowywania się. Na koniec mała ciekawostka - jak wiadomo jedynym ograniczeniem co do nazw plików i katalogów w linuxie jest to aby nie zawierały znaku /, jednak w kde możemy uzyskać pozór tego znaku należy w nazwie zamiast niego umieścić %2f (uwaga lepiej taką nazwę pliku zrobić w trybie tekstowym bo w graficznym zostanie wstawiony podeójny % i efektu nie uzyskamuy).

Wśród wielu standardowo rozpowszechnianych bibliotek/pluginów warto zwrócić uwagę na libarts1-xine umożliwiającą pokazywanie podglądu plików wideo w Konquerorze. W Sieci można znaleźć nie mało rozszerzeń dla kde (w dużej mierze korzystających z opisanych możliwości konfiguracyjnych) Biblioteki dla kio (umożliwiają korzystanie z zawartości archiwów, protokołów sieciowych itd jak normalnych ścieżek) dla: RAR, 7zip. Dodatkowe wpisy menu usług dla: obsługi archiwów 7zip, paczek deb, montowania obrazów ISO, otwierania jako inny użytkownik oraz różne inne użytki dla konquerora (kopiowanie ścieżek, zaznaczanie na podstawie wyrażeń regularnych, ustawianie obrazka jako ikony katalogu, ...). Dodatkowe wpisy dla przeglądania WWW w konquerorze umożliwiające pobieranie filmików z youtoube, a także patch na kdegraphics włączający podgląd i informacje exif dla plików graficznych typu raw.

Zobacz w Sieci: Polskie Centrum KDE, Przewodnik użytkownika KDE.

Klawiatura multimedialna

W przypadku konsoli po wciśnięciu jakiegoś z dodatkowych przycisków zobaczymy komunikat o nieznanym numerze klawisza możemy wtedy przy pomocy programu "setkeycodes" przypisać mu konwencjonalny numer i następnie wykorzystać go w mapie klawiatury (na marginesie: przy modyfikacji map klawiatury przydaje się program "showkey" podający te właśnie numery klawiszy). Uwaga: przy korzystaniu z nowszych jąder klawisze te mogą mieć od razu wartości rozpoznawane przez showkey (których można używać w mapach klawiatury).

W przypadku X'ów możemy skorzystać z programów pozwalających na przypisanie tym klawiszom komendy (takich jak "hotkeys" czy "xbindkeys"). Możemy jednak przypisać im normalne oznaczenia funkcyjne poprzez xmodmap i keycode (przykładowy plik konfiguracyjny .xmodmaprc). Kody klawiszy zczytać możemy przy wykorzystaniu programu "xev", natomiast listę nazw do których mogą być przypisane można znaleźć w pliku /usr/lib/X11/XKeysymDB . Następnie po wykonaniu xmodmap ~/.xmodmaprc (warto wpisać jako w autostarcie) możemy tych klawiszy używać jak każdych innych - w ustawieniach skrótów klawiaturowych w aplikacjach, w konfiguracji menu KDE.

 



Copyright (c) 1999-2008, Robert Paciorek (http://www.opcode.eu.org/), BSD-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This program is free software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/konfiguracja_linuxa) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: 2008-11-22 16:20:12 (UTC) (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).