NASIL Gentoo Altında Fluxbox
From Lapis Wiki
|
Gentoo Pencere Yöneticileri Serisi |
|
Pencere Yöneticileri
|
| düzenle |
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
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.
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.
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.
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
Bağlantılar
Dahili Bağlantılar
Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı
Harici Bağlantılar
Gentoo Linux Documentation -- The Fluxbox Configuration HOWTO
