aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt16
-rw-r--r--src/main.cpp8
-rw-r--r--src/resources.qrc6
3 files changed, 29 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7e4cea8..26cb37c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,6 +6,9 @@ add_library(qtmaildir_lib STATIC
htmlbuilder.cpp
cidschemehandler.cpp
notmuchworker.cpp
+ tagchip.cpp
+ tagcolors.cpp
+ tagstrip.cpp
threadlistmodel.cpp
mailsync.cpp
threadcidmap.cpp
@@ -20,7 +23,18 @@ target_include_directories(qtmaildir_lib
target_link_libraries(qtmaildir_lib
PUBLIC Qt6::Widgets Qt6::WebEngineWidgets PkgConfig::GMIME ${NOTMUCH_LIBRARY})
-add_executable(qtmaildir main.cpp)
+# resources.qrc belongs to the executable, not to the static library. A qrc
+# compiled into a .a registers itself from a global initialiser, and the linker
+# drops that object because nothing references it, so the resource silently
+# fails to exist at runtime.
+add_executable(qtmaildir main.cpp resources.qrc)
target_link_libraries(qtmaildir PRIVATE qtmaildir_lib)
install(TARGETS qtmaildir RUNTIME DESTINATION bin)
+
+# The icon goes into the hicolor theme under its scalable directory, which is
+# where a desktop environment looks for the Icon= name in the .desktop entry.
+install(FILES ${CMAKE_SOURCE_DIR}/assets/icons/qtmaildir.svg
+ DESTINATION share/icons/hicolor/scalable/apps)
+install(FILES ${CMAKE_SOURCE_DIR}/assets/qtmaildir.desktop
+ DESTINATION share/applications)
diff --git a/src/main.cpp b/src/main.cpp
index 4d3ed0a..231594f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -17,6 +17,7 @@
*/
#include <QApplication>
+#include <QIcon>
#include <QMessageBox>
#include <QWebEngineUrlScheme>
@@ -76,6 +77,13 @@ int main(int argc, char *argv[])
app.setOrganizationName(QStringLiteral("qtmaildir"));
app.setApplicationVersion(QStringLiteral(QTMAILDIR_VERSION));
+ // Compiled in rather than read from disk, so the icon is there whether or
+ // not the app was installed. setDesktopFileName() is what lets a Wayland
+ // compositor match the window to its .desktop entry, which is where the
+ // taskbar icon really comes from there.
+ app.setWindowIcon(QIcon(QStringLiteral(":/icons/qtmaildir.svg")));
+ app.setDesktopFileName(QStringLiteral("qtmaildir"));
+
// Fail loudly on an ABI mismatch rather than crashing later.
if (LIBNOTMUCH_MAJOR_VERSION < 5) {
QMessageBox::critical(nullptr, QObject::tr("qtmaildir"),
diff --git a/src/resources.qrc b/src/resources.qrc
new file mode 100644
index 0000000..7bdb592
--- /dev/null
+++ b/src/resources.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC>
+<RCC version="1.0">
+ <qresource prefix="/">
+ <file alias="icons/qtmaildir.svg">../assets/icons/qtmaildir.svg</file>
+ </qresource>
+</RCC>