mirror of
https://github.com/Aaron-Langham/yay-gui.git
synced 2024-11-23 07:52:46 +00:00
Create yay-gui.py
This commit is contained in:
parent
750de44b60
commit
d0a9a05892
78
yay-gui.py
Normal file
78
yay-gui.py
Normal file
@ -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_())
|
Loading…
Reference in New Issue
Block a user