Razlika između inačica stranice DWM
(→Istalacija) |
|||
Redak 4: | Redak 4: | ||
=Instalacija= | =Instalacija= | ||
− | Ovdje ćemo obraditi instalaciju iz repozitorija samo | + | Ovdje ćemo obraditi instalaciju iz repozitorija samo za Arch Linux te u Debian i njegove derivate. |
Imajete na umu da je jedini naćin uređivanja i prilagođavanja DWM-a u uređivanju source koda što je moguće ukoliko ste DWM instalirali kompajliranjem iz sourca te će se ostatak članka oslanjati upravo i na tu opciju. | Imajete na umu da je jedini naćin uređivanja i prilagođavanja DWM-a u uređivanju source koda što je moguće ukoliko ste DWM instalirali kompajliranjem iz sourca te će se ostatak članka oslanjati upravo i na tu opciju. | ||
Redak 32: | Redak 32: | ||
sudo make install</pre> | sudo make install</pre> | ||
− | Također potrebno je instalirati i | + | Također potrebno je instalirati i dmenu čiju najnoviju inačicu možete skinuti također sa sucklessove stranice te kompajlirati. |
=Konfiguracija= | =Konfiguracija= |
Inačica od 15:29, 22. listopada 2011.
Sadržaj
DWM
DWM je dinamičan upravitelj prozorima ( dynamic window manager) za X.Prozorima upravlja u tiled,stacked i full-screen rasporedu ( popločen,složen i po cijelom zaslonu) kao i na mnoge druge naćine uz pomoć opcionalnih patcheva.Layout se primjenjuje dinamički, optimizirajući sučelje trenutno korištene aplikacije te prema trenutnoj potrebi.DWM je vrlo lagan i brz, pisan u C-u i sa dizajnerskom zadaćom da nesmije nikada premašiti 2000 linija koda.Također pruža potporu za xrandr and Xineramu.
Instalacija
Ovdje ćemo obraditi instalaciju iz repozitorija samo za Arch Linux te u Debian i njegove derivate. Imajete na umu da je jedini naćin uređivanja i prilagođavanja DWM-a u uređivanju source koda što je moguće ukoliko ste DWM instalirali kompajliranjem iz sourca te će se ostatak članka oslanjati upravo i na tu opciju.
Arch Linux
DWM se ne nalazi u službenim repozitorijima, već se mora vući iz AUR-a ili preko archlinux.fr repozitorija.
pacman -S dwm
yaourt dwm
Uz dwm će vam zatrebati i meni pa bi bilo pametno da instalirate i dmenu
pacman -S dmenu
Debian i Debianovi derivati
Kod Debiana DWM se nalazi unutar službenih repozitorija te ga je dovoljno povući.
sudo apt-get install dwm dmenu
Kompajliranje
Sa http://dl.suckless.org/dwm/dwm-5.9.tar.gz se skine source kod.Skinuta arhiva se raspakira u direktorij ~/.dwm te se uđe u novonastali direktoriji i kompajlira se uobičajenim postupkom
cd ~/.dwm make sudo make install
Također potrebno je instalirati i dmenu čiju najnoviju inačicu možete skinuti također sa sucklessove stranice te kompajlirati.
Konfiguracija
Kao što je već ranije spomenuto DWM ima ekskluzivan pristup konfiguraciji prilikom kompajliranja te je stoga ukoliko želite mjenjati definicije,boje,izgled pametno raditi instalaciju preko izvornog koda putem kompajliranja ( traje točno 76 sekunda). Svaka promjena izgleda,boja i definicija vrši se u config.h datoteci koja je smještena u ~/.dwm direktoriju kojeg smo definirali prilikom instalacije.Evo i primjera jedne ovakve datoteke
/* See LICENSE file for copyright and license details. */ /* appearance */ static const char font[] = "-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*"; static const char normbordercolor[] = "#070707"; static const char normbgcolor[] = "#070707"; static const char normfgcolor[] = "#696969"; static const char selbordercolor[] = "#3A3A3A"; static const char selbgcolor[] = "#3A3A3A"; 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 = False; /* False means bottom bar */ /* tagging */ static const char *tags[] = { "term", "web", "files", "multimedia", "office", "fax", "work", "devl", "vbox" }; static const Rule rules[] = { /* class instance title tags mask isfloating monitor */ { "Gimp", NULL, NULL, 0, True, -1 }, { "Vbox", 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 MOD4 Mod4Mask #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", "-i", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; static const char *termcmd[] = { "xterm -e tmux", NULL }; static const char *thunarcmd[] = { "thunar", NULL }; static const char *rebootcmd[] = { "sudo", "reboot", NULL }; static const char *shutdowncmd[] = { "sudo", "shutdown", "-h", "now", NULL }; static const char *webcmd[] = { "firefox", NULL }; static const char *mailcmd[] = { "thunderbird", NULL }; static const char *volupcmd[] = { "volup", NULL }; static const char *voldowncmd[] = { "voldown", NULL }; static const char *volwhatcmd[] = { "volumes_what", NULL }; static Key keys[] = { /* modifier key function argument */ { MODKEY, XK_v, spawn, {.v = dmenucmd } }, { MODKEY, XK_Return, spawn, {.v = termcmd } }, { MODKEY, XK_Up, spawn, {.v = volupcmd } }, { MODKEY, XK_Down, spawn, {.v = voldowncmd } }, { 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_Tab, view, {0} }, { MODKEY, XK_c, killclient, {0} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY, XK_comma, focusmon, {.i = -1 } }, { MODKEY, XK_period, focusmon, {.i = +1 } }, // alt + shift + key { MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, { MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, { MODKEY|ShiftMask, XK_Return, zoom, {0} }, /* swap master */ { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, { MODKEY|ShiftMask, XK_h, setlayout, {.v = &layouts[0]} }, /* to change layouts horizontal*/ { MODKEY|ShiftMask, XK_f, setlayout, {.v = &layouts[1]} }, /* floating */ { MODKEY|ShiftMask, XK_m, setlayout, {.v = &layouts[2]} }, /* monocle */ { MODKEY|ShiftMask, XK_v, setlayout, {.v = &layouts[3]} }, /* vertical */ { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, // alt + control + key { MODKEY|ControlMask, XK_r, spawn, {.v = rebootcmd } }, { MODKEY|ControlMask, XK_s, spawn, {.v = shutdowncmd } }, // Super + key { MOD4, XK_h, spawn, {.v = thunarcmd } }, { MOD4, XK_f, spawn, {.v = webcmd } }, { MOD4, XK_e, spawn, {.v = mailcmd } }, { MOD4, XK_v, spawn, {.v = volwhatcmd } }, 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|ControlMask, 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} }, };
Pokretanje
Pokretanje je vrlo jednostavno i ono ovisi o naćinu na koj pokrećete X na svom računalu.
Za pokretanje preko startx naredbe ili putem SLIM managera potrebno je urediti .xinitrc datoteku na naćin da se na njen kraj doda naredbaexec dwm. Također ukoliko želite koristiti xfce4-power-manager i polkit pravila odnosno dbus umjesto
exec dwmkoristite
exec ck-launch-session bash -c "xfce4-power-manager & dwm".
Puno bolji i elegantniji način je kreiranjem datoteke ~/bin/startdwm u koju se utrpaju sve aplikacije koje želite pokrenuti prilikom podizanja X-a
te pozivanjem nje preko .xinitrc skripteexec ck-launch-session dbus-launch --sh-syntax --exit-with-session ~/bin/startdwm.
Aplikacije pokrenute na taj način će sve imati polkit/dbus dodjeljena prava.Primjer takve .xinitrc datoteke je
#!/bin/bash #this file is called by .xinitrc to start some nice apps for dwm xrdb -merge ~/.Xresources & xfce4-power-manager & sh ~/.fehbg & while true; do xsetroot -name "$(date +"%a %d.%m/%H:%M:%S") $(df -h|grep root|awk '{print $4}')" sleep 1 done & while true; do dwm || exit done
Konfiguracija statusne trake
Osnovna traka
Ovaj primjer ispisuje vrijeme u ISO 8601 formatu. Dodaje se u ~/.xinitrc
while true; do xsetroot -name "$( date +"%F %R" )" sleep 1m # Update time every minute done & exec dwm
Također jedan primjer za laptop korisnike
while true ; do xsetroot -name "$( acpi -b | awk '{ print $3, $4 }' | tr -d ',' )" sleep 1m done & exec dwm
Conky kao statusna traka
Conky se može ispisati na na statusbar pomoću xsetroot -name
conky | while read -r; do xsetroot -name "$REPLY"; done & exec dwm
Da bi to radilo potrebno je natjerati Conky da radi output samo u konzoli
out_to_console yes out_to_x no background no update_interval 2 total_run_times 0 use_spacer none TEXT $mpd_smart :: ${cpu cpu1}% / ${cpu cpu2}% ${loadavg 1} ${loadavg 2 3} :: ${acpitemp}c :: $memperc% ($mem) :: ${downspeed eth0}K/s ${upspeed eth0}K/s :: ${time %a %b %d %I:%M%P}
Osnovno korištenje
Dmenu je vrlo koristan dodatak za DWM. Kvalitetnijji je i brži nego standardni drop-down izbornici paketa. Radi na principu automatskog dovršavanja te upisivanjem imena paketa.Za pokretanje treba pritisnuti MOD1 + P ( MOD1 tipka je standardno Alt tipka).Kombinaciju možete dakako promjeniti prema vlastitom izboru.Osobno, nekako mi je praktičnije da to bude Win tipka + spacebar.
Kontroliranje prozora
Micanje prozora sa jednog taga n a drugi tag je vrlo jednostavno.Dovedite prozor u stanje levitiranja mišem ( dovedite kurzor miša nad prozor te kliknite na njega) pa zatim odradtite kombinaciju tipaka Shift+Alt+x gdje je x broj taga na koj želite postaviti prozor.
Zatvaranje prozora
Za zatvarenje prozora pritisnite Shift+Mod1+C
Raspored prozora
Nativno će DWM raditi u tiling modu. To možete primjetiti promatrajući stare prozore kako postaju manji i manji kako se otvaraju novi prozori. Prozori će zajedno zauzeti cijeli display umenjen za statusnu traku.Uz tiling mod postoje nativno još dvije opcije, floating i monocle. Floating je naćin rada sa prozorima na koj su navikli korisnici koncencionalnih upravitelja desktopom kako KDE,GNOME,LXDE,XFCE ili pak nekih popularnih upraviteljima prozora( OpenBox,FluxBox,IceWM).Za prebacivanjen u takav naćin rada potrebno je pritisnuti kombinaciju Mod1+F. Za prebacivanje u monocle mod potrebno je pritisnuti Mod1+M. Na statusnoj traci možete provjeri i u kojem ste modu. M je za monocle, F je floating a []= je tiling mod. Za povratakk u tiling mod je kombinacija Mod1+T.
Izlazak
Za izlazak je potrebno pritisnuti Shift+Mod1+Q
Dodatne opcije i patchevi
Na službenoj stranici nalazi se mnoštvo patcheva koji omogučuju nove načine definicija upravljanja prozorima kao logaritamska spirala,gravitacija,Fibonaccieva spirala,bstock,mreža,.... Također se na službenj stranici nalazi i vrlo kavlitetno objašnjenje kako primjeniti patcheve pa neću trošiti suvišne redove na to. Nativno će DWM primjeniti isti raspored prozora ne sve agove.Da bi omogučili za svaki tag poseban raspored potrebno je primjeniti patch pertag.