Compartilhe suas configurações gconf

Publicado por Emmanuel Ferro 15/10/2008

[ Hits: 5.645 ]

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

Probabilidade de Vencer - Poker Texas Hold

Mudar wallpaper por um aleatorio

Fatorial de um número

Criador de instalador USB Linux bootável com Python

PHP Coder


  

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