mirror of https://github.com/ventoy/Ventoy.git
Optimization for VentoyGUI
This commit is contained in:
parent
a78e19608b
commit
471432fc50
|
@ -107,7 +107,7 @@ cp $OPT Ventoy2Disk.sh $tmpdir/
|
||||||
cp $OPT VentoyWeb.sh $tmpdir/
|
cp $OPT VentoyWeb.sh $tmpdir/
|
||||||
cp $OPT VentoyGUI* $tmpdir/
|
cp $OPT VentoyGUI* $tmpdir/
|
||||||
|
|
||||||
#cp $OPT Ventoy.desktop $tmpdir/
|
|
||||||
cp $OPT README $tmpdir/
|
cp $OPT README $tmpdir/
|
||||||
cp $OPT plugin $tmpdir/
|
cp $OPT plugin $tmpdir/
|
||||||
cp $OPT CreatePersistentImg.sh $tmpdir/
|
cp $OPT CreatePersistentImg.sh $tmpdir/
|
||||||
|
@ -115,7 +115,7 @@ cp $OPT ExtendPersistentImg.sh $tmpdir/
|
||||||
dos2unix -q $tmpdir/Ventoy2Disk.sh
|
dos2unix -q $tmpdir/Ventoy2Disk.sh
|
||||||
dos2unix -q $tmpdir/VentoyWeb.sh
|
dos2unix -q $tmpdir/VentoyWeb.sh
|
||||||
|
|
||||||
#dos2unix -q $tmpdir/Ventoy.desktop
|
|
||||||
dos2unix -q $tmpdir/CreatePersistentImg.sh
|
dos2unix -q $tmpdir/CreatePersistentImg.sh
|
||||||
dos2unix -q $tmpdir/ExtendPersistentImg.sh
|
dos2unix -q $tmpdir/ExtendPersistentImg.sh
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ chmod +x $tmpdir/VentoyGUI*
|
||||||
|
|
||||||
cp $OPT $LANG_DIR/languages.json $tmpdir/tool/
|
cp $OPT $LANG_DIR/languages.json $tmpdir/tool/
|
||||||
|
|
||||||
#chmod +x $tmpdir/Ventoy.desktop
|
|
||||||
chmod +x $tmpdir/CreatePersistentImg.sh
|
chmod +x $tmpdir/CreatePersistentImg.sh
|
||||||
chmod +x $tmpdir/ExtendPersistentImg.sh
|
chmod +x $tmpdir/ExtendPersistentImg.sh
|
||||||
|
|
||||||
|
@ -169,6 +169,7 @@ cp $OPT Ventoy2Disk*.exe $tmpdir/
|
||||||
cp $OPT $LANG_DIR/languages.json $tmpdir/ventoy/
|
cp $OPT $LANG_DIR/languages.json $tmpdir/ventoy/
|
||||||
rm -rf $tmpdir/tool
|
rm -rf $tmpdir/tool
|
||||||
rm -f $tmpdir/*.sh
|
rm -f $tmpdir/*.sh
|
||||||
|
rm -f $tmpdir/VentoyGUI.*
|
||||||
rm -rf $tmpdir/WebUI
|
rm -rf $tmpdir/WebUI
|
||||||
rm -f $tmpdir/README
|
rm -f $tmpdir/README
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QStyle>
|
#include <QStyle>
|
||||||
|
#include <QDir>
|
||||||
#include <QDesktopWidget>
|
#include <QDesktopWidget>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -23,6 +24,7 @@ char g_ini_file[4096];
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
long long size;
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
Ventoy2DiskWindow w;
|
Ventoy2DiskWindow w;
|
||||||
|
|
||||||
|
@ -34,6 +36,21 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!QFileInfo::exists("./boot/boot.img"))
|
||||||
|
{
|
||||||
|
QString curdir = a.applicationDirPath();
|
||||||
|
int index = curdir.indexOf("/tool/");
|
||||||
|
|
||||||
|
if (index >= 0)
|
||||||
|
{
|
||||||
|
QDir::setCurrent(curdir.left(index));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QDir::setCurrent(curdir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!QFileInfo::exists("./boot/boot.img"))
|
if (!QFileInfo::exists("./boot/boot.img"))
|
||||||
{
|
{
|
||||||
QMessageBox::critical(NULL, "Error", "Please run under the correct directory.");
|
QMessageBox::critical(NULL, "Error", "Please run under the correct directory.");
|
||||||
|
@ -56,9 +73,18 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QFileInfo Info(g_log_file);
|
||||||
|
size = (long long)Info.size();
|
||||||
|
if (size >= 4 * SIZE_1MB)
|
||||||
|
{
|
||||||
|
QFile::remove(g_log_file);
|
||||||
|
}
|
||||||
|
|
||||||
vlog("===================================================\n");
|
vlog("===================================================\n");
|
||||||
vlog("===== Ventoy2Disk %s powered by QT %s =====\n", ventoy_get_local_version(), qVersion());
|
vlog("===== Ventoy2Disk %s powered by QT %s =====\n", ventoy_get_local_version(), qVersion());
|
||||||
vlog("===================================================\n");
|
vlog("===================================================\n");
|
||||||
|
vlog("log file is <%s> lastsize:%lld\n", g_log_file, (long long)size);
|
||||||
|
vlog("ini file is <%s>\n", g_ini_file);
|
||||||
|
|
||||||
ventoy_disk_init();
|
ventoy_disk_init();
|
||||||
ventoy_http_init();
|
ventoy_http_init();
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
#include <linux/limits.h>
|
#include <linux/limits.h>
|
||||||
#include <ventoy_define.h>
|
#include <ventoy_define.h>
|
||||||
#include <ventoy_util.h>
|
#include <ventoy_util.h>
|
||||||
|
@ -56,6 +57,49 @@ int early_msgbox(GtkMessageType type, GtkButtonsType buttons, const char *str)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int adjust_cur_dir(char *argv0)
|
||||||
|
{
|
||||||
|
int ret = 2;
|
||||||
|
char c;
|
||||||
|
char *pos = NULL;
|
||||||
|
char *end = NULL;
|
||||||
|
|
||||||
|
if (argv0[0] == '.')
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (pos = argv0; pos && *pos; pos++)
|
||||||
|
{
|
||||||
|
if (*pos == '/')
|
||||||
|
{
|
||||||
|
end = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (end)
|
||||||
|
{
|
||||||
|
c = *end;
|
||||||
|
*end = 0;
|
||||||
|
|
||||||
|
pos = strstr(argv0, "/tool/");
|
||||||
|
if (pos)
|
||||||
|
{
|
||||||
|
*pos = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = chdir(argv0);
|
||||||
|
|
||||||
|
*end = c;
|
||||||
|
if (pos)
|
||||||
|
{
|
||||||
|
*pos = '/';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -64,6 +108,7 @@ int main(int argc, char *argv[])
|
||||||
GtkWidget *pWidget = NULL;
|
GtkWidget *pWidget = NULL;
|
||||||
GtkBuilder *pBuilder = NULL;
|
GtkBuilder *pBuilder = NULL;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
struct stat logstat;
|
||||||
|
|
||||||
gtk_init(&argc, &argv);
|
gtk_init(&argc, &argv);
|
||||||
|
|
||||||
|
@ -74,6 +119,11 @@ int main(int argc, char *argv[])
|
||||||
return EACCES;
|
return EACCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (access("./boot/boot.img", F_OK) == -1)
|
||||||
|
{
|
||||||
|
adjust_cur_dir(argv[0]);
|
||||||
|
}
|
||||||
|
|
||||||
if (access("./boot/boot.img", F_OK) == -1)
|
if (access("./boot/boot.img", F_OK) == -1)
|
||||||
{
|
{
|
||||||
early_msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Please run under the correct directory.");
|
early_msgbox(GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Please run under the correct directory.");
|
||||||
|
@ -94,11 +144,22 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(&logstat, 0, sizeof(logstat));
|
||||||
|
if (0 == stat(g_log_file, &logstat))
|
||||||
|
{
|
||||||
|
if (logstat.st_size >= 4 * SIZE_1MB)
|
||||||
|
{
|
||||||
|
remove(g_log_file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ventoy_log_init();
|
ventoy_log_init();
|
||||||
|
|
||||||
vlog("================================================\n");
|
vlog("================================================\n");
|
||||||
vlog("===== Ventoy2Disk %s powered by GTK%d.x =====\n", ventoy_get_local_version(), GTK_MAJOR_VERSION);
|
vlog("===== Ventoy2Disk %s powered by GTK%d.x =====\n", ventoy_get_local_version(), GTK_MAJOR_VERSION);
|
||||||
vlog("================================================\n");
|
vlog("================================================\n");
|
||||||
|
vlog("log file is <%s> lastsize:%lld\n", g_log_file, (long long)logstat.st_size);
|
||||||
|
vlog("ini file is <%s>\n", g_ini_file);
|
||||||
|
|
||||||
ventoy_disk_init();
|
ventoy_disk_init();
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,10 @@
|
||||||
#define LD_CACHE_FILE "/etc/ld.so.cache"
|
#define LD_CACHE_FILE "/etc/ld.so.cache"
|
||||||
#define INT2STR_YN(a) ((a) == 0 ? "NO" : "YES")
|
#define INT2STR_YN(a) ((a) == 0 ? "NO" : "YES")
|
||||||
|
|
||||||
|
static int g_xdg_log = 0;
|
||||||
|
static int g_xdg_ini = 0;
|
||||||
static char g_log_file[PATH_MAX];
|
static char g_log_file[PATH_MAX];
|
||||||
|
static char g_ini_file[PATH_MAX];
|
||||||
static char *g_log_buf = NULL;
|
static char *g_log_buf = NULL;
|
||||||
extern char ** environ;
|
extern char ** environ;
|
||||||
|
|
||||||
|
@ -499,6 +502,7 @@ static int restart_main(int argc, char **argv, char *guiexe)
|
||||||
if (envs)
|
if (envs)
|
||||||
{
|
{
|
||||||
vlog("recover success, argc=%d evecve <%s>\n", j, guiexe);
|
vlog("recover success, argc=%d evecve <%s>\n", j, guiexe);
|
||||||
|
dump_args("EXECVE", newargv);
|
||||||
execve(guiexe, newargv, envs);
|
execve(guiexe, newargv, envs);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -584,12 +588,36 @@ static int restart_by_pkexec(int argc, char **argv, const char *curpath, const c
|
||||||
|
|
||||||
newargv[j++] = pkexec;
|
newargv[j++] = pkexec;
|
||||||
newargv[j++] = path;
|
newargv[j++] = path;
|
||||||
for (i = 1; i < argc && j < MAX_PARAS - 2; i++)
|
for (i = 1; i < argc && j < MAX_PARAS; i++)
|
||||||
{
|
{
|
||||||
|
if (strcmp(argv[i], "--xdg") == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
newargv[j++] = argv[i];
|
newargv[j++] = argv[i];
|
||||||
}
|
}
|
||||||
newargv[j++] = create_environ_param(VTOY_ENV_STR, environ);
|
|
||||||
newargv[j++] = exepara;
|
if (j < MAX_PARAS)
|
||||||
|
{
|
||||||
|
newargv[j++] = create_environ_param(VTOY_ENV_STR, environ);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j < MAX_PARAS)
|
||||||
|
{
|
||||||
|
newargv[j++] = exepara;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_xdg_log && j + 1 < MAX_PARAS)
|
||||||
|
{
|
||||||
|
newargv[j++] = "-l";
|
||||||
|
newargv[j++] = g_log_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_xdg_ini && j + 1 < MAX_PARAS)
|
||||||
|
{
|
||||||
|
newargv[j++] = "-i";
|
||||||
|
newargv[j++] = g_ini_file;
|
||||||
|
}
|
||||||
|
|
||||||
dump_args("PKEXEC", newargv);
|
dump_args("PKEXEC", newargv);
|
||||||
execv(pkexec, newargv);
|
execv(pkexec, newargv);
|
||||||
|
@ -962,8 +990,9 @@ static int distro_check_gui_env(char *type, int len, int *pver)
|
||||||
return pstNode ? 1 : 0;
|
return pstNode ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int detect_gui_exe_path(const char *curpath, char *pathbuf, int buflen)
|
static int detect_gui_exe_path(int argc, char **argv, const char *curpath, char *pathbuf, int buflen)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
int ret;
|
int ret;
|
||||||
int ver;
|
int ver;
|
||||||
int libflag = 0;
|
int libflag = 0;
|
||||||
|
@ -972,7 +1001,45 @@ static int detect_gui_exe_path(const char *curpath, char *pathbuf, int buflen)
|
||||||
mode_t mode;
|
mode_t mode;
|
||||||
struct stat filestat;
|
struct stat filestat;
|
||||||
|
|
||||||
if (access("./ventoy_gui_type", F_OK) != -1)
|
for (i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
if (argv[i] && strcmp(argv[i], "--gtk2") == 0)
|
||||||
|
{
|
||||||
|
guitype = "gtk";
|
||||||
|
ver = 2;
|
||||||
|
}
|
||||||
|
else if (argv[i] && strcmp(argv[i], "--gtk3") == 0)
|
||||||
|
{
|
||||||
|
guitype = "gtk";
|
||||||
|
ver = 3;
|
||||||
|
}
|
||||||
|
else if (argv[i] && strcmp(argv[i], "--gtk4") == 0)
|
||||||
|
{
|
||||||
|
guitype = "gtk";
|
||||||
|
ver = 4;
|
||||||
|
}
|
||||||
|
else if (argv[i] && strcmp(argv[i], "--qt4") == 0)
|
||||||
|
{
|
||||||
|
guitype = "qt";
|
||||||
|
ver = 4;
|
||||||
|
}
|
||||||
|
else if (argv[i] && strcmp(argv[i], "--qt5") == 0)
|
||||||
|
{
|
||||||
|
guitype = "qt";
|
||||||
|
ver = 5;
|
||||||
|
}
|
||||||
|
else if (argv[i] && strcmp(argv[i], "--qt6") == 0)
|
||||||
|
{
|
||||||
|
guitype = "qt";
|
||||||
|
ver = 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (guitype)
|
||||||
|
{
|
||||||
|
vlog("Get GUI type from param <%s%d>.\n", guitype, ver);
|
||||||
|
}
|
||||||
|
else if (access("./ventoy_gui_type", F_OK) != -1)
|
||||||
{
|
{
|
||||||
vlog("Get GUI type from ventoy_gui_type file.\n");
|
vlog("Get GUI type from ventoy_gui_type file.\n");
|
||||||
|
|
||||||
|
@ -1113,6 +1180,7 @@ int real_main(int argc, char **argv)
|
||||||
vlog("=============== VentoyGui %s ===============\n", VTOY_GUI_ARCH);
|
vlog("=============== VentoyGui %s ===============\n", VTOY_GUI_ARCH);
|
||||||
vlog("=========================================================\n");
|
vlog("=========================================================\n");
|
||||||
vlog("=========================================================\n");
|
vlog("=========================================================\n");
|
||||||
|
vlog("log file is <%s>\n", g_log_file);
|
||||||
|
|
||||||
euid = geteuid();
|
euid = geteuid();
|
||||||
getcwd(curpath, sizeof(curpath));
|
getcwd(curpath, sizeof(curpath));
|
||||||
|
@ -1145,7 +1213,7 @@ int real_main(int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (detect_gui_exe_path(curpath, path, sizeof(path)))
|
if (detect_gui_exe_path(argc, argv, curpath, path, sizeof(path)))
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -1154,7 +1222,6 @@ int real_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
vlog("We have root privileges, just exec %s\n", path);
|
vlog("We have root privileges, just exec %s\n", path);
|
||||||
argv[0] = path;
|
argv[0] = path;
|
||||||
argv[1] = NULL;
|
|
||||||
execv(argv[0], argv);
|
execv(argv[0], argv);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1176,6 +1243,7 @@ int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int ret;
|
int ret;
|
||||||
|
const char *env = NULL;
|
||||||
|
|
||||||
snprintf(g_log_file, sizeof(g_log_file), "log.txt");
|
snprintf(g_log_file, sizeof(g_log_file), "log.txt");
|
||||||
for (i = 0; i < argc; i++)
|
for (i = 0; i < argc; i++)
|
||||||
|
@ -1185,6 +1253,22 @@ int main(int argc, char **argv)
|
||||||
snprintf(g_log_file, sizeof(g_log_file), "%s", argv[i + 1]);
|
snprintf(g_log_file, sizeof(g_log_file), "%s", argv[i + 1]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else if (argv[i] && strcmp(argv[i], "--xdg") == 0)
|
||||||
|
{
|
||||||
|
env = getenv("XDG_CACHE_HOME");
|
||||||
|
if (env)
|
||||||
|
{
|
||||||
|
g_xdg_log = 1;
|
||||||
|
snprintf(g_log_file, sizeof(g_log_file), "%s/ventoy.log", env);
|
||||||
|
}
|
||||||
|
|
||||||
|
env = getenv("XDG_CONFIG_HOME");
|
||||||
|
if (env)
|
||||||
|
{
|
||||||
|
g_xdg_ini = 1;
|
||||||
|
snprintf(g_ini_file, sizeof(g_ini_file), "%s/Ventoy2Disk.ini", env);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_log_buf = malloc(MAX_LOG_BUF);
|
g_log_buf = malloc(MAX_LOG_BUF);
|
||||||
|
|
Loading…
Reference in New Issue