XGL/compiz çalışırken aticonfig/nvidia-settings/openGL/vb programları kullanmak
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • Dağıtımlar |
| Tarayıcılar• Programlama • Linux ve Oyunlar |
[değiştir]
Giriş
- Xgl/compiz çalışırken normal bir şekilde opengl vb uygulamaları doğru şekilde çalıştırmak mümkün değildir.Bunun için birkaç alternatif mevcuttur.
- Yöntem 1,mevcut xgl/compiz ayarlarını baz alarak bunun üzerinde ikinci x ortamında istediğimiz uygulamamızı(Oyun,nvsettings,nvclock vb) düzgünce çalıştırmamıza olanak sağlıyor.Tek sorun kendine özel bir pencere yönetici çalıştırmadığından pencereleri yönetmemiz olanaksız oluyor.
- Yöntem 2,oluşturduğumuz bir oturum üzerinde yine kendimizin oluşturdu bir betik çalıştırarak Xgl/compiz çalıştırmak.Bu yöntemin avantajı ikinci bir x ortamında çalıştırdığımız uygulamamızı openbox(pencere yöneticisi) yardımıyla kullanımı kolaylaştırmak.Bu sayade uygulamamızın penceresine etkide bulunabiliyoruz.
- Yöntem 3,çalışma prensibi olarak yöntem 2'ye benzesede yapılandırması çok daha basittir.Bu yöntem de pencere yönetici olarak openbox yerine kwin tercih edilmiştir.
[değiştir]
Yapılması gerekenler
[değiştir]
Yöntem1-Uygulamaları İkinci Bir X Ortamında Çalıştırmak
- Öncelikle root hesabı olmaksızın çalışabilmesini sağlıyalım.
sudo visudo
- Açılan düzenleyiciye aşağıdaki satırları ekliyoruz.
%Kullanıcı-gurubu ALL=NOPASSWD: /usr/bin/Xorgallowlocal
- Çalıştırmak için izin vereceğimiz gurubu ekliyoruz.
| İpucu! Genellikle normal kurulmuş ubuntu da Kulanıcı-adı ve Kullanıcı-gurubu aynıdır. |
sudo gedit /usr/bin/Xorgallowlocal
- Açılan düzenleyiciye aşağıdaki satırları kaydedin.
#!/bin/sh DISPLAY="$2" XAUTHORITY="$1" xhost local:
- Sonrasında scripti oluşturuyoruz.
sudo gedit /usr/bin/normal
Not: ps uax | grep Xorg | grep Xgl komutu ile sisteminizin Display number öğrenebilirsiniz.Bu archlinuxda 94dür.
| Kod: /usr/bin/normal |
#!/bin/sh DISPLAY=":93" if [ -z "$1" ]; then echo "Usage: nonXgl <command>" exit 1 fi isdisplay=0; isauth=0; for test in $(ps ax | grep "$DISPLAY" | grep Xorg ); do if [ $isauth -eq 1 ]; then export XAUTHORITY="$test"; isauth=0; fi; if [ "$test" = "-auth" ]; then isauth=1; fi; done; sudo /usr/bin/Xorgallowlocal "$XAUTHORITY" "$DISPLAY" exec $@ exec $@ |
- Şimdi scriptleri çalıştırabilir yapıyoruz.
sudo chmod 755 /usr/bin/normal
sudo chmod 755 /usr/bin/Xorgallowlocal
Artık istediğimiz uygulamayı ikinci bir x ortamında çalıştırabileceksiniz
normal <komut>
| Kod: Örnek komut |
|
normal et |
[değiştir]
Yöntem2-Uygulamaları Openbox Pencere Yöneticisi Yardımıyla İkinci X Ortamında Çalıştırmak
| Not: Bu yöntemin geçerli olması için custom.conf(gdm yapılandırması) normal ayarlarına döndürülmeli. |
[değiştir]
Gereken Paketlerin Kurulumu
pacman -S openbox devilspie gtk-theme-switch
İkinci x ortamında çalıştırdığımız uygulamaları küçültükden sonra tekrar ulaşmak için backstep:
pacman -A backstep-0.3-1.pkg.tar.gz
aptitude install openbox devilspie gtk-theme-switch
- İkinci x ortamında çalıştırdığımız uygulamaları küçültükden sonra tekrar ulaşmak için backstep:
wget http://home.eng.iastate.edu/~superm1/xgl/backstep_0.3-1_i386.deb
sudo dpkg -i backstep_0.3-1_i386.deb
[değiştir]
Gereken Yapılandırmalar
[değiştir]
Devil's Pie Konfigurasyonu
- Devilpie sayesinde istediğimiz uygulamayı opexbox pencere yöneticisi ile çalıştırabiliyoruz.
mkdir /home/<kullanıcı>/.devilspie
gedit /home/<kullanıcı>/.devilspie/xgl.ds
| Dosya: .devilspie/xgl.ds |
(if
(is (application_name) "Xglx")
(undecorate)
)
|
gedit /home/<kullanıcı>/.devilspie/not_xgl.ds
| Dosya: .devilspie/not_xgl.ds |
(if
(not (is (application_name) "Xglx"))
(above)
)
|
[değiştir]
Openbox Konfigurasyonu
| İpucu! İsterseniz kısayolları ve temayı kendi isteğiniz dğrultusunda düzenleyebilirsiniz. |
mkdir /home/<kullanıcı>/.config
mkdir /home/<kullanıcı>/openbox
gedit /home/<kullanıcı>/openbox/rc.xml
| Dosya: /openbox/rc.xml |
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file, it will be overwritten on install.
Copy the file to $HOME/.config/openbox/ instead. -->
<openbox_config xmlns="http://openbox.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://openbox.org/ file:///usr/share/openbox/rc.xsd">
<resistance>
<strength>10</strength>
<screen_edge_strength>20</screen_edge_strength>
</resistance>
<focus>
<focusNew>yes</focusNew>
<followMouse>no</followMouse>
<focusLast>no</focusLast>
<focusDelay>0</focusDelay>
<raiseOnFocus>no</raiseOnFocus>
</focus>
<theme>
<name>Human-Like</name>
<titlelayout>NLIMC</titlelayout>
</theme>
<placement>
<policy>UnderMouse</policy>
</placement>
<desktops>
<number>1</number>
<firstdesk>1</firstdesk>
<names>
<name>one</name>
</names>
</desktops>
<resize>
<drawContents>yes</drawContents>
</resize>
<dock>
<position>TopLeft</position>
<stacking>Bottom</stacking>
<direction>Vertical</direction>
<floatingX>0</floatingX>
<floatingY>0</floatingY>
<autoHide>no</autoHide>
<hideDelay>300</hideDelay>
<moveButton>A-Left</moveButton>
</dock>
<keyboard>
</keyboard>
<mouse>
<dragThreshold>3</dragThreshold>
<doubleClickTime>200</doubleClickTime>
<context name="Titlebar">
<mousebind button="Left" action="Drag">
<action name="Move"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="Raise"/>
</mousebind>
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Left" action="DoubleClick">
<action name="ToggleShade"/>
</mousebind>
<mousebind button="Middle" action="Press">
<action name="Lower"/>
</mousebind>
<mousebind button="Up" action="Click">
<action name="Shade"/>
</mousebind>
<mousebind button="Down" action="Click">
<action name="Unshade"/>
</mousebind>
<mousebind button="Right" action="Press">
<action name="ShowMenu"><menu>client-menu</menu></action>
</mousebind>
</context>
<context name="Handle">
<mousebind button="Left" action="Drag">
<action name="Move"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="Raise"/>
</mousebind>
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Middle" action="Press">
<action name="Lower"/>
</mousebind>
</context>
<context name="BLCorner">
<mousebind button="Left" action="Drag">
<action name="Resize"/>
</mousebind>
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
</context>
<context name="BRCorner">
<mousebind button="Left" action="Drag">
<action name="Resize"/>
</mousebind>
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
</context>
<context name="TLCorner">
<mousebind button="Left" action="Drag">
<action name="Resize"/>
</mousebind>
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
</context>
<context name="TRCorner">
<mousebind button="Left" action="Drag">
<action name="Resize"/>
</mousebind>
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
</context>
<context name="Client">
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
<mousebind button="Middle" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus"/>
</mousebind>
</context>
<context name="Icon">
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Right" action="Press">
<action name="ShowMenu"><menu>client-menu</menu></action>
</mousebind>
<mousebind button="Left" action="Press">
<action name="ShowMenu"><menu>client-menu</menu></action>
</mousebind>
</context>
<context name="AllDesktops">
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="ToggleOmnipresent"/>
</mousebind>
</context>
<context name="Shade">
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="ToggleShade"/>
</mousebind>
</context>
<context name="Iconify">
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="Iconify"/>
</mousebind>
</context>
<context name="Maximize">
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Middle" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Right" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="ToggleMaximizeFull"/>
</mousebind>
<mousebind button="Middle" action="Click">
<action name="ToggleMaximizeVert"/>
</mousebind>
<mousebind button="Right" action="Click">
<action name="ToggleMaximizeHorz"/>
</mousebind>
</context>
<context name="Close">
<mousebind button="Left" action="Press">
<action name="Focus"/>
</mousebind>
<mousebind button="Left" action="Click">
<action name="Close"/>
</mousebind>
</context>
<context name="Desktop">
<mousebind button="Up" action="Press">
<action name="DesktopPrevious"/>
</mousebind>
<mousebind button="Down" action="Press">
<action name="DesktopNext"/>
</mousebind>
<mousebind button="A-Up" action="Press">
<action name="DesktopPrevious"/>
</mousebind>
<mousebind button="A-Down" action="Press">
<action name="DesktopNext"/>
</mousebind>
<mousebind button="Left" action="Press">
<action name="Focus"/>
<action name="Raise"/>
</mousebind>
<mousebind button="Middle" action="Press">
<action name="ShowMenu"><menu>client-list-menu</menu></action>
</mousebind>
<mousebind button="Right" action="Press">
<action name="ShowMenu"><menu>root-menu</menu></action>
</mousebind>
</context>
<context name="MoveResize">
<mousebind button="Up" action="Press">
<action name="DesktopPrevious"/>
</mousebind>
<mousebind button="Down" action="Press">
<action name="DesktopNext"/>
</mousebind>
<mousebind button="A-Up" action="Press">
<action name="DesktopPrevious"/>
</mousebind>
<mousebind button="A-Down" action="Press">
<action name="DesktopNext"/>
</mousebind>
</context>
</mouse>
<menu>
<!-- You can specify more than one menu file in here and they are all loaded,
just don't make menu ids clash or, well, it'll be kind of pointless -->
<!-- system menu files on Debian systems -->
<file>/var/lib/openbox/debian-menu.xml</file>
<file>debian-menu.xml</file>
<!-- default menu file (or custom one in $HOME/.config/openbox/) -->
<file>menu.xml</file>
</menu>
</openbox_config>
|
[değiştir]
Yeni Oturum Oluşturmak
gedit /etc/X11/sessions/xgl.desktop
| Dosya: xgl.desktop |
[Desktop Entry] Encoding=UTF-8 Name=XGl Exec=/usr/local/bin/start_xgl.sh Icon= Type=Application |
gedit /usr/local/bin/start_xgl.sh
| Dosya: start_xgl.sh |
#xgl başlatmak Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer -br & sleep 2 #İkinci x ortamı için ekrankoruyucu gnome-screensaver #İkinci x ortamı için pencere yönetici openbox& #0: ortmındaki küçültülen uygulamalara ulaşmak... backstep& #pencerleri eşlemek için devilspie devilspie& DISPLAY=:1 # Gnome oturumunu başlatmak exec dbus-launch --exit-with-session /opt/gnome/bin/gnome-session |
gedit /usr/share/xsessions/xgl.desktop
| Dosya: xgl.desktop |
[Desktop Entry] [Desktop Entry] Encoding=UTF-8 Name=XGl Exec=/usr/local/bin/start_xgl.sh Icon= Type=Application |
gedit /usr/local/bin/start_xgl.sh
| Dosya: start_xgl.sh |
#xgl başlatmak Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer -br & sleep 2 #İkinci x ortamı için ekrankoruyucu gnome-screensaver #İkinci x ortamı için pencere yönetici openbox& #0: ortmındaki küçültülen uygulamalara ulaşmak... backstep& #pencerleri eşlemek için devilspie devilspie& DISPLAY=:1 # Gnome oturumunu başlatmak exec gnome-session |
chmod +x /usr/local/bin/start_xgl.sh
chmod +x /usr/share/xsessions/xgl.desktop
[değiştir]
Yöntem3-Uygulamaları Kwin Pencere Yöneticisi Yardımıyla İkinci X Ortmanında Çalıştırmak
[değiştir]
Gereken Paketlerin Kurulumu
pacman -S kdebase gtk-theme-switch
İkinci x ortamında çalıştırdığımız uygulamaları küçültükden sonra tekrar ulaşmak için backstep:
pacman -A backstep-0.3-1.pkg.tar.gz
sudo aptitude install kwin gtk-theme-switch
- İkinci x ortamında çalıştırdığımız uygulamaları küçültükden sonra tekrar ulaşmak için backstep:
wget http://home.eng.iastate.edu/~superm1/xgl/backstep_0.3-1_i386.deb
sudo dpkg -i backstep_0.3-1_i386.deb
[değiştir]
Gereken yapılandırmalar
gedit /home/<kullanıcı>/.kde/share/config/kwinrulesrc
| Dosya: /.kde/share/config/kwinrulesrc |
[1] below=true belowrule=2 description=Xglx disableglobalshortcuts=true disableglobalshortcutsrule=2 fullscreen=true fullscreenrule=2 noborder=true noborderrule=2 position=0,0 positionrule=2 title=Xglx titlematch=1 wmclass=xglx wmclasscomplete=false wmclassmatch=1 [General] count=1 |
[değiştir]
Yeni Oturum Oluşturmak
gedit /etc/X11/sessions/xgl.desktop
| Dosya: xgl.desktop |
[Desktop Entry] Encoding=UTF-8 Name=XGl Exec=/usr/local/bin/start_xgl.sh Icon= Type=Application |
gedit /usr/local/bin/start_xgl.sh
| Dosya: start_xgl.sh |
#xgl başlatmak Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer -br & sleep 2 #İkinci x ortamı için ekrankoruyucu... gnome-screensaver #İkinci x ortamı için pencere yönetici kwin& #0: ortmındaki küçültülen uygulamalara ulaşmak... backstep& DISPLAY=:1 # Gnome oturumunu başlatmak exec dbus-launch --exit-with-session /opt/gnome/bin/gnome-session |
gedit /usr/share/xsessions/xgl.desktop
| Dosya: xgl.desktop |
[Desktop Entry] Encoding=UTF-8 Name=XGl Exec=/usr/local/bin/start_xgl.sh Icon= Type=Application |
gedit /usr/local/bin/start_xgl.sh
| Dosya: start_xgl.sh |
#xgl başlatmak Xgl -fullscreen :1 -ac -accel glx:pbuffer -accel xv:pbuffer -br & sleep 2 #İkinci x ortamı için ekrankoruyucu... gnome-screensaver #İkinci x ortamı için pencere yönetici kwin& #0: ortmındaki küçültülen uygulamalara ulaşmak... backstep& DISPLAY=:1 # Gnome oturumunu başlatmak exec gnome-session |
chmod +x /usr/local/bin/start_xgl.sh
chmod +x /usr/share/xsessions/xgl.desktop
[değiştir]
Compizin başlatılması ve Bazı sorunlara çözümler
- Başlangıçta compiz çalıştırmak için
- Sistem -> Tercihler -> Oturumlar
- Başlangıç Programları -> Ekle
/usr/bin/compiz-start
ekliyoruz. - Ok tıkla, Sonra kapat.
- Pencereleri oynattığıgınız zaman pencerelerin eski normal haline gelmesi biraz zaman alıyor buda sinirinizi bozabilir.Buna çözüm getirmek için:
- csm (Sistem -> Tercihler -> Compiz-settings-manager) wobbly eklentisi içerisindeki numeric values şeçip Move friction değerini 7 yapıyoruz.
- Türkçe karekter ve shift-backspace( Bu kombinasyon X serverı sonlandırır):
sudo touch /usr/bin/klavye.sh && sudo chmod 755 /usr/bin/klavye.sh && sudo gedit /usr/local/bin/klavye.sh
| Kod: /usr/bin/klavye.sh |
#!/bin/bash xmodmap -e "keycode 22 = BackSpace BackSpace Terminate_Server" xmodmap /usr/share/xmodmap/xmodmap.tr_q |
- Sistem-->Tercihler-->Oturumlar-->Başlangıç uygulamaları kısmına /usr/local/bin/klavye.sh ekliyoruz.
[değiştir]
Uygulamalarımız için scriptler oluşturmak
- Ubuntu için yöntem biraz daha kolay
sudo dpkg-divert --divert /usr/bin/Uygulama.real --rename /usr/bin/uygulama
Sonrasında
| Dosya: /usr/bin/Uygulama: |
#!/bin/sh DISPLAY=:0 /usr/bin/uygulama.real "$@" |
- Ben yeni bir script oluşturmayı tercih ediyorum
gedit /usr/bin/normal-uygulama
| Kod: /usr/bin/normal-uygulama |
#!/bin/sh DISPLAY=:0 /usr/bin/ugulama "$@" |
| İpucu! Bütün uygulamarınız /usr/bin altında olması şartı yoktur.Bazen /opt/gnome/bin , /opt/kde/bin veya /opt/uygulama vb.Bunu anlamak için en kullanışlı yol konsoldan whereis uygulama komutu olucaktır. |
[değiştir]
Gnome Ortamında Normal Kullanıcı ile Bilgisayarı Kapatma veya Yeniden Başlatmak
- Yeni bir oturum oluşturduğumuzda kullanıcının bazı haklarını elinden alabiliyoruz.Bilgisayarı kapatma ve,veya yeniden başlatmakta bunlardan birkaçı.Bu iş ya konsoldan root hakları ile yada oturumu kapatarak gerçekleştirilebiliyor.
- Bu yöntem yardımıyla normal kullanıcı root şifresini girmeden kolayca bilgisayarını kapatabilecek yada yeniden başlatabilecek.
[değiştir]
Kullanıcıya Root Hakları Olmaksınız Kapatma ve Yeniden Başlatma Hakkı Vermek
- İlk önce sudoyu kurmalıyız
pacman -Sy sudo
- Sonrasında /etc/sudoers düzenlemek için gerekli hakları vermeliyiz
chmod 777 /etc/sudoers
sudo gedit /etc/sudoers
| Dosya: /etc/sudoers |
# sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the sudoers man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # Runas alias specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now #allow user ziggy sudo from local machine only (my_machine_name = HOSTNAME in rc.conf and NOT localhost): ziggy makine-adı=(ALL) ALL #allow user arch sudo from anywhere (local/net): arch ALL=(ALL) ALL kullanıcı makine-adı = NOPASSWD: /sbin/shutdown -h now kullanıcı makine-adı = NOPASSWD: /sbin/reboot |
chmod 0440 /etc/sudoers
- Artık bilgisarımız root hakları olmaksızın sudo shutdown -h now ile kapanacak , reboot komutu ile de yeniden başlatılabilecek.
[değiştir]
Yeni başlatıcı ve kısayol oluşturmak
- Şimdi de işi kolaylaştırmak için bir başlatıcı oluşturalım.Sonrasında menulere kısa yol atayalım
gedit /usr/bin/kapat
| Kod: /usr/bin/kapat |
#!/bin/sh sudo /sbin/shutdown -h now "$@" |
gedit /usr/bin/y.baslat
| Kod: /usr/bin/y.baslat |
#!/bin/sh /sbin/reboot |
chmod +x /usr/bin/kapat
chmod +x /usr/bin/y.baslat
- Konsoldan vereceğimiz kapat komutu bilgisayarın kapanmasını , y.baslat ise yeniden baslamasını sağlayacaktır
[değiştir]
Menülere kısa yol atamak
gedit /usr/share/applications/kapat.desktop
| Dosya: /usr/share/applications/kapat.desktop |
[Desktop Entry] Encoding=UTF-8 Name=kapat Exec=/usr/bin/kapat Icon=/usr/share/icons/gnome/48x48/apps/gnome-logout.png Terminal=false Type=Application Categories=Application;System; |
gedit /usr/share/applications/y.baslat.desktop
| Dosya: /usr/share/applications/y.baslat.desktop |
[Desktop Entry] Encoding=UTF-8 Name=reset Exec=/usr/bin/y.baslat Icon=/usr/share/icons/Gorilla/scalable/filesystems/gnome-fs-loading-icon.svg Terminal=false Type=Application Categories=Application;System; |
- Artık sistemimizi uygulamalar----->Sistem Araçları-----> kapat ile kapatabilir reset ile yeniden başlatabiliriz.
[değiştir]
Bağlantılar
Konu ile ilgili fikirlerinizi paylaşmak için; Lapis Wiki Başlığı

