Efe ÇİFTCİ

Bilgisayar Mühendisi, Özgür Yazılımcı, Trekkie.

Bir KWin Teması: Oxygen-appmenu 28 Aralık 2011


Sanırım Windows 7’nin çıkmasıyla birlikte uygulamaların pencere başlık çubuklarına kendi istedikleri gibi menü yerleştirebilmelerinin önü açılmıştı:

Bunun peşinden Ubuntu ve Global Menu geldi. Global Menu, Mac OS X’in pencere menülerinin ekranın en tepesinde belirmesine benziyordu:

Bu sürece Linux açısından bakacak olursak işler pek göründüğü gibi kolay olmuyor, yani “Hadi Firefoxçuğum, menünü yukarıya çek” demekle olacak kadar kolay değil. Linux’ta masaüstü ortamının ve pencerelerin ne şekilde yönetildiğini bilenler vardır; GNOME için Metacity adı verilen, KDE için KWin adı verilen vb. “pencere yönetici” dediğimiz uygulamalar vardır. Bu uygulamaları tek amaçları, kendilerini kullanan pencerelerin konum, sıra, boyut gibi bilgilerini yönetmektir. Tek başına olan bir pencere yöneticiyi içi tamamen boş olan, sadece tepesinde başlık, küçült, büyüt, kapat tuşları olan çubuk ve 3 kenarındaki kenarlıklar şeklinde düşünebiliriz. Pencere yöneticiler olmazsa Linux’ta açık olan pencereleri taşıyamaz, yeniden boyutlandıramayız. Pencere yöneticiler ve uygulamalar arasında ise normal şartlar altında hiç bir bağlantı yoktur, yani bir pencere yönetici kendi içinde çalışan programda neler vardır bilgisi olmaz, o sadece o uygulamanın etrafına çerçevesini çizer. Yani özetle ekranda gördüğünüz herhangi bir uygulama aslında iki farklı uygulamadan oluşuyor: uygulamanın kendisi ve uygulamanın etrafını çerçeveleyen pencere yönetici:

Pencere Yönetici Pencere Yönetici’ye bağlanan KCalc uygulaması

Bakın normal şartlar altında dedim, her zaman demedim. Mesela yukardaki Ubuntu ve Global Menu örneğine geri dönelim. Global Menu’nün ekrandaki terminal uygulamasına “ait olan” menüyü uygulama dışındaki bir masaüstü bileşenine (panel) çıkartabilmiş olmasının altında D-Bus adını verdiğimiz uygulamalar arası haberleşme kanalı yer alıyor. Global Menu ekrandaki seçili olan pencere ile D-Bus kanalı aracılığıyla haberleşmeye geçiyor ve diyor ki “kendi menünün yapısını benle paylaş ve sonra menü çubuğunu gizle”, daha da sonra uygulamadan gelen menüyü kendi içersinde çiziyor.

KDE’nin eli armut toplamıyor tabii bu arada. KDE4’te de “Window Menubar” adı verilen bir plasmoid bulunuyor. Plasmoid’leri bilirsiniz, ister masaüstünüze ister panelinize istediğiniz gibi yerleştirebildiğiniz masaüstü programcıkları. Bu plasmoid’in yaptığı şey Global Menu ile tamamen aynı, detaylarına girmeyi planlamıyorum bu yüzden.

Aşağıda ise geride bıraktığımız birkaç saat içinde ise ta nisan ayından beri geliştirilmesine rağmen yeni haberdar olduğum bir KWin teması yer alıyor, Oxygen Appmenu:

Kendisi gördüğünüz üzere Global Menu ve Window Menubar gibi çalışan uygulamalardan menü bilgilerini çalıp bir başka uygulamaya yönlendiriyor – bu sefer bizzat pencere yöneticisi olan KWin’e. Bu temanın standart KWin teması olan Oxygen’den tek farkı, Oxygen üzerine bir de görmüş olduğunuz menü arabirimini ekliyor olması.

Bu tema gördüğüm kadarıyla (henüz) Ubuntu paket depolarına girmiş durumda değil ancak isterseniz temanın KDE-Look.org’daki sayfasından hazır deb paketini indirebilirsiniz. Eh tabi yer yüzündeki tüm dağıtımlar deb paketleriyle çalışmadığı için isterseniz de temanın kaynak kodunu çekip kendi sisteminizde derleyip kullanmaya başlayabilirsiniz.

Kubuntu için konuşmak gerekirse derleme işlemine başlamadan önce sisteminize kurmanız gereken bazı paketler var:

$ sudo apt-get install git appmenu-qt appmenu-gtk kdelibs5-dev cmake libdbusmenu-qt-dev qt4-qmake build-essential libxrender-dev kdebase-workspace-dev

Bu paketleri kolay yoldan Kubuntu sisteminize kurmak için buraya da tıklayabilirsiniz. Ön hazırlığı tamamladıktan sonra temanın kaynak kodlarını internetteki deposundan çekmek gerekli:

git clone git://anongit.kde.org/scratch/cedric/oxygen-appmenu.git

Daha sonra da yapmanız gereken şey kaynak kodları derlemek ve temanın sisteme kurulumunu gerçekleştirmek:

$ cd oxygen-appmenu
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` ..
$ make
$ sudo make install

Eğer make satırından sonra derleme işleminiz liboxygenstyle kelimesini içeren bir hata nedeniyle kesilirse aşağıdaki gibi bir düzeltme yapmanız gerekmekte:

$ sudo ln -s /usr/lib/liboxygenstyle.so.4 /usr/lib/liboxygenstyle.so

Eğer herşey yolunda giderse sistem ayarları uygulamasından çalışma alanı görünümü seçeneklerinden yeni temanızı seçebilir hale geleceksiniz demektir 🙂