XGL/compiz çalışırken aticonfig/nvidia-settings/openGL/vb programları kullanmak

From Lapis Wiki

Jump to: navigation, search
Bu makale NASIL bölümü serisinin bir parçasıdır
MasaÜstü Donanım Dağıtımlar
Tarayıcılar Programlama Linux ve Oyunlar
XglLogo

Konu başlıkları

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.

Yapılması gerekenler

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

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.

Gereken Paketlerin Kurulumu

Archlinux:

 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 

Ubuntulinux:

 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 

Gereken Yapılandırmalar

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)
)
  


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>
  

Yeni Oturum Oluşturmak

Archlinux:

 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

  

Ubuntulinux:

 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 


Yöntem3-Uygulamaları Kwin Pencere Yöneticisi Yardımıyla İkinci X Ortmanında Çalıştırmak

Gereken Paketlerin Kurulumu

Archlinux:

 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 


Ubuntulinux:

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 

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
  

Yeni Oturum Oluşturmak

Archlinux:

 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

  

Ubuntulinux:

 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 


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.

Uygulamalarımız için scriptler oluşturmak

Ubuntulinux:

  • 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 "$@"
  

Archlinux:

  • 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.


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.

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.

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
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.

Bağlantılar

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