# Awesome (pencere yöneticisi)
AwesomeWM, C ve Lua programlama dillerinde geliştirilmiş X Pencere Sistemi için tasarlanmış dinamik bir pencere yöneticisidir . Lua, pencere yöneticisini yapılandırmak ve genişletmek için de kullanılır. Gelişimi bir dwm çatalı olarak başladı. Son derece küçük ve hızlı olmayı, ancak kapsamlı bir şekilde özelleştirilebilir olmayı hedefliyor. Kullanıcının klavyeyi kullanarak pencereleri yönetmesini mümkün kılar.
Çatal başlangıçta "jdwm" lakaplıydı, burada "jd" ana programcının baş harflerini ve dwm çatallandığı yazılım projesini ifade ediyordu. awesome'in ilk git deposu Eylül 2007'de kuruldu. jdwm, "How I Met Your Mother" karakteri Barney Stinson tarafından kullanılan aynı ifadeden sonra awesome (harika) olarak yeniden adlandırıldı. awesome, 20 Eylül 2007'de "dwm" e-posta listesinde resmen ilan edildi.


## Projenin amacı.
Awesome, harici yapılandırma dosyaları aracılığıyla özelleştirme özelliğine sahip bir dwm çatalı olarak ortaya çıktı (aşağıdaki Yapılandırma ve özelleştirme bölümüne bakın). Oldukça genişletilebilir olmasına rağmen, pencere yöneticisinin varsayılan kurulumu kasıtlı olarak basitleştirilmiştir. Bunu yaparken, yazar, kullanıcıların kendi ihtiyaçlarına göre genişletmeleri ve uyarlamaları için bir "çerçeve penceresi yöneticisi" dediği şeyi yarattı.


## Özellikler.
  - Lua yapılandırma dosyası aracılığıyla yapılandırılır.
  - dwm ve wmii gibi, awesome da çalışma alanları yerine etiketler kullanır. Pencereler birkaç etikete atanabilir ve aynı anda birden çok etiket seçilebilir.
  - Bir dinamik pencere yöneticisi olarak, awesome her etiket için kayan, çeşitli dinamik döşeme düzenleri, "büyütülmüş" ve "büyüteç" dahil farklı düzenler arasında geçiş yapabilir.
  - Çeşitli widget'lar (metin ve simge kutuları, grafikler, ilerleme çubukları vb.) dahil olmak üzere çoklu ve ekran başına durum çubukları.
  - Her şey klavye ile yapılabilir, bu nedenle fare kullanımı isteğe bağlıdır.
  - Çoklu baş desteği (XRandR, Xinerama veya Zaphod modu).
  - EWMH, XDG Base Directory, XEmbed, Desktop Notification ve System Tray dahil olmak üzere freedesktop.org standartlarını uygular.
  - xcompmgr gibi harici bir oluşturucu aracılığıyla birleştirme ve gerçek şeffaflık desteği.
  - D-Bus (awesome-client) üzerinden uzaktan kumanda.
  - Pango biçimlendirme dilini destekler.


## Yapılandırma ve özelleştirme.
En başından beri awesome, harici bir yapılandırma dosyasına sahip bir dwm çatalı olarak tasarlandı. Bu nedenle, yapılandırma dosyası formatı ve yapılandırma sürecinin kendisi, yazarın özel ilgisine tabi tutulmuştur.


### Erken yapılandırma dosya biçimleri.
Üçüncü büyük sürümden önce, awesome'nin özelliklerinden biri Danjou'nun 'karmaşık olmayan bir yapılandırma' olarak adlandırdığı şeydi. awesome (1.x)'in ilk sürümleri, libconfig kullanan düz dosya yapılandırmasıyla #YÖNLENDİRME 'nin basit modifikasyonuydu. 2.x dalında, Danjou, yapılandırma kitaplığını libconfig'den #YÖNLENDİRME 'a değiştirdi, farklı bir düz dosya yapılandırma kitaplığı, biraz libconfig'e benziyor. 2.x sürümlerinin geliştirilmesi sırasında, başlık çubukları ve simge çizimi gibi awesome pencere yöneticisine birçok özelleştirme özelliği eklendi.


### Yeni yapılandırma dosyası.
20 Mayıs 2008'de Danjou, awesome posta listesine gönderdiği bir e-postada, 3.0 sürümünde yapılandırma dosyası için yeni bir formatın kullanılacağını duyurdu. Yeni biçim ~/.awesomerc.lua dosyasına yerleştirildi ve daha sonra ~/.config/awesome/rc.lua'ya taşındı. Uzantının önerdiği gibi, yapılandırma dosyası Lua programlama dilinde yazılmıştır. Danjou, yeni formatın ve Lua entegrasyonunun awesome kullanıcıların daha önce imkansız olduğunu düşündüğü şekillerde awesome'i özelleştirmesine olanak sağlayacağını savundu: yapılandırma için bir programlama dili kullanmak, yapılandırma seçeneklerini dinamik olarak belirlemeyi mümkün kıldı.
awesome Lua API'si artık awesome'in ana sayfasında barındırılıyor ve awesome Wiki'de harikaları yapılandırma hakkında öğretici tarzı bir makale yayınlanıyor.


### Temalar ve widget'lar.
Pencere yöneticisinin Beautiful kitaplığını kullanarak awesome'i bir tema (veya kaplama) yapmak mümkündür. rc.lua yapılandırma dosyasına uygun olarak, Lua'da temalama da yapılır ve dinamik temaların oluşturulmasına izin verilir.
3.2.1 sürümünden itibaren varsayılan harika yapılandırmanın herhangi bir durum göstergesi olmamasına rağmen (kablosuz ağ durumu, pil göstergeleri vb.), kullanıcılar bu öğeleri widget'ları kullanarak ekleyebilir. Widget'lar ana yapılandırma dosyasında tanımlandığından, widget'lar için veriler rastgele Lua kodu kullanılarak sağlanır.


## XCB'ye Geçiş.
18 Eylül 2008'de yayınlanan 3.0 sürümü, X sunucusuyla iletişim kurmak için XCB kitaplığını kullanır, bu kitaplığı Xlib yerine kullanan ilk pencere yöneticisini awesome yapar. XCB portu üzerindeki çalışmalar, şu anki Awesome geliştiricilerinden biri olan Arnaud Fontaine tarafından Ocak 2008'de başlatıldı.
Arnaud Fontaine, 9 Nisan 2008'de XCB posta listesinde XCB'ye taşındığını duyurdu. Listeye gönderdiği mesajda, XCB kullanmanın başlıca avantajları olarak şunları vurguladı: "modüler mimari; protokollere doğrudan erişim; multithreading; asenkron istekler/cevaplar;". XCB limanı ertesi ay tamamlandı ve Danjou, XCB'ye dayalı yeni bir şube oluşturdu.


## Lua entegrasyonu.
awesome'in 3.0 öncesi sürümünde genişlemeyi ve özelleştirmeyi sınırlayan algılanan sorunlar nedeniyle, yazar Lua tabanlı konfigürasyonu awesome ile entegre etmeye karar verdi. Yeni Lua kodlu uygulamanın rc1'i Ağustos 2008'de duyuruldu. Eylül 2008'de, harika Lua API ile ilk sürümü, XCB uygulamasına paralel olarak tamamlandı.


## Dağıtım paketi kullanılabilirliği.
awesome, Arch Linux, Debian, Fedora Linux, Gentoo, Ubuntu, Source Mage, openSUSE, Mageia, NixOS, FreeBSD, NetBSD ve OpenBSD dahil olmak üzere çok çeşitli Unix benzeri işletim sistemlerinde dağıtılır.,


## Adlandırılmış sürümler.
AwesomeWM 1.0'dan 1.3'e kadar olan sürümler (Eylül-Ekim 2007) adlandırılmadı. İlk 2.0 sürüm adayıyla (Kasım 2007) başlayarak, awesome adlandırılmış sürümleri kullandı. Sürüm adları müzikle ilgilidir. AwesomeWM v4.x, Daft Punk'tan şarkı adını kullanır.