diff --git a/yay-gui.py b/yay-gui.py new file mode 100644 index 0000000..40437c3 --- /dev/null +++ b/yay-gui.py @@ -0,0 +1,78 @@ +import sys +from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton, QTextEdit, QLabel, QLineEdit, QListWidget, QInputDialog + +import subprocess + +class YayGUI(QMainWindow): + def __init__(self): + super().__init__() + self.initUI() + + def initUI(self): + self.setWindowTitle("Yay GUI") + self.setGeometry(100, 100, 600, 400) + + central_widget = QWidget() + self.setCentralWidget(central_widget) + + layout = QVBoxLayout() + central_widget.setLayout(layout) + + self.search_input = QLineEdit() + self.search_input.setPlaceholderText("Search for packages...") + self.search_input.returnPressed.connect(self.search_packages) + layout.addWidget(self.search_input) + + self.package_list = QListWidget() + layout.addWidget(self.package_list) + + self.output_label = QLabel("Output:") + layout.addWidget(self.output_label) + + self.output_text = QTextEdit() + self.output_text.setReadOnly(True) + layout.addWidget(self.output_text) + + self.install_button = QPushButton("Install") + self.install_button.clicked.connect(self.install_package) + layout.addWidget(self.install_button) + + self.remove_button = QPushButton("Remove") + self.remove_button.clicked.connect(self.remove_package) + layout.addWidget(self.remove_button) + + def search_packages(self): + search_term = self.search_input.text() + self.package_list.clear() + try: + output = subprocess.check_output(f"yay -Ss {search_term}", shell=True, universal_newlines=True) + packages = output.split("\n")[5:-2] # Skip header and footer lines + self.package_list.addItems(packages) + except subprocess.CalledProcessError as e: + self.output_text.setPlainText(f"Error: {e.output}") + + def install_package(self): + selected_packages = [item.text() for item in self.package_list.selectedItems()] + if selected_packages: + package_names = " ".join(selected_packages) + package_names = package_names.split(" ")[0] + #print(package_names) + self.run_yay_command(f"yay -S {package_names}", "Installation completed.") + + def remove_package(self): + package_name, ok = QInputDialog.getText(self, "Remove Package", "Enter package name:") + if ok: + self.run_yay_command(f"yay -R {package_name}", "Removal completed.") + + def run_yay_command(self, command, success_message): + try: + output = subprocess.check_output(command, shell=True, universal_newlines=True) + self.output_text.setPlainText(output + "\n" + success_message) + except subprocess.CalledProcessError as e: + self.output_text.setPlainText(f"Error: {e.output}") + +if __name__ == "__main__": + app = QApplication(sys.argv) + yay_gui = YayGUI() + yay_gui.show() + sys.exit(app.exec_())