Compartilhe suas configurações gconf
Publicado por Emmanuel Ferro 15/10/2008
[ Hits: 6.058 ]
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/
#!/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()
Jogo da Velha com IA (Inteligencia Artificial)
Calculadora de funções do 1º grau
Unescape de caracteres especiais ISO-8859-1
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)









