Awesome. Kaflowy menadżera okien
Awesome. Sama nazwa tego kaflowo/stertowego (tiling/stacking) menadżera okien wzbudza sympatię, choć jego uruchomienie (bez czytania dokumentacji :)) już niekoniecznie. Postanowiłem go przetestować, a właściwie spróbować przesiąść się na niego z nudnego, stabilnego Window Makera, którego używam od lat.
Od dawna kusiło mnie, by spróbować poużywać jakiegoś kaflowego menadżera okien i spośród tej grupy wybrałem Awesome z kilku powodów:
- Pełna obsługa z klawiatury
- Bardzo konfigurowalny
- Nieźle wyglądający
- Lekki
- Wspierający wiele standardów (m.in. powiadomienia i tackę systemową - ang. notifications i system tray)
- Konfiguracja w Lua
Ostatnia zaleta może też być jedną z poważnych wad, ponieważ najdrobniejszy błąd w konfiguracji powoduje, że Awesome się nie uruchamia w ogóle, bądź nie jest do końca skonfigurowany. Pomijając to, konfiguruje się to całkiem sprawnie i co istotne, zastosowanie języka programowania do konfiguracji (Lua) pozwala elastycznie dostosować zachowanie Awesome do swoich potrzeb.
Jednakże, po kilku godzinach konfiguracji, napotkałem na problem, którego obecnie przeskoczyć nie potrafię. Otóż, chciałem na pasku mieć informacje, które do tej pory miałem w dockappach w Window Makerze, czyli:
- Zegar
- Zajętość pamięci plus aktywność procesora
- Aktywność interfejsu sieciowego
- Widżet do regulacji głośności (i to na obu kartach dźwiękowych, które posiadam)
- Informacje o pogodzie
- Tacka systemowa
Część z tych rzeczy (zegar, tacka systemowa) jest dostępna wprost z „pudełka”,
natomiast pozostałe można było uzyskać poprzez bibliotekę Vicious. Niestety,
poza jednym. Temperatura procesora graficznego. Z początku wydawało się, że
sprawa jest trywialna. Wystarczyło dopisać jedną funkcję, która wywoła
nvidia-settings
i dodać nowy widżet do biblioteki vicious.
Kod jest baardzo prosty:
------------------------------------------------------ -- Dead simple temperature widget for Nvidia gfx cards ------------------------------------------------------ -- {{{ Grab environment local type = type local tonumber = tonumber local setmetatable = setmetatable local io = {popen = io.popen} local os = {getenv = os.getenv} -- }}} -- Thermalnvidia: provides temperature for nvidia gfx cards module("vicious.widgets.thermalnvidia") -- {{{ Read temperature from nvclock utility local function get_gpu_temp() local gpu_temp = nil if os.getenv('DISPLAY') then local f = io.popen("nvidia-settings -t -q GPUCoreTemp") gpu_temp = f:read("*all") f:close() end return gpu_temp end -- }}} -- {{{ Thermal widget type local function worker(format, warg) -- Get temperature from thermal zone local res = get_gpu_temp() if res then return {tonumber(res)} end return {0} end -- }}} setmetatable(_M, { __call = function(_, ...) return worker(...) end })
Jednak, ku mojemu zdziwieniu, nie działa zgodnie z oczekiwaniami, ponieważ startujący Awesome się po prostu.. wiesza. Z początku myślałem, że winnym jest tu nvidia-settings, który być może nie 'widzi' karty graficznej podczas startu sesji X, lub nie ma do niej dostępu, więc próbowałem zastąpić go przy pomocy nvclock, jednakże rezultat był identyczny. Identyczny problem zgłosił jeden z forumowiczów Archa, jednak do dnia dzisiejszego (05-08-2010) nie otrzymał rozwiązania.
No cóż. Wróciłem do nudnego ale przewidywalnego WMakera, a Awesome zapewne spróbuję w którejś z kolejnych wersji.