renix1

Create launchers in Linux with Python 3.X

Aug 10th, 2016
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.83 KB | None | 0 0
  1. # coding: utf-8
  2.  
  3. try:
  4.     import sys, traceback
  5.     from os import system, chdir, path, environ
  6.     from tkinter import *
  7.     from tkinter import filedialog
  8. except ImportError:
  9.     print("\033[1;31mErro de importação, cheque os módulos descritos no arquivo README\n")
  10.  
  11.  
  12. class Janela():
  13.     def __init__(self, master):
  14.         frame_one = Frame()
  15.         frame_one.pack(side=TOP, pady=5)
  16.         frame_two = Frame()
  17.         frame_two.pack(side=TOP, pady=5)
  18.         frame_three = Frame()
  19.         frame_three.pack(side=TOP, pady=5)
  20.         frame_four = Frame()
  21.         frame_four.pack(side=TOP, pady=5)
  22.         frame_five = Frame()
  23.         frame_five.pack(side=TOP, pady=5)
  24.         frame_six = Frame()
  25.         frame_six.pack(side=TOP, pady=5)
  26.         frame_seven = Frame()
  27.         frame_seven.pack(side=TOP, pady=5)
  28.         frame_eight = Frame()
  29.         frame_eight.pack(side=TOP, pady=5)
  30.         #VERSAO
  31.         version_lb = Label(frame_one, text="[*] Versão: ")
  32.         version_lb.grid(column=0, row=0)
  33.         self.version_entry = Entry(frame_one)
  34.         self.version_entry.grid(column=1, row=0)
  35.         #NOME
  36.         name_lb = Label(frame_two, text="[*] Nome: ")
  37.         name_lb.grid(column=1, row=1)
  38.         self.name_entry = Entry(frame_two)
  39.         self.name_entry.grid(column=2, row=1)
  40.         #NOME GENÉRICO
  41.         generic_name_lb = Label(frame_three, text="[*] Genérico: ")
  42.         generic_name_lb.grid(column=2, row=2)
  43.         self.generic_name_entry = Entry(frame_three)
  44.         self.generic_name_entry.grid(column=3, row=2)
  45.         #COMENTÁRIO
  46.         comment_lb = Label(frame_four, text="[-] Comentário: ")
  47.         comment_lb.grid(column=4, row=3)
  48.         self.comment_entry = Entry(frame_four)
  49.         self.comment_entry.grid(column=5, row=3)
  50.         #LOCAL DE EXECUÇÃO
  51.         execution_lb = Label(frame_five, text="[*] Execução: ")
  52.         execution_lb.pack(side=LEFT)
  53.         execution_text = StringVar()
  54.         self.execution_entry = Entry(frame_five, textvariable=execution_text)
  55.         self.execution_entry.pack(side=LEFT)
  56.         execution_button = Button(frame_five, text="Abrir arquivo", command=self.conseguir_filename_exe)
  57.         execution_button.pack(side=LEFT, padx=10)
  58.         #ÍCONE
  59.         icon_lb = Label(frame_six, text="[-] Ícone: ")
  60.         icon_lb.pack(side=LEFT)
  61.         self.icon_entry = Entry(frame_six)
  62.         self.icon_entry.pack(side=LEFT)
  63.         icon_button = Button(frame_six, text="Buscar ícone", command=self.conseguir_filename_ico)
  64.         icon_button.pack(side=LEFT, padx=10)
  65.         #CATEGORIA
  66.         categories_lb = Label(frame_seven, text="[-] Categoria: ")
  67.         categories_lb.pack(side=LEFT)
  68.         self.categories_entry = Entry(frame_seven)
  69.         self.categories_entry.pack(side=LEFT)
  70.         #REUNINDO VARS
  71.         version = self.version_entry.get()
  72.         name = self.name_entry.get()
  73.         generic_name = self.generic_name_entry.get()
  74.         comment = self.comment_entry.get()
  75.         execution = self.execution_entry.get()
  76.         icon = self.icon_entry.get()
  77.         categories = self.categories_entry.get()
  78.         #CRIAR LANÇADOR
  79.         criar_lanc = Button(frame_eight, text="Criar lançador", command=self.criar_lancador)
  80.         criar_lanc.pack(side=LEFT)
  81.     def conseguir_filename_exe(self, event=None):
  82.         user = environ['HOME']
  83.         filename = filedialog.askopenfilename(initialdir=user, title="Escolha um arquivo")
  84.         self.execution_entry.delete(0, END)
  85.         self.execution_entry.insert(0, filename)
  86.         return filename
  87.     def conseguir_filename_ico(self, event=None):
  88.         filename = filedialog.askopenfilename(initialdir="/usr/share/icons/", filetypes =(("Imagem PNG", "*.png"),("All Files","*.*")), title="Escolha um arquivo")
  89.         self.icon_entry.delete(0, END)
  90.         self.icon_entry.insert(0, filename)
  91.         return filename
  92.     def criar_link_simbolico(self, caminho, nome):
  93.         command = 'ln -s %s /usr/bin/%s' % (caminho, nome)
  94.         system(command)
  95.         if path.isfile('/usr/bin/' + nome):
  96.             return "/usr/bin/"+nome
  97.         else:
  98.             return False
  99.  
  100.     def criar_lancador(self):
  101.         name = self.name_entry.get()
  102.         version = self.version_entry.get()
  103.         icon = self.icon_entry.get()
  104.         execution = self.execution_entry.get()
  105.         categories = self.categories_entry.get()
  106.         generic_name = self.generic_name_entry.get()
  107.         print("\033[1;33mCriando lançador...\n")
  108.         execution = self.criar_link_simbolico(execution, name)
  109.         if execution:
  110.             print("\033[1;32mLink simbólico criado com sucesso!\n")
  111.         else:
  112.             print("\033[1;31mLink simbólico não foi criado...\n")
  113.         linhas_padrao = ('''
  114. [Deskop Entry]
  115. Version={}
  116. Name={}
  117. GenericName={}
  118. Exec={}
  119. Icon={}
  120. Type=Application
  121. Categories={}
  122. ''').format(version, name, generic_name, execution, icon, categories)
  123.         print("\033[1;40mLinhas padrão: %s" % (linhas_padrao))
  124.         chdir('/usr/share/applications')
  125.         filename = name + '.desktop'
  126.         launcher = open(filename, 'w')
  127.         launcher.write(linhas_padrao)
  128.         launcher.close()
  129.  
  130.     def checar_lancador(name):
  131.         chdir('/usr/share/applications')
  132.         filename = name + '.desktop'
  133.         if path.isfile(filename):
  134.             return True
  135.         else:
  136.             return False
  137.  
  138.  
  139. def main():
  140.     print("\n\033[1;32mExecutando...\n")
  141.     raiz = Tk()
  142.     j1 = Janela(raiz)
  143.     raiz.minsize(400, 300)
  144.     raiz.title('Criar lançador')
  145.     raiz.mainloop()
  146. try:
  147.     main()
  148. except KeyboardInterrupt:
  149.     print("\033[1;31mSaindo do programa, até mais...\n")
  150. except PermissionError:
  151.     print("\033[1;31mErro de permissão. Logue como root e abra o programa.\n")
  152. except Exception:
  153.     print("\033[1;31mA exceção foi %s\n" % (traceback.print_exc(file=sys.stdout)))
Advertisement
Add Comment
Please, Sign In to add comment