[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Compiz Fusion?



On 7/2/07, Alphonse Van Assche <alcapcom gmail com> wrote:
Peter Gordon a écrit :
> On Sun, 2007-07-01 at 13:56 +0200, Alphonse Van Assche wrote:
>> To make this working compiz need to use texture copy instead of
>> texture_from_pixmap method[1] (because of the fact the fglrx driver
>> don't have support for texture_from_pixmap). That functionality can be
>> ported from beryl. Maybe a little patch to compiz must applied too[2]
>
> Maybe; but adding hacks to workaround a known-broken piece of
> proprietary software instead of getting the recent R300/Avivo drivers
> working properly for AIGLX seems entirely like a step backwards to me...
>
Well, I have just saying this to let know that the fglrx driver *cannot*
be used with AIGLX without the above hacks and at this time we don't
have Xgl in Fedora so in my eyes a choice must be done. Using XGL as a
temporary hack or making temporary hacks to let users use compiz with
AIGLX. If we don't do one of them, then we forgot a big part of the
Fedora users.

does that mean its working? or is it not? or is it working after patching?


Yes, ATI driver suck for many reasons proprietary/not intensive
developed/etc... but many people have such cards and saying that we
don't care about it is just saying we don't care about a big part of our
users, I think that's not good for Fedora.

In my place, ATi users are more than NVidia users, its a pain when
trying to promote Fedora to them .. and with fglrx is broken in F7  ..
I have no idea what to answer if they asked ..

I'm personally sure that many
people have switch to GNU/Linux these last year just to have a wobbly
desktop with all these eye candy stuffs. I like eye candy as a awesome
propaganda piece for the GNU/Linux desktops too.

+1. the Wow factor...


Just my 2 cent of the day.
Alphonse


back to topic ,

I just rewrote desktop-effects in .py to make use compizconfig-python ..

attached them together with this email ..


--
-----------------------------------------------
regards
Hikaru
-----------------------------------------------
Mohd Izhar Firdaus Bin Ismail
Amano Hikaru
天野晃 「あまの ひかる」
mohd izhar firdaus gmail com
-----------------------------------------------
kagesenshi 87 gmail com
Blog: http://kagesenshi.blogspot.com
http://fedoraproject.org/wiki/MohdIzharFirdaus
-----------------------------------------------

Attachment: desktop-effects.glade
Description: application/glade

#!/usr/bin/env python
# Re implementation of desktop-effects in pyglade
# and compizconfig-python
# Author(s): KageSenshi
#
# TODO
# get Timeout working with the timeout_dialog
# create an error dialog when compiz failed to start

import gtk
import gtk.glade
import sys
import gconf
from os import system,path
import compizconfig
from subprocess import Popen
from commands import getoutput
from time import sleep

context=compizconfig.Context()
context.Read()
WINDOW_MANAGER_KEY='/apps/gnome-session/rh/window_manager'
decorator='gtk-window-decorator --replace'

# xml = gtk.glade.XML("/usr/share/compiz/desktop-effects.glade")
xml = gtk.glade.XML("desktop-effects.glade")

################### Compiz Launcher #######################
### codes borrowed*cough*stolen*cough* from fusion-icon ###
# Author(s): crdlb

def env_intel():
    if not getoutput('xvinfo 2>/dev/null|grep Intel') == '':
        print '* intel found, exporting: INTEL_BATCH=1'
        return 'INTEL_BATCH=1 '
    else: return ''

def is_always_indirect():
    if int(getoutput('glxinfo 2>/dev/null | grep GLX_EXT_texture_from_pixmap -c')) < 3:
        if int(getoutput('LIBGL_ALWAYS_INDIRECT=1 glxinfo 2>/dev/null | grep GLX_EXT_texture_from_pixmap -c')) == 3:
           return True

def env_indirect():
    if is_always_indirect():
        print '* No GLX_EXT_texture_from_pixmap present with direct rendering context'
        print '... present with indirect rendering, exporting: LIBGL_ALWAYS_INDIRECT=1'
        return 'LIBGL_ALWAYS_INDIRECT=1 '
    else: return ''

def env_fglrx():    
    if path.exists('/usr/lib/fglrx/libGL.so.1.2.xlibmesa'):
        print '* fglrx found, exporting: LD_PRELOAD=/usr/lib/fglrx/libGL.so.1.2.xlibmesa'
        return 'LD_PRELOAD=/usr/lib/fglrx/libGL.so.1.2.xlibmesa '
    else: return ''
    
def env_nvidia():
    if not getoutput('xdpyinfo 2>/dev/null|grep NV-GLX') == '':
        print '* nvidia found, exporting: __GL_YIELD=nothing '
        return '__GL_YIELD=nothing '
    else: return ''

def get_env():
    return env_intel() + env_indirect() + env_fglrx() + env_nvidia()

def start_compiz():
    # Get Env Variables                                                                
    env_variables = get_env()
    # Start Compiz WM
    system('killall gtk-window-decorator kde-window-decorator emerald')
    decoplugin=context.Plugins['decoration']
    if not decoplugin.Enabled:
        context.ProcessEvents()
        decoplugin.Enabled = True
        context.Write()
    #sleep(2)
    
    direct_rendering = ""
    if system('pgrep Xgl') == 0: direct_rendering="--direct-rendering"
    run_compiz = env_variables + 'compiz --replace --sm-disable --ignore-desktop-hints ccp ' + direct_rendering
    print run_compiz
    Popen(decorator,shell=True)
    return Popen(run_compiz, shell=True)
    
############################# EOF Borrowed Code #############################

def start_metacity():
    run_wm = 'metacity --replace'
    Popen(run_wm, shell=True)

def cancel_compiz(widget):
    start_metacity()
    gconfclient.set_string(WINDOW_MANAGER_KEY,'metacity')
    timeout_dialog.hide()

def save_settings(widget):
    gconfclient.set_string(WINDOW_MANAGER_KEY,'compiz')
    timeout_dialog.hide()

def on_timeout_dialog_close(widget,arg2):
    widget.hide()
    print arg2
    return True

def gtk_main_quit(widget):
    sys.exit(0)

def on_cube_checkbox_toggled(widget):
    context.Read()
    context.ProcessEvents()
    if cube_checkbox.get_active():
       context.Plugins['cube'].Enabled = True
       context.Plugins['rotate'].Enabled = True
    else:
       context.Plugins['rotate'].Enabled = False
       context.Plugins['cube'].Enabled = False 
       # Bug?. For some reasons, cube is still loaded
    context.Write()

def on_enable_togglebutton_toggled(widget):
    
    print widget.get_active()
    if widget.get_active() == False:
       if system('pgrep compiz') == 0:
          start_metacity()
       if gconfclient.get_string(WINDOW_MANAGER_KEY) == 'compiz': 
          gconfclient.set_string(WINDOW_MANAGER_KEY,'metacity')
       wobble_checkbox.set_sensitive(False)
       cube_checkbox.set_sensitive(False)
    else:
       wobble_checkbox.set_sensitive(True)
       cube_checkbox.set_sensitive(True)
       process = start_compiz()
       procpoll = None
       for i in range(0,5):
           sleep(1)
           procpoll = process.poll()
       if not procpoll:
           timeout_dialog.show()
       else:
           print 'Cant start compiz'

def on_wobble_checkbox_toggled(widget):
    context.Read()
    context.ProcessEvents()
    if wobble_checkbox.get_active(): context.Plugins['wobbly'].Enabled = True
    else: context.Plugins['wobbly'].Enabled = False
    context.Write()

# main 

enable_togglebutton = xml.get_widget('enable_togglebutton')
cube_checkbox = xml.get_widget('cube_checkbox')
wobble_checkbox = xml.get_widget('wobble_checkbox')
timeout_dialog = xml.get_widget('timeout_dialog')


gconfclient = gconf.client_get_default ()
startup_enabled=False

if gconfclient.get_string(WINDOW_MANAGER_KEY) == 'compiz':
   startup_enabled = True


if not startup_enabled:
   enable_togglebutton.set_active(False)
   cube_checkbox.set_sensitive(False)
   wobble_checkbox.set_sensitive(False)
else:
   enable_togglebutton.set_active(True)

if context.Plugins['rotate'].Enabled && context.Plugins['cube'].Enabled: cube_checkbox.set_active(True)
if context.Plugins['wobbly'].Enabled: wobble_checkbox.set_active(True)

signaldict={
  'on_cube_checkbox_toggled' : on_cube_checkbox_toggled,
  'on_enable_togglebutton_toggled' : on_enable_togglebutton_toggled,
  'on_wobble_checkbox_toggled' : on_wobble_checkbox_toggled,
  'gtk_main_quit' : gtk_main_quit,
  'on_timeout_dialog_close' : on_timeout_dialog_close,
  'cancel_compiz' : cancel_compiz,
  'save_settings' : save_settings,
}
xml.signal_autoconnect(signaldict)

gtk.main()


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]