diff --git a/backup-daemon/backup-daemon.pro b/backup-daemon/backup-daemon.pro index 61a9c0d..33d92e9 100755 --- a/backup-daemon/backup-daemon.pro +++ b/backup-daemon/backup-daemon.pro @@ -7,8 +7,7 @@ CONFIG -= app_bundle CONFIG += link_pkgconfig -LIBS += -lblkid \ - -lkysec +LIBS += -lblkid # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings diff --git a/backup-daemon/customizedatabackupproxy.cpp b/backup-daemon/customizedatabackupproxy.cpp index 0b8201f..80c1295 100755 --- a/backup-daemon/customizedatabackupproxy.cpp +++ b/backup-daemon/customizedatabackupproxy.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include "../common/utils.h" #include "../common/mydusizetool.h" #include "mymountproxy.h" @@ -463,22 +462,8 @@ bool CustomizeDataBackupProxy::backupData() }); m_p->start(args, false); - do_kylin_security(m_destPath); - qDebug() << "CustomizeDataBackupProxy::backupData invoke end"; return true; } -void CustomizeDataBackupProxy::do_kylin_security(const QString& dstDir) -{ - int ret = 0; - ret = kysec_getstatus(); - if (ret > 0) { - QString seFilePath(dstDir + "/.exectl"); - QFile file(seFilePath); - file.open(QIODevice::WriteOnly); - file.close(); - } -} - diff --git a/backup-daemon/customizedatabackupproxy.h b/backup-daemon/customizedatabackupproxy.h index 1698290..d837bd8 100755 --- a/backup-daemon/customizedatabackupproxy.h +++ b/backup-daemon/customizedatabackupproxy.h @@ -67,8 +67,6 @@ protected: */ QStringList getRsyncArgs(CustomizeDataBackupScene scene); - void do_kylin_security(const QString& dstDir); - // 失败则删除相应数据 virtual void deleteFailedData(); diff --git a/backup-daemon/customizeghostImageproxy.cpp b/backup-daemon/customizeghostImageproxy.cpp index 375388e..32ab1e9 100755 --- a/backup-daemon/customizeghostImageproxy.cpp +++ b/backup-daemon/customizeghostImageproxy.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include #include "../common/utils.h" #include "../common/mydusizetool.h" diff --git a/backup-daemon/customizesystembackupproxy.cpp b/backup-daemon/customizesystembackupproxy.cpp index 6f6ee97..d3b3b3f 100755 --- a/backup-daemon/customizesystembackupproxy.cpp +++ b/backup-daemon/customizesystembackupproxy.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include "../common/utils.h" #include "../common/mydusizetool.h" #include "mymountproxy.h" @@ -302,7 +301,6 @@ void CustomizeSystemBackupProxy::doMksqushfs() args.append(getRsyncArgs(CustomizeSystemBackupScene::MKSQUASHFS)); if (m_mksquashfs->start(args)) { - do_kylin_security(m_destPath); } else { emit checkResult(int(BackupResult::MKSQUASHFS_DO_FAIL)); } @@ -386,15 +384,3 @@ bool CustomizeSystemBackupProxy::recordBackupPoint() return true; } -void CustomizeSystemBackupProxy::do_kylin_security(const QString& dstDir) -{ - int ret = 0; - ret = kysec_getstatus(); - if (ret > 0) { - QString seFilePath(dstDir + "/.exectl"); - QFile file(seFilePath); - file.open(QIODevice::WriteOnly); - file.close(); - } -} - diff --git a/backup-daemon/customizesystembackupproxy.h b/backup-daemon/customizesystembackupproxy.h index 38964d9..b73e991 100755 --- a/backup-daemon/customizesystembackupproxy.h +++ b/backup-daemon/customizesystembackupproxy.h @@ -62,8 +62,6 @@ private: bool backup(const QStringList &args); - void do_kylin_security(const QString& dstDir); - // 失败则删除相应数据 void deleteFailedData(); diff --git a/backup-daemon/databackupproxy.cpp b/backup-daemon/databackupproxy.cpp index da6f15c..d311153 100755 --- a/backup-daemon/databackupproxy.cpp +++ b/backup-daemon/databackupproxy.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include "../common/utils.h" #include "../common/mydusizetool.h" #include "mymountproxy.h" @@ -425,21 +424,6 @@ bool DataBackupProxy::backupData() }); m_p->start(args, false); - do_kylin_security(m_destPath); - qDebug() << "DataBackupProxy::backupData invoke end"; return true; } - -void DataBackupProxy::do_kylin_security(const QString& dstDir) -{ - int ret = 0; - ret = kysec_getstatus(); - if (ret > 0) { - QString seFilePath(dstDir + "/.exectl"); - QFile file(seFilePath); - file.open(QIODevice::WriteOnly); - file.close(); - } -} - diff --git a/backup-daemon/databackupproxy.h b/backup-daemon/databackupproxy.h index d73b3dc..21126e2 100755 --- a/backup-daemon/databackupproxy.h +++ b/backup-daemon/databackupproxy.h @@ -67,8 +67,6 @@ protected: */ QStringList getRsyncArgs(DataBackupScene scene); - void do_kylin_security(const QString& dstDir); - // 失败则删除相应数据 virtual void deleteFailedData(); diff --git a/backup-daemon/ghostimageproxy.cpp b/backup-daemon/ghostimageproxy.cpp index 1b16313..bb54302 100755 --- a/backup-daemon/ghostimageproxy.cpp +++ b/backup-daemon/ghostimageproxy.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include "../common/utils.h" #include "../common/mydusizetool.h" diff --git a/backup-daemon/mybackupmanager.cpp b/backup-daemon/mybackupmanager.cpp index a2d521c..1c13731 100755 --- a/backup-daemon/mybackupmanager.cpp +++ b/backup-daemon/mybackupmanager.cpp @@ -12,7 +12,6 @@ #include #include #include -#include #include "mybackupmanager.h" #include "../common/utils.h" #include "mymountproxy.h" @@ -559,32 +558,6 @@ bool MyBackupManager::unlock() */ void MyBackupManager::setKysecStatus(bool status) { - if (status) { - if (m_bOpenKysec) - Utils::setKysecStatus(true); - m_bOpenKysec = false; - - if (m_bStartKysecDeamon) - Utils::setKysecDaemon(true); - m_bStartKysecDeamon = false; - } else { - if (KYSEC_STATUS_ENABLED == kysec_getstatus()) { - // 安全保护已开启 - m_bOpenKysec = true; - Utils::setKysecStatus(false); - // 开启安全防护 - // QProcess::execute("systemctl start kysec-init.service"); - } else { - m_bOpenKysec = false; - } - - if(Utils::isRunning("kysec-sync-daemon")){ - m_bStartKysecDeamon = true; - Utils::setKysecDaemon(false); - // 停止安全防护 - // QProcess::execute("systemctl stop kysec-init.service"); - } else { - m_bStartKysecDeamon = false; - } - } + // openkylin平台中不开源安全模块,删掉安全模块的调用 + Q_UNUSED(status) } diff --git a/backup-daemon/systembackupproxy.cpp b/backup-daemon/systembackupproxy.cpp index 1daf0f0..76a6001 100755 --- a/backup-daemon/systembackupproxy.cpp +++ b/backup-daemon/systembackupproxy.cpp @@ -2,7 +2,6 @@ #include #include #include -#include #include "../common/utils.h" #include "../common/mydusizetool.h" #include "mymountproxy.h" @@ -509,21 +508,7 @@ bool SystemBackupProxy::backupSystem() }); m_p->start(args, false); - do_kylin_security(m_destPath); - qDebug() << "SystemBackupProxy::backupSystem invoke end"; return true; } -void SystemBackupProxy::do_kylin_security(const QString& dstDir) -{ - int ret = 0; - ret = kysec_getstatus(); - if (ret > 0) { - QString seFilePath(dstDir + "/.exectl"); - QFile file(seFilePath); - file.open(QIODevice::WriteOnly); - file.close(); - } -} - diff --git a/backup-daemon/systembackupproxy.h b/backup-daemon/systembackupproxy.h index 58b30f1..35224d0 100755 --- a/backup-daemon/systembackupproxy.h +++ b/backup-daemon/systembackupproxy.h @@ -70,8 +70,6 @@ private: // 备份系统 bool backupSystem(); - void do_kylin_security(const QString& dstDir); - // 失败则删除相应数据 void deleteFailedData(); diff --git a/backup-daemon/udiskdatabackupproxy.cpp b/backup-daemon/udiskdatabackupproxy.cpp index 56cf488..e2dbb76 100755 --- a/backup-daemon/udiskdatabackupproxy.cpp +++ b/backup-daemon/udiskdatabackupproxy.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include "../common/utils.h" #include "../common/mydusizetool.h" #include "mymountproxy.h" @@ -411,8 +410,6 @@ bool UDiskDataBackupProxy::backupDataToUdisk() }); m_p->start(args, false); - do_kylin_security(m_destPath); - qDebug() << "UDiskDataBackupProxy::backupDataToUdisk invoke end"; return true; } diff --git a/backup-daemon/udiskghostImageproxy.cpp b/backup-daemon/udiskghostImageproxy.cpp index 3d7b85d..4bbd33e 100755 --- a/backup-daemon/udiskghostImageproxy.cpp +++ b/backup-daemon/udiskghostImageproxy.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include #include "../common/utils.h" #include "../common/mydusizetool.h" diff --git a/backup-daemon/udisksystembackupproxy.cpp b/backup-daemon/udisksystembackupproxy.cpp index 331a0ef..4a4f25a 100755 --- a/backup-daemon/udisksystembackupproxy.cpp +++ b/backup-daemon/udisksystembackupproxy.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include "../common/utils.h" #include "../common/mydusizetool.h" #include "mymountproxy.h" @@ -560,24 +559,10 @@ bool UDiskSystemBackupProxy::backup(const QStringList &args) m_p->start(args, false); emit checkResult(int(BackupResult::BACKUP_START_SUCCESS)); - do_kylin_security(m_destPath); - qDebug() << "UDiskSystemBackupProxy::backup invoke end"; return true; } -void UDiskSystemBackupProxy::do_kylin_security(const QString& dstDir) -{ - int ret = 0; - ret = kysec_getstatus(); - if (ret > 0) { - QString seFilePath(dstDir + "/.exectl"); - QFile file(seFilePath); - file.open(QIODevice::WriteOnly); - file.close(); - } -} - /** * @brief 校验移动盘是否还在 * @return: bool,存在返回true;不存在返回false diff --git a/backup-daemon/udisksystembackupproxy.h b/backup-daemon/udisksystembackupproxy.h index 0677fd1..8c8711c 100755 --- a/backup-daemon/udisksystembackupproxy.h +++ b/backup-daemon/udisksystembackupproxy.h @@ -87,8 +87,6 @@ private: bool backup(const QStringList &args); - void do_kylin_security(const QString& dstDir); - // 失败则删除相应数据 void deleteFailedData(); diff --git a/debian/control b/debian/control index 0941ef8..8af498a 100644 --- a/debian/control +++ b/debian/control @@ -13,18 +13,19 @@ Build-Depends: debhelper (>= 9), qtbase5-dev-tools, qtbase5-private-dev, libblkid-dev, - libkysec-dev, libkf5windowsystem-dev, libx11-dev, libqt5x11extras5-dev, libgsettings-qt-dev, libkysdk-qtwidgets-dev, + libkysdk-waylandhelper-dev, + libkysdk-appcommon, Standards-Version: 3.9.5 Homepage: http://kylinos.cn Package: yhkylin-backup-tools Architecture: any -Depends: ${misc:Depends},${shlibs:Depends},libqt5widgets5,libqt5gui5,libqt5dbus5,libqt5xml5,libqt5core5a,libblkid1,rsync,squashfs-tools, libkysec +Depends: ${misc:Depends},${shlibs:Depends},libqt5widgets5,libqt5gui5,libqt5dbus5,libqt5xml5,libqt5core5a,libblkid1,rsync,squashfs-tools Description: YHkylin backup tools YHkylin backup tools diff --git a/kybackup/deletebackupdialog.cpp b/kybackup/deletebackupdialog.cpp index 03cecc0..e145301 100755 --- a/kybackup/deletebackupdialog.cpp +++ b/kybackup/deletebackupdialog.cpp @@ -9,6 +9,8 @@ #include "../common/mydefine.h" #include "../common/utils.h" #include "messageboxutils.h" +#include +#include DeleteBackupDialog::DeleteBackupDialog(ParseBackupList::BackupPoint backupPonit, QWidget *parent) : QDialog(parent), @@ -22,11 +24,16 @@ DeleteBackupDialog::DeleteBackupDialog(ParseBackupList::BackupPoint backupPonit, this->setAutoFillBackground(true); // 添加窗管协议 - MotifWmHints hints; - hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; - hints.functions = MWM_FUNC_ALL; - hints.decorations = MWM_DECOR_BORDER; - XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); + if (GlobelBackupInfo::inst().isWayland()){ + // 去除窗管标题栏,传入参数为QWidget * + kdk::UkuiStyleHelper::self()->removeHeader(this); + } else { + MotifWmHints hints; + hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; + hints.functions = MWM_FUNC_ALL; + hints.decorations = MWM_DECOR_BORDER; + XAtomHelper::getInstance()->setWindowMotifHint(winId(), hints); + } setWindowModality(Qt::WindowModal); // 设置标题栏 diff --git a/kybackup/globalbackupinfo.h b/kybackup/globalbackupinfo.h index f371e88..9d7bd0f 100755 --- a/kybackup/globalbackupinfo.h +++ b/kybackup/globalbackupinfo.h @@ -82,6 +82,16 @@ public: return m_isTabletMode; } + // 设置是否wayland平台 + void setIsWayland(bool is) { + m_isWayland = is; + } + + // 是否wayland平台 + bool isWayland() { + return m_isWayland; + } + // 获取当前功能类型 FuncTypeConverter::FunType getFuncType() { return m_funcType; @@ -138,6 +148,8 @@ private: BlackgroundMode m_BlackgroundMode = BlackgroundMode::Auto; // 是否平板模式 bool m_isTabletMode = false; + // 是否wayland平台 + bool m_isWayland = false; QWidget * m_mainWidget = nullptr; diff --git a/kybackup/kybackup.pro b/kybackup/kybackup.pro index f0d8fdc..9047a43 100755 --- a/kybackup/kybackup.pro +++ b/kybackup/kybackup.pro @@ -16,7 +16,7 @@ LIBS +=-lX11 # 配置gsettings CONFIG += link_pkgconfig PKGCONFIG += gsettings-qt -PKGCONFIG += kysdk-qtwidgets +PKGCONFIG += kysdk-qtwidgets kysdk-waylandhelper # The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings diff --git a/kybackup/main.cpp b/kybackup/main.cpp index 22eb5f9..24131f1 100755 --- a/kybackup/main.cpp +++ b/kybackup/main.cpp @@ -15,6 +15,8 @@ #include "xatom-helper.h" #include "globalbackupinfo.h" #include "messageboxutils.h" +#include +#include // 声明 void initApp(QApplication& a); @@ -48,9 +50,11 @@ int main(int argc, char *argv[]) return EXIT_SUCCESS; } + QString platform = QGuiApplication::platformName(); + if(platform.startsWith(QLatin1String("wayland"),Qt::CaseInsensitive) || QString(qgetenv("XDG_SESSION_TYPE")) == "wayland") { + GlobelBackupInfo::inst().setIsWayland(true); + } MainDialog w; - // 居中窗口 - centerToScreen(&w); a.setWindowIcon(QIcon::fromTheme(THEME_YHKYLIN_BACKUP_TOOLS, QIcon(":/images/yhkylin-backup-tools.png"))); a.setActivationWindow(&w, true); @@ -58,6 +62,9 @@ int main(int argc, char *argv[]) QObject::connect(&a,SIGNAL(messageReceived(const QString&)),&w,SLOT(sltMessageReceived(const QString&))); w.show(); + // 居中窗口 + centerToScreen(&w); + return a.exec(); } @@ -179,17 +186,27 @@ bool isManager() * @brief 居中显示窗口 * @param widget */ +#include void centerToScreen(QWidget* widget) { if (!widget) return; - QDesktopWidget* m = QApplication::desktop(); - // QRect desk_rect = m->screenGeometry(m->screenNumber(QCursor::pos())); - QRect desk_rect = m->screenGeometry(widget); - int desk_x = desk_rect.width(); - int desk_y = desk_rect.height(); + int x = widget->width(); int y = widget->height(); - widget->move(desk_x / 2 - x / 2 + desk_rect.left(), desk_y / 2 - y / 2 + desk_rect.top()); + + if (GlobelBackupInfo::inst().isWayland()){ + // center window + int sw=QGuiApplication::primaryScreen()->availableGeometry().width(); + int sh=QGuiApplication::primaryScreen()->availableGeometry().height(); + kdk::WindowManager::setGeometry(widget->windowHandle(), QRect((sw - x)/2, (sh - y)/2, x, y)); + } else { + QDesktopWidget* m = QApplication::desktop(); + // QRect desk_rect = m->screenGeometry(m->screenNumber(QCursor::pos())); + QRect desk_rect = m->screenGeometry(widget); + int desk_x = desk_rect.width(); + int desk_y = desk_rect.height(); + widget->move(desk_x / 2 - x / 2 + desk_rect.left(), desk_y / 2 - y / 2 + desk_rect.top()); + } } diff --git a/kybackup/maindialog.cpp b/kybackup/maindialog.cpp index 4c44f12..b0010ff 100755 --- a/kybackup/maindialog.cpp +++ b/kybackup/maindialog.cpp @@ -21,6 +21,8 @@ #include "aboutdialog.h" #include "gsettingswrapper.h" #include "component/mywidget.h" +#include +#include MainDialog::MainDialog(QWidget *parent) : QMainWindow(parent) @@ -40,11 +42,16 @@ MainDialog::MainDialog(QWidget *parent) this->setAutoFillBackground(true); // 添加窗管协议 - MotifWmHints hints; - hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; - hints.functions = MWM_FUNC_ALL; - hints.decorations = MWM_DECOR_BORDER; - XAtomHelper::getInstance()->setWindowMotifHint(this->winId(), hints); + if (GlobelBackupInfo::inst().isWayland()){ + // 去除窗管标题栏,传入参数为QWidget * + kdk::UkuiStyleHelper::self()->removeHeader(this); + } else { + MotifWmHints hints; + hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; + hints.functions = MWM_FUNC_ALL; + hints.decorations = MWM_DECOR_BORDER; + XAtomHelper::getInstance()->setWindowMotifHint(this->winId(), hints); + } GlobelBackupInfo::inst().setMainWidget(this); diff --git a/kybackup/module/databackup.cpp b/kybackup/module/databackup.cpp index 0eebc75..ceeafde 100755 --- a/kybackup/module/databackup.cpp +++ b/kybackup/module/databackup.cpp @@ -345,8 +345,6 @@ void DataBackup::initSecondWidget() searchLayout->setSpacing(0); // 删除按钮 PixmapLabel *buttonDelete = new PixmapLabel; - buttonDelete->setFixedSize(24, 24); - buttonDelete->setUkuiIconSchema("window-close-symbolic", ":/symbos/window-close-symbolic"); buttonDelete->setToolTip(tr("Clear")); buttonDelete->setChangeHover(); connect(buttonDelete, &PixmapLabel::clicked, this, [=]() { @@ -354,8 +352,6 @@ void DataBackup::initSecondWidget() }); // 添加按钮 PixmapLabel *buttonAdd = new PixmapLabel; - buttonAdd->setFixedSize(24, 24); - buttonAdd->setUkuiIconSchema("object-select-symbolic", ":/symbos/object-select-symbolic"); buttonAdd->setToolTip(tr("Add")); buttonAdd->setChangeHover(); searchLayout->addWidget(buttonDelete); @@ -376,9 +372,17 @@ void DataBackup::initSecondWidget() if (GlobelBackupInfo::inst().isTabletMode()) { editSelect->setTextMargins(0, 0, 70, 0); buttonDelete->setFixedSize(28, 28); - buttonDelete->setUkuiIconSchema("window-close-symbolic", ":/symbos/window-close-symbolic", QSize(24, 24)); + buttonDelete->setUkuiIconSchema("window-close-symbolic", ":/symbos/window-close-symbolic", QSize(20, 20)); buttonAdd->setFixedSize(28, 28); - buttonAdd->setUkuiIconSchema("object-select-symbolic", ":/symbos/object-select-symbolic", QSize(24, 24)); + buttonAdd->setUkuiIconSchema("object-select-symbolic", ":/symbos/object-select-symbolic", QSize(20, 20)); + searchLayout->setSpacing(5); + } else { + editSelect->setTextMargins(0, 0, 62, 0); + buttonDelete->setFixedSize(24, 24); + buttonDelete->setUkuiIconSchema("window-close-symbolic", ":/symbos/window-close-symbolic"); + buttonAdd->setFixedSize(24, 24); + buttonAdd->setUkuiIconSchema("object-select-symbolic", ":/symbos/object-select-symbolic"); + searchLayout->setSpacing(0); } // 选择按钮 @@ -704,8 +708,6 @@ void DataBackup::initSecondWidget_inc() searchLayout->setSpacing(0); // 删除按钮 PixmapLabel *buttonDelete = new PixmapLabel; - buttonDelete->setFixedSize(24, 24); - buttonDelete->setUkuiIconSchema("window-close-symbolic", ":/symbos/window-close-symbolic"); buttonDelete->setToolTip(tr("Clear")); buttonDelete->setChangeHover(); connect(buttonDelete, &PixmapLabel::clicked, this, [=]() { @@ -713,8 +715,6 @@ void DataBackup::initSecondWidget_inc() }); // 添加按钮 PixmapLabel *buttonAdd = new PixmapLabel; - buttonAdd->setFixedSize(24, 24); - buttonAdd->setUkuiIconSchema("object-select-symbolic", ":/symbos/object-select-symbolic"); buttonAdd->setToolTip(tr("Add")); buttonAdd->setChangeHover(); searchLayout->addWidget(buttonDelete); @@ -731,6 +731,22 @@ void DataBackup::initSecondWidget_inc() buttonAdd->setVisible(false); } }); + // 平板中放大点 + if (GlobelBackupInfo::inst().isTabletMode()) { + editSelect->setTextMargins(0, 0, 70, 0); + buttonDelete->setFixedSize(28, 28); + buttonDelete->setUkuiIconSchema("window-close-symbolic", ":/symbos/window-close-symbolic", QSize(20, 20)); + buttonAdd->setFixedSize(28, 28); + buttonAdd->setUkuiIconSchema("object-select-symbolic", ":/symbos/object-select-symbolic", QSize(20, 20)); + searchLayout->setSpacing(5); + } else { + editSelect->setTextMargins(0, 0, 62, 0); + buttonDelete->setFixedSize(24, 24); + buttonDelete->setUkuiIconSchema("window-close-symbolic", ":/symbos/window-close-symbolic"); + buttonAdd->setFixedSize(24, 24); + buttonAdd->setUkuiIconSchema("object-select-symbolic", ":/symbos/object-select-symbolic"); + searchLayout->setSpacing(0); + } // 选择按钮 MyPushButton *buttonSelect = new MyPushButton; @@ -1665,10 +1681,6 @@ void DataBackup::initFifthWidget() // 不要使用电脑,以防数据丢失 labelTip->setDeplayText(tr("Do not use computer in case of data loss")); cancel->setEnabled(true); - if (this->m_isIncrement) - cancel->setVisible(false); - else - cancel->setVisible(true); // 开始备份 this->on_backup_start(); diff --git a/kybackup/yhkylin-backup-tools.desktop b/kybackup/yhkylin-backup-tools.desktop index fb48c38..94c7988 100755 --- a/kybackup/yhkylin-backup-tools.desktop +++ b/kybackup/yhkylin-backup-tools.desktop @@ -7,10 +7,11 @@ Comment[zh_CN]=提供系统备份还原和数据备份还原等功能 Comment[bo_CN]=རྒྱུད་ཁོངས་གྲབས་ཉར་དང་གཞི་གྲངས་གྲབས་ཉར་སོར་ལོག་མཁོ་འདོན་སོགས་ཀྱི་ནུས་པ་ Keywords=backup TryExec=kybackup -Exec=kybackup %U +Exec=/usr/bin/kybackup %U StartupNotify=true Terminal=false Type=Application Icon=yhkylin-backup-tools X-GNOME-DocPath= Categories=GNOME;GTK;Tools;System +X-KDE-Wayland-Interfaces=org_kde_plasma_window_management,org_kde_kwin_keystate