Dwm

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Dwm and the translation is 100% complete.


A dwm (dynamic window manager) egy dinamikus ablakkezelő az X11 számára, a suckless.org weboldalon lévő fejlesztőktől. A dwm egyetlen bináris fájl, és a forráskódja úgy lett tervezve, hogy soha ne haladja meg a 2000 SLOC-ot (sorban írt forráskód).

A dwm beállítása a C forráskód szerkesztésével és újrafordításával történik. A suckless weboldala azt állítja, hogy a projekt az előrehaladott és tapasztalt számítógép-felhasználókra fókuszál, és - talán ironikusan - hogy a forráskód szerkesztésén keresztül történő testreszabás "felhasználói körét kicsi és elitista szinten tartja".

Ablakmodell

A dwm egy dinamikus ablakkezelő, amely képes kezelni az ablakokat csempézett, monocle és lebegő elrendezésekben. Minden elrendezés dinamikusan alkalmazható, így az alkalmazás igényeihez és a végzett feladatokhoz optimalizálható a környezet.

Indítson el néhány parancssort a Shift + Alt + Enter billentyűgomb kombinációval, és a dwm csempézi az ablakokat a master és a stack között. Egy új parancssor megjelenik a master ablakban. A meglévő ablakok egy tömbbe kerülnek a képernyő jobb oldalára. A Alt + Enter váltja az ablakokat a master és a stack között.

   +------+----------------------------------+--------+
   | tags | title                            | status +
   +------+---------------------+------------+--------+
   |                            |                     |
   |                            |                     |
   |                            |                     |
   |                            |                     |
   |          master            |        stack        |
   |                            |                     |
   |                            |                     |
   |                            |                     |
   |                            |                     |
   +----------------------------+---------------------+

Telepítés

USE jelölőzászlók

USE flags for x11-wm/dwm a dynamic window manager for X11

savedconfig Use this to restore your config from /etc/portage/savedconfig ${CATEGORY}/${PN}. Make sure your USE flags allow for appropriate dependencies
xinerama Add support for querying multi-monitor screen geometry through the Xinerama API

A felhasználóknak érdemes megfontolniuk a savedconfig USE jelölőzászló engedélyezését annak érdekében, hogy a testre szabott beállításfájlt elmentsék a /etc/portage/savedconfig/x11-wm/dwm-6.0.h helyre későbbi szerkesztés céljából.

root #euse --enable savedconfig

A több monitort használó felhasználóknak érdemes engedélyezniük a xinerama USE jelölőszátlót, függetlenül attól, hogy használják-e a Xinerama szoftvert vagy sem.

root #euse --enable xinerama

Emerge

Telepítse a x11-wm/dwm szoftvercsomagot:

root #emerge --ask x11-wm/dwm

Beállítás

Indítás

The information in this section is probably outdated. You can help the Gentoo community by verifying and updating this section.

A dwm indításához használjon display manager-t vagy a startx parancsot.

Azoknak, akik a startx módszert választják, létre kell hozniuk a következő fájlt:

FILE ~/.xinitrc
exec dbus-launch --sh-syntax --exit-with-session dwm

Fő dwm beállításfájl (dwm.h fájl)

Ahogy korábban említettük, a fő dwm beállításfájl a /etc/portage/savedconfig/x11-wm/dwm-6.0 fájl, és minden módosítás után a dwm forráskódját újra kell fordítani, hogy a változtatások érvénybe lépjenek.

Annak érdekében, hogy a szerkesztő megfelelően jelenítse meg a C kód szintaxiskiemelését, hozzon létre egy szimbolikus hivatkozást egy C fejléckiterjesztéssel.

root #ln -s /etc/portage/savedconfig/x11-wm/dwm-6.0 /etc/portage/savedconfig/x11-wm/dwm-6.0.h

vagy tekintse meg a választott szerkesztő dokumentációját, hogy miként lehet módosítani a szintaxiskiemelést egy fájl esetében a kiterjesztésétől függetlenül.

Ahhoz, hogy az új beállítást a forráskód fordítás után használhassa, ha már egy dwm munkamenetben van, lépjen ki a dwm-ből (Mod + Shift + Q), majd töltse be újra, hogy lecserélje az aktuálisan a memóriában futó bináris fájlt.

Beállításfájl (dwmrc)

A Gentoo Ebuild által biztosított alapértelmezett xsession fájl (/etc/X11/Sessions/dwm) lehetővé teszi egy alapértelmezett állapotmező megjelenítését, amely rendszerterhelést, dátumot/időt vagy bármilyen shell kódot mutat, amit a felhasználó a ~/.dwm/dwmrc fájlban elhelyezett. A jelenlegi mechanizmus (a dwm-6.0 verziótól kezdve) az állapot mezőbe szánt szöveg küldéséhez az ablakkezelő sávjában az 'xsetroot' használata, amit az előbb említett alapértelmezett xsession fájl is bemutat. Néhány sor shell kóddal ez a mechanizmus tetszőleges szöveg küldésére is használható az állapotsávba (például a CPU hőmérséklete, a zenelejátszó aktuális száma, olvasatlan e-mailek száma stb.).

További funkciók

dmenu

A dmenu egy dinamikus menü az X számára, amelyet eredetileg a dwm-hez terveztek.

Telepítés

Emerge

Telepítse a dmenu szoftvercsomagot:

root #emerge --ask x11-misc/dmenu
Beállítás

A dmenu opciói testre szabhatók a dwm.h fájl használatával, például a menü megjelenítésével a képernyő alján.

FILE /etc/portage/savedconfig/x11-misc/dmenu-4.9.h
static const char *dmenucmd[] = { "dmenu_run", "-b", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
Használat

Alapértelmezés szerint a Alt + P billentyűgomb kombináció engedélyezi a menüt.

További állapotinformációk

További állapotinformációk megjelenítéséhez a dwm menüsávjában használni kell a x11-apps/xsetroot szoftvercsomagot, amely szöveges információt helyez el a jobb felső sarokban.

Először is, ha még nincs telepítve, akkor telepítse a x11-apps/xsetroot szoftvercsomagot.

Ezután használjon egy szkriptet vagy mellékprogramot, hogy a jelenlegi információkat folyamatosan megjelenítse a dwm állapotában.

root #emerge --ask x11-apps/xsetroot

Conky

Például próbálja ki a Conky alkalmazást, hogy megjelenítse a rendszer aktuális információit. Javasolt a -X USE jelölőzászló használata, mivel csak szöveges információk kerülnek átirányításra a dwm példányhoz. (Figyelembe veendő USE jelölőzászlók: "-X hddtemp iostats wifi".)

root #emerge --ask app-admin/conky

Egy példa ~/.config/conky/conky.conf fájl. A beállításfájl két szakaszra oszlik: conky.config és conky.text. A conky.config szakasz a Conkyval kapcsolatos beállításokat tartalmazza, míg a conky.text szakasz határozza meg, hogy milyen információk és hogyan jelenjenek meg. A Conky használatához az Ön operációs rendszerén szükség lehet néhány beállítás módosítására a conky.text szakaszban, például a hálózati interfészek vagy merevlemezek elérési útvonalának beállításához, mivel ezek rendszertől függően eltérőek lehetnek.

FILE ~/.config/conky/conky.conf
conky.config = {
 
background = no,
format_human_readable = yes,
out_to_console = yes,
temperature_unit = celsius,
total_run_times = 0,
update_interval = 1,
#use_spacer = left,
use_spacer = none,
 
};
 
conky.text = [[
 
M ${memperc}%/${swapperc}% | \
/sda ${diskio sda} /sdb ${diskio sdb} \
/sdc ${diskio sdc} | \
${if_existing /proc/net/route ppp0}P0 U ${upspeed ppp0} D ${downspeed ppp0} |${endif}\
${if_existing /proc/net/route eth0}E0 U ${upspeed eth0} D ${downspeed eth0} |${endif}\
${if_existing /proc/net/route wlan0}W0 U ${upspeed eth0} D ${downspeed eth0}\
${wireless_ap wlan0} ${wireless_link_qual_perc wlan0} ${endif}\
CPU ${hwmon 1 temp 1}F \
/sda ${hddtemp /dev/sda}F \
/sdb ${hddtemp /dev/sdb}F \
     ${time %a, %b %d %Y  %H:%M (%z)}
 
]]
Note
Ha a Conky-t korábban már használta, akkor ügyeljen az új szintaxisra, amely zárójeleket és egyenlőségjeleket tartalmaz.

Adjon hozzá egy sort a ~/.xinitrc fájlban, a korábban említett dwm végrehajtási parancs elé.

FILE ~/.xinitrc
conky | while read -r; do xsetroot -name "$REPLY"; done &
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session dwm

Egyéni szkript

Ahelyett, hogy mellékprogramokat telepítene, hozzon létre egy egyszerű hurkot, amely megjeleníti a dátumot, időt, időjárást és egyéb rendszerinformációkat.

Például az időjárás, dátum és idő megjelenítéséhez hozzon létre egy shell szkript fájlt a ~/.scripts/ könyvtárban:

FILE ~/.scripts/xsetloop.sh
#!/bin/sh
 
let loop=0
while true; do
	if [[ $loop%300 -eq 0 ]]; then
		weather="$(curl 'https://wttr.in?format=1')"
		let loop=0
	fi
	xsetroot -name " $weather | $(date '+%b %d %a') | $(date '+%H:%M') "
	let loop=$loop+1
	sleep 1
done

Mivel a script már hurkolva van, ezért csak be kell állítanunk az xroot-ban a ~/.xinitrc fájlban.

FILE ~/.xinitrc
. ~/.scripts/xsetloop.sh &
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session dwm

Használat

Billentyűgombok és billentyűgomb funkciók

Minden (alapértelmezett) dwm billentyűgomb kötés egy bizonyos MODKEY-vel működik, amelyet a dwm.h fájlban határoznak meg. Az alapértelmezett MODKEY érték a Mod1Mask, ami a PC billentyűzetek Alt billentyűjét jelenti. A cikk további részében a Mod a MODKEY-t képviseli.

Egy ablak kézi mozgatása

Egy ablak manuális áthelyezéséhez egy másik ablakcímkére, tartsa lenyomva a Mod billentyűgombot, és kattintson bal gombbal bárhová az ablakon. Ezután, miközben továbbra is lenyomva tartja a Mod billentyűt, kattintson újra az ablakcímkére, amelyre az ablakot át kívánja helyezni.

Alapértelmezett billentyűgomb parancsok

Ezek az alapértelmezett billentyűgomb parancsok használatosak az x11-wm/dwm-ben.

Ablakkezelés
  • Mod+2 - Kettes ablakcímke megjelenítése.
  • Mod+Shift+1-9 - Vigye az egeret az ablak fölé, és nyomja le a billentyűgombokat. Az ablakot a megadott címkére helyezi.
  • Mod+Shift+0 - Vigye az egeret az ablak fölé, és nyomja le a billentyűgombokat. Az ablakot az összes címkére helyezi.
Segédprogramok
  • Mod+Shift+Enter - Parancssor elindítása.
  • Mod+Shift+C - Ablak bezárása.
  • Mod+P - A dmenu megnyitása.
  • Mod+J vagy Mod+K - Átlépés másik parancssorba.
  • Mod+Enter - Ablakok váltása stack és master között.
  • Mod+Shift+Q - A dwm kilépése.
Billentyűzetgombok kiosztásának módosítása
  • Mod+F - Váltás lebegő elrendezésre.
  • Mod+T - Váltás csempézett elrendezésre.

Hangerőgombok

Warning
"..." azt jelenti, hogy az x11-wm/dwm-be kell beilleszteni, de nem a fájl végére.

Adja hozzá az alábbi sorokat a beállításfájlhoz, majd futtassa újra a dwm telepítését (re-emerge):

FILE /etc/portage/savedconfig/x11-wm/dwm-6.0
#include <X11/XF86keysym.h>
 
...
 
/* commands */
static const char *upvol[] = { "amixer", "set", "Master", "2+", NULL };
static const char *downvol[] = { "amixer", "set", "Master", "2-", NULL };
 
// for muting/unmuting //
static const char *mute[] = { "amixer", "-q", "set", "Master", "toggle", NULL };
 
// for pulse compatible //
static const char *upvol[] = { "amixer", "-q", "sset", "Master", "1%+", NULL };
static const char *downvol[] = { "amixer", "-q", "sset", "Master", "1%-", NULL };
static const char *mute[] = { "amixer", "-q", "-D", "pulse", "sset", "Master", "toggle", NULL };
 
...
 
static Key keys[] = {
        /* modifier                     key        function        argument */
        { 0,              XF86XK_AudioRaiseVolume, spawn,          {.v = upvol } },
        { 0,              XF86XK_AudioLowerVolume, spawn,          {.v = downvol } },
        { 0,              XF86XK_AudioMute,        spawn,          {.v = mute } },

Testreszabás

dwm a forráskódjának szerkesztésével testre szabható.

(Ide írja a felhasználói testreszabási trükköket és tippeket.)

Foltok alkalmazása

A Gentoo operációs rendszernek van egy speciális módja a dwm foltozására. Ha a foltok készen állnak arra, hogy telepítsék őket a dwm forráskódjával, akkor van egy speciális funkció, az eapply_user, amely az emerge folyamat során hívható meg. Ez a funkció lehetővé teszi a felhasználói foltok alkalmazását a forráskódon. Helyezze át a szükséges foltokat az alábbi két hely egyikére:

Foltok az /etc/portage/patches/category/application könyvtárban

Először hozza létre a következő könyvtárat:

root #mkdir -p /etc/portage/patches/x11-wm/dwm

Másolja a dwm foltokat a következő helyre: /etc/portage/patches/x11-wm/dwm/, és győződjön meg arról, hogy minden folt előtagjában szerepel egy szám, például: 01-name_of_patch.patch. Továbbá a fájlnévnek .patch vagy .diff végződéssel kell rendelkeznie, különben a Portage nem alkalmazza azt. Ebben a példában feltételezzük, hogy a folt egy OrbanViktor nevű felhasználó otthoni könyvtárában található (/home/OrbanViktor).

root #cp /home/OrbanViktor/01-dwm.6.0-xft.patch /etc/portage/patches/x11-wm/dwm/

Most telepítse a dwm-et. Az emerge gondoskodik a foltok alkalmazásáról.

root #emerge --ask x11-wm/dwm

Helyezze a foltokat egy ebuild szoftvercsomag-tárolóba, amely a Portage használatával van beállítva

Egy ebuild szoftvercsomag-tároló létrehozása a dwm foltok számára hasznos lehet, ha azokat meg akarja osztani, akár egy másik számítógépen, akár a nyilvánossággal.

Másolja az x11-wm/dwm könyvtárat a /var/db/repos/gentoo/ helyről egy új ebuild szoftvercsomag-tárolóba, vagy bármely más megfelelő szoftvercsomag-tárolóba.

Helyezze a foltokat a fájlok könyvtárába (ebben a példában a szoftvercsomag-tároló neve, amelyet ezeknek a fájloknak tárolására hoztak létre: "dwm_patches"):

root #cp /home/OrbanViktor/01-dwm-6.0-xft.diff /var/db/repos/dwm_patches/x11-wm/dwm/files/

Nyissa meg az ebuild fájlt egy szövegszerkesztőben, /var/db/repos/dwm_patches/x11-wm/dwm/dwm-6.1.ebuild, és sorolja fel azokat a PATCHES változó tömbben az automatikus foltozáshoz.

FILE /var/db/repos/dwm_patches/x11-wm/dwm-6.1.ebuild
PATCHES=( "${FILESDIR}/01-dwm-6.0-xft.diff"
          "${FILESDIR}/02-dwm-6.1-x11.diff"
)

Indítsa el az emerge parancsot, és élvezze.

root #emerge --ask x11-wm/dwm

Alkalmazások hozzárendelése ablakcímkékhez

A felhasználó beállíthatja, hogy a kedvenc alkalmazásai egy másik ablakcímkén induljanak el, például a MPlayer az ötös számú ablakcímkén.

Először ismerje meg az alkalmazás "nevét", amelyet az Xorg rögzített, hogy a dwm a rendszerindulásakor felismerje ezt az ablakot. Ennek megállapításához indítsa el a célalkalmazást (például MPlayer-t), majd hajtsa végre a xprop parancsot (x11-apps/xprop). Kattintson az MPlayer ablakára, és a xprop jelenti az Xorg adatokat az MPlayer ablakról. Használja a második ablaknevet, amelyet a WM_CLASS(STRING) sor azonosít. Most megvan az ablak neve, amelyről a dwm-nek tudnia kell.

Note
Előfordulhat, hogy egy alkalmazásnak több ablaka van, és az egyik ablakot nagybetűvel jelöli, míg a másikat nem nagybetűvel. A joker karakterek megengedettek az ablaknevekben.
FILE /etc/portage/savedconfig/x11-wm/dwm-6.0.h
static const Rule rules[] ={
    { "MPlayer",    NULL,       NULL,   1 << 4,     True,        0 },
};

Hibaelhárítás

Frissítés dwm-6.0 verzióra

A dwm-5.9 verzióról a dwm-6.0 verzióra történő frissítés számos változtatást hozott, amelyek miatt a korábbi config.h fájl valószínűleg problémát okozhat a dwm-6.0 létrehozásánál. Valószínűsíthető problémák lehetnek például a forráskód fordító hibaüzenetei, mint például: "'nmaster' undeclared". A probléma megoldásához telepítse és fordítsa le a dwm-6.0 verziót anélkül, hogy az egyéni config.h fájlt használná, majd keresse meg az alapértelmezett dwm-6.0 config.h fájlt, és hasonlítsa össze a régi config.h fájllal. (Alternatív megoldásként bontsa ki a dwm-6.0 tömörített fájlt, hogy megszerezze az alapértelmezett dwm-6.0 config.h fájlt.)

"Permission Denied" javítása

Egy logind szolgáltatónak, például a systemd-nek vagy az elogind-nek, futnia kell ahhoz, hogy egy X munkamenet nem privilégiumos felhasználóként elindulhasson. Ha nem fut logind szolgáltató, és a felhasználó kiadja a startx parancsot, akkor a dwm nem indul el, és egy ehhez hasonló üzenet jelenik meg:

(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)

Ha ez a helyzet, és a rendszer OpenRC alapú, akkor adja hozzá az elogind szolgáltatást az indítási folyamatokhoz, és indítsa el azt:

root #rc-update add elogind boot
root #/etc/init.d/elogind start

További információért kérjük Önt, hogy látogassa meg a Non root Xorg wiki oldalt.

Mod billentyűgomb újbóli kiosztása

Ha a dwm alapértelmezett Alt billentyűgombja ütközik más parancssori interfész alkalmazásokkal, akkor használja a Esc billentyűgombot a parancssor alkalmazáson belül. A Esc egy azonnal használható biztonsági menekülési billentyűgomb. Egy másik lehetőség, hogy újradefiniálja a Mod billentyűgombot, és a billentyűzet Super (Windows) billentyűgombját vagy egyéb, a Space közelében található további billentyűgombokat használja.

FILE /etc/portage/savedconfig/x11-wm/dwm-6.0.h
#define MODKEY Mod4Mask         /* Use Super Key */

Egy második Mod billentyűgomb hozzárendeléséhez, amely lehetővé teszi, hogy a felhasználónak mindkét oldalon legyen Mod billentyűgombja a billentyűzeten, utánozza vagy másolja le ennek a billentyűgombnak a tevékenységét egy másik billentyűgombra. A Microsoft billentyűzeteken található Microsoft Menü billentyűgomb (vagy kontextusmenü billentyűgomb) közvetlenül a Super (Windows) billentyűgombbal szemben helyezkedik el. Ehhez szükséges a x11-apps/xmodmap szoftvercsomag. (Hivatkozásként, a két billentyűgomb értékei a következők: showkey 125/127 és xev 133/135 - MS NEK4000 billentyűzeten.)

FILE $HOME/.xinitrc
# A $HOME/.xinitrc fájl teteje jó hely erre.
# Ez a művelet a MS NEK4000 jobb Menü billentyűgombját is hozzárendeli, hogy szimulálja a DWM Mod4Key funkciót.
xmodmap -e "keycode 135 = Super_L" # reassign MS Menu Keypress to Super_L
xmodmap -e "remove mod1 = Super_L" # make sure X keeps it out of the mod1 group

Mostantól a felhasználónak nem ütköző és könnyen elérhető Mod billentyűgomb lesz a billentyűzet mindkét oldalán!

Hibásan működő Java alkalmazás kijavítása

A Java-alapú alkalmazások gyakran nem megfelelően működnek, mivel a Java nem ismeri a használt ablakkezelőt. Ennek eredményeként bizonyos Java alkalmazások grafikus felülete nem működik megfelelően. A probléma megoldásához be kell állítanunk a root ablak ablakkezelő névtulajdonságát. Ezt a wmname eszköz segítségével lehet megtenni, amelyben az értéket LG3D-re kell állítani.

Telepítse az szoftvert:

root #emerge --ask x11-misc/wmname

majd állítsa be a tulajdonság nevét:

user $wmname LG3D

A beállítás állandóvá tételéhez adja hozzá ezt a parancsot a ~/.xinitrc fájlhoz.

Tip
Hasznos lehet exportálni az AWT_TOOLKIT értéket, ha bizonyos Java alkalmazások az AWT-t használják, amint az alább meg van jegyezve.

Üres (szürke) ablakok Java alkalmazásoknál

A Java-alapú alkalmazások, mint például az Apache NetBeans, nem jelennek meg megfelelően. Ennek a problémának a megoldásához állítsa be az AWT_TOOLKIT változót az alábbi módon:

user $AWT_TOOLKIT=MToolkit; export AWT_TOOLKIT

Ahhoz, hogy a művelet tartós legyen, hozzá kell adni a parancsot az indító szkriptben, például a ~/.xinitrc fájlban.

Háttér nem rajzolódik újra

Előfordulhat, hogy a háttér nem rajzolódik újra megfelelően, amikor az aktuális nézetet átváltjuk. Például néhány parancssor, mint a st, nem rajzolja ki teljesen az ablakhoz rendelt helyet. Ilyen esetekben az X root ablaknak megfelelően definiált színt kell beállítani. Ezt a xsetroot parancs segítségével lehet megtenni. Például:

user $xsetroot -solid black