Compartilhe suas configurações gconf

Publicado por Emmanuel Ferro 15/10/2008

[ Hits: 5.817 ]

Download gconflook.py




Você perdeu um tempão pra configurar seu Gnome, inseriu miniaplicativos, aplicou transparência, tema e ajustou o compiz. Agora salve suas configurações e compartilhe com os amigos, ou leve com você e aplique na máquina do trabalho ou da escola.

Bom, a idéia é esta, o script é bem simples e pode ser melhorado, quem sabe até virar um miniaplicativo do gnome. Fiquem a vontade em levar a idéia adiante.

P.S. Antes de sair aplicando meus looks, sugiro fazer uma cópia backup da pasta ~/.gconf/

  



Esconder código-fonte

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#      
#   Copyright 2008 Emmanuel Ferro <emmanuel.ferro@gmail.com>
#
#   Este programa é software livre, você pode redistribuí-lo ou modificá-lo
#   sob os termos da GNU General Public License, versão 2 ou qualquer versão
#   mais recente, conforme publicado pela Free Software Foundation.
#    
#   Este programa é distribuido na esperança de que possa ser útil, porém
#   SEM NENHUMA GARANTIA, sem mesmo a garantia implícita de COMERCIALIZAÇÃO
#   ou ADEQUAÇÃO A UM DETERMINADO PROPÓSITO. Veja a GNU General Public License
#   para mais detalhes.
#    
#   Você pode ter recebido uma copia da GNU General Public License juntamente
#   com este programa, do contrario solicite uma cópia escrevendo para Free
#   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#   MA 02110-1301, USA.

import pygtk
pygtk.require('2.0')
import gtk
import os

version="1.0"
authors=['Emmanuel Ferro - emmanuel.ferro@gmail.com']
appIcon = "/usr/share/icons/gnome/22x22/categories/package_graphics.png"

class GconfLookWindow:
    window_title = "Gconf Look " + version
    looksDir = "./looks/"
    showingabout = False

    
    def callback(self, widget, fileName, data=None):
        print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()])
        if widget.get_active():
            self.lookName = self.looksDir + fileName
            
    def delete_event(self, widget, event, data=None):
        print 'Evento para salvar informacoes antes de sair'
        return False
  
    def destroy(self, widget, data=None):
        gtk.main_quit()

  
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_title(self.window_title)
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.set_icon_from_file(appIcon)
        self.window.connect("delete_event", self.delete_event)
        self.window.connect("destroy", self.destroy)
             
        # Preparando a Toolbar
        self.container = gtk.VBox(False, 1)
        self.toolbar = gtk.Toolbar()
        self.toolbar.set_show_arrow(False)
        self.btn_new_look = self.newToolButton(gtk.STOCK_NEW)
        self.btn_del_look = self.newToolButton(gtk.STOCK_DELETE)
        self.btn_apply_look = self.newToolButton(gtk.STOCK_APPLY)
        self.btn_about_look = self.newToolButton(gtk.STOCK_ABOUT)
        self.btn_exit = self.newToolButton(gtk.STOCK_QUIT, True)
        self.toolbar.show()
        self.container.pack_start(self.toolbar, expand=False)
         
        # Verificar se existe a pasta looks
        self.existeLooks() 
         
        # Preparando a lista de looks
        self.montaListaLook()

        #Signals do Toolbar
        self.btn_exit.connect("clicked", self.destroy) 
        self.btn_apply_look.connect("clicked", self.applyLook)
        self.btn_new_look.connect("clicked", self.newLook)
        self.btn_del_look.connect("clicked", self.deleteLook)
        self.btn_about_look.connect("clicked", self.showabout)
                
        # Exibindo a janela        
        self.window.add(self.container)
        self.container.show()
        self.window.show()
        
    def deleteabout(self, widget, event=None):
        self.showingabout=False
        self.aboutwindow.destroy()
   
    def showabout(self, widget):
        if self.showingabout:
            self.showingabout = False
            self.aboutwindow.destroy()
            return
        self.showingabout=True
        self.aboutwindow = gtk.AboutDialog()
        self.aboutwindow.connect("delete_event", self.deleteabout)
        self.aboutwindow.connect("response", self.deleteabout)
        self.aboutwindow.set_name("Gconf Look")
        self.aboutwindow.set_version(version)
#        self.aboutwindow.set_website("http://www.vivaolinux.com.br")
        self.aboutwindow.set_comments("Alterna diferentes looks do gconf")
        self.aboutwindow.set_copyright(','.join(authors))
        logoImg = gtk.Image()
        logoImg.set_from_file(appIcon)
        self.aboutwindow.set_logo(logoImg.get_pixbuf())
        self.aboutwindow.show()

    # Exibe a lista de looks existentes no formato radio buttons    
    def montaListaLook(self):
        self.containerListOfLooks = gtk.VBox(False, 1)
        self.containerListOfLooks.show()
        listaLabel = gtk.Label("Looks disponíveis:")
        listaLabel.show()
        self.containerListOfLooks.pack_start(listaLabel, expand=False)

        isFirst = True
        for fname in os.listdir(self.looksDir):
            if isFirst:
               button = gtk.RadioButton(None, fname.replace(".tar.gz",""))
               self.lookName = self.looksDir + fname
               isFirst = False
            else:
               button = gtk.RadioButton(button, fname.replace(".tar.gz",""))
            button.connect("toggled", self.callback, fname, fname)
            button.show()
            self.containerListOfLooks.pack_start(button, True, True, 0)

        self.containerListOfLooks.show()
        self.container.pack_start(self.containerListOfLooks, expand=False)
        
    # Recarrega a lista de looks 
    def recarregaListaLook(self):
        self.container.remove(self.containerListOfLooks)
        self.montaListaLook()
    
    # Salva o look atual
    def saveLook(self, pathName, fileName):
        workDir = os.getcwd()
        os.chdir(pathName)
        comando = "tar -cvzf " + fileName + ".tar.gz .gconf/"
        os.system(comando)
        os.chdir(workDir)
        
    # Deleta o look "checado" da lista            
    def deleteLook(self, widget):
        if os.path.isfile(self.lookName):   
            dialog = gtk.MessageDialog(
                parent=None, 
                flags=0, 
                type=gtk.MESSAGE_QUESTION, 
                buttons=gtk.BUTTONS_YES_NO, 
                message_format="Confirma a remoção do look " + 
                    self.lookName.replace(self.looksDir,"")
                    .replace(".tar.gz",""))
                    
            response = dialog.run ()
            dialog.destroy ()
            if response == gtk.RESPONSE_YES:
                os.remove(self.lookName)
                self.recarregaListaLook()
                return True
            else:
                return False

    # Aplica o look "checado" em substituição ao atual
    def applyLook(self, widget):
        if os.path.isfile(self.lookName):   
            comando = "tar -xvzf " + self.lookName + " -C ~"   
            os.system(comando)
            # Solicitar encerramento da sessão
            dialog = gtk.MessageDialog(
                parent=None, 
                flags=0, 
                type=gtk.MESSAGE_QUESTION, 
                buttons=gtk.BUTTONS_YES_NO, 
                message_format="Look aplicado com sucesso!\n" +
                    "As mudaças só serão visíveis na próxima sessão.\n\n" +
                    "Deseja finalizar a sessão agora?")
                    
            response = dialog.run ()
            dialog.destroy ()
            if response == gtk.RESPONSE_YES:
                os.system("/usr/bin/gnome-session-save --kill --silent")
                return True
            else:
                return False


    # Cria um novo look a partir das configurações atuais
    def newLook(self, widget):
        janelaSalvar = gtk.FileChooserDialog("Salvar como:", self.window,
                                         gtk.FILE_CHOOSER_ACTION_SAVE,
                                        (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                         gtk.STOCK_SAVE, gtk.RESPONSE_OK))
        janelaSalvar.set_current_folder(self.looksDir)
        response = janelaSalvar.run()
        if response == gtk.RESPONSE_OK:
            pathName = janelaSalvar.get_current_folder()
            fileName = janelaSalvar.get_filename()
            self.saveLook(pathName, fileName)
            self.recarregaListaLook()
        janelaSalvar.destroy()

    # Inserir um botão na toolbar    
    def newToolButton(self, stockid, start_group=False):
        btn = gtk.ToolButton(stockid)
        if start_group:
            item = gtk.ToolItem()
            sep = gtk.VSeparator()
            sep.show()
            item.add(sep)
            item.show()
            self.toolbar.insert(item, -1)
        self.toolbar.insert(btn, -1)
        btn.show()
        return btn
   
    # Verifica se existe o diretório de looks
    def existeLooks(self):
        if not os.path.exists(self.looksDir):
            # Cria o diretório caso não exista
            os.mkdir(self.looksDir) 
            print('Diretório criado: ', self.looksDir)

        
    def main(self):
        gtk.main()

        
if __name__=="__main__":
    janela = GconfLookWindow()
    janela.main()

Scripts recomendados

Conversor de dólares em reais e vice-versa

Verificar se um número é primo

Contador de dias em Python

Calculadora de hash

Previsão do tempo - Py3K


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts