Dwm
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
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:
~/.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
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.
/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.
~/.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)}
]]
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é.
~/.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:
~/.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.
~/.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
"..." 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):
/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:
- /etc/portage/patches/category/application
- An ebuild repository
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.
/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.
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.
/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.
/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.)
$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.
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