Files
2026-06-26 16:54:55 +08:00

119 lines
2.9 KiB
Python

#!/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()