From d77feaac03ec649d442284f5f2304b72851c1cc0 Mon Sep 17 00:00:00 2001 From: gaining Date: Fri, 5 May 2017 04:42:12 -0400 Subject: [PATCH] misc improvements, fixed #13 --- Resetter/{DEBIAN => control}/control | 6 +- Resetter/control/debian-binary | 1 + Resetter/{DEBIAN => control}/postrm | 0 Resetter/usr/bin/resetter | 7 +- Resetter/usr/lib/resetter/AboutPage.py | 9 +-- Resetter/usr/lib/resetter/AptProgress.py | 18 +++-- Resetter/usr/lib/resetter/EasyInstall.py | 35 ++++------ Resetter/usr/lib/resetter/EasyRepo.py | 9 ++- Resetter/usr/lib/resetter/PackageView.py | 7 +- Resetter/usr/lib/resetter/Resetter.py | 66 ++++++++---------- Resetter/usr/lib/resetter/Sources.py | 16 ++--- .../lib/resetter/data/scripts/fix-broken.sh | 0 .../lib/resetter/data/scripts/get-users.sh | 0 .../usr/lib/resetter/data/scripts/new-user.sh | 0 .../data/scripts/remove-old-kernels.sh | 0 .../usr/share/applications/Resetter.desktop | 2 +- Resetter/usr/share/doc/resetter/changelog.gz | Bin 1037 -> 1131 bytes changelog | 9 +++ 18 files changed, 85 insertions(+), 100 deletions(-) rename Resetter/{DEBIAN => control}/control (78%) create mode 100644 Resetter/control/debian-binary rename Resetter/{DEBIAN => control}/postrm (100%) mode change 100755 => 100644 Resetter/usr/lib/resetter/data/scripts/fix-broken.sh mode change 100755 => 100644 Resetter/usr/lib/resetter/data/scripts/get-users.sh mode change 100755 => 100644 Resetter/usr/lib/resetter/data/scripts/new-user.sh mode change 100755 => 100644 Resetter/usr/lib/resetter/data/scripts/remove-old-kernels.sh diff --git a/Resetter/DEBIAN/control b/Resetter/control/control similarity index 78% rename from Resetter/DEBIAN/control rename to Resetter/control/control index 74574e1..3c76fb6 100644 --- a/Resetter/DEBIAN/control +++ b/Resetter/control/control @@ -1,12 +1,12 @@ Package: resetter -Version: 0.2.5-rc2 -Installed-Size: 1224 +Version: 0.2.6-rc3 +Installed-Size: 1220 Maintainer: gaining Section: python Homepage: https://github.com/gaining/resetter Architecture: all Priority: optional -Depends: python-qt4 (>=4.10), python-apt (>=0.9.3), coreutils (>=7.0), python-evdev (>=0.4), python-mechanize (>=1:0.2.5), python-bs4 (>=4.2), add-apt-key (>=1.0) +Depends: python-qt4 (>=4.10), python-apt (>=0.9.3), coreutils (>=7.0), python-mechanize (>=1:0.2.5), python-bs4 (>=4.2), add-apt-key (>=1.0) Pre-Depends: python (>=2.7.5), policykit-1 (>=0.105) Description: Resets Ubuntu/Linux-Mint to stock Resetter is an easy way to reset your debian based linux back to stock. It also has other useful tools such as a ppa manager, an installer and a way to install ppa's straight from launchpad.net. diff --git a/Resetter/control/debian-binary b/Resetter/control/debian-binary new file mode 100644 index 0000000..cd5ac03 --- /dev/null +++ b/Resetter/control/debian-binary @@ -0,0 +1 @@ +2.0 diff --git a/Resetter/DEBIAN/postrm b/Resetter/control/postrm similarity index 100% rename from Resetter/DEBIAN/postrm rename to Resetter/control/postrm diff --git a/Resetter/usr/bin/resetter b/Resetter/usr/bin/resetter index d5a6cad..dbe26dd 100755 --- a/Resetter/usr/bin/resetter +++ b/Resetter/usr/bin/resetter @@ -1,10 +1,7 @@ #!/bin/bash LANG=en_US.UTF-8 -if [[ $EUID -ne 0 ]]; then - pkexec /usr/lib/resetter/Resetter.py -else - /usr/lib/resetter/Resetter.py -fi +python /usr/lib/resetter/Resetter.py + diff --git a/Resetter/usr/lib/resetter/AboutPage.py b/Resetter/usr/lib/resetter/AboutPage.py index f1da17d..ad3fcc6 100644 --- a/Resetter/usr/lib/resetter/AboutPage.py +++ b/Resetter/usr/lib/resetter/AboutPage.py @@ -13,9 +13,6 @@ def __init__(self, parent=None): pixmap2 = pixmap.scaled(300, 91) about_font = QtGui.QFont() about_font.setBold(True) - title_font = QtGui.QFont() - title_font.setBold(True) - title_font.setPointSize(20) about_label = QtGui.QLabel(self) desc_label = QtGui.QLabel(self) desc_label.setAlignment(QtCore.Qt.AlignCenter) @@ -35,13 +32,13 @@ def __init__(self, parent=None): about_label.setAlignment(QtCore.Qt.AlignCenter) cr_text = "Copyright (c) 2017 all rights reserved" desc_text = "Built With PyQt\n\n " \ - "This is a great utility software that will help you reset your linux installation its stock state" - version_text = "Version: 0.2.5-rc2" + "This is a great utility software that will help you reset your linux installation its stock state" \ + "among other things." + version_text = "Version: 0.2.6-rc3" donate_text = 'If you liked my project, please ' \ 'Donate ' more_text = 'To find out more about this project, please visit my github:' \ ' Resetter' - about_label.setPixmap(pixmap2) desc_label.setText(desc_text) cr_label.setText(cr_text) diff --git a/Resetter/usr/lib/resetter/AptProgress.py b/Resetter/usr/lib/resetter/AptProgress.py index 39655b9..7549708 100644 --- a/Resetter/usr/lib/resetter/AptProgress.py +++ b/Resetter/usr/lib/resetter/AptProgress.py @@ -1,9 +1,16 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import os +import apt_pkg from PyQt4 import QtGui from apt.progress.base import InstallProgress, OpProgress, AcquireProgress -from evdev import uinput, ecodes as e + +apt_pkg.init_config() +apt_pkg.config.set("DPkg::Options::", "--force-confnew") +apt_pkg.config.set('APT::Get::Assume-Yes', 'true') +apt_pkg.config.set('APT::Get::force-yes', 'true') +os.putenv("DEBIAN_FRONTEND", "gnome") class UIOpProgress(OpProgress): @@ -71,6 +78,8 @@ def __init__(self, pbar, status_label): self.pbar = pbar self.status_label = status_label self.last = 0.0 + os.putenv("DEBIAN_FRONTEND", "gnome") + def status_change(self, pkg, percent, status): if self.last >= percent: @@ -91,12 +100,7 @@ def processing(self, pkg, stage): print "starting {} stage for {}".format(stage, pkg) def conffile(self, current, new): - #keeps current conf file by pressing enter key - print "WARNING: conffile prompt: {} {}".format(current, new) - with uinput.UInput() as ui: - ui.write(e.EV_KEY, e.KEY_ENTER, 1) - ui.write(e.EV_KEY, e.KEY_ENTER, 0) - ui.syn() + print "new config file automatically accepted" def error(self, errorstr): print "ERROR: {}".format(errorstr) diff --git a/Resetter/usr/lib/resetter/EasyInstall.py b/Resetter/usr/lib/resetter/EasyInstall.py index ec74724..c753f51 100644 --- a/Resetter/usr/lib/resetter/EasyInstall.py +++ b/Resetter/usr/lib/resetter/EasyInstall.py @@ -1,17 +1,18 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from InstallMissingDialog import Install -import os -import sys import apt +import os import textwrap from PyQt4 import QtCore, QtGui +from InstallMissingDialog import Install + + class EasyInstaller(QtGui.QDialog): - def __init__(self): - super(EasyInstaller, self).__init__() + def __init__(self, parent=None): + super(EasyInstaller, self).__init__(parent) self.setWindowTitle("Easy install") - self.list_view = QtGui.QListView() + self.list_view = QtGui.QListView(self) self.list_view.setFixedWidth(380) self.EditText = QtGui.QLineEdit() self.EditText.setPlaceholderText("Search for applications") @@ -64,7 +65,6 @@ def __init__(self): verticalLayout.addWidget(self.list_view) verticalLayout.addLayout(horizontalLayout2) self.cache = apt.Cache() - self.unavailable = [] self.isWritten = False @@ -137,15 +137,11 @@ def openBackup(self): self.list_view.setModel(self.model) self.EditText.clear() except KeyError: - self.unavailable.append(line) continue except IOError: pass def installPackages(self): - if len(self.unavailable) > 0: - self.keptBack(self.unavailable) - model = self.model for index in xrange(model.rowCount()): item = model.item(index) @@ -163,7 +159,7 @@ def installPackages(self): self.install.show() self.install.exec_() self.removeItems() - print "Done" + print "Finished installing" def closeview(self): self.cache.close() @@ -179,9 +175,12 @@ def alreadyInstalled(self, package): def showMessage(self, package): self.comboBox.clear() self.comboBox.addItem("Did you mean?") + i = 0 for p in self.cache: - if p.shortname.startswith(package): + if p.shortname.startswith(package) and len(package) > 0 and i < 12: + i += 1 self.comboBox.addItem(p.shortname) + if self.comboBox.count() > 1: self.comboBox.setVisible(True) msg = QtGui.QMessageBox(self) @@ -192,13 +191,3 @@ def showMessage(self, package): "please use [EasyPPA - refresh sources] feature, " "then try adding the package again.") msg.exec_() - - def keptBack(self, una): - msg = QtGui.QMessageBox(self) - msg.setWindowTitle("Packages kept back") - msg.setIcon(QtGui.QMessageBox.Information) - msg.setText("These packages are not available in the cache so they won't be installed") - msg.setDetailedText("You may find them by using the Easy PPA function") - text = "\n".join(una) - msg.setInformativeText(text) - msg.exec_() diff --git a/Resetter/usr/lib/resetter/EasyRepo.py b/Resetter/usr/lib/resetter/EasyRepo.py index 0d09610..2acf8ef 100644 --- a/Resetter/usr/lib/resetter/EasyRepo.py +++ b/Resetter/usr/lib/resetter/EasyRepo.py @@ -63,8 +63,6 @@ def __init__(self, parent=None): self.ppa = [] self.table_data = [] - - def configureTable(self, table): table.setColumnCount(4) table.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("Description")) @@ -171,9 +169,8 @@ def isThereInternet(self): except mechanize.URLError as e: print "There is no internet {}".format(e) - self.error_msg.setText("No internet") - self.error_msg.setDetailedText("If this keeps happening, it means easy repo stumbled upon a " - "forbidden link. You might need to change your search string") + self.error_msg.setText("You are not connected to the internet") + self.error_msg.setDetailedText("This feature will not work without an internet connection. ") self.error_msg.exec_() return False @@ -241,6 +238,7 @@ def getTableData(self, sauce): self.table_data.append(pasta) def showPackages(self, sauce): + QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) button = QtGui.qApp.focusWidget() index = self.table.indexAt(button.pos()) if index.isValid(): @@ -249,6 +247,7 @@ def showPackages(self, sauce): if len(sauce) >= index.row(): available.showView(sauce[index.row()], "PPA Packages", text, False) available.show() + QtGui.QApplication.restoreOverrideCursor() def showMessage(self): msg = QtGui.QMessageBox(self) diff --git a/Resetter/usr/lib/resetter/PackageView.py b/Resetter/usr/lib/resetter/PackageView.py index 9332d07..7313e4d 100644 --- a/Resetter/usr/lib/resetter/PackageView.py +++ b/Resetter/usr/lib/resetter/PackageView.py @@ -99,15 +99,16 @@ def showView(self, data, title, tip, start): list_view.show() else: + word = 'deb' for x in data: m = (str(x)) - if m.startswith('deb') or m.startswith('#'): + if m.startswith(word) or m.startswith('#') \ + and m[2:].split(' ')[0][:3] == word: item = QtGui.QStandardItem(m) item.setCheckable(False) item.setEditable(False) - item.setCheckState(QtCore.Qt.PartiallyChecked) + item.setCheckState(QtCore.Qt.Checked) model.appendRow(item) - data.save() list_view.setModel(model) list_view.show() diff --git a/Resetter/usr/lib/resetter/Resetter.py b/Resetter/usr/lib/resetter/Resetter.py index 7349f1a..0c367b8 100755 --- a/Resetter/usr/lib/resetter/Resetter.py +++ b/Resetter/usr/lib/resetter/Resetter.py @@ -137,29 +137,27 @@ def __init__(self, parent=None): font = QtGui.QFont() font.setPointSize(25) button_style = (""" - QPushButton { - border: 2px solid #555; - border-radius: 30px; - padding: 5px; - background: qradialgradient(cx: 0.5, cy: -0.6, - fx: -0.5, fy: 0.6, - radius: 1.35, stop: 0 #fff, stop: 1 #888); - } - - QPushButton:hover { - background: qradialgradient(cx: 0.5, cy: 0.3, - fx: 0.5, fy: 0.3, - radius: 1.35, stop: 0 #fff, stop: 1 #888); - min-width: 80px; - } - - QPushButton:pressed { - background: qradialgradient(cx: 0.7, cy: -0.7, - fx: 0.7, fy: -0.7, - radius: 1.35, stop: 0 #fff, stop: 1 #888); - } - - """) + QPushButton { + border: 2px solid #555; + border-radius: 30px; + padding: 5px; + background: qradialgradient(cx: 0.5, cy: -0.6, + fx: -0.5, fy: 0.6, + radius: 1.35, stop: 0 #fff, stop: 1 #888); + } + + QPushButton:hover { + background: qradialgradient(cx: 0.5, cy: 0.3, + fx: 0.5, fy: 0.3, + radius: 1.35, stop: 0 #fff, stop: 1 #888); + min-width: 80px; + } + + QPushButton:pressed { + background: qradialgradient(cx: 0.7, cy: -0.7, + fx: 0.7, fy: -0.7, + radius: 1.35, stop: 0 #fff, stop: 1 #888); + }""") self.btnReset = QtGui.QPushButton(self) self.btnReset.setText("Automatic Reset", ) self.btnReset.setFixedHeight(100) @@ -313,7 +311,7 @@ def getMissingPackages(self): word = "vivid" else: word = None - black_list = ['linux-image', 'linux-headers', "openjdk-7-jre"] + black_list = ['linux-image', 'linux-headers', 'openjdk-7-jre', 'grub'] with open("apps-to-install", "w") as output, open("installed", "r") as installed, \ open(self.manifest, "r") as man: diff = set(man).difference(installed) @@ -343,6 +341,8 @@ def save(self): def detectOS(self): self.logger.info("OS is {}".format(self.os_info['DESCRIPTION'])) + #compat_oses = (['LinuxMint', 'Ubuntu', 'elementary', 'Deepin']) + #compat_releases = (['17.3', '18.1', '18', '14.04','16.04', '16.10', '0.4','15.4']) if self.os_info['ID'] == ('LinuxMint'): if self.os_info['RELEASE'] == '17.3': self.setWindowTitle(self.os_info['ID'] + " Resetter") @@ -474,20 +474,15 @@ def warningPrompt(self): def getInstalledList(self): try: self.logger.info("getting installed list...") - self.setCursor(QtCore.Qt.BusyCursor) p1 = subprocess.Popen(['dpkg', '--get-selections'], stdout=subprocess.PIPE, bufsize=1) - self.unsetCursor() result = p1.stdout - i = 0 tab = '\t' with open("installed", "w") as output: - for line in result: - i += 1 + for i, line in enumerate(result): line = line.split(tab, 1)[0] output.write(line + '\n') self.logger.debug("installed list was generated with {} apps installed".format(i)) - except (subprocess.CalledProcessError) as e: - self.unsetCursor() + except subprocess.CalledProcessError as e: self.logger.error("Error: {}".format(e.ouput), exc_info=True) self.error_msg.setText("Installed list failed to generate or may not be complete: {}".format(e)) self.error_msg.exec_() @@ -509,7 +504,6 @@ def processManifest(self): self.logger.info("manifest processing complete") self.compareFiles() except Exception as e: - self.unsetCursor() self.logger.error("Manifest processing failed [{}]".format(e)) self.error_msg.setText("Manifest processing failed") self.error_msg.setDetailedText("{}".format(e)) @@ -525,10 +519,12 @@ def lineCount(self, f_in): def compareFiles(self): try: - black_list = ['linux-image', 'linux-headers', 'ca-certificates', 'pyqt4-dev-tools', + black_list = (['linux-image', 'linux-headers', 'ca-certificates', 'pyqt4-dev-tools', 'python-apt', 'python-aptdaemon', 'python-qt4', 'python-qt4-doc', 'libqt', 'pyqt4-dev-tools', 'openjdk', 'python-sip', 'gksu', 'resetter', - 'python-evdev', 'python-bs4', 'python-mechanize'] + 'python-evdev', 'python-bs4', 'python-mechanize', 'add-apt-key', 'python-html5lib', + 'python-pkg-resources', 'python-webencodings', 'python-chardet', 'python-lxml', + 'python-six', 'grub']) with open("apps-to-remove", "w") as output, open("installed", "r") as installed, \ open(self.manifest, "r") as pman: diff = set(installed).difference(pman) @@ -550,7 +546,6 @@ def showInstalled(self): viewInstalled.show() QtGui.QApplication.restoreOverrideCursor() - def getLocalUserList(self): try: self.logger.info("getting local users...") @@ -591,7 +586,6 @@ def center(self): frameGm.moveCenter(centerPoint) self.move(frameGm.topLeft()) - if __name__ == '__main__': key = 'Resetter' app = SingleApplication(sys.argv, key) diff --git a/Resetter/usr/lib/resetter/Sources.py b/Resetter/usr/lib/resetter/Sources.py index 35689b4..889ce76 100644 --- a/Resetter/usr/lib/resetter/Sources.py +++ b/Resetter/usr/lib/resetter/Sources.py @@ -30,9 +30,6 @@ def __init__(self, parent=None): self.btnRemove.setText("Remove entries") self.btDisable.setText("Disable entries") self.btnEnable.setText("Enable entries") - self.btDisable.setVisible(False) - self.btnRemove.setVisible(False) - self.btnEnable.setVisible(False) self.label.setPalette(palette) self.btnRemove.clicked.connect(self.removeSelectedSources) self.btDisable.clicked.connect(self.disableSelectedSources) @@ -40,6 +37,7 @@ def __init__(self, parent=None): self.msg = QtGui.QMessageBox() self.msg.setIcon(QtGui.QMessageBox.Information) self.msg.setWindowTitle("Success") + self.msg.setText("Your changes have been successfully applied") self.btnClose.clicked.connect(self.close) self.s = sourceslist.SourcesList() self.sourceslists = [] @@ -63,9 +61,6 @@ def editSources(self, title, tip): horizontalLayout.addWidget(self.btnClose) verticalLayout.addLayout(horizontalLayout) self.searchEditText.textChanged.connect(lambda: self.searchItem(self.model, self.list_view)) - self.btnRemove.setVisible(True) - self.btDisable.setVisible(True) - self.btnEnable.setVisible(True) for dirpath, dirs, files in os.walk('/etc/apt/'): word = 'deb' @@ -82,7 +77,6 @@ def editSources(self, title, tip): self.model.appendRow(self.item) self.list_view.setModel(self.model) - def setItems(self, item): if item.checkState() == QtCore.Qt.Checked: self.items.append(item.text()) @@ -101,9 +95,10 @@ def disableSelectedSources(self): sys.stdout.write(line) fileinput.close() self.close() - self.msg.setText("Your changes have been successfully applied") self.msg.exec_() + + def enableSelectedSources(self): for item in self.items: item = str(item) @@ -113,9 +108,8 @@ def enableSelectedSources(self): line = line.replace(item, enable) sys.stdout.write(line) fileinput.close() - self.close() - self.msg.setText("Your changes have been successfully applied") - self.msg.exec_() + self.close() + self.msg.exec_() def removeSelectedSources(self): for item in self.items: diff --git a/Resetter/usr/lib/resetter/data/scripts/fix-broken.sh b/Resetter/usr/lib/resetter/data/scripts/fix-broken.sh old mode 100755 new mode 100644 diff --git a/Resetter/usr/lib/resetter/data/scripts/get-users.sh b/Resetter/usr/lib/resetter/data/scripts/get-users.sh old mode 100755 new mode 100644 diff --git a/Resetter/usr/lib/resetter/data/scripts/new-user.sh b/Resetter/usr/lib/resetter/data/scripts/new-user.sh old mode 100755 new mode 100644 diff --git a/Resetter/usr/lib/resetter/data/scripts/remove-old-kernels.sh b/Resetter/usr/lib/resetter/data/scripts/remove-old-kernels.sh old mode 100755 new mode 100644 diff --git a/Resetter/usr/share/applications/Resetter.desktop b/Resetter/usr/share/applications/Resetter.desktop index f921309..878a455 100644 --- a/Resetter/usr/share/applications/Resetter.desktop +++ b/Resetter/usr/share/applications/Resetter.desktop @@ -1,7 +1,7 @@ [Desktop Entry] Name=Resetter Version=1.0 -Exec=/usr/bin/resetter +Exec=pkexec /usr/lib/resetter/Resetter.py Comment=reset your system to stock Icon=/usr/lib/resetter/data/icons/resetter.png Type=Application diff --git a/Resetter/usr/share/doc/resetter/changelog.gz b/Resetter/usr/share/doc/resetter/changelog.gz index ab4b6dd7a32ee93809c9634a93132602797ffc7e..5a6bf3384a5aec022dcaa8d6ffd2ba5120ad3546 100644 GIT binary patch literal 1131 zcmV-x1eE(9iwFP!000021D#jfZsRr(ea}}6kcVCn8{Y+ML();~CQj@;B#3xD=giC*#-K&#(7^ZEw3sd?rk?!(&UovFpTL_IWj*}T zsom8Tz>jb*Yz?B1-UmTXzUf0Y}!sPPh$dRzI>9p=Uxm`l0h}ZG?6fq}om6 zuD`ISQ#iN{f*#yP$q8;bZlPD)(}9gqJsqi0asnaH0<$0-h;RmUO15;WMC8b)gl;l{ zmTnTVg`f9-EPqqpbxJ)>Yt{b>@X3f9$mVd*1}L(830YZXx7GX>CRv$fS65f&NR2tE zQM|53q|NE-XM_VV&L>Q}$s-OUR{0(MmUZXDS|P!z9)Sz%jIyvEXnVta=i-5%#5Y=m z%nqP6gGL#^F6zw804j<7@Nh@6N*36^h{T^^Z(Q*rP-iLhx0g3C%ivC%q)@)Big{Hm zPbgH9LitODdgQ|QSNkw`#0cScCb{6uA>?uVEAHU#;d2m8IH9Dyfwe7xRzZ*ThDq@+ zjtf5_bDpk-Nuu~!TF1I>oNv-RO$YM#NuF0`McNnSwG;(|wd;nIX&v*j-e|`685}e6 z8A=330843qFNO{nizCCqa}Wn63oCF zH*71EH$Vt#k}t;0>x1>3SZf+v`}Tu@&1ThnR^{_o1Dj80lQlZ_h7%+hlQj%InrFiYNvt%AB3D0)x4<6;soUE1mr`z zND;eU#(KM6C1DSX<8o#173DsmdxlAlMlfGDwQRaP17`Hsq;LwpUwi31T{F$fqhddD z@S_>8gB|j5YZuk%uBV5`H0044^Em!~m literal 1037 zcmV+o1oHbIiwFP!000021D#geZsRr(efL)kkcVCn8ImktqF&ITZGZ)K7eU(}phZe1 zOpydH_PSr+A?Y}B*V@>5F)R&9oik_V3=Ol)IcDJdd|FQDnQ6)&z!`7d;V1B>W3oB? zBGi5Y@FP4@$|z8#nWP~Agwl*?mu(sTx4<26E5E~E*$5xjatT)T3@EqGC=2TYZf}Vf zE*|*Azu+Q9>;beU&?*B=u%1ar%mI{*i=Lk!p(m1bh?4i(s9juQsDaqv&`>hy1W4 zh=DcRkR4av03v8GeNi*72kQl2Ykar%-8+TNXZ3tm7xRn47Sma_W{zC0{Q(TD_5gj2 zRcZ&X8`5kT=B`&*w}^jxW%>QH@%IRCfHJSEMLk=Mpe(OL*>b@^Du*5AgNm565Tr(F zjAGt(>@~!oi3#|^1{=DyB|8kL7Qox6fmDVvgS!xhjk_ps+r(XuRmFAOJ-dfuHE2DQ zXHl2c2>0SG?xAoyL^`OZ77S{#W60*%9#-&f~0zR?QWG4J8X{IGy6$l?IXHZnCNH-^RlVs)8!Q~qravMC-ME-OXu-3)4V!s z_A>`Ri+COEke;?yVJnsoZ<%$cWMCay>lxfFu4DUTII^wIdI;GTs}Z(~E7=Z@n# zr<8D9zkc_{-BFy_t=h2c_%6Um$J&>(ZZOXL;jDPjJM(HJo%6TalF)P$NKjRzXHPZ7 zgdmbBZ(oWlCGA`JKMjy3v`F-)ph@(v20`F#ix6+&Tb}pyLp@uJ@U5=1;Jq^2@YytT z!&pF0QKuL7ZjW;UR~{XThz^~|ZTeIqu|+a3xjR6yz(%>D8D<6E2###ZqMnsCj+o1A zt{i)*Bjb=i-rs;U4GtHahQwMVO9xsLVHlwYFkVKmJ?eyoc*97c@x3UDaHq+ScbfkI;IHV@ H%nJYja}fSn diff --git a/changelog b/changelog index 720e9cb..31a3619 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,12 @@ +resetter (0.2.6-rc3) trusty; urgency=low + + * Misc improvements + * Able to deal with package maintainer scripts now. + * Removed the python-evdev module from dependencies as it is no longer needed. + + -- gaining Fri, 05 May 2017 04:09:59 -0400 + + resetter (0.2.5-rc2) trusty; urgency=low * Added dependency add-apt-key as it isn't included in some distros by default * Fixed easy ppa for elementary os