6
May
Bir yazılıma Türkçe desteği vermek meslekten bilişimci olmayanların da kolaylıkla yapabilecekleri bir şey. Bu konu hakkında yazmak en azından çeviri üzerindeki ilginin azalmamasını sağlamaya yarıyor. Eski yazılarıma [1], [2] ve [3] adreslerinden bakabilirsiniz.

Bugün biraz daha ayrıntılı inceleyelim durumumuzu:

KDE: Arayüz çeviri oranı %77.78, belgelendirme çevirileri ise sadece %3.
GNOME: Arayüz çeviri oranı %88, belgelendirme çevirilerinde oran %0.
LXDE: Arayüz ve belgelendirme ayrımı yok. Çeviri oranı %100.
Enlightenment: Arayüz ve belgelendirme ayrımı yok. Çeviri oranı %100.
Fluxbox: Arayüz ve belgelendirme ayrımı yok. Çeviri oranı %100.
XFCE: Arayüz ve belgelendirme ayrımı yok. Çeviri oranı %100.

Büyük masaüstü ortamları aslında iyi durumda değiller. KDE ve GNOME sürekli geliştirilen ve bu yüzden çevirilerinin güncel tutulması için düzenli çaba gerektiren projeler. XFCE ve LXDE için sadece yeni sürümlerden önce sıkı bir çalışma yeterli oluyor. Enlightenment ve Fluxbox uzun süredir yeni sürümü çıkmayan projeler.

Belgelendirmelerin çevirileri konusunda ne kadar kötü durumda olduğumuzu söylemeye gerek yok aslında. KDE ve GNOME için belgelendirme çevirisi neredeyse hiç yapılmamış duruyor. Arayüz kadar önemli olan belgelendirmelerin çevirileri olmayınca yabancı dil bilmeyen insanlara bu masaüstlerini kullandırmanın ne kadar zor olduğu ortada.

LibreOffice'deki durumumuz da şöyle: Arayüzün %100'ü, belgelendirmelerin ise %46'sı Türkçeye çevirilmiş durumda. Kullanıcının ilk karşılaştığı şey arayüz olsa da belgelendirmenin tamamen Türkçe olması her işletim sisteminde çalışabilen bir özgür ofis paketi olan LibreOffice'in yaygınlığını mutlaka arttıracaktır. Zeki Bildirici'nin bu konuda neredeyse tek başına yürüttüğü çalışmalara nasıl destek verebileceğinizi buradan okuyabilirsiniz.

Yapacağınız küçük katkıları küçümsemeyin. Bir kişi fark yaratır.
6
Nis
Ubuntu'nun Unity masaüstü ortamı ve Gnome projesinden Gnome 3, sıradan masaüstü ortamlarından çok daha farklı bir görünüm ve kullanım sunuyor. Bu değişiklikleri seven de var, yerin dibine geçiren de. Fark ettiğim bir durum ise, sevmeyenler (hatta nefret edenler) XFCE, LXDE gibi görece daha hafif ve daha geleneksel masaüstü ortamlarına yöneliyorlar.

KDE masaüstü ortamının 4.0 sürümüyle girdiği tartışmalı durumun tekrar yaşandığını görebiliriz. KDE 4 serisiyle çok köklü değişiklikler yapmıştı. KDE'nin 4.0 sürümü KDE API'sinin sonlandırılmasını ve artık uygulama geliştiricilerin KDE 4'e geçiş yapması gerektiğini ifade ediyordu. Bence yanlış olan bu sürümlendirme stratejisi, pek çok kişiyi ve dağıtımı KDE'nin en son sürümü olan 4.0'a geçmeye yönlendirdiği. Halbuki KDE -yaklaşık- 4.3 sürümüne kadar eski KDE 3'den özellik ve kararlılık bakımından geriydi. Bu dönemde KDE'yi deneyip eksik özelliklerden ve sık yaşanan çökmelerden ağzı yanan pek çok kişi oldu. Unity ve Gnome 3'ten uzaklaşanların KDE'yi bir seçenek olarak değerlendirmemelerinin sebebi, belki de bu kötü deneyim yüzündendir.

Ancak KDE'nin son bir kaç sürümü bu kötü ünü hiç haketmiyor. Gayet sağlam çalışıyor ve ayarlanabilirlik konusunda sınır tanımıyor. Size geleneksel görünümlü bir masaüstü sunarken, isterseniz çok farklı şekillere de bürünebiliyor. Unity'de uygulamaların yer aldığı çubuğu hareket ettirmek bile ek program kurulmasını gerektiriyorken, KDE'nin sunduğu özelleştirilebilirlik buharlı araba - jet uçağı ilişkisini andırıyor.

Örneğin Unity ve Gnome 3'te komut satırından ya da ek programlarla etkinleştirebileceğiniz "klasik" masaüstünü (masaüstünde bir klasör içeriğini göstermek), KDE'de masaüstünüze sağ tıklayıp ulaşabileceğiniz masaüstü ayarlarından "Layout: Folder View" seçeneğini seçerek elde edebiliyorsunuz. "Search and Launch" türündeki bir masaüstünde ise tüm masaüstünü bir uygulama başlatıcısı olarak kullanmanız mümkün. Her tür masaüstünde çeşitli programcıklar (widget) çalıştırıp, onu istediğiniz gibi özelleştirebiliyorsunuz.

"Activity" kavramı ise KDE'nin masaüstü ortamlarına getirdiği yeniliklerden biri. Çoklu masaüstü özelliğinin bir adım ilerisi olan Activity'ler, çalışan uygulamaları, masaüstü ve görünüm ayarlarıyla bilgisayardaki çalışmalarınızı kavramsal bölümlere ayırmanızı sağlıyor. İstediğiniz zaman çalışan programlarla birlikte bir activity'i kapatabiliyorsunuz. Kapalı bir activity ve içindeki programlar hiç kaynak harcamıyor. Activity tekrar çalıştırıldığında ise tüm ayarlarıyla masaüstü, ve activity içinde çalışan programlar tekrar yükleniyor. Hatta destekleyen uygulamalarda programın içindeki durum da kaydedilip tekrar yükleniyor. (Örneğin activity kapatıldığında gwenview resim yöneticisinde açık olan klasör, activity yeniden başlatıldığında hatırlanıyor) Activity kavramıyla ilgili iki ingilizce günlük girdisi burada ve burada.

KDE'yi tekrar denerseniz ilginizi çekecek bir özelliğini bulabilirsiniz. Belki görsel güzelliği, belki özelleştirilebilirliği. Ama 4 serisinin ilk sürümlerinden çok daha iyi olduğunu göreceksiniz.
19
Oca
Pardus 2009'ın sürüm takvimi duyuruldu! KDE 4 ile gelecek olan yeni Pardus sürümü için Gökmen'in en kısa sürede Xfce paketlerini hazırlanmasını da dört gözle bekleyeceğim! Pardus Test Takımı'nın da yardımıyla Alpha ve Beta sürümlerinin en kısa sürede sınanıp, sürüm takviminden pek de şaşmadan Pardus 2009'a kavuşabilmek umuduyla!
10
Oca
Geçen yıl Mart ve Mayıs aylarında masaüstü ortamlarının Türkçeleştirilme oranları hakkında yazılar yazmıştım. Bu yazılımların gelişimi sürdüğünden çevirilerinde sürekli güncellenmesi gerekiyor. Bir masaüstü ortamı bir sefer %100 yerelleştirildiğinde iş bitmiş olmuyor yani ;)

Bakalım şimdi ne durumdayız:

KDE: İki büyükten biri olan KDE'nin Türkçeleştirilme oranı %82.28. Büyük ve hızlı güncellenen bir proje olduğundan yerelleştirilme oranının geçen yıl olduğu seviyede kalması bile üzerinde çalışıldığının bir göstergesi. Yapılacak çok iş var.

LXDE: Geçen yıl tamamı yerelleştirilmiş olmasına rağmen aradan geçen sürede fazla ilgilenilmeyince bu oran %90'a düştü. Hızlıca eski seviyesine getirilebilir ama çalışmak lazım.

Enlightenment: Neredeyse bir yıldır güncellenmemiş olmasına rağmen çeviri oranı hala %100.

Fluxbox: Henüz yeni bir sürüm çıkmadığından çeviri oranı hala %100.

XFCE: Geçen yıl çıkan 4.8 sürümünün Türkçe çeviri oranı %100. Üzerinde çalışılan 4.10 sürümünün ise %92'si çevrilmiş durumda. 11 Mart'ta duyurulacak 4.10 için %100'lük çeviri hedefi yakalanır diye tahmin ediyorum.

Gnome: Hem kararlı hem de geliştirme sürümlerinin çeviri oranları birbirine çok yakın; hepsi %90 civarında. Bu kadar büyük proje için oldukça başarılı bir durum olsa da çok hızlı güncellendiğinden sürekli çalışma istiyor Gnome da.

Çeviri ekiplerine nasıl katılabilirim diyenler bu serinin eski yazılarına bakabilirler.
21
Haz

Yeni bir proje geldi aklıma aslında benim aklıma gelmedi bir yerlerde görmüştüm bunu ama durumu ne bilmiyorum ayrıca uzun zamandır ses çıkmıyor benim de aklıma bu projeyi gerçekleştirmek geldi. Proje şu ki; bir program düşünün masaüstünde ve bilumum kde programlarındaki görsel değişiklikleri bir dosyaya kaydediyor ve yine bu program yardımıyla yüklüyor.

Örneğin Özgürlükİçin Tema bölümünde bir masaüstü tasarımı gördünüz, çok sevdiniz. Bir bir masaüstü arkaplanını, sistem temasını, ikon temasını buldunuz ve yaptınız ama çok yorucu oldu ve tam olmadı gibi. Artık buna gerek yok bu program sayesinde tek bir dosya ile o gördüğünüz tasarıma kavuşacaksınız. Eve gelen pazarlamacılar gibi konuştum :) .

Tabii daha fikir aşamasında olduğunu belirtmek lazım, şimdilik bu dosyaları nasıl toplayabilceğim, bu ayarların sistemin nerelerinde olduğunu bulmakla uğraşıyorum biraz yol katettim gibi. Bunları tamamlarsam gerisi kolay gibi gözüküyor. Ha ayrıca kde ile içli dışlı olan arkadaşlarda da yardımlarını bekliyorum.

30
Nis

Yıl 2005.. Pardus 1.0 çıkmış. Bir dönüm noktası sayılır. (Tabii ben 2008 sürümüyle tanıştım Pardus’la. Bilim Teknik Dergisi sayesinde..) Baştan sadece KDE ile yoluna devam etti Pardus. Bu süreçte bir çok kullanıcı diğer masaüstü ortamlarının da Pardus’a gelmesi gerektiği konusunda yazılar yazdılar, istekte bulundular. O zamanlar bana bu istekler çok ütopik geliyordu. Evet Pardus gerçekten hızlı gelişiyor, 3 senelik bir sistem olmasına rağmen bir kullanıcının isteklerini fazlasıyla yerine getiriyordu.
Yıl 2011.. Pardus 2011 sürümü var ve Necdet Yücel hocamız ve öğrencileri sayesinde Pardus diğer masaüstü ortamlarına da kavuşuyor. Projenin (ki adı ÇOMAK) blog sayfasına buradan ulaşabilirsiniz.

Ya diğer linux sürümlerinde durum ne?

En çok bilinen Ubuntu’ya gelirsek 28 Nisan’da yeni sürümü 11.04 Natty‘i çıkardı. Bu sürümün bir özelliği ise kendi kullanıcı arayüzü olan Unity‘i bu sürümle duyurması. Gnome3 çıkmasına rağmen Ubuntu Unity arayüzünü kullanacağını açıkladı. Gnome gezegeninde bu yüzden Ubuntu kullanmayı bırakıp Fedora 15‘e geçmeyi planladıklarını yazdılar. Fedora 15′le birlikte Gnome3 kullanılacağı açıklandı.

Buradan bakınca Linux üzerinde en önemli bileşenlerden birinin masaüstü ortamları olduğunu söylemeye gerek yok sanırım. Kullanıcı hangi sürüm kullanacağı konusunda fikrini o sürümün masaüstü ortamlarına göre belirliyor. ÇOMAK projesi sona ulaştığında Pardus’da diğer masaüstü ortamlarına kavuşmuş olacak. Dil desteği zaten mevcut. Ne dersiniz? Pardus dünya üzerinde yayılır mı?


22
Mar

Kde 4′le birlikte hayatımıza giren Oxygen pencere teması ne yazık ki benim kalbime giremedi. Aradığım ışıltıyı, gösterişi, canlılığı Oxygen’de bulamadım. Ayrıca masaüstü efektlerinden bağımsız olarak kendi gölge motorunu kullanmasına da hiç anlam veremedim. Ben 2009 sürümünde olduğu gibi Pardus 2011′de de Bespin temasını tercih ediyorum. İsmini ünlü Yıldız Savaşları serisinin beşinci bölümündeki (eski ikinci bölüm) uçan şehirden alan Bespin, derinlik hissi uyandıran hacimli ve parıltılı görüntüsüyle gerçekten güzel bir tema. Oxygen ekibinden ayrılan bir geliştiricinin ürünü olması da dikkat çekici.

Bespin aslında Kdm teması ve simge seti ile birlikte oldukça kapsamlı bir proje ama Pardus deposunda şimdilik sadece pencere teması var. Ben simge seti olarak Oxygen kullanmaya devam ediyorum. Yalnız uygulama pencerelerinin araç çubuklarındaki simgeleri Faenza setindeki tek renk (siyah) simgelerle değiştirdim. Siyah simgeler Bespin üzerinde daha güzel duruyor.

Bu güzel temanın özelleştirilebilirliği çok yüksek. Pencerelerinize birbirinden farklı şekiller verebilmeniz mümkün. Pencerelerin üzerindeki düğmelerden açılan menülere kadar her şeyi değiştirebiliyorsunuz. Üstelik Bespin Xbar programcığını da desteklediği için uygulama pencerelerindeki menü çubuklarını Xbar üzerine gönderip uygulama arayüzlerinde harikulade bir sadelik temin edebiliyorsunuz.

Bespin’in oldukça kalabalık olan ayarlarının nasıl yapılacağına dair bir şeyler karalamayı düşünüyorum ama o zamana dek beklemek istemeyen kullanıcılar için resimlerde gördüğünüz Bespin görünümünü elde etmenizi sağlayacak bir yapılandırma dosyasını burada sizlerle paylaşıyorum. Sisteminize Bespin’i kurduktan sonra yapılandırma ekranında dosyayı içe aktarıp (import) kullanabilirsiniz.


17
Mar
ÇoMaK için çalışırken masaüstü ortamlarının istediğimiz kadar Türkçeleştirilmediklerini gördük. Bütün özgür yazılım projeleri gibi masaüstü ortamları da gönüllüler tarafından çevirildiğinden bu durum için şikayet edebileceğimiz, sızlanabileceğimiz kimse yoktu elbette. Diğer dillere nasıl çevrilmişlerse Türkçeye de aynı yolla çevirilmeleri gerekitiğinden mevcut durumun bir görüntüsünü almak bir yol haritası çıkarmak açısından yararlı olur diyerek her bir masaüstüne teker teker bakalım. Aşağıda verilen oranlar Pardus'a özel oranlar değildir; herhangi bir Linux dağıtımı bu masaüstü ortamını alıp paketlediğinde karşılaşacağı oranlardır. Yani projelerin kendi resmi çeviri oranlarıdır.

KDE: Pardus'un öntanımlı masaüstü olan KDE'nin Türkçe çeviri oranı %84.49. Bu oldukça iyi bir oran sayılabilir ama hala her altı mesajdan birinin çevrilmemiş olması yapılacak çok iş olduğunu gösteriyor. KDE'de çevirilecek kelime sayısı 100 binin üzerinde.

LXDE: İlk üzerinde çalıştığımız masaüstü ortamı olan lxde sayesinde Türkçe çeviri eksikliğinin farkına vardık. Gönüllülere yaptığımız ilk duyuruda %79 olan LXDE Türkçe çeviri oranı bir günden kısa bir sürede %100'e ulaştı. Elbette LXDE ile KDE boyut olarak çok farklı projeler. LXDE'de 4500'ün biraz üzerinde kelime bulunuyor.

Enlightenment: Enlightenment da Türkçe çeviri konusunda yaklaşık olarak KDE ile aynı yerdeydi biz kendisiyle uğraşmaya başladığımızda. LXDE çevirilerine olan yoğun ilgiden cesaret alarak bir duyuru daha yaptık ve bugün itibariyle Enlightenment Türkçe çeviri oranı %98'e ulaştı. Çevrilmemiş sadece 68 mesaj kaldığından çok kısa bir sürede o da %100'e ulaşır diye düşünüyoruz.

Fluxbox: En sade ve hızlı masaüstlerinden biri olan Fluxbox'ın dil dosyaları diğerlerinden farklı olarak bir düz metin dosyasında bulunuyor ve internet üzerinden ortaklaşa çevirilmeye uygun değil. Mevcut çeviri yıllar öncesinde yapılmış ve oldukça eksik olduğundan bu dosyanın formatını değiştirip birlikte çalışabileceğimiz bir hale dönüştürüp çalışma sonuçlanınca tekrar fluxbox'ın kullanabileceği bir duruma getirmeyi planlıyoruz.

XFCE: XFCE çok kısa bir süre önce 4.8 sürümünü çıkardı ve bu yeni kararlı sürümün çeviri oranları yaklaşık %70 civarındaydı. XFCE çevirisi yapmak için önce sistemde bir kullanıcı oluşturmak, ardından çeviri listesine bunu haber vermek, en son olarak da Türkçe ekip koordinatöründen ekibe katılmak için yetki almak gerekiyor. Yapılacak çok iş varmış gibi görünebilir ama tüm bu işlemler yarım saat sürmüyor. Yeter ki siz katkı vermek isteyin, herkes kolaylaştırmaya çalışıyor işlemleri. Şu anki XFCE Türkçe çeviri oranı %74'e ulaştı.

GNOME: Gnome'un 2.32 serisi için Türkçe çeviri oranı %86 iken, merakla beklenen 3 serisinin %78'i Türkçeye çevrilmiş durumda. Çevresiyle birlikte düşünüldüğünde KDE kadar büyük bir proje olan GNOME tarafında yapılacak çok iş var. Örneğin GIMP ve ailesinin çevirileri henüz %17 seviyesinde. Nisan ayından sonra GNOME ile ilgili çokça yazacağımızdan şimdilik bu konuyu biraz öteleyebiliriz sanırım.

Kendi dilimize çeviri yapabilmek özgür yazılım dünyasından aldıklarımızın birazını olsun geri verebilmenin bir yoludur aslında. Sanki kendimiz yazmışız gibi bize verilen, büyük emeklerin karşılığı olan özgür yazılımlara çoğumuzun verebileceği tek karşılık onları Türkçeleştirmek. Kod desteği vermek, hata takip sistemlerine kayıt girmek, belgelendirme yapmak çoğumuzun ilgi alanı dışında ama kullandığımız bir programın menülerinde gördüğümüz İngilizce ifadeleri çevirmek kolayca yapabileceğimiz bir iş.

Özgür yazılım topluluğundan hep alıyorum, benim katkım hiç olmuyor diyenler; ben şu masaüstünü değil başkasını beğeniyorum diyenler; yukarıdaki masaüstlerini Türkçe kullanmamız sizlerin elinde. Yaklaşık bir buçuk ay sonra; 1 Mayıs'ta yeniden bir durum değerlendirmesi yazacağım bu konuda ve ne kadar yol katettiğimizi göreceğiz. Çok büyük bir ilerleme gerçekleştireceğimize inanıyorum.
1
Mar

İşte Kde4 Sistem Ayarları’nın en neşeli kısmı. Tüm sisteminize hareket katmak sizin elinizde. Ateşli, kıpır kıpır bir çalışma ortamı için yapmanız gereken tek şey masaüstü efektlerini etkinleştirmek. Efektler sistemin işlem gücünü epeyce kullandığından kimi kullanıcılar tarafından pek tercih edilmese de gölgeli pencerelerin yarattığı derinlik etkisi, komut verilen pencerelerin işlemleri türlü sevimli hareketlerle gerçekleştirmesi ve masaüstleri arasında uçarcasına yapılan geçişler genel olarak kullanıcıların çok hoşuna gidiyor.

Genel
Bu sekmede masaüstü efektlerini açıp kapatabilirsiniz. Her şey sadece sizin kontrolünüzde. İşlemcisi ya da ekran kartı zayıf bir bilgisayar kullanıyorsanız masaüstü efektlerini kapatmanız, diğer uygulamalarınıza daha fazla güç sağlamak açısından faydalı olacaktır. Diğer yandan şunu da söylemek gerekir ki 1.8Ghz Amd Sempron işlemcili, 2GB 333Mhz bellekli ve 128MB Radeon X200 ekran kartlı bir dizüstü bilgisayarda Kde masaüstünü kullanan Pardus, masaüstü efektleri açıkken  rahatlıkla çalışıyor.

Genel sekmesinde pencere ve masaüstü değiştirme efektlerini de hızlıca seçmek mümkün. Ayrıca efektlerin hangi hızda çalışacağını da bu ekranda belirleyebilirsiniz.

Tüm Efektler
Sistemin tüm artistik hareketleri burada. Bu ekranda etkinleştireceğiniz Sihirli Lamba ile uygulama pencereleriniz görev çubuğuna su gibi aksın. Kaydırma efekti ile uygulamalar şık efektlerle açılıp kapansın. Çalışmalarınız arasında bir sunumun slaytları gibi dolaşın. Hatta siz çalışırken arka planda tatlı bir kar yağışı size eşlik etsin. Sisteminiz size sıkıcılıktan uzak, kullanımı kolay, performanslı ve neşeli bir çalışma ortamı vaadediyor.

İşlerinizi dans eder gibi, ayaklarınız yerden kesilerek yapacaksınız. Pardus’la çalışmalarınızın bitmesini hiç istemeyeceksiniz.


25
Şub

Kde4.5 ile birlikte sistem çekmecesindeki ön tanımlı ikonlar renksiz bir görünüme büründü. Camsı bir etki uyandıran bu görünüm hayli hoş. Ne var ki aynı tarzı benimsemeyen Kmail, Amarok gibi uygulamaların ikonları sistem çekmecesine kendi renkli halleri ile yerleşiyorlar. Hal böyle olunca sistem çekmecesinin görsel bütünlüğü de bozuluyor. Bütünlük sağlanması için Sistem Çekmecesi’ne yerleşen uygulama simgelerinin, halihazırdaki Ses, Aygıt Bildirici, Kmix simgeleri gibi görünmesi lazım. Eğer bu sağlanabilirse Sistem Çekmecesi o zaman yeni görünümünün süksesini yapabilecek.

Sistemi biraz gezince Pardus’la kurulu gelen ve çalıştığında Sistem Çekmecesi’ne yerleşen uygulamaların aşağıdakiler olduğunu gördüm.
- Kmail
- Akregator
- Kopete
- Amarok
- Choqok
- Ktorrent
- Paket Yöneticisi
- Konversation
- Knotes
- Amsn

Bu uygulamalar dışında da Sistem Çekmecesi’ne ikon yerleştirenler olabilir. Benim gözden kaçırdığım, sizin aklınıza gelen başka uygulamalar varsa, benimle paylaşırsanız çok sevinirim.

Bu görsel düzenleme için Kde-look.org’da düşüncemi ateşleyen birkaç uygulamaya (Krayscale sözcüğü ile arama yapınız) rastladım. Kurcalayıp bir şeyler yapmaya da çalıştım ama maalesef başarılı olamadım.

Her ne kadar Sistem Çekmecesi bir Kde4 programcığı olsa da geliştiricilerimizin de bu küçük müdahaleyi yapabileceğini düşünerek Beyin’de de #1140 numaralı fikir giridisini yaptım. Kubuntu 10.10′da buna benzer bir düzenleme yapılmış. Pardus’un görsel bütünlüğünün sağlanması için faydalı olacağını düşündüğüm bu geliştirme için Beyin’de desteğinizi bekliyorum.


7
Şub

Takıntı…Benimkisi gerçekten takıntı. Masasında kağıt olmayan bankacı gördünüz mü siz hiç? Var işte…Masası monitör, klavye, fare, telefon ve içinde firmalardan gelmiş evrakların bulunduğu bir havuzdan ibaret olan, iki telefonu masanın hep aynı yerinde (monitörün hemen altında) mutlaka birbirine paralel olarak duran, saplantılı bir bankacı. O benim… Bendeki bu düzen hastalığı sürekli olarak kullandığım Linux dağıtımlarını da kurcalamama sebep oluyor. Kullandığım uygulamaların arayüzlerinin basit ve sade olmasını tercih ediyorum. Eciş bücüş, onlarca simge, sağda solda, orada burada yazılar göz zevkimi feci halde bozuyor. Elimde olsa kullandığım bilumum uygulamaların üzerinde tek düğme bırakmayacağım ama o da biraz saçma olur be…

Bilgisayarımda hem Pardus 2011 hem de Ubuntu 10.10 kullanıyorum. İkisinin de tadını çıkarıyorum. Pardus üzerinde masaüstü ortamı Kde4 olduğundan ek uygulamalar kullanmadan pencerelerin her yerini kesip biçip kuşa çeviriyorum. Bespin temasıyla birlikte Xbar’ı da kurdum mu tamam oluyor (Xbar pencerelerin menü çubuklarını panele taşıyan ve MacOS X’teki gibi görünmelerini sağlayan küçük bir uygulama). Ne varki bir süredir Ubuntu kullanıyorum. Kız kardeşimin dizüstü bilgisayarına kuracağım Linux olarak onu seçmemle, kendi masaüstümde de kullanma isteği belirdi içimde. Kurdum gitti…

Ubuntu’da varsayılan masaüstü ortamı Gnome. Gnome Kde4 gibi kişiselleştirilebilirlik imkanları sunmuyor. Ancak bazı eklenti ve uygulamalarla ne kadar güzel kıvama gelebileceğini gözlerimle gördüm, bizzat tecrübe ettim. İstediğim özelleştirme için temel ihtiyaçlarım aşağıdaki gibiydi. Bakınız Ubuntu’ya neler yaptım.

Pencerelerdeki Menü Çubuklarını Panele Taşımak
11.04′le kurulu olarak gelecek olan Global Menu bu iş için biçilmiş kaftan. Kurup eklentiyi panele yerleştirdiğimiz andan itibaren tüm Gtk arayüzlü uygulamaların araç çubukları panele taşınıyor. Yalnız en yaygın Gtk arayüzlü uygulama (Firefox’tur kendisi) maalesef menü çubuğunu Global Menü’ye göndermiyor. Bu sorunun 11.04′te giderileceğine dair bir haber okudum. Umarım işe yarar. O zamana dek menü çubuğundan kurtulmak için Firefox’un Hide Menubar eklentisi harikulade bir çözüm. Eklentiyi kurduğunuz anda menü çubuğu arazi olacaktır. Görmek isterseniz klavyenizin tab tuşuna basmanız yeterli. Darısı Libre Office’in başına. O da Global Menü’ye direnenlerden…

Pencerelerin Araç Çubuklarını Sadeleştirmek
Menü çubuğundan kurtulduk ama araç çubuklarımız da hala kalabalık. Gnome’da maalesef Kde’deki gibi araç çubuklarını doğrudan sadeleştirme, istediğimiz düğmeleri ekleyip çıkarma imkanımız yok. Nautilus bu yüzden özelleştirilemez durumda. Bunu aşmanın ve Nautilus’a sade ve şık bir görünüme büründürmenin yolu nautilus-elementary temasını kurmaktan geçiyor. Aşağıdaki komutları terminalde sırasıyla verirsek nautilus-elementary’yi kuracağız.

sudo add-apt-repository ppa:am-monkeyd/nautilus-elementary-ppa
sudo apt-get update
sudo apt-get dist-upgrade
nautilus -q

Bu kodlardan sonra Nautilus daha şık. Ayrıca bazı sürprizleri var. Resimlerinizin olduğu bir klasördeyken F4′e bir basın bakalım, karşınıza ne çıkacak.

Parlak Bir Pencere Teması Kurmak
Ubuntu’nun maalesef bir türlü tutturamadığı bir şey bu. Hep kahverengi, turuncu renkli pencere temaları geliyor sistemle. Oysa açık renkler sistemi daha bir başka gösteriyor sanki. Açık renkler pencere gölgesiyle kontrast oluşturduğundan, pencereleri gerçekten havadaymış gibi gösteriyor. Derinlik hissini arttırıyor. Ayrıca beyaza yakın renkler, sadeliği destekleyen bir etki yaratıyor. Tüm bu özellikleri taşıyan harika bir pencere teması keşfettim: Orta. Haydi kuralım Orta’yı. Buyurun terminale.

sudo add-apt-repository ppa:nikount/orta-desktop
sudo apt-get update
sudo apt-get install orta-theme
sudo apt-get install orta-emerald-decorators
sudo apt-get install orta-xfwm4-decorators

Şimdi Ubuntu’nun iki renkli temasından kurtulduk. Orta temasının da kendine has özelleştirme ayarları var. Bu ayarlara, Panel>Sistem>Tercihler menüsünden ulaşabilirsiniz. Temanın kendi yapılandırma uygulaması oraya yerleşecektir.

Güzel Bir Simge Seti
Söz konusu Ubuntu ise favorim Faenza. Harikulade bir set. Ubuntu ile de son derece uyumlu. İçinde de son derece güzel simgeler var. Setin tamamını sisteminizde kurulu diğer simge setleri ile birlikte /usr/share/icons dizini altında inceleyebilirsiniz. Faenza’yı terminalde aşağıdaki kodları girerek sisteminize kurabilirsiniz.

sudo add-apt-repository ppa:tiheum/equinox
sudo apt-get update && sudo apt-get install faenza-icon-theme

Kıpır Kıpır Bir Rıhtım
Pencerelerin listelenmesi için standart paneldeki pencere listesini kullanmayı pek tercih etmiyorum. Compiz-Fusion’la birlikte çalışan Cairo-Dock benim için daha cazip. Özelleştirilebilme yetenekleri gerçekten harika. Üzerindeki simgelerin efektleri çok güzel. Oynayıp duruyorsunuz. Faenza simge seti de Cairo-Dock üzerinde etkinleştirildiğinde sistemin geri kalanıyla son derece uyumlu bir rıhtımınız oluyor. Üstelik uygulamalarınızın yeri hiç değişmediği için zaman içinde rıhtım kullanımı, standart panel kullanımından daha kolay gelmeye başlıyor.

Sonucu resimleri büyüterek daha net görebilirsiniz. Gerçekten güzel oldu.


16
Oca

Soğuk bir Ocak akşamında (dün) Beşiktaş’taki Bahçeşehir Üniversitesi İletişim Fakültesi’nde Pardus’un arkasından konuştuk, tüm konuştuklarımızın ve yaptıklarımızın kaydedildiğini umursamadan…Pardus’un, kullanıcıları gözündeki yerinin ve kullanıcı beklentilerinin tespit edilmesi açısından son derece faydalı ve pek keyifli bir oturum oldu. Toplantıda, Pardus’a başlama ve kullanma sebeplerimizden, yapısı, sağladıkları, sağlayamadıkları ve yaygınlaştırılmasına kadar pek çok konuda konuştuk. Öyle hissettim ki biz Pardus gönüllüleri 17.878.962 toplantıya daha katılıp Pardus’u sonsuza dek anlatma eğilimine sahibiz. Bu güzel…

Oturumda sorulan sorular, verilen cevaplar, o cevaplardan bir veri yığınının oluşturulması ve bir sonuca varılması, değerli hocamız Sn.İlker Berkman ve ekibinin uzmanlık alanı olduğundan, içerikle ve kişisel değerlendirmelerimle ilgili herhangi bir paylaşımda bulunmayı doğru bulmuyorum. Şunu söyleyebilirim ki bu oturum belki de İlker Bey’den ziyade bana faydalı oldu.

Pardus’la ilgili hem objektif diyebileceğim hem de ön yargı görünümündeki fikirlerimi muhakeme etme şansını buldum. Kendimi İlker Bey’e anlatmak isterken kendime de anlattım galiba. Bundan sonraki çalışmalarımda (taciz ve eylemlerim de diyebiliriz) izleyeceğim yordamlar konusunda enerji tasarruflu bir ampul (malum, maksimum parlaklığa biraz geç ulaşıyor) kafamda yandı gibi.

Evet…Gerçekten keyifliydi. Bu arada, eşimin ısrarlı hatırlatmaları sebebiyle, fotoğrafa dikkatli dikkatli bakması muhtemel okuyucularım için küçük bir not düşmek istiyorum. Sevgili eşimin karnı fazla kilo değil 4 ay sonra dünyaya gelecek minik oğlumuz Erdem sebebiyledir :) .

Unutmadan, altını çizmek istediğim bir noktaya da dikkat çekmeden edemeyeceğim. “Özgür yazılım para kazandırır mı?” diye soranlara verecek cevabımız da hazır artık:

Parayı dert etmeyin. Kullanın yeter :) .


15
Oca

Pardus’ta açıp kullandığım yazılımların ara yüzlerinin sade olmasını tercih ediyorum. Sık kullanmadığım düğmelerin sürekli gözümün önünde durması beni rahatsız ediyor. Açık olan yazılım penceresini gereğinden fazla kalabalık ve dağınık gösterirken, aslında o pencerede ulaşmak istediğim unsurların (Dophin’deki klasörler veya Firefox’taki internet sayfaları) geri planda kalmasına sebep oluyor. Qt tabanlı yazılımlarda bu sorunu, KDE’nin muhteşem özelleştirilebilirlik imkanları ve Bespin pencere temasıyla birlikte kullandığım Xbar plasma programcığı ile aşıyorum ama Firefox gibi Gtk tabanlı uygulamalar ne yazık ki Bespin tarafından giydirilemiyor ve Xbar da işlevsiz kalıyor.

Bu durumu çözüp, Firefox’u sistemin genel görünümüne biraz olsun uydurabilmek, benzetebilmek için binbir farklı şey denedikten sonra nihayet aşağıdaki iki Firefox eklentisinde karar kıldım.

*Strata Reloaded teması ve
*Compact Menu 2 eklentisi.

Bu iki eklentiyi kurup sistem ayarlarından pencere kenarlığı rengini de Strata Reloaded temasının rengine çevirdiniz mi bütünleşik görünümlü, şık sekmeli, araç menüsünden arınmış (tüm menü küçük bir dünya simgesine dönüşecek) sade bir Firefox’unuz olacak.

Firefox 4′ü kullanmaya başladığımızda bunlara gerek kalmayacak ama herhangi bir sebeple Firefox 3.5 serisini kullanmaya devam edecek kullanıcılar için bu minik paylaşım da elimizin altında bulunsun istedim.


14
Oca

Ofiste sürüm telaşı var. Haftaya çıkacak olan 2011 için herkes harıl harıl çalışıyor. Benim işlerim( bir sonraki blog yazımda onlardan bahsedeceğim) bittiği için Fatih’in yanına gidip yapabileceğim bir şeyler var mı diye sorunca, bana bu hatadan bahsetti. Bu sabah iki saat süren güzel bir araştırmanını sonunda çözmüştük. Teker teker nasıl çözüldüğüne dair bir yazı yazdım yine. Başlayalım.

Hata nedir ?

Pardus 2011′de bazı ekran koruyucuları çalışmıyor. Tıkladığınızda siyah bir ekran çıkıyor. Yani çalışmıyor. Bununla ilgili bir hata kaydı girilmiş (Bug 15578 – Ekran koruyucuların bazıları çalışmıyor ). Aşağıdaki resimde görebileceğiniz gibi ilk bölümdeki “Değişen Çizgiler” adındaki ekran koruyucu siyah bir şekilde gözüküyor

Elimizde ne var ?

Hata kaydında hangi ekran koruyucuların çalışmadı bilgisi var. Bunun dışında ekran koruyucuları oluştusan xscreensaver paketçisi olan Fatih Aşıcı‘nın bir yorumu mevcut: “Bu ekran koruyucular xscreensaver paketinden çıkmamaya başlamış. Pakette yanlış bir şey olup olmadığına bakayım.”

Çözüm

Sistem ayarlarında “Ekran ve Monitör” kısmında “Ekran Koruyucu” ile ekran koruyucularını seçebilir ve değiştirebiliriz. Bazı ekran koruyucuların neden çalışmadığına bakmak için doğrudan sadece bu modülü çalıştırıp bakmak gerekiyor. Sistem ayarlarında her ayarlama ünitesi aslında birer bağımsız bir uygulama. Bunları

kcmshell4 --list

ile görebilirsiniz. Buraya göz atınca “screensaver” diye bir modül olduğunu göreceksiniz. Bunu konsoldan doğrudan

kcmshell4 screensaver

ile çalıştırabilirsiniz. Çalıştırınca da “Ekran Koruyucu” olarak söylediğim pencerenin aynısı çıkıyor. Şimdi bu ünitenin ismini öğrendiğimiz göre ,kaynak kodlarını araştırmaya başlayabiliriz. Bu paketler genellikle kdebase-workspace ve kdebase-runtime paketlerinden çıkıyor. Ben kdebase-workspace paketini açıp içinde “screensaver” ismini aratınca karşıma şunlar çıkıyor:

find -iname screensaver
./kcontrol/screensaver
./plasma/design/screensaver
./plasma/screensaver
./plasma/screensaver/containments/screensaver
./doc/kcontrol/screensaver
./krunner/screensaver

görüldüğü gibi screensaver ile ilgili birden fazla klasör var. Bizim sorunumuz sistem ayarlarında olduğu için “kcontrol” klasörüne girip orayı kurcalamaya başladım. Birden fazla dosya olsa da, genelikle bu KDE modüllerinin bir ana dosyası olur. Bunların isimlendirmesi de kcmMODULISMI.cpp ya da main.cpp şeklinde. Fakat screensaver ile ilgili bu şekilde bir dosya yoktu. Ama klasör içinde .cpp dosyaları zaten azdı ve isimlere bakarak scrnsave.cpp dosyasının doğru olacağını düşünerek açtım.

Arayüzü oluşturan kodlar ana sınıfta olacağından oraya göz atmaya başladım. Şimdi diyeceksiniz ki, KDE ya da QT bilmek gerekiyor mu kodu anlamak için? Kesinlikle Hayır! Eğer başka dillerde bir iki syntax biliyorsanız hemen hemen her kodu okuyabilirsiniz. Mesela bu ana sınıfta şöyle bir kod parçası var:

mSaverListView->setColumnCount(1);
mSaverListView->header()->hide();
mSelected = -1;
connect( mSaverListView, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(slotSetup()));
connect( mSetupBt, SIGNAL( clicked() ), SLOT( slotSetup() ) );
connect( mTestBt, SIGNAL( clicked() ), SLOT( slotTest() ) );
mEnabledCheckBox->setChecked(mEnabled);
connect(mEnabledCheckBox, SIGNAL(toggled(bool)), this, SLOT(slotEnable(bool)));
mWaitEdit->setRange(1, INT_MAX);
mWaitEdit->setSuffix(ki18ncp("unit of time. minutes until the screensaver is triggered", " minute", " minutes"));

Bu koda mSaverListView bizim aramamız gereken kısım. Yani ekran koruyucuları oluşturan kısım muhtemelen. Burada muhtemelen diyorum çünkü ben şu an bunun ne yapacağını bilmiyorum. Ama isimden yola çıkarak ve arayüzde sadece bir liste olduğunu düşünürsek bu yolun yanlış olmayacağını düşünebiliriz.

Şimdi koda (scrnsave.cpp) de bu değişken ismini aratınca karşımıza birden fazla fonksiyonda karşımıza çıktığını göreceksiniz. Bunlara yine şöyle göz atınca bir iki ipucu alabiliyoruz.

void KScreenSaver::findSavers()
{
if ( !mNumLoaded ) {
    mSaverServices = KServiceTypeTrader::self()->query( "ScreenSaver");
    new QTreeWidgetItem ( mSaverListView, QStringList(), 18n("Loading...") );
if ( mSaverServices.isEmpty() )
   mLoadTimer->stop();
else
   mLoadTimer->start( 50 );
}
for( KService::List::const_iterator it = mSaverServices.constBegin();
it != mSaverServices.constEnd(); it++,mNumLoaded++)
{
SaverConfig *saver = new SaverConfig;
QString file = KStandardDirs::locate("services", (*it)->entryPath());
if (saver->read(file)) {
    mSaverList.append(saver);
} else
    delete saver;
}

Bakınız yine kodun ne yapacağını anlamamıza gerek yok. Önemli olan sorunun nereden kaynaklandığına bakmak. Mesela yazımın başında da belirtiğim gibi, xscreensaver’de bazı paketler eksik olduğunu söyledi Fatih Aşıcı.

Ben ise olaya biraz farklı baktım. Madem bu paketler eksik, neden listede biz bunları görüyoruz ? Listeyi oluşturan nedir ? Oluşturuyorsa neye göre oluşturuyor ?

Yukarıda koda bakınca şu satır göze çarpıyor:

QString file = KStandardDirs::locate("services", (*it)->entryPath());

file adında bir değişken oluşturuyor. Bunu da KDE’nin standart dizinlerinden biri olan “services” klasöründen oluşturuyor (bakınız kodun ne anlama geldiğine yine bakmadım, ama değişken isimleri zaten kendini anlatıyor)

Bundan sonra bu dizinlerin nerede olduğunu bakmaya karar verelim. Genelikle kde paketlerinin veri dosyaları /usr/share/kde4 altın atılır. Bu dizine girdiğimizde ise “services” diye bir klasör olduğunu görececeğiz. Hatta bu klasörün içinde “ScreenSavers” adında bir klasör mevcut ve klasörün içeriği de şu şekilde devam ediyor:

[/usr/share/kde4/services/ScreenSavers ]$ ls
abstractile.desktop   decayscreen.desktop     halo.desktop            loop.desktop          rubik.desktop
anemone.desktop       deco.desktop            helix.desktop           m6502.desktop         sballs.desktop
anemotaxis.desktop    deluxe.desktop          hopalong.desktop        maze.desktop          shadebobs.desktop
...

Onlarca desktop dosyası mevcut. Demek ki ekran koruyucu listesini bu dosyalar oluşturuyor. Daha doğrusu “Ekran Koruyucu” modülü listeyi buradaki dosyalardan oluşturuyor. Bu desktop dosyaların İçeriği ise şu şekilde:

[Desktop Entry]
Exec=xflame
Icon=kscreensaver
Type=Service
X-KDE-ServiceTypes=ScreenSaver
TryExec=xscreensaver
Actions=InWindow;Root;Setup;
X-KDE-Category=Gadgets;Simulations
...

Burada “Exec=” ile başlayan kısımlar ekran koruyucusunun uygulama isimlerini gösteriyor. Yani bu dosyalar çağırılıyor. “Ekran Koruyucu” modülünde, listede herhangi bir ekran koruyucusuna tıkladığınızda işte buradaki Exec komutları çalıştırılıyor. Exec komutlarında belirtilen ekran koruyucuları da xscreensaver paketi ile beraber geliyor. O zaman bu dizinin içeriği ile xscreensaver’den çıkan paketleri karşlılaştırınca. Bakalım neler göreceğiz.

Konsolda dünyanın en iyi metin düzenleyicisi olan Vim’i açıp (swh), “ex” modunda

:vs

yazarak iki tane temiz pencere açalım

Ardından xscreensaver’den çıkan çalıştırabilinir dosyaları doğrudan vimin ilk penceresine yapıştıralım. Vim’de bash komutlarını doğrudan çağırıp, çıktılarını yapıştırabilirseniz. “ex” modunda şu komutu çalıştırmak yeterli

:r !pisi info xscreensaver -F |grep libexec

İkinci pencereye geçip (Ctrl-W, W) , bu sefer /usr/share/kde4/services/ScreenSaver içeriğini yapıştıralım. “Ex” modunda şu komutu çalıştırdım bu sefer:

:r !ls /usr/share/kde4/services/ScreenSavers/

Güzel olan ise desktop dosyalarını isimleri ile xscreensaver’den çıkan ekran koruyucu uygulamalarının ismi aynı. Tek yapmamız gereken bu isimleri karşılaştırmak. Fakat resimde de gördüğünüz gibi ilk pencerede her satırın başında dizin yolun adresleri mevcut. ikinci pencerede de dosyalar .desktop dosyası ile başlıyor.

Hepsini tek tek değiştirmiyorum tabi :) Elimizde Vim gibi şahane bir uygulama var, neden kullanmayalım ? (Vim konusunda biraz fanatikliğim var, özür). Vim’de de macrolar mevcut. “qa” tuşu ile macroyu başlatıp, bir takım işler yapıp “q” ile kapatabilirsiniz. Sonra bu kaydedilen makroyu her satırda “@a” ile çağırabilirsiniz. “a” ise macronun içeriğini kaydeden belleğin ismi. İlk pencerede her satır için yapmamız gerekenler şunlar (vim komutularıyla beraber)

  1. Satırın sonuna gitmek. Vim komutu: “$
  2. Sonra bir kelime geriye gitmek. Vim komutu : “b
  3. Kelimenin başlangıcından sonuna kadar silmek. Vim komutu: “d0
  4. Bir alt satıra inmek – Vim komutu: “j

Evet üç tane hamle ile bunu güzelce halledebiliriz. Bunları sırayla yaptıktan sonra tekrar “q” tuşu ile macroyu kapatacağım. Tüm satırlar için ex modunda

:%norm! @a

çalıştırınca aşağıdaki sonucu elde ediyoruz:

İkinci pencere için ise yine bir macro oluşturuyoruz. Her satır için yapmamız gerekenler ise

  1. Satırın başına gelmek – Vim komutu: “0
  2. Satırda . ile başlayan konuma gelmek . Vim komutu: “f.
  3. Sonra bu konumdan satırın sonuna kadar silmek Vim komutu: “d$
  4. Bir alt satıra inmek – Vim komutu: “j

:%norm! @a çalıştırınca aşağıdaki sonucu elde ediyoruz:

Evet şimdi yan yana iki tane liste elde ettik. Bunları kaydedip vimdiff ile açabilirdik. Ki genelikle öyle yapılır. Fakat bu şekilde iki tane pencere açıkken de diff komutunu kullanabilrsiniz. Yapmamız gereken “ex” modunda şu satırı yazmak:

:windo diffthis

Sol tarafta xscreensaver uygulamaları görülüyor. Sağ tarafta ise /usr/share/kde4/services/ScreenSavers altındaki desktop dosyaları. Buradan görüldüğü gibi desktop dosyalarında fazlalıklar var (yeşil olanlar). Yani var olan desktop dosyaları var fakat ona karşılıklı gelen xscreensaver ekran koruyucuları mevcut değil. Hata’da buradan kaynaklanıyor.Bazıları çalışmıyorsa, sistemde kurulmadığı anlamına geliyor. Peki sistemde kurulu olmayan bir ekran koruyucu için neden bu dosyalar oluşuyor ? Bu dosyalar nerden geliyor o zaman ?

Pisi’nin bununla ilgili çok güzel bir komut var, rastgele bir dosya üzerinde bu komutu çalıştırınca:

pisi sf /usr/share/kde4/services/ScreenSavers/boxed.desktop
Searching for /usr/share/kde4/services/ScreenSavers/boxed.desktop
Package <strong>kdeartwork-screensavers</strong> has file /usr/share/kde4/services/ScreenSavers/boxed.desktop

Bu paketin hangi bileşene ait olduğunu öğrenmek için de pisi info çalıştırıyorum:

pisi info kdeartwork-screensavers
Installed package:
Name                : kdeartwork-screensavers, version: 4.5.5, release: 43
Summary             : Additional KDE4 screensavers
Description         : Contains additional screensavers for KDE4.
Component           : desktop.kde.base

Bileşenin desktop.kde.base olduğunu görünce svn deposunda o dizine girdim. Kdeartwork-screensavers adında bir klasör mevcut değildi fakat kdeartwork klasörü mevcut idi. Bu paketin pspec.xml dosyasına bakınca kdeartwork ile gelen bir alt paket olduğunu görünce paketi açıp devam ettim:

pisi bi pspec.xml --unpack

/var/pisi/ altında kaynak kodunun dizinine girdiğimizde hiç bir şey aratmadan kscreensaver klasörü gözüme çarptığı için oradan başladım devam etmeye. Bu sefer doğrudan .desktop aratarak, bu dosyaların neden oluştuğuna veyahut da nasıl oluştuğunu öğrenmek istedim. Arayınca şunlar çıktı:

grep -rHIin desktop .
./kxsconfig/ScreenSavers/truchet.desktop:1:[Desktop Entry]
./kxsconfig/ScreenSavers/decayscreen.desktop:1:[Desktop Entry]
./kxsconfig/ScreenSavers/photopile.desktop:1:[Desktop Entry]
./kxsconfig/ScreenSavers/jigglypuff.desktop:1:[Desktop Entry]
...

Şeklinde desktop dosyaları mevcuttu. Bunlar bizim desktop dosyalarının ta kendisi. Bu yüzden kxsconfig klasörüne girip oraları kurcalamaya başladım. Klasörün içindeki CMakelists.txt dosyası çözümün ta kendisiydi:

########### install files ###############

FILE(GLOB _desktopfiles "ScreenSavers/*.desktop" )
foreach(_currentdesktopfile ${_desktopfiles})
·   STRING(REGEX REPLACE ".desktop" "" _newitem "${_currentdesktopfile}" )
·   #MESSAGE(STATUS "newItem &lt;${_newitem}&gt;")
·   GET_FILENAME_COMPONENT(_screensaverName ${_newitem} NAME_WE)
·   MESSAGE(STATUS "name without extension &lt;${_screensaverName}&gt;")
·   find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )
·   if(XSCREENSAVER_FILE_FOUND)
·   ·   MESSAGE(STATUS "xscreensaver name ${_screensaverName} found")
·   ·   install(FILES ${_currentdesktopfile} DESTINATION  ${SERVICES_INSTALL_DIR}/ScreenSavers )
·   else(XSCREENSAVER_FILE_FOUND)
·   ·   MESSAGE(STATUS "xscreensaver name ${_screensaverName} not found")
·   endif(XSCREENSAVER_FILE_FOUND)
endforeach(_currentdesktopfile ${_desktopfiles})

Burası tam olarak düşündüğüm şeyi yapıyordu. Desktop dosyalarının ismini XSCREENSAVER_CONFIG_DIR altından bakıyor ve eğer aynı dosya varsa gidip “desktop” dosyasını kuruyor.

İşte bütün sorun burada. Sorun şu ki, bu betik her koşulda tüm desktop dosyalarını yüklüyor. Xscreensaver’den çıkan ekran koruyucularını hiçe sayıyor. Yukarıdaki şu satırlarda sorun var yani:

find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )
if(XSCREENSAVER_FILE_FOUND)
...

Tam olarak hatayı görmek için cmake’in MESSAGE komutu ile şu şekilde yazıp Makefile’ı çalıştırıyorum tekrardan:

find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )
MESSAGE(STATUS ${XSCREENSAVER_FILE_FOUND} )
if(XSCREENSAVER_FILE_FOUND)
...

Aldığım sonuç ise şu şekildeydi.

-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name truchet found
-- name without extension
-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name decayscreen found
-- name without extension
-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name photopile found
-- name without extension
-- /usr/share/xscreensaver/config/compass.xml
-- xscreensaver name jigglypuff found

Burada “compass” ile bitenler bizim XSCREENSAVER_FILE_FOUND değişkenin değeri. Gördüğünüz gibi aslında bu değişken her file_find komutu çağırıldığında değişmesi gerekiyordu. Fakat bizde değişmiyor

Peki neden ?

Fatih Aşıcı ve Gökçen Eraslan ile bu konuya bakarken, Gökçen şu komutu file_find’dan önce yerleştirmemizi söylemişti

unset(XSCREENSAVER_FILE_FOUND CACHE)
find_file(XSCREENSAVER_FILE_FOUND ${_screensaverName}.xml PATHS ${XSCREENSAVER_CONFIG_DIR} )

Bu şekilde tekrar make komutunu çalıştırdığımda şu çıktıyı almaya başladım

-- name without extension
-- /usr/share/xscreensaver/config/truchet.xml
-- xscreensaver name truchet found
-- name without extension
-- /usr/share/xscreensaver/config/decayscreen.xml
-- xscreensaver name decayscreen found
-- name without extension
-- /usr/share/xscreensaver/config/photopile.xml
-- xscreensaver name photopile found
-- name without extension
-- /usr/share/xscreensaver/config/jigglypuff.xml

Evet görüldüğü gibi artık XSCREENSAVER_FILE_FOUND değişkeni güzel bir şekilde değişmeye başlamıştı. Bu satırı ekleyip baştan derletip kdeartwork’u kurunca herşey güzelce çalıştı. Peki bu satırı neden eklememiz gerekiyordu ?

Cmake’de file_find komutunun yardım dosyasını şu şekilde açarak:

cmake --help-command find_file

Aşağıdaki kısmı okuyunca her şey daha iyi anlaşıldı:

This command is used to find a full path to named file.  A cache entry
named by <var> is created to store the result of this command.  If the
full path to a file is found the result is stored in the variable and
the search <strong>will not be repeated unless the variable is cleared</strong>. </var>

Yani file_find komutu ilk bulduğu değeri belleğe atıp kaydediyor. Ondan sonraki değerleri hiçe sayıyor. Bellekteki değeri silmemiz bekliyor.”unset” komutu ile işte bu değişkeni bellekten siliyor tam olarak. Paketi yamalayarak sisteme kurduktan sonra aşağıda “Ekran Koruyucu“yu açtığımda gördüğünüz gibi “Değişen Çizgiler” ekran koruyucusunun yok olduğunu görürsünüz:

Hepsi bu kadar. Yine bir satırlık bir yama ama gördüğünüz gibi bir çok şeyi değiştiriyor. Bunun gibi yüzlerce hata çözüldüğünü, çok daha eksantrik olanların olduğundan bahsetmeye gerek yok herhalde. Bazıları gerçekten çok zaman alabiliyor. Örneğin benim yazdığım bir diğer yazımdaki hata 2-3 günümü alırken, bu hata 2 saatimi almıştı. Biraz da o anki ruh halin de etkisi olabiliyor herhalde.

Bu arada yukarıda anlatıklarımın çoğu sesli düşünce. Hataya bakarken belki yüzlerce komut kullanıyorsunuz, vim macrolarını aslında çok hızlı bir şekilde yazıyorsunuz. Ben sadece adım adım neler yapıldığını ve nerelere gidebileceğini gösterdim yine. Vim ile yaptığım düzenlemelerde biraz ayrıntıya girdim biliyorum, fakat onu da macro ve iki dosya arasındaki karşılaştırma olayların sıkça yapıldığından biraz ipucu şekilde olsun dedim.Sorularınız varsa daha detaylı anlatabilirim.

13
Oca

Değerli arkadaşlarım, hatırlayacaksınız burada, Bahçeşehir Üniversitesi İletişim Tasarımı Bölümü öğretim görevlisi Sn. İlker Berkman’ın davetini sizlerle paylaşmıştım. İlker Bey’in Pardus Kullanıcıları e-posta listesine duyuru yaptığı esnada tarihi belli olmayan toplantının zamanı netleşti. Bu hafta sonu,15 Ocak Cumartesi saat 17:00′de Bahçeşehir Üniversitesi Beşiktaş Kampüsü’ndeyiz…”Bu toplantı neyin nesidir? Neyi amaçlar? Ne yapacağız?” gibi sorularınızın yanıtları için burayı okuyabilir, hem bilgi almak hem de katılım organizasyonu için iberkman[at]bahcesehir.edu.tr e-posta adresi ile İlker Bey’le temasa geçebilirsiniz.

Deneyimlerimizi paylaşıp, daha gelişmiş bir Pardus’a katkıda bulunmak için orada olacağız. Bekliyoruz.


25
Ara

Varsayılan olarak KDE masaüstü ortamı ile gelen Pardus’un kurulumuyla birlikte 2 güzel simge seti geliyor: Oxygen ve Milky 1. Ama Pardus 2011 ile birlikte tanışacağımız Milky 2 ile birlikte güzel bir simge setimiz daha olacak. Martı isimli bu seti, Pardus gönüllülerinden, Özgürlükiçin.com Tema Yöneticisi Abdulkerim Aydın hazırlıyor. Simge seti hakkındaki ilk izlenimlerim gayet olumlu. Hafiften gölgelendirilmiş, derinlik hissi uyandıran simgeler çok şık duruyor. Müzikler, Resimler, Videolar gibi kategorik klasörler hayli hoş tasarlanmış. Kimi simgelerde (şimdilik metin dosyası ile sd kart simgesinde yakalayabildim) “Martı” imzasını da görmek mümkün.

 

Tamamlandığında çok güzel olacağı her halinden belli. Ellerine sağlık Abdulkerim. Bir simge setini eksiksiz tamamlayabilmek zaman ve emek isteyen, gerçekten çetrefilli bir iş. Her babayiğidin harcı değil. “Ellerine sağlık”a ek olarak tebrikler Abdulkerim.

Martı simge setinin bir internet günlüğü de var. Bu günlük üzerinden, yorum ve önerilerimizle bu güzel simge setinin gelişimine katkıda bulunmamız önemli. Bir sanatçının gıdası, sanatseverlerin ilgi ve beğenisidir. O zaman?..Haydi, Martı’ya simit atmaya…


22
Kas

KApplication, şekilde de görüldüğü üzere QApplication ve KInstance' dan miras alınarak oluşturulmuş bir sınıftır.

Tüm KDE uygululamaları için, bilgi sağlar ve kontrol eder.Bu sınıfın bir nesnesi sadece bir uygulamada örnek olabilir. Bu örneğe daima 'kapp' yerel değişkeni üzerinden erişilebilir.

Bu sınıf tüm KDE uygulamaları için servisleri takip edebilmeyi sağlar.
  • Olay kuyruğunu kontrol eder(bknz:QApplication)
  • Hızlandırıcılar,ortak menü girişleri, bir KConfig nesnesi gibi KDE kaynaklarıyla uygulama sağlar.oturum yönetimi olayları,yardım vb..
  • Zombi çocukları('Zombie Children' tam olarak ne demek istediğini anlamadığım için olduğu gibi çevirdim.) önlemek amacıyla SIGCHLD sinyali için bir sinyal işleyicisi yüklenir. Eğer bu sinyali kendimiz yakalamak istersek yada hiç yakalamak istemezsen, Kapplication yapıcısını çalıştırdıktan sonra yeni bir sinyal işleyicisi(ya da SIG_IGN) düzenleyebiliriz
  • installSigpipeHandler() kullanılarak SIGPIPE sinyali için boş bir sinyal işleyici yükler.Eğer Bu sinyali kendimiz yakalamak istersek, Kapplication yapıcısını çalıştırdıktan sonra yeni bir sinyal işleyicisi düzenleyebiliriz.
  • Yeni servisler çalıştırılabilir.
Başlatılmış bir service durumu, servisin masaüstündeki 'X-DCOP-Servistipi' girişine bağlı olur:

üç ihtimal var:
  • X-DCOP-ServiceType=None (default), Daima yeni bir servis baştır,dcop ile servis kayıtlarına kadar beklemez.
  • X-DCOP-ServiceType=Multi , Daima yeni bir servis başlatır, dcop ile servis kayıtlı olana kadar bekler.
  • X-DCOP-ServiceType=Unique , Eğer başlatılmamış ise sadece servisi başlatır, dcop ile servis kayıtlı olana kadar bekler.

KApplication, miras aldığı sınıfların metotlarını kullandığı kadar kendi metotlarınada sahip(bknz:KApplication). Anca manager ailesinde benim görebildiğim kadarıyla miras aldığı QApplication sınıfındada bulunan bir metot kullanıyor.

Manager' lardaki kullanım olarak:

app=KApplication()
...
app.exec_()

Burada sonuç itibariyle bakılması gereken yer app.exec_() bu metod ile, fare'nin hareket olayları, yeniden boyutlandırma, düğmeye basma olayları gibi bütün olayları kabul eder. Bu döngü son pencere kapatıldığında biter.
QApplication ve KApplication sınıfları içinde manager'daki exec_() metodu exec() olarak bulunuyor.
Peki neden farklı yazılmış?

Bunun sebebi exec'in zaten bir python keyword'ü olması. Bu nedenle exec yerine exec_ kullanılmış.

Bu durumda KApplication yerine QApplication kullanabiliriz diye düşünüyorum.

Kaynaklar

KIcon, QIcon sınıfından türetilmiş bir sınıftır. Yapıcıları hariç tüm metotları QIcon' dan miras alınmış. KDE simge özelliklerini sağlayan(destekleyen) QIcon sınıfının bir sarmalayıcı sınıfıdır. KIcon,Yükleme ve kaplama(grafik) performansına uygun bir KIconEngine ile Qicon oluşturmak için uygun bir sınıftır.

KIcon Constructors:

KIcon(const QString &iconName, KIconLoader *iconLoader, const QStringList &overlays) : Bir KDE stil ikonu ismini ve isteğe bağlı olarak özel bir ikon yükleyici alan yapıcıdır.
  • iconName : yüklemek için Kde ikonunun ismi
  • iconLoader : Bu ikonun yüklemesinde kullanılan yükleyici, ya da yerel ikon yükleyiciyi ön tanımlı olarak kullanabilmek için "null" olur
  • overlays : Bu ikonları uygulamak için overlays'lerin bir listesi
KIcon(const QString &iconName, KIconLoader *iconLoader) : Kolaylık sağlamak için aşırı yüklenmiş üye fonksiyondur. Yukarıdaki fonksiyonlardan tek farkı kabul ettiği parametredir.
KIcon(const QString &iconName) : Yukarıdaki yapıcı gibi aşırı yüklenmiş fonksiyonlardan biridir.
KIcon(const QIcon &copy) : Herhangi bir Qicon'u kopyalayan yapıcı
KIcon() : Boş bir ikon yapıcısı
~KIcon() : İkonu yok etmek için

Ek olarakta:

operator=(const KIcon &other)

Bu Yapıcıların kullanımını görmek için: kicon.cpp

Yönetici ailesinde KIcon kullanımı ile ilgili olarak:

  • widget = self.makeItemWidget(id_, name, description, type_, kdeui.KIcon(icon), state)
  • self.pushToggle.setIcon(kdeui.KIcon("media-playback-stop"))
  • self.labelIcon.setPixmap(kdeui.KIcon("document-encrypt").pixmap(48, 48))
  • self.labelIcon.setPixmap(kdeui.KIcon("document-decrypt").pixmap(48, 48))
  • self.pushToggle.setIcon(kdeui.KIcon("media-playback-start"))
  • self.pushEdit.setIcon(KIcon("preferences-other"))
  • self.pushDelete.setIcon(KIcon("edit-delete"))
Buradaki KIcon kullanımı nerdeyse birbiriyle aynı icon isimleri verilerek KIcon oluşturulmuş. Bunların içinde en göze çarpanı pixmap(48,48) metodu. Bu metod ise QIcon sınıfında aşırı yüklenmiş bir fonksiyondur.

QPixmap QIcon::pixmap ( int w, int h, Mode mode = Normal, State state = Off ) const


QSize(w, h) 'ın pixmap'ini geridöndürür. pixmap, beklediğimizden küçük olabilir ama daha büyük olmaz.

Not: QSize(w,h) fonksiyonu yükseklik ve genişliğin verilmesiyle bir boyut yapıcıdır.

Sonuç olarak KIcon'un kullandığı tüm metodlar için QIconu gönül rahatlığı ile kullanabiliriz.

Kaynaklar:

9
Kas
KIcon, QIcon sınıfından türetilmiş bir sınıftır. Yapıcıları hariç tüm metotları QIcon' dan miras alınmış. KDE simge özelliklerini sağlayan(destekleyen) QIcon sınıfının bir sarmalayıcı sınıfıdır. KIcon,Yükleme ve kaplama(grafik) performansına uygun bir KIconEngine ile Qicon oluşturmak için uygun bir sınıftır.

KIcon Constructors:

KIcon(const QString &iconName, KIconLoader *iconLoader, const QStringList &overlays) : Bir KDE stil ikonu ismini ve isteğe bağlı olarak özel bir ikon yükleyici alan yapıcıdır.
  • iconName : yüklemek için Kde ikonunun ismi
  • iconLoader : Bu ikonun yüklemesinde kullanılan yükleyici, ya da yerel ikon yükleyiciyi ön tanımlı olarak kullanabilmek için "null" olur
  • overlays : Bu ikonları uygulamak için overlays'lerin bir listesi
KIcon(const QString &iconName, KIconLoader *iconLoader) : Kolaylık sağlamak için aşırı yüklenmiş üye fonksiyondur. Yukarıdaki fonksiyonlardan tek farkı kabul ettiği parametredir.
KIcon(const QString &iconName) : Yukarıdaki yapıcı gibi aşırı yüklenmiş fonksiyonlardan biridir.
KIcon(const QIcon &copy) : Herhangi bir Qicon'u kopyalayan yapıcı
KIcon() : Boş bir ikon yapıcısı
~KIcon() : İkonu yok etmek için

Ek olarakta:

operator=(const KIcon &other)

Bu Yapıcıların kullanımını görmek için: kicon.cpp

Yönetici ailesinde KIcon kullanımı ile ilgili olarak:

  • widget = self.makeItemWidget(id_, name, description, type_, kdeui.KIcon(icon), state)
  • self.pushToggle.setIcon(kdeui.KIcon("media-playback-stop"))
  • self.labelIcon.setPixmap(kdeui.KIcon("document-encrypt").pixmap(48, 48))
  • self.labelIcon.setPixmap(kdeui.KIcon("document-decrypt").pixmap(48, 48))
  • self.pushToggle.setIcon(kdeui.KIcon("media-playback-start"))
  • self.pushEdit.setIcon(KIcon("preferences-other"))
  • self.pushDelete.setIcon(KIcon("edit-delete"))
Buradaki KIcon kullanımı nerdeyse birbiriyle aynı icon isimleri verilerek KIcon oluşturulmuş. Bunların içinde en göze çarpanı pixmap(48,48) metodu. Bu metod ise QIcon sınıfında aşırı yüklenmiş bir fonksiyondur.

QPixmap QIcon::pixmap ( int w, int h, Mode mode = Normal, State state = Off ) const


QSize(w, h) 'ın pixmap'ini geridöndürür. pixmap, beklediğimizden küçük olabilir ama daha büyük olmaz.

Not: QSize(w,h) fonksiyonu yükseklik ve genişliğin verilmesiyle bir boyut yapıcıdır.

Sonuç olarak KIcon'un kullandığı tüm metodlar için QIconu gönül rahatlığı ile kullanabiliriz.

Kaynaklar:

8
Kas

KApplication, şekilde de görüldüğü üzere QApplication ve KInstance' dan miras alınarak oluşturulmuş bir sınıftır.

Tüm KDE uygululamaları için, bilgi sağlar ve kontrol eder.Bu sınıfın bir nesnesi sadece bir uygulamada örnek olabilir. Bu örneğe daima 'kapp' yerel değişkeni üzerinden erişilebilir.

Bu sınıf tüm KDE uygulamaları için servisleri takip edebilmeyi sağlar.
  • Olay kuyruğunu kontrol eder(bknz:QApplication)
  • Hızlandırıcılar,ortak menü girişleri, bir KConfig nesnesi gibi KDE kaynaklarıyla uygulama sağlar.oturum yönetimi olayları,yardım vb..
  • Zombi çocukları('Zombie Children' tam olarak ne demek istediğini anlamadığım için olduğu gibi çevirdim.) önlemek amacıyla SIGCHLD sinyali için bir sinyal işleyicisi yüklenir. Eğer bu sinyali kendimiz yakalamak istersek yada hiç yakalamak istemezsen, Kapplication yapıcısını çalıştırdıktan sonra yeni bir sinyal işleyicisi(ya da SIG_IGN) düzenleyebiliriz
  • installSigpipeHandler() kullanılarak SIGPIPE sinyali için boş bir sinyal işleyici yükler.Eğer Bu sinyali kendimiz yakalamak istersek, Kapplication yapıcısını çalıştırdıktan sonra yeni bir sinyal işleyicisi düzenleyebiliriz.
  • Yeni servisler çalıştırılabilir.
Başlatılmış bir service durumu, servisin masaüstündeki 'X-DCOP-Servistipi' girişine bağlı olur:

üç ihtimal var:
  • X-DCOP-ServiceType=None (default), Daima yeni bir servis baştır,dcop ile servis kayıtlarına kadar beklemez.
  • X-DCOP-ServiceType=Multi , Daima yeni bir servis başlatır, dcop ile servis kayıtlı olana kadar bekler.
  • X-DCOP-ServiceType=Unique , Eğer başlatılmamış ise sadece servisi başlatır, dcop ile servis kayıtlı olana kadar bekler.

KApplication, miras aldığı sınıfların metotlarını kullandığı kadar kendi metotlarınada sahip(bknz:KApplication). Anca manager ailesinde benim görebildiğim kadarıyla miras aldığı QApplication sınıfındada bulunan bir metot kullanıyor.

Manager' lardaki kullanım olarak:

app=KApplication()
...
app.exec_()

Burada sonuç itibariyle bakılması gereken yer app.exec_() bu metod ile, fare'nin hareket olayları, yeniden boyutlandırma, düğmeye basma olayları gibi bütün olayları kabul eder. Bu döngü son pencere kapatıldığında biter.
QApplication ve KApplication sınıfları içinde manager'daki exec_() metodu exec() olarak bulunuyor.
Peki neden farklı yazılmış?

Bunun sebebi exec'in zaten bir python keyword'ü olması. Bu nedenle exec yerine exec_ kullanılmış.

Bu durumda KApplication yerine QApplication kullanabiliriz diye düşünüyorum.

Kaynaklar