Dwm

Iz projekta Ubuntu-RS Wiki
Idi na: navigacija, pretraga
 
Linija 1: Linija 1:
{{rut}}
+
__TOC__
 
=Dwm=
 
=Dwm=
[[Slika:Dwm.jpeg|right|thumb|dwm menadžer prozora v5.8.2]]
+
[[Slika:Dwm.png‎|right|thumb|dwm menadžer prozora v5.9]]
 
[http://dwm.suckless.org/ Dwm] je dinamični menadžer prozora koji je napravljen sa ciljem da bude:
 
[http://dwm.suckless.org/ Dwm] je dinamični menadžer prozora koji je napravljen sa ciljem da bude:
 
* jednostavan
 
* jednostavan
Linija 9: Linija 9:
 
* sa mogućnošću primene [http://dwm.suckless.org/patches pečeva i dodataka] za proširivanje mogućnosti samog menadžera
 
* sa mogućnošću primene [http://dwm.suckless.org/patches pečeva i dodataka] za proširivanje mogućnosti samog menadžera
  
Program je zamišljen tako da ne koristi eksterne datoteke za konfiguraciju i da se sve nalazi u samom programu čime se izbegavaju ranjivosti unutar istog. Svaka izmena konfiguracije od vas zahteva da ponovo prevedete program iz izvornog koda.
+
Program je zamišljen tako da ne koristi eksterne datoteke za konfiguraciju i da se sve nalazi u samom programu čime se izbegavaju ranjivosti unutar istog. Svaka izmena konfiguracije od vas zahteva da ponovo prevedete program iz izvornog koda. Svaki prozor dobija određene oznake (en. "tag") a prozore aranžira na "tiling način" tj. koristi kompletnu raspoloživu radnu površinu i slaže prozore u mrežu jedan do drugoga na načink koji može korisnik da definiše (standardna mreža, horizontalno slaganje, spirala...). Može se reći da dwm "popločava" vašu radnu površinu prozorima čime se može postići velika produktivnost korisnika i lakša preglednost budući da prozori nisu sakriveni na radnoj površini već su uvek vidljivi. Prozor koji je aktivan će biti označen okvirom posebne boje koju korisnik može sam da promeni.
  
  
 +
==Instalacija dwm-a==
 +
Instalacija se može izvršiti na 2 načina:
 +
* prevođenjem iz izvornog koda
 +
* instaliranjem binarne verzije iz riznica
  
 +
Budući da se dwm prevodi u binarni oblik '''zajedno sa konfiguracijom''' naglasićemo da je najbolja varijanta da se program prevodi iz izvornog koda u binarni. Detalje možete videti ispod.
  
 +
====Instaliranje binarne verzije iz riznica====
 +
Instaliranje binarne verzije iz riznica se vrši komandom:
 +
  sudo apt-get install dwm
 +
ili
 +
  sudo aptitude install dwm
 +
 +
 +
====Instalacija prevođenjem izvornog u binarni kod + konfiguracija====
 +
Za početak je potrebno da preuzmete izvorni kod sa sledeće adrese: http://dl.suckless.org/dwm/ (poslednji fajl je obično najnoviji dwm). Raspakujte arhivu na željenu lokaciju i prebacite se na istu u vašem terminalu (primer: cd ~/dwm-5.8.2).
 +
 +
Da bi podesili vaš dwm neophodno je da prekopirate ''config.def.h'' u ''config.h'' i da ga otvorite u uređivaču teksta koji koristite. Sadžaj te konfiguracije izgleda ovako:
 +
 +
 +
      /* See LICENSE file for copyright and license details. */
 +
     
 +
      /* appearance */
 +
      static const char font[]            = "-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*";
 +
      static const char normbordercolor[] = "#cccccc";
 +
      static const char normbgcolor[]    = "#cccccc";
 +
      static const char normfgcolor[]    = "#000000";
 +
      static const char selbordercolor[]  = "#0066ff";
 +
      static const char selbgcolor[]      = "#0066ff";
 +
      static const char selfgcolor[]      = "#ffffff";
 +
      static const unsigned int borderpx  = 1;        /* border pixel of windows */
 +
      static const unsigned int snap      = 32;      /* snap pixel */
 +
      static const Bool showbar          = True;    /* False means no bar */
 +
      static const Bool topbar            = True;    /* False means bottom bar */
 +
     
 +
      /* tagging */
 +
      static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 +
      static const Rule rules[] = {
 +
        /* class      instance    title      tags mask    isfloating  monitor */
 +
        { "Gimp",    NULL,      NULL,      0,            True,        -1 },
 +
        { "Firefox",  NULL,      NULL,      1 << 8,      False,      -1 },
 +
      };
 +
     
 +
      /* layout(s) */
 +
      static const float mfact      = 0.55; /* factor of master area size [0.05..0.95] */
 +
      static const Bool resizehints = True; /* True means respect size hints in tiled resizals */
 +
      static const Layout layouts[] = {
 +
        /* symbol    arrange function */
 +
        { "[]=",      tile },    /* first entry is default */
 +
        { "><>",      NULL },    /* no layout function means floating behavior */
 +
        { "[M]",      monocle },
 +
      };
 +
     
 +
      /* key definitions */
 +
      #define MODKEY Mod1Mask
 +
      #define TAGKEYS(KEY,TAG) \
 +
        { MODKEY,                      KEY,      view,          {.ui = 1 << TAG} }, \
 +
        { MODKEY|ControlMask,          KEY,      toggleview,    {.ui = 1 << TAG} }, \
 +
        { MODKEY|ShiftMask,            KEY,      tag,            {.ui = 1 << TAG} }, \
 +
        { MODKEY|ControlMask|ShiftMask, KEY,      toggletag,      {.ui = 1 << TAG} },
 +
     
 +
      /* helper for spawning shell commands in the pre dwm-5.0 fashion */
 +
      #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
 +
     
 +
      /* commands */
 +
      static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
 +
      static const char *termcmd[]  = { "uxterm", NULL };
 +
      static Key keys[] = {
 +
        /* modifier                    key        function        argument */
 +
        { MODKEY,                      XK_p,      spawn,          {.v = dmenucmd } },
 +
        { MODKEY|ShiftMask,            XK_Return, spawn,          {.v = termcmd } },
 +
        { MODKEY,                      XK_b,      togglebar,      {0} },
 +
        { MODKEY,                      XK_j,      focusstack,    {.i = +1 } },
 +
        { MODKEY,                      XK_k,      focusstack,    {.i = -1 } },
 +
        { MODKEY,                      XK_h,      setmfact,      {.f = -0.05} },
 +
        { MODKEY,                      XK_l,      setmfact,      {.f = +0.05} },
 +
        { MODKEY,                      XK_Return, zoom,          {0} },
 +
        { MODKEY,                      XK_Tab,    view,          {0} },
 +
        { MODKEY|ShiftMask,            XK_c,      killclient,    {0} },
 +
        { MODKEY,                      XK_t,      setlayout,      {.v = &layouts[0]} },
 +
        { MODKEY,                      XK_f,      setlayout,      {.v = &layouts[1]} },
 +
        { MODKEY,                      XK_m,      setlayout,      {.v = &layouts[2]} },
 +
        { MODKEY,                      XK_space,  setlayout,      {0} },
 +
        { MODKEY|ShiftMask,            XK_space,  togglefloating, {0} },
 +
        { MODKEY,                      XK_0,      view,          {.ui = ~0 } },
 +
        { MODKEY|ShiftMask,            XK_0,      tag,            {.ui = ~0 } },
 +
        { MODKEY,                      XK_comma,  focusmon,      {.i = -1 } },
 +
        { MODKEY,                      XK_period, focusmon,      {.i = +1 } },
 +
        { MODKEY|ShiftMask,            XK_comma,  tagmon,        {.i = -1 } },
 +
        { MODKEY|ShiftMask,            XK_period, tagmon,        {.i = +1 } },
 +
        TAGKEYS(                        XK_1,                      0)
 +
        TAGKEYS(                        XK_2,                      1)
 +
        TAGKEYS(                        XK_3,                      2)
 +
        TAGKEYS(                        XK_4,                      3)
 +
        TAGKEYS(                        XK_5,                      4)
 +
        TAGKEYS(                        XK_6,                      5)
 +
        TAGKEYS(                        XK_7,                      6)
 +
        TAGKEYS(                        XK_8,                      7)
 +
        TAGKEYS(                        XK_9,                      8)
 +
        { MODKEY|ShiftMask,            XK_q,      quit,          {0} },
 +
      };
 +
     
 +
      /* button definitions */
 +
      /* click can be ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
 +
      static Button buttons[] = {
 +
        /* click                event mask      button          function        argument */
 +
        { ClkLtSymbol,          0,              Button1,        setlayout,      {0} },
 +
        { ClkLtSymbol,          0,              Button3,        setlayout,      {.v = &layouts[2]} },
 +
        { ClkWinTitle,          0,              Button2,        zoom,          {0} },
 +
        { ClkStatusText,        0,              Button2,        spawn,          {.v = termcmd } },
 +
        { ClkClientWin,        MODKEY,        Button1,        movemouse,      {0} },
 +
        { ClkClientWin,        MODKEY,        Button2,        togglefloating, {0} },
 +
        { ClkClientWin,        MODKEY,        Button3,        resizemouse,    {0} },
 +
        { ClkTagBar,            0,              Button1,        view,          {0} },
 +
        { ClkTagBar,            0,              Button3,        toggleview,    {0} },
 +
        { ClkTagBar,            MODKEY,        Button1,        tag,            {0} },
 +
        { ClkTagBar,            MODKEY,        Button3,        toggletag,      {0} },
 +
      };
 +
 +
 +
 +
Konfiguracija je razumljiva ukoliko bacite pogled na istu. Objašnjenja se nalaze pored svake opcije i primeri već postoje. Naglasićemo par stvari:
 +
* za boje se koriste isključivo HEX boje (sa svih 6 karaktera) poput ''#003366'' ili ''#0000cc''
 +
* Tagovi (''static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };'' deo) mogu da sadže imena i da ne budu brojevi!
 +
* META taster zavisi od vaše konfiguracije sistema. Na nekim sistemimam je META taster "Win Key" odnosno taster za malim prozočićem dok je kod drugih levi ALT taster!
 +
 +
Da bi se dwm preveo u binarni kod neophodni su vam ''libx11-dev, libxinerama-dev, sharutils, libx11-dev, libxinerama-dev'' paketi koje možete instalirati sledećom komandom:
 +
  sudo apt-get install libx11-dev libxinerama-dev sharutils libx11-dev libxinerama-dev
 +
ili
 +
  sudo aptitude install libx11-dev libxinerama-dev sharutils libx11-dev libxinerama-dev
 +
 +
Prevođenje izvornog koda dwm-a u binarni se vrši na sledeći način:
 +
  ./make clean install
 +
 +
 +
==Pokretanje dwm-a==
 +
Da bi se dwm pokrenuo neophodno je da pokrenete X server. Pokretanje može da se izvrši automatski ukoliko imate program za prijavljivanje na sistem (login manager) ili ručno iz terminala.
 +
 +
====Pokretanje dwm-a preko programa za prijavljivanje na sistem (login manager)====
 +
Da bi pokrenuli dwm preko programa za prijavljivanje na sistem (Gdm, Kdm, Slim...) neophodno je da napravite dwm pokretač koji će biti prepoznat od strane ovih programa. Da bi to uradili neophodno je da napravite ''dwm.desktop'' (ime je proizvoljno ali ekstenzija "desktop" mora da postoji) u ''/usr/share/xsessions'' sledećeg sadržaja:
 +
  [Desktop Entry]
 +
  Encoding=UTF-8
 +
  Name=Dwm
 +
  Comment=Dynamic window manager
 +
  Exec=xinit
 +
  Icon=dwm.png
 +
  Type=XSession
 +
 +
Obratite pažnju na to da ovakav pokretač dwm-a se oslanja potpuno na vaš ~/.xinitrc fajl.
 +
 +
=====Pokretači za dwm unutar ~/.xinitrc datoteke=====
 +
Da bi uspešno pokrenuli dwm preko xinit fajla možete, '''na kraju tog fajla''', da dodate sledeće:
 +
  dwm &
 +
 +
Ukoliko želite da se dwm pokrene čak i kada ga ugasite, možete da koristite sledeću komandu:
 +
  while true
 +
  do
 +
    dwm
 +
  done
 +
 +
Dwm može da loguje i greške prilkom rada sa sledećom komandom:
 +
  while true
 +
  do
 +
    dwm 2> ~/.dwm.log
 +
  done
 +
Ova komanda će da upisuje logove u ''~/.dwm.log''
 +
 +
Na kraju, dwm može da na svom panelu prikazuje izlazne infomarcije koje ostavlja conky-cli program. Komanda za to je:
 +
  conky | while read -r; do xsetroot -name "$REPLY"; done &
 +
  dwm &
 +
Prvi red '''mora''' da ide neposredno pre pokretanja dwm-a!
 +
 +
 +
====Pokretanje dwm-a iz konzole====
 +
Nakon prijavljivanja u konzolu, možete lako da pokrenete dwm kucanjem sledeće komande
 +
  startx
 +
 +
'''Važno:''' Da bi se uspešno pokrenuo dwm, neophodno je da podesite vaš ~/.xinitrc fajl (pogledati članak iznad)!
 +
 +
 +
==Pokretanje programa nakon pokretanja dwm-a (autostart)==
 +
Programi koje želite da pokrenete idu u ''~/.xinitrc'' fajl. Naglašavamo da je neophodno da se sve aplikacije pokrenu pre dwm-a i da isti mora da bude  pokrenut poslednji kako bi sve bilo kako treba. Primer podešenog ''~/.xinitrc'' fajla:
 +
 +
      #Set wallpaper
 +
      exec feh --bg-scale `cat ~/.desktop-background.txt` &
 +
     
 +
      #start Xdefaults manager
 +
      exec xrdb -all ~/.Xdefaults &
 +
     
 +
      #keyboard set
 +
      exec setxkbmap hr &
 +
      setxkbmap hr &
 +
     
 +
      #delay set
 +
      exec xset r rate 310 31 &
 +
      xset r rate 315 32 &
 +
     
 +
      #i kill X server :> (+keyboard)
 +
      exec setxkbmap -option terminate:ctrl_alt_bksp &
 +
      setxkbmap -option terminate:ctrl_alt_bksp &
 +
      setxkbmap -layout rs,rs -variant latin, -option compose:rwin,lv3:ralt_switch,grp:alt_ctrl_toggle &
 +
     
 +
      #app kill
 +
      killall mpd &
 +
      killall mpdscribble &
 +
     
 +
      #apps start
 +
      conky &
 +
      mpd &
 +
      mpdscribble &
 +
      #stalonetray &
 +
      firefox &
 +
     
 +
      #Other
 +
      export OOO_FORCE_DESKTOP=gnome &
 +
     
 +
      #exec desktop
 +
      while true
 +
      do
 +
      conky | while read -r; do xsetroot -name "$REPLY"; done &
 +
      # Log stderror to a file
 +
      dwm 2> ~/.dwm.log
 +
      # No error logging
 +
      #dwm >/dev/null 2>&1
 +
      done
 +
      #dwm
 +
 +
 +
====Podešavanje tapeta====
 +
Podešavanje tapeta se može vršiti sledećim komandama:
 +
  hsetroot putanja_do_vašeg_tapeta &
 +
 +
  display -size 1024x768 putanja_do_vašeg_tapeta &
 +
Gde je "1024x768" rezolucija ekrana koju koristite. Za ovo vam treba ImageMagick program.
 +
 +
  feh --bg-scale putanja_do_vašeg_tapeta &
 +
Gde "bg-scale" može biti "bg-center" (centrira tapet). Za ovo vam treba Feh pregledač slika.
 +
 +
 +
==Primenjivanje dodataka i pečeva za dwm==
 +
Da bi se proširile mogućnosti dwm-a, postoji pregršt dodataka i pečeva za isti. Na [http://dwm.suckless.org/patches/ strani sa pečevima] možete videti listu istih kao i kako da ih primenite na vaš dwm.
 +
 +
----
 +
1: [http://suckless.org/ http://suckless.org]  <br/>
 +
2: [http://dwm.suckless.org/ zvaničan sajt]  <br/>
 +
3: [http://man.suckless.org/dwm/1/dwm man strane] <br />
 +
4: [http://dwm.suckless.org/patches/ dodaci i pečevi]  <br/>
  
 
----
 
----
[http://suckless.org/ http://suckless.org]  <br/>
+
{{Korisnička dokumentacija}}
[http://dwm.suckless.org/ Zvaničan sajt dwm menadžera prozora]  <br/>
+
[http://dwm.suckless.org/patches/ dwm dodaci i pečevi]  <br/>
+
  
 +
{{aktuelne verzije}}
 
[[Category:Aplikacije]]
 
[[Category:Aplikacije]]
 +
[[Category:Saveti i trikovi]]

Tekuća izmena od 1. decembar 2011. u 11:49

Lični alati
Imenski prostori
Varijante
Akcije
Navigacija
alati
Linkovi