This commit is contained in:
Your Name
2024-04-27 00:43:39 -05:00
parent ded41e2533
commit 09bdc79e69
99 changed files with 11170 additions and 0 deletions

View File

@@ -0,0 +1 @@
sudo mount -o remount,ro /

View File

@@ -0,0 +1 @@
sudo mount -o remount,rw /

View File

@@ -0,0 +1,90 @@
import os
import sys
import signal
import logging
import platform
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QScrollBar, QGraphicsView, QGraphicsScene, QGraphicsProxyWidget
from PyQt5.QtCore import Qt, QCoreApplication
from PyQt5.QtGui import QFont, QScreen
import termqt
from termqt import Terminal, TerminalPOSIXExecIO
class ExitOnMessageHandler(logging.Handler):
def emit(self, record):
if "Spawned process has been killed" in record.getMessage():
QApplication.quit() # Exit the application gracefully
def setup_logger():
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
formatter = logging.Formatter("[%(asctime)s] > [%(filename)s:%(lineno)d] %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
handler2 = ExitOnMessageHandler()
logger.addHandler(handler2)
return logger
def create_terminal_app():
os.environ["XDG_RUNTIME_DIR"] = "/var/tmp/weston"
os.environ["WAYLAND_DISPLAY"] = "wayland-0"
os.environ["QT_QPA_PLATFORM"] = "wayland"
os.environ["QT_WAYLAND_SHELL_INTEGRATION"] = "wl-shell"
QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
desktop = QApplication.desktop()
ag = desktop.availableGeometry(desktop.primaryScreen())
print (ag.width())
print (ag.height())
window = QWidget()
window.setWindowTitle("termqt on {}".format(platform.system()))
window.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
window.setGeometry(0,0, ag.width(), ag.height())
window.setStyleSheet("background-color: black;")
window.showFullScreen()
scene = QGraphicsScene()
view = QGraphicsView(scene, window)
print (window.width())
print (window.height())
view.setGeometry(0, 0, window.width(), window.height())
view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
layout = QHBoxLayout()
terminal = Terminal(window.width(), window.height(), logger=setup_logger(), font_size=32)
proxy_terminal = scene.addWidget(terminal)
view.setScene(scene)
view.rotate(90) # Rotate the view by 90 degrees clockwise
window_layout = QHBoxLayout(window)
window_layout.addWidget(view)
window_layout.setContentsMargins(0,0,0,0)
window.setLayout(window_layout)
return app, window, terminal
def main():
signal.signal(signal.SIGINT, signal.SIG_DFL) # Enable Ctrl+C
if len(sys.argv) < 2:
print("Usage: python start.py '<command>'")
return
command = "bash -c '{}'".format(sys.argv[1])
app, window, terminal = create_terminal_app()
platform_name = platform.system()
terminal_io = TerminalPOSIXExecIO(terminal.col_len, terminal.row_len, command, os.environ, setup_logger())
terminal_io.stdout_callback = terminal.stdout
terminal.stdin_callback = terminal_io.write
terminal.resize_callback = terminal_io.resize
terminal_io.spawn()
exit_code = app.exec_()
sys.exit(exit_code)
if __name__ == "__main__":
main()