NASIL Gentoo Altında Fluxbox

From Lapis Wiki

Jump to: navigation, search

Gentoo Pencere Yöneticileri Serisi


Pencere Yöneticileri


düzenle
Fluxbox örnek bir ekran görüntüsü
Enlarge
Fluxbox örnek bir ekran görüntüsü

Konu başlıkları

Fluxbox Nedir?

Fluxbox, X için blackbox tabanlı bir pencere yöneticisidir. Yapılandırma dosyaları vasıtasıyla özelleştirilebilir ve son derece hızlıdır. İlk yüklediğinizde çok basit görünebilir, bu NASIL belgesi fluxbox'unuzu nasıl tekrar yapılandırabileceğinizi ve göze hitap eden ek özellikler kazandırabileceğinizi gösterecek.

Kurulum ve düzenleme

Resim:Dikkat.png http://www.gentoo.org/doc/en/fluxbox-config.xml adresinde Gentoo'nun resmi bir Fluxbox Nasıl belgesi bulunmaktadır.

emerge fluxbox

Eğer GDM gibi bir masaüstü yöneticisi kullanıyorsanız, uygun menüden fluxbox'u seçebiliyor olmalısınız. Eğer Xorg ile gelen öntanımlı masaüstü yöneticisi XDM'yi kullanmak istiyorsanız, /etc/rc.conf dosyasını düzenleyin ve XSESSION="Xsession" satırını XSESSION="fluxbox" olarak değiştirin.

Eğer oturum açmak için grafiksel bir yönetici kullanmayacaksanız, fluxbox'u startx ile başlatmak için, genel olarak /etc/X11/xinit/xinitrc dosyasını veya her kullanıcı için ayrı ayrı ~/.xinitrc dosyasını düzenleyebilirsiniz.

Fluxbox'u başlatmak için aşağıdaki gibi bir yapı eklemelisiniz:


File: ~/.xinitrc
exec startfluxbox

Fluxbox'a girdiğinizde çalışmasını istediğiniz uygulamaları daha sonra bahsedeceğimiz .fluxbox/apps dosyası içinde tanımlayacaksınız.

Temel Kullanım

Flxubox'u ilk başlattığınızda boş bir arkaplan ve alt tarafta küçük bir araç çubuğu ile karşılaşırsınız. Arayüz tamamen sezgiseldir. Arkaplana sağ tıkladığınızda fluxbox menüsü açılır. Araç çubuğu beklendiği gibi çalışır ve açık pencerelerin simgelerini gösterir. KDE'nin yapısına benzer şekilde ekran dört çalışma alanın bölünmüştür. (Araç çubuğunun sol kısmındaki oklar yardımıyla çalışma alanını değiştirebilirsiniz) Böylece bir çalışma alanında açık olan uygulamalar diğerlerinde görülmez. Aynı zamanda uygulamaları, uygulama araç çubuğuna sağ-tıklayınca karşınıza çıkan menüdeki Send-To seçeneği ile diğer çalışma ortamlarına aktarabilir, veya bu işi pencereyi ekran kenarlarına sürükleyerek halledebilirsiniz.

Şimdi çalışan bir Fluxbox'a sahipsiniz, öncelikle alışkanlıklarınıza ve ihtiyaçlarınıza göre bazı özellikleri düzenleyelim. ~/.fluxbox klasöründeki dosyalara bir göz atalım.

init
Temel yapılandırma dosyası.
menu
Sağ tıkladığınızda gördüğünüz menüdeki öğeleri düzenleyebileceğiniz dosya.
keys
Klavye kısayollarını düzenlemenizi ve yeni kısayollar oluşturmanızı sağlar.
apps
fluxbox'un hatırlamasını istediğiniz bütün uygulamalar hakkında bilgileri tutar. Öntanımlı pozisyon, boyut ve dekorasyon gibi.
lastwallpaper
fbsetbg tarafından oluşturulur (ilerde değineceğiz), bu dosya son kullandığınız duvar kağıdı hakkında bilgiler tutar, böylece yerini tekrar tekrar girmek zorunda kalmazsınız.

~/.fluxbox/menu dosyasının oluşturulması

fluxbox-generate_menu

Fluxbox ile gelen menü oluşturucuyu kullanabilmek için basitçe şu şekilde çalıştırın:

fluxbox-generate_menu

Bu tercihen değiştirebileceğiniz, mesela kde veya gnome desteği eklemenizi sağlayan, veya kullanmak istediğiniz öntanımlı tarayıcıyı veya terminali değiştirebileceğiniz ~/.fluxbox/menuconfig dosyasını oluşturacaktır.

Menüyü basitçe özelleştirebilmek için, fluxbox-generate_menu ~/.fluxbox/usermenu dosyasını arar.

Farklı konumda bir dosyayı kullanmak için fluxbox-generate_menu'yu "-u <konum>" seçeneğiyle çalıştırabilirsiniz.

menumaker

Menumaker değişik pencere yöneticilerinin menülerini bütünleştirmek için kullanılan bir programdır. Fluxbox'un bir parçası olmadığından önce programı yüklemeli ( emerge -va menumaker ), ardından

mmaker -v fluxbox

ile çalıştırmalısınız. Menünüzü "bayağı bayağı" genişleteceğine dikkatinizi çekerim.

gen-portage-menu.sh

Bu, portage menünüzden doğrudan yükleme (emerge) yapmanızı sağlayacak küçük bir betik. Benim tercihim değil, yine de ihtiyacınız olursa:


File: gen-portage-menu.sh
#!/bin/sh
# from http://dev.gentoo.org/~solar/portage_misc/gen-portage-menu.sh.txt
# modified by joe@neoturbine.net to add -a option and sudo 

OUTFILE=~/.fluxbox/portage_menu

source /etc/make.conf
source /sbin/functions.sh

if [ -e ${OUTFILE}.lock ]; then
        ewarn "Refusing to load another session for $$"
        exit 0
fi
touch ${OUTFILE}.lock
echo $$ > ${OUTFILE}.lock

[ -e "$PORTDIR" ] || PORTDIR=/usr/portage
cd ${PORTDIR}

TOTAL=0

echo \[begin\] \(Portage @TOTAL@\) > $OUTFILE
echo \[submenu\] \(Portage @TOTAL@\) >> $OUTFILE
find ${PORTDIR} -name '*[a-z]-[a-z]*' -type d -maxdepth 1 | while read line; do
        # [ -f /usr/bin/beep ] && beep -n 1 -r 1
        pushd $line > /dev/null
        count=$(find . -type d -maxdepth 1 | cut -c 3- | grep -v ^CVS$ | grep -v ^$ |wc -l | awk '{print $1}')
        category=$(basename $line)
        # [ -w /dev/speech ] && echo $category > /dev/speech &
        echo -ne '\t' >> $OUTFILE 
        echo \[submenu\] \(${category}\) \{$count packages\} >> $OUTFILE

        find . -type d -maxdepth 1 | cut -c 3- | grep -v ^CVS$ | grep -v ^$ | while read dname ; do
                echo -ne '\t\t' >> $OUTFILE
                #/usr/lib/portage/bin/portageq has_version / $category/$dname
                ret=$?
                #if [ "$ret" == 0 ] ; then
                #       vname=$(basename $(/usr/lib/portage/bin/portageq best_version / $category/$dname))
                #else
                        vname=$dname
                #fi
                echo \[exec\] \($vname\) \{ xterm -rv -e \"sudo emerge -va $category/$dname \; bash --login\" \} >> $OUTFILE
                let ++TOTAL
        done
        echo -ne '\t' >> $OUTFILE
        echo \[end\] >> $OUTFILE
        popd $line > /dev/null

done
echo \[end\] >> $OUTFILE
echo \[end\] >> $OUTFILE
sed -e "s:@TOTAL@:${TOTAL}:g" < $OUTFILE > $OUTFILE~ && cp $OUTFILE~ $OUTFILE

[ -f /usr/bin/beep ] && beep -n 1 -r 5

rm ${OUTFILE}.lock


Eğer kendi menünüzü yaparsanız bu betiği ~/.fluxbox/menu içerisine [include] (~/.fluxbox/portage_menu) ekleyerek kullanabilirsiniz veya fluxbox-generate_menu kullanırsanız ~/.fluxbox/usermenu içerisine ekleyin.

Resim:Dikkat.png Çevirenin notu:

Yani önce yukarıdaki betiği gen-portage-menu.sh dosyasına kaydedin, sonra betiği çalıştırın, betik portage-menu adında bir dosya oluşturacaktır.

$ chmod +x gen-portage-menu.sh
$ ./gen-portage-menu.sh

Şimdi [include] (~/.fluxbox/portage_menu) satırını ~/.fluxbox/menu dosyasına ekleyin ve kaydedin. Artık sağ tıklama menünüzden program yükleme yapabilirsiniz. (not sudo'ya ihtiyacınız olacak.)

fbprocmenu

İşte fluxbox menüsüne bişeler eklemenizi sağlayacak başka bir betik. Bu betik root olarak çalıştırılmalıdır. Nereden aldığımı hatırlamıyorum:


File: fbprocmenu
#!/usr/bin/env python

#------------------------ process info script for fluxbox menu ------------------

import sys, os
from os.path import isdir, isfile, join
from time import sleep
def getprocesses():
    """Sort out process ids from /proc"""
    proccontent = os.listdir("/proc")
    dirsonly = [d for d in proccontent if isdir(join("/proc", d))]
    proclist = [elem for elem in dirsonly if elem[0] in ['1', '2', '3', '4', '5', '6', '7', '8', '9']]
    proclist.sort()
    return proclist

def getprocinfo(procid):
    """Get info about an individual process."""
    procinfo = {}
    procpath = "/proc/%s/status" % procid
    statfile = open(procpath, 'r')
    procinfo["pid"] = procid
    for line in statfile.readlines():
        if "Name" in line:
            procinfo["Name"] = line.split(":")[1].strip()
        elif "State" in line:
            procinfo["State"] = line.split(":")[1].split(" ")[0].strip()
        else:
            break
    return procinfo

def makeprocdictlist(proclist):
    """Construct list of procinfo dictionaries"""
    #procdictlist = [getprocinfo(pid) for pid in proclist]
    procdictlist = map(getprocinfo, proclist) 
    return procdictlist

while 1:
    procs = getprocesses()
    info = makeprocdictlist(procs)
    os.remove("/usr/share/commonbox/fbprocmenu.txt")
    try:
        outfile = open('/usr/share/commonbox/fbprocmenu.txt', 'w+')
        outfile.write('[begin]  (procinfo) {}\n')
        for elem in info:
            line = "[submenu]  ("+elem["Name"]+" "+elem["pid"]+" "+elem["State"]+") {}\n    [exec] (kill) {kill -9 "+elem["pid"]+"}\n   [exec]"\
                +" (restart) {kill -18 "+elem["pid"]+"}\n    [exec] (terminate) {kill -15 "+elem["pid"]+"}\n[end]\n"
            outfile.write(line)
        outfile.close()
        sleep(5)
    except IOError:
        print "Cannot create fbprocmenu file."

Eğer kendi menünüzü yaparsanız bu betiği ~/.fluxbox/menu içerisine "[include] (/usr/share/commonbox/fbprocmenu.txt)" ekleyerek kullanabilirsiniz, veya fluxbox-generate_menu kullanırsanız ~/.fluxbox/usermenu içerisine ekleyin.



Resim:Dikkat.png Çevirenin Notu:

Bu betik sağ tıklama menünüze çalışan süreç listesini eklemenizi sağlıyor, böylece kolaylıkla süreçlere kill, terminate veya restart işlemleri uygulayabiliyorsunuz. Fakat yukarıda söylendiği gibi sadece root olarak çalışabiliyor. ~/.fluxbox/menu dosyanıza şunu ekleyin

[submenu] (Surecler)
      [include] (/usr/share/commonbox/fbprocmenu.txt)
[end]

ve betiği çalıştırın:

# python fbprocmenu

İlerleyen zamanlarda daha uygun şekle getirilebilir.

Denu

Sourceforge kaynağından Denu, Fluxbox dahil birçok pencere yöneticisi için simgelerle birlikte otomatik menü oluşturur. Göz atın.

Başlangıç Uygulamaları

Fluxbox'unuzu özelleştirmek için yapacağınız ilk şey fluxbox başladığında çalıştırılacak programlar tanımlamaktır. Bu iş için üç yöntem mevcut:

  • Kullanıcının ~/.fluxbox/startup dosyasını düzenlemek

Tercih edilen bu yöntem fluxbox'u Gentoo'nun kdm/gdm/xdm oturum-betiklerindeki gibi öntanımlı startfluxbox komutuyla başlatıyorsanız geçerlidir. Örnek bir ~/.fluxbox/startup dosyası startfluxbox'un ilk kullanımında oluşturulur.

~/.fluxbox/startup'ı düzenleyin ve fluxbox ile beraber çalışmasını istediğiniz uygulamaların adlarını sonlarına & koymayı unutmadan bu dosyaya ekleyin. Daha sonra ~/.xinitrc veya ~/.xsession (fluxbox'un nerden başladığına bağlı olarak) "startfluxbox" (eğer daha önce düzenlenmişse, "fluxbox" ifadesini "startfluxbox" olarak değiştirin, doğrudan ekleme yapmayın) eklemeniz yeterli.

  • Kullanıcının .xinitrc dosyasının değiştirilmesi

"startfluxbox" veya "startfluxbox" kullanmayan bazı oturum betikleri kullanmasanız dahi (kimi durumlarda GDM) çalıştığından kimileri bu kullanımı tercih eder. Normalde gdm .xinitrc ve .xsession içindeki betikleri değil sadece /etc/X11/Sessions içindekileri kontrol eder. fluxbox ve otomatik olarak başlamasını istediğiniz diğer uygulamaları buraya ekleyin.


  • flux her başladığında çalışacak başka bir bash betiği kullanmak.

Bu yöntem, diğer ikisinin sunamadığı birşeye ihtiyacınız olmadığı takdirde anlamsızdır. Önce ~/.fluxbox/init dosyasını bir editörle açın ve ipuçlarını ve örnekleri inceleyin:


Şimdi rootCommand yazan satırı bulun ve şu şekilde değiştirin:

write full name.rootCommand: ~/.fluxbox/autostart.sh

.fluxbox klasörüne gidin, autostart.sh dosyasını oluşturun ve çalıştırılabilir hale getirin:

cd ~/.fluxbox/
nano -w ./autostart.sh
chmod +x ./autostart.sh

Bu dosya içine gaim ya da xterm gibi istediğiniz programları ekleyebilirsiniz. Sadece her satır sonuna & koymayı unutmayın, yoksa alt satırdakiler çalışmak için üstteki uygulamanın sonlanmasını beklerler. ( Kimi zaman böyle bir uygulama isteyebilirsiniz tabi )

Üçüncü yöntem ve diğer ikisi arasındaki temel fark, üçüncünün fluxbox çalışmaya başladıktan sonra, diğerlerinin fluxbox'tan önce çalışmaya başlamalarıdır. Fluxbox'tan sonra çalıştığından üçüncü yöntemde bazı çevre değişkenlerini değiştirmek veya koymak oldukça zor (hatta imkansız) bir hal alır.

Masaüstü

fbsetbg ile arkaplan resmi değiştirilmesi

Fbsetbg fluxbox ile beraber gelir ve bu gibi özellikleri (feh, eterm, xv) destekleyen yüklü herangi bir uygulamayla kullanılabilen akıllı bir sarıcı betiktir. Bu uygulamaların hepsi sahte transparanlık (xchat için gereken transparanlık gibi) desteklemezler. feh, küçük, hızlı ve aynı zamanda transparan desteği olan popüler bir uygulamadır. Öyleyse başlamak için feh kuralım:

emerge -av feh

fbsetbg'nin feh'i ne amaçlı kullanacağımızı bilip bilmediğini kontrol edelim:

fbsetbg -i

feh is a nice wallpapersetter. You won't have any problems. gibi birşeyler söylemelidir. Eğer öyleyse duvar kağıdımızı koymak için devam edebiliriz. Eğer başka bir uygulama kullandığınızı söylüyorsa, ister devam edebilirsiniz, isterseniz fbsetbg'nin önüne wpsetters=feh koyabilirsiniz.

Bu komut bir jpeg resmi tam ekran olarak arkaplan resmi yapar:

fbsetbg -f /resme/giden/yol.jpeg

Bu komut fbsetbg -i farklı bir sonuç vermiş olsa dahi jpeg resmi tam ekran arkaplan yapacaktır.

wpsetters=feh fbsetbg -f /path/to/image.jpeg

fluxbox'u her başlattığınızda bu işlemi gerçekleştirmek için komutu ~/.fluxbox/init içerisine yerleştirin.

session.screen0.rootCommand: ile başlayan satırı bulun ve sonrasına doğru komutu ekleyin. İsterseniz init dosyasını değiştirmeden daha kısa olan fbsetbg -l komutunu kullanarak son kullanılan duvarkağıdını yükleyebilirsiniz.

fbsetbg hakkında daha fazla bilgi için man sayfasına bakın

man fbsetbg

feh ile güzel ayrıntılar

feh'i Fluxbox'un duvarkağıdı menüsü seçeneği olarak kullanarak daha zarif şeyler yapabilirsiniz. Bu seçenek ile Fluxbox menüsünden duvarkağıtlarınızı değiştirebilirsiniz, menüye şu şekilde ekleyin:

[submenu] (Duvar Kağıtlarım)
     [exec] (Resim1) {feh --bg-scale /resmin/yolu.jpeg}
     [exec] (Resim2) {feh --bg-scale /resmin/yolu2.jpeg}
     [exec] (Resim2) {feh --bg-scale /resmin/yolu3.jpeg}
[end]

feh ile istediğiniz komut satırı seçeneklerini kullanın; ben --bg-scale kullandım. Şimdi feh en son kullandığınız duvar kağıdını arkaplan yapsın diye ~/.xinitrc içerisinde çalıştırabilirsiniz.

eval `cat ~/.fehbg`

Bu, Fluxbox'u her başlattığınızda tekrar tekrar duvar kağıdı ayarlamanızı engelleyecektir.

Rastgele Duvar Kağıdı

Şanssızlık eseri, fbsetbg'yi 64 bitlik sistemimde derleyememiştim. Fbsetbg'nin rastgele arkaplan seçme gibi küçük bir özelliği var. fbsetbg -r /dir/name yerine aşağıdaki betiği kullanın:

LOCATION=~/pictures
Background=$(ls ${LOCATION})
background=($Background)                # Read into array variable.
num_background=${#background[*]}        # Count how many elements.
Esetroot ${LOCATION}/${background[$((RANDOM%num_background))]}

Bu örnek Eterm'in bir bileşeni olan Esetroot kullanır. Ama siz kendi arkaplan/duvarkağıdı seçicinizi kullanabilirsiniz. fbsetbg'de derlenecek bişe olmadığından Esetroot yerine fbsetbg kullanabilirsiniz. fbsetbg koduna göz atarsanız basit bir #!/bin/sh betiği olduğunu görebilirsiniz.

Idesk kullanarak simge oluşturma

Idesk masaüstünüzde tıklanabilir çeşitli simgeler oluşturmanızı sağlayan güzel bir program. PNG veya SVG resimlerini simgeler olarak kullanabilirsiniz, ayrıca çok çeşitli simge paketleri de mevcuttur.

Önce idesk'i yükleyelim:

emerge -av idesk

Şimdi home dizininizde ~/.ideskrc adlı bir dosya oluşturun ve içeriğini şu şekilde değiştirin


File: ~/.ideskrc
table Config
FontName: verdana
FontSize: 12
FontColor: #ffffff
Locked: false
Transparency: 100
Shadow: true
ShadowColor: #000000
ShadowX: 1
ShadowY: 2
Bold: false
ClickDelay: 300
IconSnap: true
SnapWidth: 55
SnapHeight: 100
SnapOrigin: BottomLeft
SnapShadow: true
SnapShadowTrans: 200
CaptionOnHover: false
end
table Actions
Lock: control right doubleClk
Reload: middle doubleClk
Drag: left hold
EndDrag: left singleClk
Execute[0]: left doubleClk
Execute[1]: right doubleClk
end

Şimdi ~/.idesktop/ klasörünü oluşturun (home dizininde). Burası kullanmak istediğini simgeleri işlevleriyle beraber saklayacağınız klasör olacak. Her ikon için bir dosya oluşturun, mesela, HOME simgesi için home.lnk adlı bir dosya oluşturabiliriz.


File: home.lnk
table Icon
Caption: Home
Command: rox
Icon: /home/ikaro/.idesktop/home.png # home için kullanacağımız simge
end

Kullanmak istediğiniz diğer simgeler için de yukardaki işlemi uygulayın.

Idesk'i şu şekilde başlatın

nohup idesk > /dev/null &

Idesk'i yalnızca bir kere başlattığınıza emin olun, ve aynı anda birden fazla idesk çalışmamasına dikkat edin. Simgelerinizle işiniz bittiğinde ve masaüstüne dilediğiniz gibi yerleştirdiğinizde .ideskrc içerisindeki Locked seçeneğini 'false' yerine 'true' yapın. ~/.fluxbox/startup dosyanıza (veya başka bir başlangıç dosyasına) 'idesk' ekleyin, böylece X başladığında idesk otomatik olarak başlayacak.

ROX-Filer ve simgeler

Önce:

emerge rox
emerge rox-session

~/.fluxbox/startup veya ~/.fluxbox/autostart.sh içine bir satır ekleyin

rox --pinboard=Default &

Hepsi bu kadar! Şimdi masaüstünüzde simgeler hazır ve istediğiniz duvar kağıdını seçebilirsiniz!

Ek Stiller Yüklemek

Box stillerinin çoğu Fluxbox ile çalışacaktır. Bu stillerin büyük bir çoğunluğu şu şekilde kurulabilir:

emerge -av commonbox-styles commonbox-styles-extra fluxbox-styles-fluxmod

Bu üç paket çoğu insanın zevkini tatmin edecek kadar fazla stil içerir. fluxbox-styles-fluxmod olcukça sık güncellenir. Yani bu ebuild'i takip etmekte fayda var.

Menülerde simgeler

Menülerinize simgeler eklemek isterseniz şunu deneyin...

      [exec] (gnome-terminal) {gnome-terminal} <~/.icons/xterm.xpm>
      [exec] (firefox) {firefox} <~/.icons/firefox.xpm>
      [exec] (Run) {fbrun } <~/.icons/run.xpm>
Not 1
sadece 0.9.10 ve sonraki versiyonlarda çalışır.
Not 2
sadece xpm resimleri kullanabilirsiniz.
versiyon 0.9.12-r1 imlib2 ile png ve jpg desteği de sağlar
 http://www.enlightenment.org/pages/imlib2.html

USE Etiketleri

fluxbox için USE etiketleri:

gnome kde nls truetype xinerama
  • gnome

fluxbox'a gnome desteği ekler. Mesela gaim kullanıyorsanız, araç çubuğunda gaim simgesi görürsünüz.

  • kde

fluxbox'a kde desteği ekler. Mesela kopete kullanıyorsanız, araç çubuğunda kopete simgesi görürsünüz.

  • nls

fluxbox'a çoklu dil desteği ekler. Kendi dilimizde mesajlar görmemizi sağlar.

  • truetype

Daha iyi fontlar

  • xinerama

İki veya daha fazla monitöre sahipseniz, çoklu ekran desteği sağlar.

  • bigger-fonts (0.9.10-r4+)

Tema fontlarının daha okunabilir olmasını sağlar.

  • imlib2 (0.9.12+)

PNG, JPG, gibi pixel haritaları için destek.

gkrellm yüklemek

gkrellm CPU kullanımı, NIC kullanımı gibi bazı işe yarar bilgiler gösteren bir uygulamadır.

Yükleyelim:

emerge gkrellm

Bu size gkrellm and gkrellmd yükleyecektir. Çalıştırmak için:

 nohup gkrellm2 > /dev/null &

Sonra üst kısmına sağ tıklayın ve yapılandırma ayarlarına basın (Configuration)

veya gkrellm'i .fluxbox/autostart.sh içine koyalım

~/.fluxbox/autostart.sh

Kaydedin ve kapatın. Şimdi fluxbox'u her başlattığınızda çalışacaktır.

Resim:Dikkat.png Eğer gkrellm'in bir aralık içine açılmasını istiyorsanız:

In ~/.fluxbox/autostart.sh:

File: ~/.fluxbox/autostart.sh
gkrellm2 -w &

Ekran görüntüleri

Ekran görüntüsü.
Enlarge
Ekran görüntüsü.


Bağlantılar

Dahili Bağlantılar

Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı

Fluxbox Rehberi

Harici Bağlantılar

Fluxbox Home

Gentoo Linux Documentation -- The Fluxbox Configuration HOWTO