uruk-cleaner 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import gi
  2. gi.require_version("Gtk", "3.0")
  3. from gi.repository import Gtk
  4. gi.require_version('Gdk', '3.0')
  5. from gi.repository import Gdk
  6. import dbus
  7. from _dbus_bindings import BUS_DAEMON_IFACE, BUS_DAEMON_NAME, BUS_DAEMON_PATH
  8. import os
  9. class MessageBox:
  10. def __init__(self,message_title,message_content):
  11. self.__load_css()
  12. self.__load_glade("messagebox.glade")
  13. self.__extract_widget()
  14. self.set_content(message_content)
  15. self.set_title(message_title)
  16. def set_title(self,title):
  17. self.title_label.set_text(title)
  18. def set_content(self,content):
  19. self.content_label.set_text(content)
  20. pass
  21. def __load_glade(self,glade_file):
  22. self.builder = Gtk.Builder()
  23. self.builder.add_from_file(glade_file)
  24. self.builder.connect_signals(self)
  25. def __extract_widget(self):
  26. self.window = self.builder.get_object("TopWindow")
  27. self.title_label = self.builder.get_object("TitleLabel")
  28. self.content_label = self.builder.get_object("MessageLabel")
  29. def show(self):
  30. self.window.show()
  31. def __load_css(self):
  32. screen = Gdk.Screen.get_default()
  33. provider = Gtk.CssProvider()
  34. provider.load_from_path("messagebox.css")
  35. Gtk.StyleContext.add_provider_for_screen(screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
  36. def ok_btn_click(self, *args):
  37. self.window.close()
  38. class Cleaner:
  39. def __init__(self):
  40. timeout = 60
  41. flags = 0
  42. bus_name = "org.dbus.ucleaner"
  43. opath = "/org/ucleaner"
  44. #get the system bus
  45. bus = dbus.SystemBus()
  46. bus.call_blocking(BUS_DAEMON_NAME, BUS_DAEMON_PATH, BUS_DAEMON_IFACE,'StartServiceByName', 'su', (bus_name, flags), timeout=timeout)
  47. #get the object
  48. dbus_object = bus.get_object(bus_name, opath)
  49. #get the interface
  50. self.dbus_interface = dbus.Interface(dbus_object, "org.ucleaner")
  51. def clean_apt_cache(self):
  52. self.dbus_interface.clean_apt_cache()
  53. def clean_logs(self):
  54. self.dbus_interface.clean_logs()
  55. def remove_unused_pkgs(self):
  56. self.dbus_interface.auto_remove_pkgs()
  57. def remove_thumbnails(self):
  58. os.system("rm -rf ~/.cache/thumbnails/*")
  59. def clean_firefox_cache(self):
  60. os.system("rm ~/.mozilla/firefox/*.default*/*.sqlite ~/.mozilla/firefox/*default*/sessionstore.js")
  61. os.system("rm -r ~/.cache/mozilla/firefox/*.default*/*")
  62. class GUI:
  63. IsWindowMaximized=False
  64. def __init__(self):
  65. self.cleaner=Cleaner()
  66. self.__load_glade("cleaner.glade")
  67. self.__load_css()
  68. self.__extract_widget()
  69. def __load_glade(self,glade_file):
  70. self.builder = Gtk.Builder()
  71. self.builder.add_from_file(glade_file)
  72. self.builder.connect_signals(self)
  73. def __extract_widget(self):
  74. self.window = self.builder.get_object("TopWindow")
  75. def show(self):
  76. self.window.show()
  77. def __load_css(self):
  78. screen = Gdk.Screen.get_default()
  79. provider = Gtk.CssProvider()
  80. provider.load_from_path("cleaner.css")
  81. Gtk.StyleContext.add_provider_for_screen(screen, provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
  82. def maximize(self, button):
  83. if IsWindowMaximized:
  84. Gtk.Window.normlize(self.window)
  85. IsWindowMaximized=False
  86. return
  87. Gtk.Window.maximize(self.window)
  88. def minimize(self, button):
  89. Gtk.Window.minimize(self.window)
  90. def close(self, *args):
  91. Gtk.main_quit()
  92. exit(0)
  93. def Clean(self, button):
  94. status=False
  95. if self.builder.get_object("AptCacheChk").get_active():
  96. status=True
  97. self.cleaner.clean_apt_cache()
  98. if self.builder.get_object("LogsChk").get_active():
  99. status=True
  100. self.cleaner.clean_logs()
  101. if self.builder.get_object("UnUsedPkgsChk").get_active():
  102. status=True
  103. self.cleaner.remove_unused_pkgs()
  104. if self.builder.get_object("ThumbnailsChk").get_active():
  105. status=True
  106. self.cleaner.remove_thumbnails()
  107. if self.builder.get_object("FireFoxChk").get_active():
  108. status=True
  109. self.cleaner.clean_firefox_cache()
  110. if status:
  111. MessageBox("Result","Cleaning Completed").show()
  112. return
  113. MessageBox("Error","Select At Least one Task").show()
  114. if __name__ == "__main__":
  115. main = GUI()
  116. main.show()
  117. Gtk.main()