From 03a30509986a061facef3d448392329d27cb3e7d Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Wed, 23 Dec 2020 14:13:51 +0100 Subject: [PATCH] Prep for separate x11 static lib --- Makefile | 2 +- app/SysTray-X/{ => SysTray-X-app}/.gitignore | 0 .../SysTray-X-app.pro} | 70 +--- .../{ => SysTray-X-app}/SysTray-X.qrc | 0 .../{ => SysTray-X-app}/SysTray-X.rc | 0 .../{ => SysTray-X-app}/aboutdialog.ui | 0 .../{ => SysTray-X-app}/debugwidget.cpp | 0 .../{ => SysTray-X-app}/debugwidget.h | 0 .../{ => SysTray-X-app}/debugwidget.ui | 0 .../{ => SysTray-X-app}/files/icons/LICENSE | 0 .../files/icons/SysTray-X.ico | Bin .../files/icons/SysTray-X.png | Bin .../files/icons/Thunderbird.png | Bin .../files/icons/blank-icon-dark.png | Bin .../files/icons/blank-icon.png | Bin .../files/icons/dialog-warning.png | Bin .../files/icons/document-new.png | Bin .../files/icons/gtk-apply.png | Bin .../files/icons/gtk-edit.png | Bin .../files/icons/gtk-preferences.png | Bin .../files/icons/help-about.png | Bin .../files/icons/mail-unread.png | Bin .../files/icons/window-close.png | Bin .../files/icons/window-restore.png | Bin .../languages/SysTray-X.bg.qm | Bin .../languages/SysTray-X.bg.ts | 0 .../languages/SysTray-X.de.qm | Bin .../languages/SysTray-X.de.ts | 0 .../languages/SysTray-X.el.qm | Bin .../languages/SysTray-X.el.ts | 0 .../languages/SysTray-X.en-US.qm | Bin .../languages/SysTray-X.en-US.ts | 0 .../languages/SysTray-X.es-AR.qm | Bin .../languages/SysTray-X.es-AR.ts | 0 .../languages/SysTray-X.fr.qm | Bin .../languages/SysTray-X.fr.ts | 0 .../languages/SysTray-X.hr.qm | Bin .../languages/SysTray-X.hr.ts | 0 .../languages/SysTray-X.it.qm | Bin .../languages/SysTray-X.it.ts | 0 .../languages/SysTray-X.nl.qm | Bin .../languages/SysTray-X.nl.ts | 0 .../languages/SysTray-X.pl.qm | Bin .../languages/SysTray-X.pl.ts | 0 .../languages/SysTray-X.pt-BR.qm | Bin .../languages/SysTray-X.pt-BR.ts | 0 .../languages/SysTray-X.ru.qm | Bin .../languages/SysTray-X.ru.ts | 0 .../languages/SysTray-X.sk.qm | Bin .../languages/SysTray-X.sk.ts | 0 .../languages/SysTray-X.uk.qm | Bin .../languages/SysTray-X.uk.ts | 0 .../languages/SysTray-X.zh-CN.qm | 0 .../languages/SysTray-X.zh-CN.ts | 0 .../languages/SysTray-X.zh-TW.qm | 0 .../languages/SysTray-X.zh-TW.ts | 0 app/SysTray-X/{ => SysTray-X-app}/main.cpp | 0 .../{ => SysTray-X-app}/preferences.cpp | 0 .../{ => SysTray-X-app}/preferences.h | 0 .../{ => SysTray-X-app}/preferences.ui | 0 .../{ => SysTray-X-app}/preferencesdialog.cpp | 0 .../{ => SysTray-X-app}/preferencesdialog.h | 0 .../{ => SysTray-X-app}/systrayx.cpp | 0 app/SysTray-X/{ => SysTray-X-app}/systrayx.h | 0 .../{ => SysTray-X-app}/systrayxicon.cpp | 0 .../{ => SysTray-X-app}/systrayxicon.h | 0 .../{ => SysTray-X-app}/systrayxlink.cpp | 2 + .../{ => SysTray-X-app}/systrayxlink.h | 0 .../systrayxstatusnotifier.cpp | 0 .../systrayxstatusnotifier.h | 0 .../{ => SysTray-X-app}/windowctrl-unix.cpp | 333 ++++++++++++------ .../{ => SysTray-X-app}/windowctrl-unix.h | 15 +- .../{ => SysTray-X-app}/windowctrl-win.cpp | 0 .../{ => SysTray-X-app}/windowctrl-win.h | 0 .../{ => SysTray-X-app}/windowctrl.cpp | 3 +- .../{ => SysTray-X-app}/windowctrl.h | 0 app/build.bat | 2 +- webext/background.js | 15 +- 78 files changed, 242 insertions(+), 200 deletions(-) rename app/SysTray-X/{ => SysTray-X-app}/.gitignore (100%) rename app/SysTray-X/{SysTray-X.pro => SysTray-X-app/SysTray-X-app.pro} (71%) rename app/SysTray-X/{ => SysTray-X-app}/SysTray-X.qrc (100%) rename app/SysTray-X/{ => SysTray-X-app}/SysTray-X.rc (100%) rename app/SysTray-X/{ => SysTray-X-app}/aboutdialog.ui (100%) rename app/SysTray-X/{ => SysTray-X-app}/debugwidget.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/debugwidget.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/debugwidget.ui (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/LICENSE (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/SysTray-X.ico (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/SysTray-X.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/Thunderbird.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/blank-icon-dark.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/blank-icon.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/dialog-warning.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/document-new.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/gtk-apply.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/gtk-edit.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/gtk-preferences.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/help-about.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/mail-unread.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/window-close.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/files/icons/window-restore.png (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.bg.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.bg.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.de.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.de.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.el.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.el.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.en-US.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.en-US.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.es-AR.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.es-AR.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.fr.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.fr.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.hr.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.hr.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.it.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.it.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.nl.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.nl.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.pl.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.pl.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.pt-BR.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.pt-BR.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.ru.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.ru.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.sk.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.sk.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.uk.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.uk.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.zh-CN.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.zh-CN.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.zh-TW.qm (100%) rename app/SysTray-X/{ => SysTray-X-app}/languages/SysTray-X.zh-TW.ts (100%) rename app/SysTray-X/{ => SysTray-X-app}/main.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/preferences.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/preferences.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/preferences.ui (100%) rename app/SysTray-X/{ => SysTray-X-app}/preferencesdialog.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/preferencesdialog.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/systrayx.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/systrayx.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/systrayxicon.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/systrayxicon.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/systrayxlink.cpp (99%) rename app/SysTray-X/{ => SysTray-X-app}/systrayxlink.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/systrayxstatusnotifier.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/systrayxstatusnotifier.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/windowctrl-unix.cpp (74%) rename app/SysTray-X/{ => SysTray-X-app}/windowctrl-unix.h (98%) rename app/SysTray-X/{ => SysTray-X-app}/windowctrl-win.cpp (100%) rename app/SysTray-X/{ => SysTray-X-app}/windowctrl-win.h (100%) rename app/SysTray-X/{ => SysTray-X-app}/windowctrl.cpp (99%) rename app/SysTray-X/{ => SysTray-X-app}/windowctrl.h (100%) diff --git a/Makefile b/Makefile index 3ce0ffc..66c14f7 100644 --- a/Makefile +++ b/Makefile @@ -61,7 +61,7 @@ systray-x-app: $(QMAKE) $(EXT_VERSION) $(OPTIONS) ../SysTray-X/SysTray-X.pro ;\ make ;\ cd ../.. ;\ - cp app/build/SysTray-X . + cp app/build/SysTray-X-app/SysTray-X . else systray-x-app: @echo "Creating systray-x app" ;\ diff --git a/app/SysTray-X/.gitignore b/app/SysTray-X/SysTray-X-app/.gitignore similarity index 100% rename from app/SysTray-X/.gitignore rename to app/SysTray-X/SysTray-X-app/.gitignore diff --git a/app/SysTray-X/SysTray-X.pro b/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro similarity index 71% rename from app/SysTray-X/SysTray-X.pro rename to app/SysTray-X/SysTray-X-app/SysTray-X-app.pro index b2d9ecc..f79d2d9 100644 --- a/app/SysTray-X/SysTray-X.pro +++ b/app/SysTray-X/SysTray-X-app/SysTray-X-app.pro @@ -1,9 +1,11 @@ -#------------------------------------------------- # -# Project created by QtCreator 2020-01-12T19:19:44 +# Get the defaults # -#------------------------------------------------- +include( ../SysTray-X.pri ) +# +# Defines +# #DEFINES += NO_KDE_INTEGRATION @@ -104,61 +106,13 @@ unix:macx: { LIBS += -dead_strip } -# -# Git version getters -# -win32: { - contains(QMAKE_HOST.os, Windows): { - # - # Host is Windows - # - GIT = ""C:\\Progra~1\\Git\\bin\\git.exe"" - } - else { - # - # Host is Linux, cross compiling with mingw - # - GIT = git - } -} -unix:GIT = git - -# -# Define the app version strings -# -BUILD_NUMBER = $$system($$GIT rev-list --count HEAD) -GIT_HASH = $$system($$GIT rev-parse HEAD) -GIT_BRANCH = $$system($$GIT rev-parse --abbrev-ref HEAD) - -GIT_VERSION_LONG = $$system($$GIT describe --long) -GIT_VERSION = $$section(GIT_VERSION_LONG, -, 0, 0) - -VERSION_MAJOR = $$section(GIT_VERSION, ., 0, 0) -VERSION_MINOR = $$section(GIT_VERSION, ., 1, 1) -VERSION_PATCH = $$section(GIT_VERSION, ., 2, 2) - -!contains(DEFINES,EXT_VERSION) { - DEFINES += APP_VERSION_MAJOR=\\\"$$VERSION_MAJOR\\\" - DEFINES += APP_VERSION_MINOR=\\\"$$VERSION_MINOR\\\" - DEFINES += APP_VERSION_PATCH=\\\"$$VERSION_PATCH\\\" - DEFINES += APP_BUILD=\\\"$$BUILD_NUMBER\\\" - DEFINES += APP_GITHASH=\\\"$$GIT_HASH\\\" - DEFINES += APP_GITBRANCH=\\\"$$GIT_BRANCH\\\" - - message("Buildnumber: "$$BUILD_NUMBER) - message("Git hash: "$$GIT_HASH) - message("Git branch: "$$GIT_BRANCH) - message("Version: "$$VERSION_MAJOR"."$$VERSION_MINOR"."$$VERSION_PATCH) - #message($$QMAKESPEC) -} - unix: { # # Generate JSON # - QMAKE_POST_LINK = cp -f "$${_PRO_FILE_PWD_}/../config/linux/SysTray_X.json.template" "$${_PRO_FILE_PWD_}/../config/linux/SysTray_X.json" ; - QMAKE_POST_LINK += sed -i -e "s?SYSTRAY_X_PATH?$${OUT_PWD}/$${TARGET}?" "$${_PRO_FILE_PWD_}/../config/linux/SysTray_X.json" ; -# QMAKE_POST_LINK += cp -f "$${_PRO_FILE_PWD_}/../config/linux/SysTray_X.json" ~/.mozilla/native-messaging-hosts/SysTray_X.json ; + QMAKE_POST_LINK = cp -f "$${_PRO_FILE_PWD_}/../../config/linux/SysTray_X.json.template" "$${_PRO_FILE_PWD_}/../../config/linux/SysTray_X.json" ; + QMAKE_POST_LINK += sed -i -e "s?SYSTRAY_X_PATH?$${OUT_PWD}/$${TARGET}?" "$${_PRO_FILE_PWD_}/../../config/linux/SysTray_X.json" ; +# QMAKE_POST_LINK += cp -f "$${_PRO_FILE_PWD_}/../../config/linux/SysTray_X.json" ~/.mozilla/native-messaging-hosts/SysTray_X.json ; } win32: { @@ -166,17 +120,17 @@ win32: { JSON_EXE_PATH = $$system(powershell -Command "('$$shell_path($${OUT_PWD}/debug/$${TARGET}.exe)').replace('\\','\\\\')") QMAKE_POST_LINK = $$[QT_INSTALL_BINS]\windeployqt.exe \"$$shell_path($${OUT_PWD}/debug/$${TARGET}.exe)\" & - QMAKE_POST_LINK += powershell -Command \"(Get-Content \'$$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray_X.json.template)\' ).replace(\'SYSTRAY_X_PATH\',\'$$JSON_EXE_PATH\') | Set-Content \'$$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray_X.json)\'\" & + QMAKE_POST_LINK += powershell -Command \"(Get-Content \'$$shell_path($${_PRO_FILE_PWD_}/../../config/win32/SysTray_X.json.template)\' ).replace(\'SYSTRAY_X_PATH\',\'$$JSON_EXE_PATH\') | Set-Content \'$$shell_path($${_PRO_FILE_PWD_}/../../config/win32/SysTray_X.json)\'\" & } else { JSON_EXE_PATH = $$system(powershell -Command "('$$shell_path($${OUT_PWD}/release/$${TARGET}.exe)').replace('\\','\\\\')") QMAKE_POST_LINK = $$[QT_INSTALL_BINS]\windeployqt.exe \"$$shell_path($${OUT_PWD}/release/$${TARGET}.exe)\" & - QMAKE_POST_LINK += powershell -Command \"(Get-Content \'$$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray_X.json.template)\' ).replace(\'SYSTRAY_X_PATH\',\'$$JSON_EXE_PATH\') | Set-Content \'$$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray_X.json)\'\" & + QMAKE_POST_LINK += powershell -Command \"(Get-Content \'$$shell_path($${_PRO_FILE_PWD_}/../../config/win32/SysTray_X.json.template)\' ).replace(\'SYSTRAY_X_PATH\',\'$$JSON_EXE_PATH\') | Set-Content \'$$shell_path($${_PRO_FILE_PWD_}/../../config/win32/SysTray_X.json)\'\" & } - JSON_JSON_PATH = $$system(powershell -Command "('$$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray_X.json)').replace('\\','\\\\')") + JSON_JSON_PATH = $$system(powershell -Command "('$$shell_path($${_PRO_FILE_PWD_}/../../config/win32/SysTray_X.json)').replace('\\','\\\\')") - QMAKE_POST_LINK += powershell -Command \"(Get-Content \'$$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray-X-User.reg.template)\' ).replace(\'SYSTRAY_X_JSON_PATH\',\'$$JSON_JSON_PATH\') | Set-Content \'$$shell_path($${_PRO_FILE_PWD_}/../config/win32/SysTray-X-User.reg)\'\" & + QMAKE_POST_LINK += powershell -Command \"(Get-Content \'$$shell_path($${_PRO_FILE_PWD_}/../../config/win32/SysTray-X-User.reg.template)\' ).replace(\'SYSTRAY_X_JSON_PATH\',\'$$JSON_JSON_PATH\') | Set-Content \'$$shell_path($${_PRO_FILE_PWD_}/../../config/win32/SysTray-X-User.reg)\'\" & } # diff --git a/app/SysTray-X/SysTray-X.qrc b/app/SysTray-X/SysTray-X-app/SysTray-X.qrc similarity index 100% rename from app/SysTray-X/SysTray-X.qrc rename to app/SysTray-X/SysTray-X-app/SysTray-X.qrc diff --git a/app/SysTray-X/SysTray-X.rc b/app/SysTray-X/SysTray-X-app/SysTray-X.rc similarity index 100% rename from app/SysTray-X/SysTray-X.rc rename to app/SysTray-X/SysTray-X-app/SysTray-X.rc diff --git a/app/SysTray-X/aboutdialog.ui b/app/SysTray-X/SysTray-X-app/aboutdialog.ui similarity index 100% rename from app/SysTray-X/aboutdialog.ui rename to app/SysTray-X/SysTray-X-app/aboutdialog.ui diff --git a/app/SysTray-X/debugwidget.cpp b/app/SysTray-X/SysTray-X-app/debugwidget.cpp similarity index 100% rename from app/SysTray-X/debugwidget.cpp rename to app/SysTray-X/SysTray-X-app/debugwidget.cpp diff --git a/app/SysTray-X/debugwidget.h b/app/SysTray-X/SysTray-X-app/debugwidget.h similarity index 100% rename from app/SysTray-X/debugwidget.h rename to app/SysTray-X/SysTray-X-app/debugwidget.h diff --git a/app/SysTray-X/debugwidget.ui b/app/SysTray-X/SysTray-X-app/debugwidget.ui similarity index 100% rename from app/SysTray-X/debugwidget.ui rename to app/SysTray-X/SysTray-X-app/debugwidget.ui diff --git a/app/SysTray-X/files/icons/LICENSE b/app/SysTray-X/SysTray-X-app/files/icons/LICENSE similarity index 100% rename from app/SysTray-X/files/icons/LICENSE rename to app/SysTray-X/SysTray-X-app/files/icons/LICENSE diff --git a/app/SysTray-X/files/icons/SysTray-X.ico b/app/SysTray-X/SysTray-X-app/files/icons/SysTray-X.ico similarity index 100% rename from app/SysTray-X/files/icons/SysTray-X.ico rename to app/SysTray-X/SysTray-X-app/files/icons/SysTray-X.ico diff --git a/app/SysTray-X/files/icons/SysTray-X.png b/app/SysTray-X/SysTray-X-app/files/icons/SysTray-X.png similarity index 100% rename from app/SysTray-X/files/icons/SysTray-X.png rename to app/SysTray-X/SysTray-X-app/files/icons/SysTray-X.png diff --git a/app/SysTray-X/files/icons/Thunderbird.png b/app/SysTray-X/SysTray-X-app/files/icons/Thunderbird.png similarity index 100% rename from app/SysTray-X/files/icons/Thunderbird.png rename to app/SysTray-X/SysTray-X-app/files/icons/Thunderbird.png diff --git a/app/SysTray-X/files/icons/blank-icon-dark.png b/app/SysTray-X/SysTray-X-app/files/icons/blank-icon-dark.png similarity index 100% rename from app/SysTray-X/files/icons/blank-icon-dark.png rename to app/SysTray-X/SysTray-X-app/files/icons/blank-icon-dark.png diff --git a/app/SysTray-X/files/icons/blank-icon.png b/app/SysTray-X/SysTray-X-app/files/icons/blank-icon.png similarity index 100% rename from app/SysTray-X/files/icons/blank-icon.png rename to app/SysTray-X/SysTray-X-app/files/icons/blank-icon.png diff --git a/app/SysTray-X/files/icons/dialog-warning.png b/app/SysTray-X/SysTray-X-app/files/icons/dialog-warning.png similarity index 100% rename from app/SysTray-X/files/icons/dialog-warning.png rename to app/SysTray-X/SysTray-X-app/files/icons/dialog-warning.png diff --git a/app/SysTray-X/files/icons/document-new.png b/app/SysTray-X/SysTray-X-app/files/icons/document-new.png similarity index 100% rename from app/SysTray-X/files/icons/document-new.png rename to app/SysTray-X/SysTray-X-app/files/icons/document-new.png diff --git a/app/SysTray-X/files/icons/gtk-apply.png b/app/SysTray-X/SysTray-X-app/files/icons/gtk-apply.png similarity index 100% rename from app/SysTray-X/files/icons/gtk-apply.png rename to app/SysTray-X/SysTray-X-app/files/icons/gtk-apply.png diff --git a/app/SysTray-X/files/icons/gtk-edit.png b/app/SysTray-X/SysTray-X-app/files/icons/gtk-edit.png similarity index 100% rename from app/SysTray-X/files/icons/gtk-edit.png rename to app/SysTray-X/SysTray-X-app/files/icons/gtk-edit.png diff --git a/app/SysTray-X/files/icons/gtk-preferences.png b/app/SysTray-X/SysTray-X-app/files/icons/gtk-preferences.png similarity index 100% rename from app/SysTray-X/files/icons/gtk-preferences.png rename to app/SysTray-X/SysTray-X-app/files/icons/gtk-preferences.png diff --git a/app/SysTray-X/files/icons/help-about.png b/app/SysTray-X/SysTray-X-app/files/icons/help-about.png similarity index 100% rename from app/SysTray-X/files/icons/help-about.png rename to app/SysTray-X/SysTray-X-app/files/icons/help-about.png diff --git a/app/SysTray-X/files/icons/mail-unread.png b/app/SysTray-X/SysTray-X-app/files/icons/mail-unread.png similarity index 100% rename from app/SysTray-X/files/icons/mail-unread.png rename to app/SysTray-X/SysTray-X-app/files/icons/mail-unread.png diff --git a/app/SysTray-X/files/icons/window-close.png b/app/SysTray-X/SysTray-X-app/files/icons/window-close.png similarity index 100% rename from app/SysTray-X/files/icons/window-close.png rename to app/SysTray-X/SysTray-X-app/files/icons/window-close.png diff --git a/app/SysTray-X/files/icons/window-restore.png b/app/SysTray-X/SysTray-X-app/files/icons/window-restore.png similarity index 100% rename from app/SysTray-X/files/icons/window-restore.png rename to app/SysTray-X/SysTray-X-app/files/icons/window-restore.png diff --git a/app/SysTray-X/languages/SysTray-X.bg.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.bg.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.bg.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.bg.qm diff --git a/app/SysTray-X/languages/SysTray-X.bg.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.bg.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.bg.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.bg.ts diff --git a/app/SysTray-X/languages/SysTray-X.de.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.de.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.qm diff --git a/app/SysTray-X/languages/SysTray-X.de.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.de.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.de.ts diff --git a/app/SysTray-X/languages/SysTray-X.el.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.el.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.el.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.el.qm diff --git a/app/SysTray-X/languages/SysTray-X.el.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.el.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.el.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.el.ts diff --git a/app/SysTray-X/languages/SysTray-X.en-US.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.en-US.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.qm diff --git a/app/SysTray-X/languages/SysTray-X.en-US.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.en-US.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.en-US.ts diff --git a/app/SysTray-X/languages/SysTray-X.es-AR.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.es-AR.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.es-AR.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.es-AR.qm diff --git a/app/SysTray-X/languages/SysTray-X.es-AR.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.es-AR.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.es-AR.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.es-AR.ts diff --git a/app/SysTray-X/languages/SysTray-X.fr.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.fr.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.fr.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.fr.qm diff --git a/app/SysTray-X/languages/SysTray-X.fr.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.fr.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.fr.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.fr.ts diff --git a/app/SysTray-X/languages/SysTray-X.hr.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.hr.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.hr.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.hr.qm diff --git a/app/SysTray-X/languages/SysTray-X.hr.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.hr.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.hr.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.hr.ts diff --git a/app/SysTray-X/languages/SysTray-X.it.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.it.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.qm diff --git a/app/SysTray-X/languages/SysTray-X.it.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.it.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.it.ts diff --git a/app/SysTray-X/languages/SysTray-X.nl.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.nl.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.nl.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.nl.qm diff --git a/app/SysTray-X/languages/SysTray-X.nl.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.nl.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.nl.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.nl.ts diff --git a/app/SysTray-X/languages/SysTray-X.pl.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pl.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.pl.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.pl.qm diff --git a/app/SysTray-X/languages/SysTray-X.pl.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pl.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.pl.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.pl.ts diff --git a/app/SysTray-X/languages/SysTray-X.pt-BR.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.pt-BR.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.qm diff --git a/app/SysTray-X/languages/SysTray-X.pt-BR.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.pt-BR.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.pt-BR.ts diff --git a/app/SysTray-X/languages/SysTray-X.ru.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.ru.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.ru.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.ru.qm diff --git a/app/SysTray-X/languages/SysTray-X.ru.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.ru.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.ru.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.ru.ts diff --git a/app/SysTray-X/languages/SysTray-X.sk.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.sk.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.sk.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.sk.qm diff --git a/app/SysTray-X/languages/SysTray-X.sk.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.sk.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.sk.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.sk.ts diff --git a/app/SysTray-X/languages/SysTray-X.uk.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.uk.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.uk.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.uk.qm diff --git a/app/SysTray-X/languages/SysTray-X.uk.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.uk.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.uk.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.uk.ts diff --git a/app/SysTray-X/languages/SysTray-X.zh-CN.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-CN.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.zh-CN.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-CN.qm diff --git a/app/SysTray-X/languages/SysTray-X.zh-CN.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-CN.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.zh-CN.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-CN.ts diff --git a/app/SysTray-X/languages/SysTray-X.zh-TW.qm b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-TW.qm similarity index 100% rename from app/SysTray-X/languages/SysTray-X.zh-TW.qm rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-TW.qm diff --git a/app/SysTray-X/languages/SysTray-X.zh-TW.ts b/app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-TW.ts similarity index 100% rename from app/SysTray-X/languages/SysTray-X.zh-TW.ts rename to app/SysTray-X/SysTray-X-app/languages/SysTray-X.zh-TW.ts diff --git a/app/SysTray-X/main.cpp b/app/SysTray-X/SysTray-X-app/main.cpp similarity index 100% rename from app/SysTray-X/main.cpp rename to app/SysTray-X/SysTray-X-app/main.cpp diff --git a/app/SysTray-X/preferences.cpp b/app/SysTray-X/SysTray-X-app/preferences.cpp similarity index 100% rename from app/SysTray-X/preferences.cpp rename to app/SysTray-X/SysTray-X-app/preferences.cpp diff --git a/app/SysTray-X/preferences.h b/app/SysTray-X/SysTray-X-app/preferences.h similarity index 100% rename from app/SysTray-X/preferences.h rename to app/SysTray-X/SysTray-X-app/preferences.h diff --git a/app/SysTray-X/preferences.ui b/app/SysTray-X/SysTray-X-app/preferences.ui similarity index 100% rename from app/SysTray-X/preferences.ui rename to app/SysTray-X/SysTray-X-app/preferences.ui diff --git a/app/SysTray-X/preferencesdialog.cpp b/app/SysTray-X/SysTray-X-app/preferencesdialog.cpp similarity index 100% rename from app/SysTray-X/preferencesdialog.cpp rename to app/SysTray-X/SysTray-X-app/preferencesdialog.cpp diff --git a/app/SysTray-X/preferencesdialog.h b/app/SysTray-X/SysTray-X-app/preferencesdialog.h similarity index 100% rename from app/SysTray-X/preferencesdialog.h rename to app/SysTray-X/SysTray-X-app/preferencesdialog.h diff --git a/app/SysTray-X/systrayx.cpp b/app/SysTray-X/SysTray-X-app/systrayx.cpp similarity index 100% rename from app/SysTray-X/systrayx.cpp rename to app/SysTray-X/SysTray-X-app/systrayx.cpp diff --git a/app/SysTray-X/systrayx.h b/app/SysTray-X/SysTray-X-app/systrayx.h similarity index 100% rename from app/SysTray-X/systrayx.h rename to app/SysTray-X/SysTray-X-app/systrayx.h diff --git a/app/SysTray-X/systrayxicon.cpp b/app/SysTray-X/SysTray-X-app/systrayxicon.cpp similarity index 100% rename from app/SysTray-X/systrayxicon.cpp rename to app/SysTray-X/SysTray-X-app/systrayxicon.cpp diff --git a/app/SysTray-X/systrayxicon.h b/app/SysTray-X/SysTray-X-app/systrayxicon.h similarity index 100% rename from app/SysTray-X/systrayxicon.h rename to app/SysTray-X/SysTray-X-app/systrayxicon.h diff --git a/app/SysTray-X/systrayxlink.cpp b/app/SysTray-X/SysTray-X-app/systrayxlink.cpp similarity index 99% rename from app/SysTray-X/systrayxlink.cpp rename to app/SysTray-X/SysTray-X-app/systrayxlink.cpp index 1ecfd9e..c385933 100644 --- a/app/SysTray-X/systrayxlink.cpp +++ b/app/SysTray-X/SysTray-X-app/systrayxlink.cpp @@ -338,6 +338,8 @@ void SysTrayXLink::DecodeMessage( const QByteArray& message ) { QString window_state_str = jsonObject[ "window" ].toString(); + emit signalConsole( "Window state: " + window_state_str ); + Preferences::WindowState window_state; if( window_state_str == Preferences::STATE_NORMAL_STR ) { diff --git a/app/SysTray-X/systrayxlink.h b/app/SysTray-X/SysTray-X-app/systrayxlink.h similarity index 100% rename from app/SysTray-X/systrayxlink.h rename to app/SysTray-X/SysTray-X-app/systrayxlink.h diff --git a/app/SysTray-X/systrayxstatusnotifier.cpp b/app/SysTray-X/SysTray-X-app/systrayxstatusnotifier.cpp similarity index 100% rename from app/SysTray-X/systrayxstatusnotifier.cpp rename to app/SysTray-X/SysTray-X-app/systrayxstatusnotifier.cpp diff --git a/app/SysTray-X/systrayxstatusnotifier.h b/app/SysTray-X/SysTray-X-app/systrayxstatusnotifier.h similarity index 100% rename from app/SysTray-X/systrayxstatusnotifier.h rename to app/SysTray-X/SysTray-X-app/systrayxstatusnotifier.h diff --git a/app/SysTray-X/windowctrl-unix.cpp b/app/SysTray-X/SysTray-X-app/windowctrl-unix.cpp similarity index 74% rename from app/SysTray-X/windowctrl-unix.cpp rename to app/SysTray-X/SysTray-X-app/windowctrl-unix.cpp index d3c3af5..7c50822 100644 --- a/app/SysTray-X/windowctrl-unix.cpp +++ b/app/SysTray-X/SysTray-X-app/windowctrl-unix.cpp @@ -27,8 +27,6 @@ WindowCtrlUnix::WindowCtrlUnix( QObject *parent ) : QObject( parent ) * Get the base display and window */ m_display = XOpenDisplay( NULL ); - m_screen = 0; - m_root_window = XDefaultRootWindow( m_display ); } @@ -102,7 +100,7 @@ QString WindowCtrlUnix::getProcessName( qint64 pid ) const */ bool WindowCtrlUnix::findWindow( const QString& title ) { - QList< WindowItem > windows = listXWindows( m_display, m_root_window ); + QList< WindowItem > windows = listXWindows( m_display, XDefaultRootWindow( m_display ) ); m_tb_windows = QList< quint64 >(); for( int i = 0 ; i < windows.length() ; ++i ) @@ -138,7 +136,7 @@ bool WindowCtrlUnix::findWindow( const QString& title ) */ void WindowCtrlUnix::findWindows( qint64 pid ) { - QList< WindowItem > windows = listXWindows( m_display, m_root_window ); + QList< WindowItem > windows = listXWindows( m_display, XDefaultRootWindow( m_display ) ); // Get the PID property atom. Atom atom_PID = XInternAtom( m_display, "_NET_WM_PID", True ); @@ -216,7 +214,7 @@ const QList< Preferences::WindowState >& WindowCtrlUnix::getWindowStates() co */ void WindowCtrlUnix::displayWindowElements( const QString& title ) { - QList< WindowItem > windows = listXWindows( m_display, m_root_window ); + QList< WindowItem > windows = listXWindows( m_display, XDefaultRootWindow( m_display ) ); for( int i = 0 ; i < windows.length() ; ++i ) { @@ -338,7 +336,7 @@ void WindowCtrlUnix::updatePositions() Window child; XWindowAttributes xwa; Window win = static_cast( window ); - XTranslateCoordinates( m_display, win, m_root_window, 0, 0, &x, &y, &child ); + XTranslateCoordinates( m_display, win, XDefaultRootWindow( m_display ), 0, 0, &x, &y, &child ); XGetWindowAttributes( m_display, win, &xwa ); positions.append( QPoint( x - xwa.x - margin.left(), y - xwa.y - margin.top() ) ); @@ -369,7 +367,18 @@ void WindowCtrlUnix::minimizeWindow( quint64 window, int hide ) hideWindow( window, hide ); - XIconifyWindow( m_display, static_cast( window ), m_screen ); + /* + * Minimize the window + */ + XWindowAttributes xwa; + XGetWindowAttributes( m_display, window, &xwa ); + int screen = XScreenNumberOfScreen( xwa.screen ); + + XIconifyWindow( m_display, window, screen ); + + /* + * Flush the pipes + */ XFlush( m_display ); } @@ -391,14 +400,6 @@ void WindowCtrlUnix::hideWindow( quint64 window, int set ) break; } - case Preferences::PREF_MINIMIZE_METHOD_2: - { - emit signalConsole( "Hide 2" ); - - hideWindowAtom( window, set ); - break; - } - default: { emit signalConsole( "Hide default" ); @@ -408,6 +409,100 @@ void WindowCtrlUnix::hideWindow( quint64 window, int set ) } +/* + * Normalize a window + */ +void WindowCtrlUnix::normalizeWindow( quint64 window ) +{ + emit signalConsole( "Normalize" ); + + /* + * Get the current desktop + */ + int current_desktop = 0; + +/* + XWindowAttributes xwa; + XGetWindowAttributes( m_display, window, &xwa); + int screen = XScreenNumberOfScreen( xwa.screen ); + Window root = XRootWindow( m_display, screen ); +*/ + + quint32 n_current_desktop; + long* current_desktop_ptr = (long*)GetWindowProperty( XDefaultRootWindow( m_display ), "_NET_CURRENT_DESKTOP", &n_current_desktop ); + + if( current_desktop_ptr != nullptr ) + { + /* + * Store it + */ + current_desktop = *current_desktop_ptr; + + /* + * Cleanup + */ + XFree( current_desktop_ptr ); + + /* + * Set the desktop for the window + */ + XEvent event_desktop; + event_desktop.xclient.type = ClientMessage; + event_desktop.xclient.serial = 0; + event_desktop.xclient.send_event = True; + event_desktop.xclient.message_type = XInternAtom( m_display, "_NET_WM_DESKTOP", True ); + event_desktop.xclient.window = window; + event_desktop.xclient.format = 32; + event_desktop.xclient.data.l[0] = current_desktop; + event_desktop.xclient.data.l[1] = 1; + + XSendEvent( m_display, XDefaultRootWindow( m_display ), False, SubstructureRedirectMask | SubstructureNotifyMask, (XEvent*)&event_desktop ); + } + + /* + * Show window on taskbar + */ + XEvent event_taskbar; + event_taskbar.xclient.type = ClientMessage; + event_taskbar.xclient.serial = 0; + event_taskbar.xclient.send_event = True; + event_taskbar.xclient.message_type = XInternAtom( m_display, "_NET_WM_STATE", False ); + event_taskbar.xclient.window = window; + event_taskbar.xclient.format = 32; + event_taskbar.xclient.data.l[0] = _NET_WM_STATE_REMOVE; + event_taskbar.xclient.data.l[1] = XInternAtom( m_display, "_NET_WM_STATE_SKIP_TASKBAR", False ); + + XSendEvent( m_display, XDefaultRootWindow( m_display ), False, SubstructureRedirectMask | SubstructureNotifyMask, &event_taskbar ); + + /* + * Normalize + */ + XEvent event_normalize; + event_normalize.xclient.type = ClientMessage; + event_normalize.xclient.serial = 0; + event_normalize.xclient.send_event = True; + event_normalize.xclient.message_type = XInternAtom( m_display, "_NET_ACTIVE_WINDOW", False ); + event_normalize.xclient.window = window; + event_normalize.xclient.format = 32; + + XSendEvent( m_display, XDefaultRootWindow( m_display ), False, SubstructureRedirectMask | SubstructureNotifyMask, &event_normalize ); + + /* + * Raise the window to the top + */ + XMapRaised( m_display, window ); + + /* + * Flush the pipes + */ + XFlush( m_display ); +} + + + +#ifdef WORKS + + /* * Normalize a window */ @@ -422,31 +517,89 @@ void WindowCtrlUnix::normalizeWindow( quint64 window ) return; } + /* + * Get the current desktop + */ + int current_desktop = 0; + +/* + XWindowAttributes xwa; + XGetWindowAttributes( m_display, window, &xwa); + int screen = XScreenNumberOfScreen( xwa.screen ); + Window root = XRootWindow( m_display, screen ); +*/ + + quint32 n_current_desktop; + long* current_desktop_ptr = (long*)GetWindowProperty( RootWindow( m_display, m_screen ), "_NET_CURRENT_DESKTOP", &n_current_desktop ); + + if( current_desktop_ptr != nullptr ) + { + emit signalConsole( QString( "Pre Desktop %1" ).arg( *current_desktop_ptr ) ); + + /* + * Store it + */ + current_desktop = *current_desktop_ptr; + + /* + * Cleanup + */ + XFree( current_desktop_ptr ); + + /* + * Set the desktop for the window + */ + XClientMessageEvent event; + event.message_type = XInternAtom( m_display, "_NET_WM_DESKTOP", True ); + event.window = window; + event.format = 32; + event.type = ClientMessage; + event.data.l[0] = current_desktop; + event.data.l[1] = 1; + + XSendEvent( m_display, RootWindow( m_display, m_screen ), False, SubstructureRedirectMask | SubstructureNotifyMask, (XEvent*)&event ); + } + + /* + * Unhide the window + */ hideWindow( window, false ); - Window win = static_cast( window ); - - Atom msg_atom = XInternAtom( m_display, "_NET_ACTIVE_WINDOW", False ); - if( msg_atom == None ) - { - return; - } + /* + * Normalize + */ XEvent event = { 0 }; event.xclient.type = ClientMessage; event.xclient.serial = 0; event.xclient.send_event = True; - event.xclient.message_type = msg_atom; - event.xclient.window = win; + event.xclient.message_type = XInternAtom( m_display, "_NET_ACTIVE_WINDOW", False ); + event.xclient.window = window; event.xclient.format = 32; - XSendEvent( m_display, m_root_window, False, SubstructureRedirectMask | SubstructureNotifyMask, &event ); + XSendEvent( m_display, RootWindow( m_display, m_screen ), False, SubstructureRedirectMask | SubstructureNotifyMask, &event ); - XMapRaised( m_display, win ); -// XMapWindow( m_display, win ); + XMapRaised( m_display, window ); XFlush( m_display ); + + quint32 ndesktop; + long* desktop = (long*)GetWindowProperty( window, "_NET_WM_DESKTOP", &ndesktop ); + + if( desktop != nullptr ) + { + emit signalConsole( QString( "Desktop %1" ).arg( *desktop ) ); + + /* + * Cleanup + */ + XFree( desktop ); + } } +#endif + + + /* * Delete the window @@ -535,93 +688,6 @@ void WindowCtrlUnix::hideWindowEvent( quint64 window, bool set ) } -/* - * Remove window from taskbar - */ -void WindowCtrlUnix::hideWindowAtom( quint64 window, bool set ) -{ - if( !isThunderbird( getPpid() ) ) - { - return; - } - - Window win = static_cast( window ); - - char prop_name[] = "_NET_WM_STATE"; - Atom prop = XInternAtom( m_display, prop_name, True ); - Atom prop_skip_taskbar = XInternAtom( m_display, WindowStates[ STATE_SKIP_TASKBAR ].toUtf8(), True ); - - Atom type; - int format; - unsigned long remain; - unsigned long len; - unsigned char* list = nullptr; - - if( XGetWindowProperty( m_display, win, prop, 0, sizeof( Atom ), False, XA_ATOM, - &type, &format, &len, &remain, &list ) == Success ) - { - Atom* atom_list = reinterpret_cast( list ); - Atom* new_atom_list = nullptr; - bool present = false; - - if( len > 1 ) - { - /* - * Check and remove atom from list - */ - new_atom_list = new Atom[ len - 1 ]; - - for( unsigned long i = 0, o = 0; i < len; ++i ) - { - if( atom_list[ i ] == prop_skip_taskbar ) - { - present = true; - continue; - } - - new_atom_list[ o++ ] = atom_list[ i ]; - } - } - - if( set && !present ) - { - /* - * Set the atom - */ - XChangeProperty( m_display, win, prop, XA_ATOM, 32, PropModeAppend, - reinterpret_cast( &prop_skip_taskbar ), 1 ); - } - else - if( !set && present ) - { - /* - * Remove the atom - */ - XChangeProperty( m_display, win, prop, XA_ATOM, format, PropModeReplace, - reinterpret_cast( new_atom_list ), static_cast( len - 1 ) ); - } - - /* - * Cleanup - */ - if( new_atom_list ) - { - delete [] new_atom_list; - } - } - - /* - * Cleanup - */ - if( list ) - { - XFree( list ); - } - - XFlush( m_display ); -} - - /* * Get the X11 window list */ @@ -675,7 +741,7 @@ void WindowCtrlUnix::sendEvent( quint64 window, const char* msg, long action, event.xclient.data.l[3] = prop3; event.xclient.data.l[4] = prop4; - XSendEvent( m_display, DefaultRootWindow( m_display ), False, SubstructureRedirectMask | SubstructureNotifyMask, &event ); + XSendEvent( m_display, XDefaultRootWindow( m_display ), False, SubstructureRedirectMask | SubstructureNotifyMask, &event ); } @@ -866,4 +932,41 @@ QMargins WindowCtrlUnix::atomFrameExtents( Display *display, quint64 window ) } +/* + * Get the title of the window + */ +void* WindowCtrlUnix::GetWindowProperty( quint64 window, const char* atom, quint32* nlist ) +{ + Atom prop = XInternAtom( m_display, atom, True ); + + Atom type; + int format; + unsigned long remain; + unsigned long len; + unsigned char* list = nullptr; + + if( XGetWindowProperty( m_display, window, prop, 0, LONG_MAX, False, AnyPropertyType, + &type, &format, &len, &remain, &list ) == Success && len && list ) + { + if( nlist != nullptr ) + { + *nlist = (quint32)len; + } + + return list; + } + + if( nlist != nullptr ) + { + *nlist = (quint32)0; + } + + if( list ) + { + XFree( list ); + } + + return nullptr; +} + #endif // Q_OS_UNIX diff --git a/app/SysTray-X/windowctrl-unix.h b/app/SysTray-X/SysTray-X-app/windowctrl-unix.h similarity index 98% rename from app/SysTray-X/windowctrl-unix.h rename to app/SysTray-X/SysTray-X-app/windowctrl-unix.h index 588018c..97acce6 100644 --- a/app/SysTray-X/windowctrl-unix.h +++ b/app/SysTray-X/SysTray-X-app/windowctrl-unix.h @@ -353,6 +353,11 @@ class WindowCtrlUnix : public QObject */ QMargins atomFrameExtents( Display *display, quint64 window ); + + + void* GetWindowProperty( quint64 window, const char* atom, quint32* items = nullptr ); + + signals: /** @@ -376,16 +381,6 @@ class WindowCtrlUnix : public QObject */ Display* m_display; - /** - * @brief m_screen. The screen number. - */ - int m_screen; - - /** - * @brief m_root_window. The root window. - */ - quint64 m_root_window; - /** * @brief m_tb_windows. The Thunderbird windows. */ diff --git a/app/SysTray-X/windowctrl-win.cpp b/app/SysTray-X/SysTray-X-app/windowctrl-win.cpp similarity index 100% rename from app/SysTray-X/windowctrl-win.cpp rename to app/SysTray-X/SysTray-X-app/windowctrl-win.cpp diff --git a/app/SysTray-X/windowctrl-win.h b/app/SysTray-X/SysTray-X-app/windowctrl-win.h similarity index 100% rename from app/SysTray-X/windowctrl-win.h rename to app/SysTray-X/SysTray-X-app/windowctrl-win.h diff --git a/app/SysTray-X/windowctrl.cpp b/app/SysTray-X/SysTray-X-app/windowctrl.cpp similarity index 99% rename from app/SysTray-X/windowctrl.cpp rename to app/SysTray-X/SysTray-X-app/windowctrl.cpp index abdb5a3..a270bf2 100644 --- a/app/SysTray-X/windowctrl.cpp +++ b/app/SysTray-X/SysTray-X-app/windowctrl.cpp @@ -80,8 +80,7 @@ void WindowCtrl::slotWindowTest1() // findWindow( 4313 ); // displayWindowElements( getWinId() ); - - findWindows( m_ppid ); +// findWindows( m_ppid ); emit signalConsole("Test 1 done"); } diff --git a/app/SysTray-X/windowctrl.h b/app/SysTray-X/SysTray-X-app/windowctrl.h similarity index 100% rename from app/SysTray-X/windowctrl.h rename to app/SysTray-X/SysTray-X-app/windowctrl.h diff --git a/app/build.bat b/app/build.bat index d303a0b..1341050 100644 --- a/app/build.bat +++ b/app/build.bat @@ -41,7 +41,7 @@ call "C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Auxiliary C:\Qt\%QT_VER%\%SPEC%\bin\qmake ..\SysTray-X\SysTray-X.pro -spec win32-msvc nmake -xcopy /Q /Y release\SysTray-X.exe ..\dist\%WIN%\ +xcopy /Q /Y release\SysTray-X-app\SysTray-X.exe ..\dist\%WIN%\ xcopy /Q /Y ..\config\win32\SysTray_X.json.template ..\dist\%WIN%\ rename ..\dist\%WIN%\SysTray_X.json.template SysTray_X.json diff --git a/webext/background.js b/webext/background.js index e03e3d7..7b20b02 100644 --- a/webext/background.js +++ b/webext/background.js @@ -23,7 +23,7 @@ SysTrayX.Messaging = { filters: undefined, init: function () { - // Minimuze on startup handled by Companion app as backup + // Minimize on startup handled by Companion app as backup if (SysTrayX.startupState == "minimized") { SysTrayX.Link.postSysTrayXMessage({ window: "minimized_all_startup" }); } @@ -56,18 +56,7 @@ SysTrayX.Messaging = { // Send preferences to app SysTrayX.Messaging.sendPreferences(); - /* - // New mail listener (TB76+) - if (SysTrayX.browserInfo.majorVersion > 75) { - // - // Mixed results, forgets accounts?, double events? - // - browser.messages.onNewMailReceived.addListener( - SysTrayX.Messaging.newMail - ); - } - */ - + // Catch the unread / new mails browser.folderChange.onUnreadMailChange.addListener(function (unread) { SysTrayX.Messaging.unreadCb(unread); });