Valdo
Bastijan
bastian@kde.org
Filip
Rodrigez
phil@kde.org

# KDE za administratore

## Iznutrice KDE‑a

### Pregled

treba da se napiše

### Raspored fascikli

KDE definiše hijerarhiju fajl sistema koju koristi uže okruženje KDE‑a kao i svi KDE programi. Uopšteno, KDE skladišti sve svoje fajlove u stablu fascikli sa utvrđenom strukturom.

KDE podrazumevano koristi dva stabla fascikli:

- Jedno na nivou sistema (na primer `/opt/kde3`).

- Jedno na nivou korisnika u njegovoj domaćoj fascikli (obično `~/.kde`)

U svojstvu sistem-administratora, možete stvarati dodatna stabla. Takva dodatna stabla mogu se koristiti za profile

Linux SuSE, na primer, koristi:

- `$`HOME`/.kde`

- `/opt/kde3`. (Ovo je tipično za SuSE — druge distribucije mogu koristiti `/usr` ili `/usr/kde3`)

- `/etc/opt/kde3`. (Ovo su dodali u SuSEu.)

Ako imate instaliranu Admin-alatka Kioska, verziju 0.7 ili noviju, možete proveriti koja se stabla fascikli koriste sledećom naredbom: ``kiosktool-kdedirs` `--check``

KDE i KDE programi traže fajlove skeniranjem svih KDE‑ovih stabala fascikli. Stabla fascikli proveravaju se po redosledu prvenstva. Ako je fajl prisutan u nekoliko stabala, prednost ima poslednje stablo. Najveće prvenstvo obično ima stablo smešteno u korisnikovoj domaćoj fascikli. Ovo je i stablo fascikli u koje se upisuju izmene.

Za informacije o MIME tipu `text/plain`, pretražuju se sledeći fajlovi:

- `$`HOME`/.kde/share/mimelnk/text/plain.desktop`

- `/opt/kde3/share/mimelnk/text/plain.desktop`

- `/etc/opt/kde3/share/mimelnk/text/plain.desktop`

Ako korisnik napravi izmenu, ona se upisuje u `$`HOME`/.kde/share/mimelnk/text/plain.desktop`

Za postavne fajlove se priča neznatno razlikuje. Ako se u stablima fascikli nađe više istoimenih postavnih fajlova, njihov sadržaj se kombinuje. Ovde igra ulogu redosled prvenstva. Kad dva fajla definišu isti postavni ključ, fajl sa najvećim prvenstvom određuje koja se vrednost koristi za ključ.

Ako, na primer, postoje sledeća dva fajla sa sadržajima:

`$`HOME`/.kde/share/config/foobar`

      Color=red
      Shape=circle

`/etc/opt/kde3/share/config/foobar`

      Color=blue
      Position=10,10

Fajlovi će biti stopljeni i proizvesti:

    Color=red
    Shape=circle
    Position=10,10

### Zadavanje fascikli

Promenljiva okruženja Primeri postavki Komentar `KDEHOME` `~/.kde` `KDEROOTHOME` `/root/.kde` Različita promenljiva da spreči pisanje korena u $`KDEHOME` korisnika po izvršavanju `su`. `KDEDIR` `/opt/kde3`, `/usr`, `/usr/kde3` Zavisi od izdavača. Koristi je KDE2. Ako nije postavljena, spada na ugrađeno podrazumevano. `KDEDIRS` `/opt/kde3`, `/usr`, `/usr/kde3` Nova u KDE‑u 3. Može da nabraja višestruke lokacije, razdvojene dvotačkom. Ako nije postavljena, spada na $`KDEDIR`

Ne mora da se postavlja, fino rade i podrazumevane.

Radite s KDE‑om 2 pored KDE‑a 3? Uperite $`KDEDIR` na KDE2, a $`KDEDIRS` na KDE3.

Zaposleni na univerzitetu mogao bi imati sledeće postavke:

    KDEHOME='~/.kde3'
    KDEROOTHOME='/root/.kde3'
    KDEDIRS='/opt/kde_staff:/opt/kde3'

### Korisnički profili

U prethodnom primeru, u `/opt/kde_staff` sadržane su dodatne postavke i programi za osoblje. Korisnički profili vam omogućavaju dodavanje ove fascikle samo za neke korisnike, a ne za ostale. Fajlu `/etc/kderc` dodajte ovo:

    [Directories-staff]
    prefiksi=/opt/kde_staff

Ovo stvara profil po imenu `staff` koji dodaje stablo fascikli `/opt/kde_staff`. (SuSE koristi `/etc/kde3rc` umesto `/etc/kderc`). Sad kad imamo imenovani profil, on se može dodeliti korisnicima.

Da bismo mapirali profile korisnicima, treba zadati mapirajući fajl u `/etc/kderc`:

    [Directories]
    userProfileMapFile=/etc/kde-user-profile

Sada je moguće dodeliti profil na osnovu ili korisničkog imena ili unix grupe kojoj korisnik pripada.

Za dodelu profila osoblja svim korisnicima koji su članovi unix grupe `staff_members`, dodajte sledeće fajlu `/etc/kde-user-profile`:

    [General]
    groups=staff_members
    [Groups]
    staff_members=staff

Profil je moguće dodeliti i pojedinačnom korisniku:

    [Users]
    bastian=staff

### Još jednom o rasporedu fascikli

Svako stablo fascikli koje KDE koristi ima utvrđenu strukturu fascikli. Fascikle koje nisu bitne za određeno stablo, ili se prosto ne koriste, mogu se pak izostaviti. Na primer, fascikle za privremene fajlove obično se mogu naći samo pod `$`KDEHOME``, ali ne u bilo kom drugom stablu fascikli.

### Arhitekturi svojstvene fascikle

Arhitekturi svojstvene fascikle (tip OS‑a ili CPU‑a):

`bin`

  Koristi se za izvršne fajlove KDE‑a.

`lib`

  Koristi se za biblioteke KDE‑a.

`lib/kde3`

  Ova fascikla sadrži komponente, priključke i druge objekte učitljive za izvršavanja koje koriste KDE programi.

### Deljene fascikle

Deljene: koje nisu arhitekturi svojstvene, već se mogu deliti između različitih.

`share/applnk`

  .desktop fajlovi za KMenu (staro)

`share/applications`

  .desktop fajlovi za KMenu (od KDE‑a 3.2)

`share/apps`

  Sadrži programima svojstvene fajlove. Svaki program ovde ima potfasciklu za skladištenje dodatnih fajlova.

`share/config`

  Postavni fajlovi. Postavni fajlovi se obično imenuju po naredbi programa kom pripadaju, uz dodatak slova `rc`. Poseban slučaj je fajl `kdeglobals`, koji čitaju svi KDE programi.

`share/config/session`

  Ova fasciklu koristi upravljanje sesijama i obično je dostupna samo pod `$`KDEHOME``. Na kraju sesije, KDE programi ovde skladište svoje stanje. Imena fajla sastoje se od imena naredbe programa, za kojom sledi broj. Menadžer sesija `ksmserver` skladišti upućivanja na ove brojeve pri upisivanju sesije u `ksmserverrc`.

`share/doc/HTML`

  Ova fascikla sadrži dokumentaciju KDE programâ. Dokumentacija je podeljena na kategorije, po jeziku i programu kojem pripada. U fascikli se obično mogu naći najmanje dva fajla: `index.docbook`, koji sadrži sirovu dokumentaciju u formatu DocBook, i `index.cache.bz2`, koji sadrži istu tu dokumentaciju u obliku kompresovanog HTML‑a. HTML verziju koristi K‑centar-pomoći. Ako HTML verzija nedostaje, K‑centar-pomoći će je ponovo stvoriti na osnovu DocBooka, ali to ume da potraje.

`share/icons`

  U ovoj fascikli skladište se ikone. Podeljene su po temama, dimenzijama i kategoriji upotrebe.

`share/mimelnk`

  U ovoj fascikli skladište se .desktop fajlovi koji opisuju MIME tipove. KDE koristi MIME tipove da odredi tip fajla.

`share/services`

  Ova fascikla sadrži .desktop fajlove koji opisuju servise. Servisi su poput programa, ali ih obično pokreću drugi programi, umesto korisnik. Servisi se ne pojavljuju u KMeniju.

`share/servicetypes`

  Ova fascikla sadrži .desktop fajlove koji opisuju tipove servisa. Tip servisa obično predstavlja izvesno programersko sučelje. Programi i servisi u svojim .desktop fajlovima sadrže tipove servisa koje pružaju.

`share/sounds`

  Ova fascikla sadrži zvučne fajlove.

`share/templates`

  Ova fascikla sadrži šablone za stvaranje fajlova raznih tipova. Šablon se sastoji od .desktop fajla koji opisuje fajl i sadrži upućivač na fajl u potfascikli `.source`. Šabloni u ovoj fascikli pojavljuju se u meniju Napravi novo, dostupnom na površi i u pregledaču fajlova. Kad korisnik iz menija izabere šablon, kopira se njegov izvorni fajl.

`share/wallpapers`

  Ova fascikla sadrži slike koje se mogu koristiti kao pozadina površi

### Domaćinu svojstvene fascikle

Postoje tri domaćinu svojstvene fascikle, koje su obično simpovezane sa drugim lokacijama. Ako ove fascikle još ne postoje, sledeće simveze i fascikle biće stvorene pomoću alatke `lnusertemp`:

`$`KDEHOME`/socket-$`HOSTNAME``

  Obično `/tmp/ksocket-$`USER``, koristi se za razne unix sokete.

`$`KDEHOME`/tmp-$`HOSTNAME``

  Obično `/tmp/kde-$`USER``, koristi se za privremene fajlove.

`$`KDEHOME`/cache-$`HOSTNAME``

  Obično `/var/tmp/kdecache-$`USER``, koristi se za keširane fajlove.

Pošto i u `/tmp` i u `/var/tmp` svi mogu pisati, postoji mogućnost da jedna od gornjih fascikli već postoji, ali da je poseduje drugi korisnik. U tom slučaju će alatka `lnusertemp` stvoriti novu fasciklu sa alternativnim imenom i povezati ka njoj.

### Postavni fajlovi

Za sve svoje postavne fajlove, KDE koristi prost tekstualni format. Sastoji se od parova ključ‑vrednost podeljenih u grupe. Svi KDE postavni fajlovi koriste kodiranje UTF‑8 za tekst izvan opsega ASCII‑a.

Početak grupe određen je imenom grupe stavljenim u uglaste zagrade. Svi unosi ključ‑vrednost koji slede pripadaju toj grupi. Grupa se završava ili gde započinje nova, ili kad je dostignut kraj fajla. Unosi na vrhu fajla kojima ne prethodi ime grupe pripadaju podrazumevanoj grupi.

Sledeći primer pokazuje postavni fajl koji se sastoji od dve grupe. Prva grupa sadrži ključeve `LargeCursor` i `SingleClick`, a druga `Show hidden files` i `Sort by`:

    [KDE]
    LargeCursor=false
    SingleClick=true

    [KFileDialog Settings]
    Show hidden files=false
    Sort by=Name

Unosi u grupi sastoje se od ključa i vrednosti razdvojenih znakom jednakosti. Ključ može sadržavati razmake i mogu mu slediti opcije stavljene u uglaste zagrade. Deo posle znaka jednakosti je vrednost unosa. Ignoriše se svaka belina koji okružuje znak jednakosti, kao i svaka prateća belina. Sažetije, format glasi:

    entry=value

Ako vrednost treba da sadrži razmak na početku ili kraju, onda se to može postići korišćenjem kontrakroza za kojim sledi „s“: \s.

Postoji nekoliko drugih kodova s kontrakrozom, evo potpunog spiska:

- \s može se koristiti kao razmak

- \t služi za ubacivanje tabulatora

- \r za znak povratka reda

- \n za znak uvoda reda (novi red)

- \\ za ubacivanje samog kontrakroza

U sledećem primeru vrednost unosa `Caption` počinje sa dvama razmacima, dok unos `Description` sadrži tri reda teksta. Uvodi reda u zapisu s kontrakrozom služe da razdvoje različite redove.

    [Preview Image]
    Caption=\s My Caption
    Description=This is\na very long\ndescription.

U postavnim fajlovima ignorišu se prazni redovi, kao i redovi koji počinju znakom tarabe ‘#’. Taraba se može koristiti za dodavanje komentara u postavnim fajlovima. Valja zapaziti da, kada KDE program ažurira postavni fajl, komentari ne bivaju sačuvani.

Mogu biti i više postavnih fajlova sa istim imenom u potfascikli `share/config` raznih KDE‑ovih stabala fascikli. U tom slučaju se informacije iz istoimenih postavnih fajlova kombinuju ključ‑po‑ključ: ako je isti ključ unutar neke grupe definisan na više od jednog mesta, koristiće se vrednost ključa pročitana iz stabla fascikli sa najvišim prvenstvom. Postavni fajlovi pod `$`KDEHOME`` uvek imaju najveće prvenstvo. Ako je ključ u nekoj grupi višestruko definisan u istom fajlu, uzeće se vrednost poslednjeg unosa.

Ako `$`HOME`/.kde/share/config/foobar` sadrži:

    [MyGroup]
    Color=red
    Shape=circle

a `/etc/opt/kde3/share/config/foobar` sadrži:

    [MyGroup]
    Color=blue
    Position=10,10

rezultat će biti:

    [MyGroup]
    Color=red
    Shape=circle
    Position=10,10

Ako `$`HOME`/.kde/share/config/foobar` sadrži:

    [MyGroup]
    Color=red
    Shape=circle
    [MyGroup]
    Color=green

a `/opt/kde_staff/share/config/foobar` sadrži:

    [MyGroup]
    Color=purple
    Position=20,20

i `/etc/opt/kde3/share/config/foobar` sadrži:

    [MyGroup]
    Color=blue
    Position=10,10

rezultat će biti:

    [MyGroup]
    Color=green
    Shape=circle
    Position=20,20

Da bi se korisnici sprečili da prebrišu podrazumevane postavke, one se mogu obeležiti kao nepromenljive. Postavke se mogu učiniti nepromenljivim pojedinačno, grupno ili po fajlu. Pojedinačan unos može se zaključati dodavanjem `[$i]` iza ključa, npr:

    Color[$i]=blue

Grupa unosa može se zaključati stavljanjem `[$i]` iza imena grupe, npr:

    [MyGroup][$i]

Za zaključavanje celog fajla, započnite fajl sa `[$i]` samim u jednom redu, tj:

    [$i]

Ako `$`HOME`/.kde/share/config/foobar` sadrži:

    [MyGroup]
    Color=red
    Shape=circle

a `/etc/opt/kde3/share/config/foobar` sadrži:

    [MyGroup][$i]
    Color=blue
    Position=10,10

rezultat će biti:

    [MyGroup]
    Color=blue
    Position=10,10

Ako `$`HOME`/.kde/share/config/foobar` sadrži:

    [MyGroup]
    Color=red
    Shape=circle

a `/opt/kde_staff/share/config/foobar` sadrži:

    [MyGroup][$i]
    Color=blue
    Position=10,10

rezultat će biti:

    [MyGroup]
    Color=purple
    Shape=rectangle
    Position=10,10

Da bi se obezbedile dinamičnije podrazumevane vrednosti, može se koristiti tzv. „razvoj školjke“. Razvojem školjke može se konstruisati vrednost postavnog ključa na osnovu vrednosti promenljive okruženja ili izlaza naredbe školjke. Za uključivanje razvoja školjke za postavni unos, za ključem mora slediti [$e]. Posle prve upotrebe, prošireni oblik obično biva upisan u korisnikov postavni fajl. Da bi se to sprečilo, preporučuje se zaključavanje postavnog unosa pomoću [$ie]. Korisnik, naravno, ovo posle ne može da menja.

U sledećem primeru, vrednost unosa `Host` određena je izlazom naredbe `hostname`. Ova postavka takođe je zaključana da bi se osiguralo trajno dinamičko određenje vrednosti.

Vrednost za unos `Email` određena je popunjavanjem vrednosti promenljivih okruženja $`USER` i $`HOST`. Ako je joe prijavljen na joes_host, rezultat će biti vrednost jednaka ovoj: `joe@joes_host`. Postavka nije zaključana.

    [Mail Settings]
    Host[$ie]=$(hostname)
    Email[$e]=${USER}@${HOST}

Većina postavnih unosa može se indeksirati jezičkim kodom. U tom slučaju, jezik koji je korisnik izabrao za radnu površ koristi se pri traženju vrednosti ključa. Ako je izabran podrazumevani jezik (američki engleski), ili nema indeksa koji odgovara izabranom jeziku, koristi se unos ključa bez indeksa.

U sledećem primeru, vrednost unosa `Caption` zavisi od jezika. Ako je korisnik kao jezik izabrao francuski (jezički kôd `fr`), vrednost unosa biće Ma Légende. U svim drugim slučajevima uzeće se vrednost My Caption.

    [Preview Image]
    Caption=My Caption
    Caption[fr]=Ma Légende

U ovom primeru, vrednost unosa `Caption` zavisi od jezika. Ako je korisnik kao jezik izabrao francuski (jezički kôd `fr`), vrednost unosa biće Ma Légende. U svim drugim slučajevima uzeće se vrednost My Caption.

    [Preview Image]
    Caption=My Caption
    Caption[fr]=Ma Légende

Unosi koji se mogu pojaviti u postavnom fajlu, uopšteno, nisu dokumentovani. Sa KDE‑om 3.2 napravljen je korak da se ovo promeni. U `$`KDEDIR`/share/config.kcfg` mogu se naći fajlovi koji obezbeđuju formalan opis mogućih unosa u postavnom fajlu. Ako su raspoloživi, koristi ih KDE‑ov uređivač postave.

Evo primera XML postavnog fajla:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE kcfg SYSTEM "http://www.kde.org/standards/kcfg/1.0/kcfg.dtd">
    <kcfg>
        <kcfgfile name="korganizerrc">
        <group name="General">
             <entry type="Bool" key="Auto Save">
                 <label>Enable automatic saving of calendar</label>
                 <default>true</default>
             </entry>
             <entry type="Int" key="Auto Save Interval">
                 <default>10</default>
             </entry>
        <group>
    <kcfg>

Ovo ima isti efekat kao:

    [General]
    Auto Save=false
    Auto Save Interval=25

### Tok pokretanja KDE‑a

#### KDM

Uvek se izvršava kao root! Koristi `$`KDEDIR`/share/config/kdmrc` i `/etc/X11/xdm/Xservers`. Potonji fajl sadrži unose poput:

    :0 local /usr/X11R6/bin/X :0 vt07

Relevantni fajlovi na pokretanju takođe su:

- Sekcija `[X-*-Core]` u `kdmrc`
- Postava — `/etc/X11/xdm/Xsetup`
- Korisnik unosi korisničko ime i lozinku
- Pokretanje — `/etc/X11/xdm/Xstartup` — priprema kao koren
- Sesija — `/etc/X11/xdm/Xsession` — pokreće sesiju kao korisnik
- = za KDE sesiju: `kde` ili `startkde`
- = ako postoji `~/.xsession` ili `~/.xinitrc`
- Resetovanje — `/etc/X11/xdm/Xreset` — posle završene sesije

#### Skripta za pokretanje KDE‑a: `startkde`

Tok pokretanja KDE‑a počinje sa skriptom `startkde`. Ona se u većini slučajeva poziva iz menadžera prijavljivanja (KDM‑a) pošto se korisnik autentifikuje. U skripti `startkde` nalaze se dva veoma važna reda:

    LD_BIND_NOW=true kdeinit4 +kcminit_startup
    kwrapper4 ksmserver $KDEWM

Prvi red pokreće glavni proces naredbom `kdeinit4`, koji služi za pokretanje svih ostalih KDE procesa. U izlazu `ps `aux`` pojavljuje se kao `kdeinit4:Running...`. Argumenti posle `kdeinit4` imena su dodatnih procesa koje treba pokrenuti. Znak + ukazuje da `kdeinit4` treba da čeka dok se proces završi. `kdeinit4` takođe pokreće `klauncher` i `kded`.

Drugi red traži od `kdeinit4` da pokrene proces menadžera sesija `ksmserver`. Menadžer sesija određuje dužinu života sesije. Kad se ovaj proces okonča, korisnik je odjavljen.

### Pozadinski procesi

Svi pozadinski KDE servisi posebni su po korisniku — za razliku od sistemskih demona, ne dele se među korisnicima. Isto kao što su jedinstveni po korisniku, takvi su i po prikazu X servera. Procesi su sledeći:

`dcopserver`

  Komunikacija na radnoj površi

`kded`

  Generički demon servisa

  Po potrebi okida ažuriranja baze podataka Sycoce

`kcminit`

  Pripremni servis

  Za više informacija, pogledajte .

`klauncher`

  Pokretanje programa (ovo nije onaj dijalog na Alt F2 !)

  Za više informacija, pogledajte .

`knotify`

  Obaveštenja korisniku.

  Za više informacija, pogledajte .

`ksmserver`

  Upravljanje sesijama

  Za više informacija, pogledajte .

#### `kdeinit`

Naredba `kdeinit` koristi se za pokretanje svih ostalih KDE programa. `kdeinit` obično može da pokrene i binarne programske fajlove i učitljive module (KLM‑ove). KLM‑ovi rade isto kao binarni programski fajlovi, ali se mogu efikasnije pokretati. Oni prebivaju u `$`KDEDIR`/lib/kde3`.

Nezgoda je što se ovako pokrenuti programi pojavljuju kao ``kdeinit`` u izlazu `top` i `ps`. Koristite `top `-c`` ili `ps `aux`` da vidite stvarno ime programa:

    %ps aux

    waba     23184  0.2  2.1 23428 11124 ?        S    21:41   0:00 kdeinit4: Running...
    waba     23189  0.2  2.4 25136 12496 ?        S    21:41   0:00 kdeinit4: klauncher
    waba     23192  0.7  2.8 25596 14772 ?        S    21:41   0:00 kdeinit4: kded
    waba     23203  0.8  3.4 31516 17892 ?        S    21:41   0:00 kdeinit4: knotify

`kdeinit: Running...` pokazuje glavni proces `kdeinit`. Ostali nabrojani procesi su programi pokrenuti kao KLM‑ovi.

Kad se prvi put pokrene, `kdeinit` će pokrenuti `klauncher` i `kded`, kao i sve dodatne programe na svojoj komandnoj liniji u skripti `startkde`, obično `kcminit_startup`.

#### `kcminit`

Naredba `kcminit` izvršava pripremne servise tokom pokretanja. Pripremni servisi zadati su u .desktop fajlovima programâ ili servisa, redom `X-KDE-Init`:

    [Desktop Entry]
    Encoding=UTF-8
    Exec=kcmshell4 energy
    Icon=energy_star
    Type=Application
    X-KDE-Library=energy
    X-KDE-Init=energy

Pripremni servisi tipično se koriste za pripremanje hardvera na osnovu korisničkih postavki.

``kcminit`--list``` može se koristiti za sve pokretačke servise, a ``kcminitservice`` može se koristiti za izričito izvršenje pojedinačnog servisa. Može biti korisno za pretresanje problemâ na pokretanju.

#### `klauncher`

KLauncher (`klauncher`) je demon odgovoran za aktiviranje servisa u okviru KDE‑a. Tesno sarađuje sa glavnim procesom `kdeinit` radi pokretanja novih procesa. KDE programi komuniciraju sa `klauncher` preko DCOP‑a, radi pokretanja novih programa i servisa.

Najpoznatiji iz poruke o grešci `KLauncher nije dostupan preko D‑Busa [...]` koja ukazuje na ozbiljan problem sa naredbom `dcopserver`, ili da se `klauncher` srušila.

`klauncher` se može iznova pokrenuti ponovnim pokretanjem `kdeinit` iz konzolnog prozora. Kad ovo radite, uverite se da su pravilno postavljene $`HOME`, $`DISPLAY` i razne $`KDEDIR(S)`!

#### `knotify`

Primarni zadatak naredbe `knotify` jeste da poveže zvučna obaveštenja sa serverom zvuka, a obezbeđuje i alternativne metode obaveštavanja.

### KSMServer

KSMServer (`ksmserver`) je KDE‑ov menadžer sesija. Po pokretanju on izvršava samopokretanje programâ i obnavlja programe iz prethodne sesije. Programi za samopokretanje određeni su .desktop fajlovima u fascikli `$`KDEDIR`/share/autostart`. Da li neki program treba automatski pokrenuti ili ne, može se usloviti prema nekom postavnom unosu datom unosom `X-KDE-autostart-condition` u .desktop fajlu.

Na primer, fajl `ktip.desktop` sadrži:

    X-KDE-autostart-condition=ktiprc:TipOfDay:RunOnStart:true

Ovo znači da se u postavnom fajlu `ktiprc` proverava unos `RunOnStart` u sekciji `[TipOfDay]`. Ako takav unos ne postoji, pretpostavlja se `true`, što znači da K‑savet postaje jedan od programa što se podrazumevano automatski pokreću.

Neke od naredbi koje automatski pokreće `ksmserver`:

`kdesktop`

  Površ KDE‑a

`kicker`

  Kicker, KDE‑ov panel

`ktip`

  Program za savete dana K‑savet

`kwrited`

  Alatka za prijem sistemskih poruka poslatih korisniku

Klipper

  Klipper, alatka klipborda koja se usidrava na panelu

`kalarm`

  K‑alarm, alatka koja upozorava na dolazeće događaje i sastanke

Naredba `kdesktop` nadalje automatski pokreće programe skladištene u `$`KDEHOME`/Autostart`. `kdesktop` će automatski otvoriti sve fajlove u ovoj fascikli, uključujući dokumente, binarne fajlove ili programe u vidu .desktop fajlova.

KDE‑ov menadžer sesija takođe obnavlja neku od prethodnih sesija. Sesija sadrži kako skup programa, tako i programu svojstvene podatke koje odražavaju njegovo stanje u trenutku upisivanja sesije. Sesije se skladište u postavnom fajlu `ksmserverrc`, koji upućuje na programu svojstvene podatke o stanju, skladištene u `$`KDEHOME`/share/config/session`. Podaci o stanju KWina sadrže lokaciju programskih prozora svih ostalih programa u sesiji.

### Promenljive okruženja

Neke važne promenljive okruženja koje koristi KDE:

$`KDEDIR`

  Treba da se postavi ako nije postavljena `KDEDIRS`, i treba da ukazuje na koren instalacionog stabla KDE‑a. Omogućava KDE‑u da pronađe podatke poput ikona, menija i biblioteka.

`KDEDIRS`

  Potiskuje promenljivu `KDEDIR` i omogućava vam da zadate više fascikli u kojima će KDE tražiti podatke. Korisna ako želite ili morate da instalirate neke programe u drugačijem prefiksu od ostatka KDE‑a.

`$KDEHOME`

  Ako nije postavljena, KDE za skladištenje ličnih podataka koristi fasciklu `~/.kde`.

$`KDEROOTHOME`

  Ako nije postavljena, KDE koristi `~root/.kde` kao fasciklu za lične podatke korena (root). Uvedena da spreči KDE da slučajno ne prebriše podatke korisnika sa korenim ovlašćenjima, kad korisnik izvrši KDE program nakon prebacivanja naredbom `su` na root.

$`KDEWM`

  Ako je promenljiva okruženja `KDEWM` postavljena, skripta `startkde` upotrebiće je kao KDE‑ov menadžer prozora, umesto KWina.

$`KDE_LANG`

  Potiskuje KDE‑ovu postavu jezika, npr. `KDE_LANG=fr kcommand &` pokreće program na francuskom (ako su instalirani neophodni fajlovi).

$`KDE_MULTIHEAD`

  Postavite ovu promenljivu na `true` da ukažete KDE‑u da radi na višemonitorskom sistemu.

$`KDE_FORK_SLAVES`

  (Od KDE‑a 3.2.3.) Postavite ovu promenljivu da bi U/I zahvati izranjali neposredno iz programskog procesa. Podrazumevano izranjaju iz `klauncher` ili `kdeinit`. Ova opcija korisna je ako U/I zahvat treba da radi u istom okruženju kao i program (slučaj npr. sa ClearCaseom).

$`KDE_HOME_READONLY`

  Postavite ovu promenljivu da ukažete da je vaša domaća fascikla montirana samo‑za‑čitanje.

$`KDE_NO_IPV6`

  (Od KDE‑a 3.2.3.) Postavite ovu promenljivu da isključite podršku za IPv6 i IPv6 DNS potrage.

$`KDE_IS_PRELINKED`

  (Od KDE‑a 3.2.) Postavite ovu promenljivu da ukažete da ste pretpovezali KDE‑ove izvršne fajlove i biblioteke, što isključuje `kdeinit`.

$`KDE_UTF8_FILENAMES`

  Ako je ova promenljiva okruženja postavljena, KDE pretpostavlja da su sva imena fajlova UTF‑8 kodirana, bez obzira na tekući sistemski lokalitet.

$`KDE_FULL_SESSION`

  (Od KDE‑a 3.2.) Automatski se postavlja na `true` na pokretanju KDE‑a, koristi se npr. da odredi da li da se K‑osvajač zadrži u memoriji posle zatvaranja. Ako nije postavljena, K‑osvajač se napušta po zatvaranju (npr. ovo čini KDE su, a korisno je i za ispravljanje).

$`KDESYCOCA`

  Omogućava vam da zadate putanju i ime generisanog fajla keša KDE‑ove sistemske postave.

$`KDETMP`

  Omogućava da zadate drugu putanju umesto `/tmp`, gde KDE skladišti privremene fajlove.

$`KDEVARTMP`

  Omogućava da zadate drugu putanju umesto `/var/tmp`, gde KDE skladišti promenljive fajlove.

$`XDG_DATA_HOME`

  (Od KDE‑a 3.2.) Definiše osnovnu fasciklu prema kojoj se skladište korisniku svojstveni fajlovi. Podrazumeva se `$`HOME`/.local/share`.

$`XDG_DATA_DIRS`

  (Od KDE‑a 3.2.) Definiše po redosledu prvenstva skup osnovnih fascikli za traženje fajlova podataka, u dodatak onoj iz `$`XDG_DATA_HOME``. Podrazumeva se `/usr/local/share/:/usr/share/`.

  KDE dodaje lokacije iz $`KDEDIRS` kao i profile. Koriste se za .desktop fajlove menija: `.desktop` fajlovi pod `$`XDG_DATA_DIRS`/applications`, a `.directory` pod `$`XDG_DATA_DIRS`/desktop-directories`.

$`XDG_CONFIG_HOME`

  (Od KDE‑a 3.2.) Definiše osnovnu fasciklu u kojoj treba skladištiti korisniku svojstvene postavne fajlove. Podrazumeva se `$`HOME`/.config`.

$`XDG_CONFIG_DIRS`

  (Od KDE‑a 3.2.) Definiše po redosledu prvenstva skup osnovnih fascikli za traženje postavnih fajlova, u dodatak onoj iz $`XDG_CONFIG_HOME`. Podrazumeva se `/etc/xdg`. KDE dodaje lokacije iz $`KDEDIRS` kao i profile. Koriste ih `.menu` opisi u `$`XDG_CONFIG_DIRS`/menus`.

### Tajna naredbe `kdeinit`

`kdeinit` se koristi za pokretanje svih ostalih KDE programa. Može da pokrene normalne binarne programske fajlove, kao i učitljive module (KLM‑ove). KLM‑ovi rade isto kao binarni programski fajlovi, ali se mogu efikasnije pokrenuti. Prebivaju u `$`KDEDIR`/lib/kde3`.

Nezgoda je što se ovako pokrenuti programi pojavljuju kao ``kdeinit`` u izlazu `top` i `ps`. Koristite `top `-c`` ili `ps `aux`` da vidite stvarno ime programa:

    % ps aux | grep bastian

    bastian  26061  0.0  2.2 24284 11492 ?       S    21:27   0:00 kdeinit: Running...
    bastian  26064  0.0  2.2 24036 11524 ?       S    21:27   0:00 kdeinit: dcopserver
    bastian  26066  0.1  2.5 26056 12988 ?       S    21:27   0:00 kdeinit: klauncher
    bastian  26069  0.4  3.2 27356 16744 ?       S    21:27   0:00 kdeinit: kded
    bastian  26161  0.2  2.7 25344 14096 ?       S    21:27   0:00 kdeinit: ksmserver
    bastian  26179  1.1  3.4 29716 17812 ?       S    21:27   0:00 kdeinit: kicker
    bastian  26192  0.4  3.0 26776 15452 ?       S    21:27   0:00 kdeinit: klipper
    bastian  26195  1.0  3.5 29200 18368 ?       S    21:27   0:00 kdeinit: kdesktop

Kao što ste možda zapazili, ovo proizvodi sporedan efekat da je teško ubiti proces koji prouzrokuje nevolju:

    % killall kdesktop
    kdesktop: no process killed

Možda ste u iskušenju da upotrebite ``killall kdeinit``, ali će ubijanje svih `kdeinit` procesa rezultovati gašenjem celog KDE‑a. Totalno razaranje!

Za ovo postoje dva jednostavna rešenja:

    % kdekillall kdesktop
    # ili staro dobro:
    % kill 26195

`kdekillall` je deo KDE‑ovog SDK paketa.

## Prilagođavanje KDE‑a

### Ikone površi

KDE koristi nekoliko vrsta ikona:

- Dokumenti

- Veze ka veb sajtovima (preko .desktop fajla)

- Veze ka programima (preko .desktop fajla)

- Uređaji — diskovi, particije i periferije:

  - Izričito preko .desktop fajla

  - Automatski preko U/I zahvata `devices://`

- Posebno od izdavača (npr. SuSE‑ov „Moj računar“)

#### Veb sajtovi

Veze ka veb sajtovima putem .desktop fajlova: Napravi novo Fajl Veza do lokacije (URL).... Ikonu možete promeniti u dijalogu Svojstva. .Desktop fajl koji nastaje:

    [Desktop Entry]
    Encoding=UTF-8
    Icon=/opt/kde3/share/apps/kdesktop/pics/ksslogo.png
    Type=Link
    URL=http://www.kde.org/

#### Programi

Veze ka programima putem .desktop fajlova: Napravi novo Fajl Veza do programa.... Detalje morate obezbediti sami. Prevucite iz KMenija: ili kopirajte ili povežite (pravi simvezu), mnogo lakše.

    [Desktop Entry]
    Encoding=UTF-8
    GenericName=IRC Client
    GenericName[af]=Irc Klië
    GenericName[de]=IRC Programm
    ...
    GenericName[zu]=Umthengi we IRC
    SwallowExec=
    Name=KSirc
    Name[af]=Ksirc
    Name[de]=KSirc
    ...

Predumetak

Preveden generički opis, ne koristi se na površi

Zastarelo, može se ukloniti

Prevedeno ime koje se daje na površi

Ikone površi

    ...
    Name[zu]=Ksirc
    MimeType=
    Exec=ksirc %i %m
    Icon=ksirc
    TerminalOptions=
    Path=
    Type=Application
    Terminal=0
    X-KDE-StartupNotify=true
    X-DCOP-ServiceType=Multi
    Categories=Qt;KDE;Network

Podržani MIME tipovi, ne koriste se na površi

Komandna linija koju treba izvršiti

Ikona, iz teme ikona ili puna putanja

Samo ako je potreban terminal

Radna fascikla za naredbu

Još predumetka

`true` ako je potreban terminal, tekstualni program

Prikaži skakutajući pokazivač, isključi ako ne radi.

Program uredno pokrenut? Ukloni ako ne radi.

Kategorije za KMenu, ne koristi se na površi

#### Opcija `Exec` .desktop fajlovima

Za naredbom može slediti nekoliko mestodržača, koji će biti zamenjeni stvarnim vrednostima kad se program pokrene:

`%f`

  Pojedinačno ime fajla; za ispuštanje fajla na ikonu, ili sa pridruženjima fajlu.

`%F`

  Spisak fajlova; za programe koji mogu da otvore nekoliko lokalnih fajlova odjednom.

`%u`

  Pojedinačni URL: ako program sam može da rukuje npr. FTP ili HTTP URL‑ovima, inače KDE.

`%U`

  Spisak URL‑ova; prvo će preuzeti fajl i proslediti lokalni fajl programu (!!)

`%d`

  Fascikla fajla za otvaranje; korisno ako program zahteva fajl u tekućoj radnoj fascikli.

`%D`

  Spisak fascikli, ne previše praktično.

`%i`

  Ikona, opcija `--icon`; KDE program će za traku zadataka koristiti ikonu datu redom `Icon`=.

`%m`

  Minijaturna ikona, zastarelo.

`%c`

  Naslov, opcija `--caption`; KDE program će za traku zadataka koristiti ime dato redom `Name`=.

Primeri: red `Exec` izvršava naredbu `ksirc %i` `ksirc --icon ksirc` `cd %d; kedit $(basename %f)``cd /tmp; kedit file.txt`

#### Uređaji

Veze ka uređajima putem .desktop fajlova: Napravi novo Uređaj

#### Gde definisati

Mnoga su mesta za definisanje ikona površi:

- `~/Desktop`: kopirano iz `/etc/skel/Desktop`

- `$`KDEDIR`/apps/kdesktop/Desktop` (stopljeno)

- `$`KDEDIR`/apps/kdesktop/DesktopLinks` (kopirano)

- Ikone uređaja (dinamički stopljene)

- Distribuciji svojstveno: SuSE kopira neke ikone u `startkde.theme` iz `/opt/kde3/share/config/SuSE/default/`

### KMenu

#### Način rada

U KDE‑u 3.2 uveden je zajednički formata menija sa http://freedesktop.org/Standards/menu-spec/

Pre KDE‑a 3.2:

- struktura fascikli pod `share/applnk`

- struktura fascikli predstavlja strukturu menija

- svaki .desktop fajl predstavlja pojedinačni program

Bilo je teško preurediti ovakvu strukturu, pa u KDE‑u 3.2 novi format menija:

- definiše strukturu u jednom `.menu` fajlu

- zasnovan je na kategorijama

- deli se između Gnomea i KDE‑a

- podržava i menije u stilu `applnk`

Primer iz `applications.menu`:

            <Menu>
                <Name>Office</Name>
                <Directory>suse-office.directory</Directory>
                <Include>
                    <Filename>Acrobat Reader.desktop</Filename>
                    <Filename>kde-kpresenter.desktop</Filename>
                    <Filename>kde-kword.desktop</Filename>
                </Include>
            <Menu>

Unos menija sa tri programa:

- `/usr/share/applications/Acrobat Reader.desktop`

- `/opt/kde3/share/applications/kde/kpresenter.desktop`

- `/opt/kde3/share/applications/kde/kword.desktop`

#### A gde se skladište?

Fajlovi koji opisuju strukturu menija, `.menu`, skladište se u `$`KDEDIR`/etc/xdg/menus` i `/etc/xdg/menus`. One definišu strukturu menija širom sistema, a kontroliše ih $`XDG_CONFIG_DIRS`. `$`HOME`/.config/menus` skladišti korisniku svojstvene izmene u strukturi menija, a kontroliše je $`XDG_CONFIG_HOME`. Za više informacija, pogledajte http://www.freedesktop.org/Standards/basedir-spec.

.Desktop fajlovi opisuju programe i skladište se u: `$`KDEDIR`/share/applications`, `/usr/share/applications`, `/usr/local/share/applications`. Ovo su .desktop fajlovi koji važe širom sistema, kontroliše ih $`XDG_DATA_DIRS`.

Fascikla `$`HOME`/.local/applications` sadrži .desktop fajlove i korisniku svojstvene izmene. Kontroliše je $`XDG_DATA_HOME`. Za više informacija, pogledajte http://www.freedesktop.org/Standards/basedir-spec

Fajlovi koji opisuju podmenije, `.directory`, skladište se u: `$`KDEDIR`/share/desktop-directories`, `/usr/share/desktop-directories`, `/usr/local/share/desktop-directories`. Ovo su fajlovi menija širom sistema, koje kontroliše $`XDG_DATA_DIRS`. Korisniku svojstvene izmene skladište se u: `$`HOME`/.local/desktop-directories`. Njih kontroliše promenljiva $`XDG_DATA_HOME`. Za više informacija, pogledajte http://www.freedesktop.org/Standards/basedir-spec.

Primer iz `applications.menu`:

                 <Menu>
                            <Name>Art</Name>
                           <Directory>suse-edutainment-art.directory</Directory>
                            <Include>
                                    <Category>X-SuSE-Art</Category>
                            </Include>
                    </Menu>

`Art` je unutrašnje ime za ovaj meni. `suse-edutainment-art.directory` definiše ime i ikonu za ovaj meni, a meni sadrži sve programe koji kao kategoriju imaju navedeno `X-SuSE-Art`, npr:

    Categories=Qt;KDE;Education;X-SuSE-Art

`suse-edutainment-art.directory` definiše ime i ikonu za ovaj meni:

    [Desktop Entry]
    Name=Art and Culture
    Icon=kcmsystem

#### Uobičajene zamke

Programi koji nisu u meniju ne postoje s tačke gledišta drugih programa ili pridruženja fajlovima. Ako uklonite neki program iz menija, KDE pretpostavlja da ne želite da ga koristite.

Kad se programi ne žele u meniju, stavite ih u meni `.hidden` ili u namenski meni sa

    NoDisplay=true

u fajlu `.directory`.

#### Važni meniji

`$`KDEDIR`/etc/xdg/menus/applications-merged/` sadrži `kde-essential.menu`, koji uključuje neke važne menije koji obično nisu prikazani u samom KMeniju:

- Kontrolni centar ima skriveni meni postavki, čiji sadržaj definiše `kde-settings.menu`, i čije ime i ikonu definiše `kde-settings.directory`

- Info centar ima skriveni meni informacija, čiji sadržaje definiše `kde-information.menu`, i čije ime i ikonu definiše `kde-information.directory`.

- Čuvari ekrana sadrže skriveni meni sistem/čuvari ekrana, čiji sadržaj definiše `kde-screensavers.menu`, i čije ime i ikonu definiše `kde-system-screensavers.directory`. `$`KDEDIR`/share/desktop-directories/kde-system-screensavers.directory` sadrži:

      NoDisplay=true

#### Meniji u starom stilu

KDE nastavlja da podržava menije u starom stilu koji su definisani strukturama fascikli u `$`KDEDIR`/share/applnk` (širom sistema) i `$`HOME`/.kde/share/applnk` (korisniku svojstveno). Na ovo se spada ako .desktop fajl nema red `Categories`=. Ako ima, kategorije određuju lokaciju u meniju.

#### KSycoca

KSycoca kešira strukturu menija i podatke o svim raspoloživim programima. Bazu podataka možete ponovo izgraditi naredbom ``kbuildsycoca4``. Izgrađena baza podataka prebiva u `/var/tmp/kdecache-${`USER`}/ksycoca`. Automatski je ažurira KDED, proverava se pri prijavljivanju u KDE, a KDED nadgleda izmene dok ste prijavljeni.

Da isključite nadgledanje izmena (može biti sporo preko NFS‑a), dodajte u `kdedrc`:

    [General]
    CheckSycoca=false

Da biste primorali ponovno stvaranje, izvršite ``touch $`KDEDIR`/share/services/update_ksycoca``.

#### Uređivač KMenija

Uređivač KMenija je namenjen jednokorisničkoj postavi. Izmene u strukturi menija upisuju se u `~/.config/menus/applications-kmenuedit.menu`, izmene u programima u `~/.local/share/applications/`, a izmene u podmenijima (ikona, ime) u `~/.local/share/desktop-directories/`. Admin-alatka Kioska koristi Uređivač KMenija i kopira gornje izmene u profile ili lokacije širom sistema.

### KDE‑ov panel

KDE‑ov panel poznat je i kao Kicker. Modularan je i sastoji se od sledećih komponenti:

- apleta

- programskih dugmadi

- posebnih dugmadi

Panel podrazumevano sadrži sledeće aplete:

- pejdžer, koji prikazuje virtuelne površi

- traku zadataka

- sistemsku kasetu

- sat

i sledeću posebnu dugmad:

- KMenu

- dugme površi

Koliko dozvoljava prostor, dodata su i razna programska dugmad:

- domaće dugme

- dugme pregledača

- dugme K‑pošte

### Pridruženja fajlova

Pridruženja fajlova povezuju tip fajla sa programom ili programima. Tip fajla se uspostavlja određivanjem njegovog MIME tipa. MIME tipovi poznati KDE‑u skladište se u `$`KDEDIR`/share/mimelnk`, a .desktop fajl svakog programa sadrži spisak MIME tipova koje taj program podržava.

`kview.desktop`

    MimeType=image/gif;image/x-xpm;image/x-xbm;image/jpeg;
    image/x-bmp;image/png;image/x-ico;image/x-portable-bitmap;
    image/x-portable-pixmap;image/x-portable-greymap;
    image/tiff;image/jp2

`kuickshow.desktop`:

    MimeType=image/gif;image/x-xpm;image/x-xbm;image/jpeg;
    image/png;image/tiff;image/x-bmp;image/x-psd;image/x-eim;
    image/x-portable-bitmap;image/x-portable-pixmap;
    image/x-portable-greymap

Oba mogu da otvaraju `image/gif`. Koji se onda koristi za otvaranje GIF fajla?

Program sa najvišim prvenstvom. `kview.desktopkview.desktop` sadrži

    InitialPreference=3

dok `kuickshow.desktop` sadrži

    InitialPreference=6

Stoga će se Kuickshow koristiti za otvaranje GIF fajlova.

Kako da zadamo K‑prikaz kao podrazumevan?

Pridruženje fajlu korisnik može da izmeni u Kontrolnom centru. Te izmene se skladište u `$`HOME`/.kde/share/config/profilerc`. Da biste sačuvali iste postavke za više korisnika, sačuvajte ih u fascikli profila korisnika ili globalnoj postavnoj fascikli KDE‑a da se koriste kao podrazumevane za više korisnika.

## Zaključavanje KDE‑a

### Kako funkcioniše — osnove

KDE‑ove mogućnosti zaključavanja koncentrisane su oko sledećih opcija:

- Učinite nepromenljivim postavne opcije

- Ograničenja za pojedine radnje

- Ograničite pristup izvesnim URL‑ovima

- Ograničite pristup izvesnim postavnim modulima

### Nepromenljive postavne opcije

Zaključavanje KDE‑a

Nepromenljive opcije omogućavaju sistem-administratoru da obezbedi podrazumevane postavke koje korisnik ne može menjati.

Kad se postavna opcija učini nepromenljivom, korisnikove postavne opcije koje su prethodno postojale biće ignorisane.

Opcije se mogu kontrolisati po stavci, po grupi stavki, ili po fajlu.

Ako su fajl ili grupa nepromenljivi, nepromenljive su sve postavne opcije za taj fajl ili grupu, čak i one za koje sistem-administrator nije obezbedio podrazumevane.

Podrška u programima za nepromenljive opcije može da varira od programa do programa. Iako korisnik neće moći da vrši trajne izmene u nepromenljivim postavnim opcijama, ipak može dobiti opciju korisničkog sučelja da izvrši jednu takvu izmenu.

### Ograničenja radnji

KDE programi izgrađeni su oko koncepta radnji. Radnje se mogu aktivirati na razne načine, tipično preko trake menija, neke od traka alatki ili prečicom sa tastature. Primer je radnja Sačuvaj dokument. Radnju je moguće ograničiti ako znate njeno unutrašnje ime. Kad je radnja jednom ograničena, više se neće pojavljivati na traci menija ili traci alatki. Unutrašnje ime radnje Sačuvaj dokument glasi `action/file_save`. Radni okvir za zaključavanje takođe obezbeđuje skup apstraktnijih ograničenja, koja se mogu koristiti da isključe funkcionalnost koja nije pokrivena pojedinačnom radnjom. Primer je ograničenje `shell_access`, koje isključuje svu funkcionalnost koja bi pružila korisnički pristup unix školjci.

#### Ograničite korisnički pristup školjkama

Da bismo sprečili korisnički pristup komandnoj školjci, možemo ograničiti radnju `shell_access` tako što ćemo u `kdeglobals` dodati:

    [KDE Action Restrictions]
    shell_access=false

Pošto ovo utiče na KMenu i raspoložive programe, moramo primorati ažuriranje baze podataka Sycoce:

    touch$KDEDIR/share/services/update_ksycoca

Sada se ponovo prijavimo u KDE i proverimo sledeće:

- KMenu

- U K‑osvajaču, Alatke Otvori terminal

- Alt F2 izvršava naredbu

Puna dokumentacija o raspoloživim radnjama može se naći na http://www.kde.org/areas/sysadmin/.

Dole je navedeno nekoliko zanimljivijih radnji:

`action/options_configure`

  Opcija Podesi <program>... iz menija Postavke

`action/help_report_bug`

  Opcija Prijavi grešku iz menija Pomoć.

`action/kdesktop_rmb`

  Kontekstni meni (desni klik) površi.

`action/kicker_rmb`

  Kontekstni meni (desni klik) panela.

`user/root`

  Sakrijte sve radnje ili programe koji zahtevaju koreni pristup.

`shell_access`

  Sakriva sve radnje ili programe koji obezbeđuju pristup školjci.

`print/system`

  Isključuje opciju odabira štamparskog sistema (pozadine).

`lock_screen`

  Da li će korisnik moći da zaključa ekran

`start_new_session`

  Da li korisnik može da pokrene drugu sesiju X‑a (takođe v. KDM)

`opengl_screensavers`

  Da li se dozvoljavaju openGL čuvari ekrana.

`manipulatescreen_screensavers`

  Dozvoljava čuvare ekrana koji ne skrivaju ceo ekran

### Ograničenja URL‑ova

Postoje tri vrste ograničenja koje se mogu primeniti na URL‑ove:

listanje

  kontrola da li je dozvoljeno listanje fascikli.

otvaranje

  kontrola mogućnosti otvaranja izvesnih URL‑ova

preusmeravanje

  kontrola da li jedan URL može da otvori drugi, bilo automatski ili pomoću hiperveze.

Pravila se proveravaju po redosledu kojim su definisana. Poslednje primenjeno pravilo definiše da li se URL‑u može pristupiti.

Sledeća pravila isključuju otvaranje HTTP i HTTPS URL‑ova izvan .ourcompany.com:

    [KDE URL Restrictions]
    rule_count=2
    rule_1=open,,,,http,,,false
    rule_2=open,,,,http,*.ourcompany.com,,true

Prve četiri zapete preskaču kriterijume izbora koji se tiču izvornog URL‑a. Ovaj je deo potreban samo kod pravila za preusmeravanje.

`rule_1` zabranjuje otvaranje bilo kog HTTP ili HTTPS URL‑a

`rule_2` dopušta otvaranje bilo kog HTTP i HTTPS URL‑a u domenu .ourcompany.com. Imajte u vidu da je džoker * dozvoljen samo na početku domena.

Sledeća pravila sprečavaju korisnika da pregleda fascikle na lokalnom fajl sistemu koje su izvan njegove domaće fascikle ($`HOME`):

    [KDE URL Restrictions]
    rule_count=2
    rule_1=list,,,,file,,,false
    rule_2=list,,,,file,,$HOME,true

`rule_1` zabranjuje listanje bilo koje lokalne fascikle

`rule_2` dopušta listanje fascikli pod korisnikovom fasciklom $`HOME`.

$`HOME` i $`TMP` su posebne vrednosti koje pokazuju domaću i KDE‑ovu privremenu fasciklu za korisnika, npr. `/tmp/kde-bastian`

Sledeća pravila sprečavaju korisnika da otvara lokalne fajlove koji su izvan njegove domaće fascikle:

    [KDE URL Restrictions]
    rule_count=3
    rule_1=open,,,,file,,,false
    rule_2=open,,,,file,,$HOME,true
    rule_3=open,,,,file,,$TMP,true

`rule_1` zabranjuje otvaranje bilo kog lokalnog fajla

`rule_2` dopušta otvaranje fajlova pod korisnikovom fasciklom $`HOME`.

`rule_3` dopušta otvaranje fajlova u KDE‑ovoj privremenoj fascikli korisnika. Ovo treba nekim KDE programima, koji prvo preuzimaju fajl ili dokument u privremenu fasciklu, pa ga zatim otvaraju.

Opcija preusmeravanja kontroliše da li dokumenti sa izvesne lokacije mogu uputiti, automatski ili ručno preko hiperveze, na neku drugu lokaciju. Kao opšta mera bezbednosti, postoji skup podrazumevanih pravila. Na primer, dokumenti na Internetu ne mogu da upućuju na lokalno uskladištene dokumente.

Da bismo, na primer, intranet serveru www.mycompany.com dali mogućnost upućivanja na lokalne fajlove, dodali bismo sledeće pravilo:

    [KDE URL Restrictions]
    rule_count=1
    rule_1=redirect,http,www.mycompany.com,,file,,,true

Umesto da navođenja protokola po imenu, moguće je takođe odrediti celu grupu protokola. U tu svrhu, definisane su sledeće grupe:

`:local`

  Protokoli koji pristupaju lokalno uskladištenim informacijama. Primeri: `file:/`, `man:/`, `fonts:/`, `floppy:/`

`:internet`

  Uobičajeni internet protokoli, kao HTTP i FTP

Podaci o protokolima skladište se u `*.protocol` fajlovima, u fascikli `$`KDEDIR`/share/services`.

Unos `Class`= definiše grupu koje je protokol deo: ``grep` `Class=` `$`KDEDIR`/share/services/*.protocol``

Opšta pravila:

- Lokalni protokoli mogu uputiti na bilo koji drugi protokol

- Uvek je dozvoljeno uputiti na internet protokole

- Nisu svi protokoli deo neke grupe, na primer `fish:/`.

### Moduli za podešavanje

KDE poseduje module za podešavanje raznih aspekata okruženja. Moduli za podešavanje pojavljuju se u Kontrolnom centru, u dijalogu za podešavanje programa ili na oba mesta.

Modul za podešavanje proksija pojavljuje se u Kontrolnom centru, ali i kao deo K‑osvajačevog dijaloga za podešavanje.

Pojedinačni moduli za podešavanje mogu se pokrenuti naredbom ``kcmshell4` module`

Za pokretanje modula proksija izvršite:

- `kcmshell4` `kde-proxy.desktop`

- `kcmshell4` `proxy`

Ne koriste svi programi module za podešavanje, već je dijalog za podešavanje često nerazdvojivi deo samog programa.

Svi moduli za podešavanje, strogo govoreći, deo su KMeniju.

- Vidljivi moduli u Kontrolnom centru obično imaju .desktop fajl u `$`KDEDIR`/share/applications/kde` i poređani su pod skrivenim menijem Postavke-moduli iz fajla `kde-settings.menu`, uključenog iz `kde-essential.menu`

      kbuildsycoca4 --menutest2>  /dev/null | grep -i Postavke-moduli

- Programu svojstveni moduli obično imaju .desktop fajl pod `$`KDEDIR`/share/applnk/.hidden` koji odgovara skrivenom meniju `.hidden`, uključenom kao rezultat <KDELegacyDirs>

      kbuildsycoca4 --menutest2> /dev/null | grep .hidden .hidden

- U KDE‑u 3.3 moguće je uređivati Kontrolni centar Uređivačem K‑kontrole. Uređivač K‑kontrole radi isto kao Uređivač KMenija, i izmene važe samo za trenutnog korisnika. Koristite Admin-alatku Kioska da načinite izmene za sve.

Pojedinačni moduli za podešavanje mogu se isključiti dodavanjem u `kdeglobals`:

    [KDE Control Module Restrictions]
    module-id=false

Na primer, za isključenje modula proksija:

    [KDE Control Module Restrictions]
    kde-proxy.desktop=false

Potom u Kontrolnom centru i dijalogu za podešavanje K‑osvajača proverite da li je podešavanje proksija još uvek tamo.

## Lenji administrator

### Udaljeno deljenje površi

Udaljeno deljenje površi omogućava udaljenim korisnicima da vide i, opciono, kontrolišu površ trenutnog korisnika. Udaljenom korisniku mora se poslati pozivnica, a moguće je napraviti trajnu pozivnicu zaštićenu lozinkom. Ovo je idealno za timove tehničke podrške ili administratore, da bi imali pristup površima korisnika radi pretresanja i otklanjanja problema, ili vođenja korisnika kroz neki postupak.

Udaljeno deljenje površi uključuje dva programa: KRFB („KDE‑ov udaljeni kadrobafer“, VNC server) i KRDC („KDE‑ova veza s udaljenom površi“, VNC klijent).

KRFB može da koristi svaki korisnik da stvara pozivnice i upravlja njima. Uz pozivnice se dobija jednokratna lozinka koja primaocu dopušta da se poveže na vašu površ. Ona podrazumevano važi za samo jedno uspešno povezivanje i ističe posle sat vremena ako se ne iskoristi.

KDED modul `kinetd` rukuje dolaznim vezama. Da li radi možete proveriti naredbom ``dcop` kded kinetd services`. KRFB podrazumevano čeka na veze na portu 5900. Kad je dolazna veza ostvarena, pojavljuje se dijalog koji traži potvrdu od trenutnog korisnika.

### „Uradi sam“ u KDE‑u — gradnja sopstvenih alatki

#### DCOP

Protokol za komunikaciju na radnoj površi, DCOP, lagani je mehanizam za međuprocesnu komunikaciju. DCOP omogućava korisniku interakciju sa programima u izvršavanju. KDE obezbeđuje dva programa za korišćenje DCOP‑a: naredbu komandne linije `dcop` i GUI program K‑DCOP.

Nekoliko beleški o naredbi `dcop`:

- ``dcop` [opcije] [program [objekat [funkcija [arg1] [arg2] ... ] ] ]`

- Programi koji mogu da otvore više od jednog prozora istovremeno biće navedeni kao `<program>-PID`

- Svi argumenti razlikuju veličinu slova. Npr. `setFullScreen` i `setfullscreen` dve su različite funkcije.

- Token * regularnih izraza može se koristiti u programu i argumentima objekta.

      % dcop kon*
      konqueror-16006
      konsole-8954

Neke naredbe za primer i njihov izlaz:

    % dcop konsole*
    konsole-8954

Primerak Konsole u radu sa PID‑om 8954.

    % dcop konsole-8954
    KBookmarkManager-.../share/apps/kfile/bookmarks.xml
    KBookmarkManager-.../share/apps/konqueror/bookmarks.xml
    KBookmarkNotifier
    KDebug
    MainApplication-Interface
    konsole (default)
    konsole-mainwindow#1
    ksycoca
    session-1
    session-2
    session-3
    session-4

Ovde možete videti da ima četiri tekuće sesije.

    % dcop konsole-8954 konsole
    QCStringList interfaces()
    QCStringList functions()
    int sessionCount()
    QString currentSession()
    QString newSession()
    QString newSession(QString type)
    QString sessionId(int position)
    void activateSession(QString sessionId)
    void nextSession()
    void prevSession()
    void moveSessionLeft()
    void moveSessionRight()
    bool fullScreen()
    void setFullScreen(bool on)
    ASYNC reparseConfiguration()

Opcije za glavni program Konsole.

    % dcop konsole-8954 session-1
    QCStringList interfaces()
    QCStringList functions()
    bool closeSession()
    bool sendSignal(int signal)
    void clearHistory()
    void renameSession(QString name)
    QString sessionName()
    int sessionPID()
    QString schema()
    void setSchema(QString schema)
    QString encoding()
    void setEncoding(QString encoding)
    QString keytab()
    void setKeytab(QString keyboard)
    QSize size()
    void setSize(QSize size)

Opcije za prvu sesiju, `session-1`.

    % dcop konsole-8954 konsole setFullScreen true

Postavlja Konsolu preko celog ekrana.

Ako ima više od jednog programa ili objekta, koji da upotrebite? Imate li upućivač?

    % echo $KONSOLE_DCOP
    DCOPRef(konsole-7547,konsole)

    % dcop $KONSOLE_DCOP newSession
    session-6

    % dcopstart konsole
    konsole-9058

    #!/bin/sh
    konsole=$(dcopstart konsole-script)
    session=$(dcop $konsole konsole currentSession)
    dcop $konsole $session renameSession Local

    session=$(dcop $konsole konsole newSession)
    dcop $konsole $session renameSession Remote

    session=$(dcop $konsole konsole newSession)
    dcop $konsole $session renameSession Code
    dcop $konsole $session sendSession 'cd /my/work/directory'

#### K‑dijalog

„Uradi sam“ u KDE‑u — gradnja sopstvenih alatki

Možete koristiti KDE dijaloge u sopstvenim skriptama, kombinujući moć skriptovanja unix školjke sa lakoćom korišćenja KDE‑a.

    kdialog --msgbox 'Stigla vam je pošta!'

    kdialog --title 'Nova pošta' --msgbox 'Stigla vam je pošta!'

K‑dijalog deo može se zameniti opcijom `--caption`

    kdialog --title 'Nova pošta' --msgbox 'Stigla vam je pošta!' --dontagain myfile:mykey

Upisuje u `$`KDEHOME`/share/config/myfile` da li da ponovo pokaže dijalog (dodavanjem u fajl sledećih redova:

    [Notification Messages]
    mykey=false

Umesto `--msgbox` možete, kad odgovara, koristiti i `--sorry` i `--error`. Na primer, mogli biste upotrebiti ``kdialog` `--sorry 'Mreža se ne može doseći'``, ili ``kdialog` `--error 'Ne mogu da otvorim poštansko sanduče'``.

Takođe je moguće stvoriti dijaloge s porukom koji prihvataju odgovor „da“ ili „ne“.

    kdialog --yesno 'Želite li da se povežete
    na Internet?' echo $?

povratna vrednost | značenje
--- | ---
0 | Da, U redu, Nastavi
1 | ne
2 | Odustani

Pazite da zapamtite rezultat u promenljivu ako ga ne koristite neposredno, pošto će sledeća naredba popuniti `$?` novom vrednošću. Ovde takođe možete koristiti `--dontagain`, koja će zapamtiti korisnikov izbor i vratiti ga sledeći put bez prikazivanja dijaloga.

Dalje varijacije su:

`--warningyesno`

  kao `--yesno` ali sa drugačijom ikonom

`--warningcontinuecancel`

  Sa dugmadima Nastavi i Odustani.

`--warningyesnocancel`

  Sa dugmadima Da, Ne i Odustani. Na primer:

      kdialog --warningyesnocancel 'Želite li
      da sačuvate izmene?'

    kdialog --inputbox 'Unesite ime:' 'vaše ime'

Rezultat se ispisuje na stdiz, a u promenljivu ga možete staviti pomoću `name=$(kdialog --inputbox 'Unesite ime' 'vaše ime')`. Poslednji argument je opcion, koristi se da pretpopuni dijalog.

    password=$(kdialog --password 'Unesite lozinku:')

Opcija `--dontagain` ne radi uz `--inputbox` ili `--password`

Postoje dva dijaloga kojima korisnik može birati sa spiska:

`--menu`

  Omogućava korisniku da izabere stavku sa spiska.

`--checklist`

  Omogućava korisniku da izabere jednu ili više stavki sa spiska.

    city=$(kdialog --menu 'Izaberite grad' a London b Madrid c Pariz d Beograd)

`$city` će biti a, b, c ili d.

    city=$(kdialog --checklist 'Izaberite gradove' a London off b Madrid on c Pariz off d Beograd on)

Madrid i Beograd će biti predodabrani. Rezultat sa izabranim Madridom i Beogradom biće 'b' 'd'.

Ako dodate opciju `--separate-output`, staviće b i d svako u svoj red, što olakšava obradu rezultata.

    file=$(kdialog --getopenfilename $HOME)
    file=$(kdialog --getopenfilename $HOME "*.png *.jpg|Fajlovi slika")
    file=$(kdialog --getsavefilename $HOME/SaveMe.png)
    file=$(kdialog --getexistingdirectory $HOME)

&groupware-with-kontact;