#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Linux 日志删除助手 在 UOS LiveCD 环境中运行,帮助用户快速清理磁盘空间 """ import sys import os # 添加当前目录到 Python 路径 current_dir = os.path.dirname(os.path.abspath(__file__)) if current_dir not in sys.path: sys.path.insert(0, current_dir) from PyQt5.QtWidgets import QApplication, QMessageBox from PyQt5.QtCore import Qt from PyQt5.QtGui import QFont from utils import check_sudo_needs_password, get_sudo_password, verify_sudo_password from gui.main_window import MainWindow from gui.sudo_dialog import SudoDialog def check_environment(): """检查运行环境""" # 检查是否为 Linux 系统 if sys.platform != 'linux': QMessageBox.warning( None, "环境警告", "本工具设计用于 Linux 系统,\n" "当前运行在非 Linux 环境中,部分功能可能无法正常工作。" ) # 检查是否有 root 权限或 sudo if os.geteuid() != 0: if check_sudo_needs_password(): return True # 需要密码,稍后会提示 else: # sudo 不需要密码,可以直接使用 return True return True # 已经是 root def get_sudo_access(): """获取 sudo 权限""" # 检查是否已经是 root if os.geteuid() == 0: return None # 不需要密码 # 检查 sudo 是否需要密码 if not check_sudo_needs_password(): return None # 不需要密码 # 需要密码,显示密码输入对话框 dialog = SudoDialog() if dialog.exec_() == SudoDialog.Accepted: password = dialog.get_password() # 验证密码 if verify_sudo_password(password): return password else: QMessageBox.critical( None, "密码错误", "sudo 密码不正确,程序将退出。" ) return None else: # 用户取消 return None def main(): """主函数""" # 设置高 DPI 支持 QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True) QApplication.setAttribute(Qt.AA_UseHighDpiPixmaps, True) # 创建应用 app = QApplication(sys.argv) # 设置应用样式 app.setStyle('Fusion') # 设置默认字体 font = QFont() font.setPointSize(10) app.setFont(font) # 检查环境 if not check_environment(): sys.exit(1) # 获取 sudo 权限 sudo_password = get_sudo_access() # 如果需要密码但没有提供,且不是 root,则退出 if sudo_password is None and os.geteuid() != 0: if check_sudo_needs_password(): sys.exit(0) # 创建主窗口 window = MainWindow(sudo_password) window.show() # 启动时自动显示分区选择对话框 window.switch_partition() # 运行应用 sys.exit(app.exec_()) if __name__ == '__main__': main()