Ek A. .xinitrc/.xsession ayarları

Verin 'in katkılarıyla.

xinit'in parçalardaki yeri

Bir pencere yöneticisi X11 de çalışan netscape, gimp yada xterm gibi bir uygulamadır. X11 'e yeni olan birçok insan X11 'in pencere yöneticisini çalıştırdığını ve diğer programları da pencere yöneticisinin çalıştırdığını düşünür. Fakat bu doğru değildir. Eğer doğru ayarlandıysa, bütün programlarınızı X11 altında çalıştırabilirsiniz, pencere yöneticisini öldürüp başka bir pencere yöneticisini çalıştırmak gibi.

X11 'in çalıştırdığı ve diğer programları çalıştıran gerçek program .xinitrc veya .xsession betiğidir. X11 çalıştığı zaman sizin .xinitrc yada .xsession betiğiniz çalışır, ve betik bittiği zaman, X11 'de biter. Bunu tekrar edeyim, bu çok önemli: .xinitrc bittiği zaman X te bitmiş demektir. Pencere yöneticiniz çıkış yaptığı zaman değil.

Betik düzeni

Güzel, şimdi zaten bildiğiniz birşeyi anlayalım. Kabuk'ta bir komut yazdığınız zaman komut bitene kadar başka birşey yapamazsınız. .xinitrc yada .xsession betiğide aynıdır. Başladığı zaman, çok uzun zaman alan bir programı (çoğu X11 programı gibi) çalıştırması gerektiğinde, o program çalışmasını bitirene kadar orada durur.

İdeali, betiği askıda tutacak sadece bir programınız olmasıdır. Ve genellikle bunun sonda olmasını istersiniz. Yani, bu programdan önce X11 in çalıştırmasını istediğiniz programlar varsa bunları arkaplana atmanız gerekir. Satırın sonuna bir & koyarsınız. Mesela, ek olarak xclock 'un çalışmasını istiyorsunuz, bu satırı askıda kalan programdan önceye koabilirsiniz:

    xclock &

Şimdi, bir sonraki şey exec, bir çok kaynakta pencere yöneticisini betiğinize nasıl ekleyeceğinizi bu şekilde tavsiye eder. Fakat, dürüst olmak gerekirse bu gerçekten gerekli değildir, eğer pencere yöneticinizi betiğin son satırına koyarsanız, exec olmadan da orada askıda kalacaktır.

Öyleyse neden exec? Mesela betiğinize bir sürü pencere yöneticisi başlangıç satırı koymak istiyorsunuz ve sadece birinin çalışmasını istiyorsunuz. exec ile seçtiğiniz başlangıç-satırını tepeye koyabilirsiniz. Çünkü bu exec in anlamıdır:

"Beni bu programla değiştir, mesela, bunu çalıştır ve bittiği zaman beni de bitir."

Eğer bir exec enlightenment satırının tepesine bir exec wmaker satırı koyarsanız, wmaker satırı bittiği zaman betik te biter, bir sonraki satıra geçmez.

Gerekli değil dediğimde ne anlatmak istediğimi anladınız mı? Yani bir grup commented-out pencere yöneticisi satırını koyabilirsiniz, ve aynı şekilde çalışmaya devam eder.

Bunları yapmanın bir başka yolu.

Alternatif olarak, pencere yöneticinizi çalıştırabilir ve proses id sini bir ortam değişkenine saklayabilirsiniz:

        wmaker & wmpid=$!

Bu onu arka planda çalıştırır (&) ve proses id sini ($!) bir değişkene(wmpid) atar. Sonra, wait: ile askıda kalmasını sağlayabilirsiniz:

    wait $wmpid

yada herzaman çalışmasını istediğiniz programı, mesela gkrellm, arka plana atmıyarak orada askıda kalmayı sağlayabilirsiniz. Fakat unutmayın onu bitirdiğiniz zaman X11 oturumunuz da sonlanacaktır.

Ben wait metodunu kullanırım, çünkü dockapp lerimi çalıştırmadan önce pencere yöneticimi seçmekten hoşlanırım. Ayrıca, herhangi birşey yapmadan önce, X11 ayarlarımı değiştirmeyi, mesela dpms, ekran koruyucu, ve hatta font path'ime (genel fontlara eklemek istemediğim fontlar) bazı dizinleri eklemeyi severim. Ve sonra herşey bittikten sonra, font path'imi temizlerim, çünkü eğer bir görüntü yöneticisi çalıştırdıysam herzaman fot path'i resetlemek iyi değildir.

Örnek A-1. .xinitrc

    # ekran karartmayı kapat ve energy star özelliklerini aktif et
    xset s off
    xset dpms 600 60 60

    # seçmeli fontlarımı font path e ekle
    xset +fp "$X_FONTPATH"
    xset fp rehash

    # debug edilme durumuna karşı, şu anki ortam değişkenlerini çık
    env > ~/.xenv

    # pencere yöneticisi
    fluxbox & wmpid=$!

    bbrun &
    wmCalClock &
    wmxmms &

    # ASKI NOKTASI - pencere yöneticisi çıkana kadar bekle
    wait $wmpid

    # x font path i geri al
    xset fp default