diff -ruN kwallet-5.29.0-orig/kwalletd5.sh kwallet-5.29.0/kwalletd5.sh
--- kwallet-5.29.0-orig/kwalletd5.sh	1969-12-31 18:00:00.000000000 -0600
+++ kwallet-5.29.0/kwalletd5.sh	2017-01-02 18:08:36.000000000 -0600
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+KDE_SESSION_VERSION=5 ; export KDE_SESSION_VERSION
+
+exec @KF5_LIBEXECDIR@/kwalletd5.app/Contents/MacOS/kwalletd5 "$@"
diff -ruN kwallet-5.29.0-orig/org.finkproject.kwalletd5.plist kwallet-5.29.0/org.finkproject.kwalletd5.plist
--- kwallet-5.29.0-orig/org.finkproject.kwalletd5.plist	1969-12-31 18:00:00.000000000 -0600
+++ kwallet-5.29.0/org.finkproject.kwalletd5.plist	2017-01-02 18:20:44.000000000 -0600
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <key>Label</key>
+        <string>org.finkproject.kwalletd5</string>
+    <key>Program</key>
+        <string>@KF5_BINDIR@/kwalletd5</string>
+    <key>EnvironmentVariables</key>
+        <dict>
+            <key>KDE_SESSION_VERSION</key>
+            <string>5</string>
+        </dict>
+    <key>Disabled</key>
+        <true/>
+    <key>RunAtLoad</key>
+        <true/>
+    <key>KeepAlive</key>
+        <dict>
+            <key>OtherJobEnabled</key>
+                    <dict>
+                        <key>org.freedesktop.dbus-session</key>
+                        <true/>
+                    </dict>
+        </dict>
+</dict>
+</plist>
diff -ruN kwallet-5.29.0-orig/src/api/KWallet/CMakeLists.txt kwallet-5.29.0/src/api/KWallet/CMakeLists.txt
--- kwallet-5.29.0-orig/src/api/KWallet/CMakeLists.txt	2016-12-03 15:12:17.000000000 -0600
+++ kwallet-5.29.0/src/api/KWallet/CMakeLists.txt	2017-01-02 18:23:25.000000000 -0600
@@ -75,8 +75,6 @@
 if(MAC_USE_OSXKEYCHAIN)
    target_link_libraries(KF5Wallet PRIVATE ${CARBON_LIBRARY}
                                               ${SECURITY_LIBRARY})
-elseif(APPLE)
-    target_link_libraries(KF5Wallet PRIVATE ${CARBON_LIBRARY})
 else()
     target_link_libraries(KF5Wallet PRIVATE Qt5::DBus)
     install(FILES ${kwallet_xml} DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} RENAME kf5_org.kde.KWallet.xml)
diff -ruN kwallet-5.29.0-orig/src/runtime/kwallet-query/src/CMakeLists.txt kwallet-5.29.0/src/runtime/kwallet-query/src/CMakeLists.txt
--- kwallet-5.29.0-orig/src/runtime/kwallet-query/src/CMakeLists.txt	2016-12-03 15:12:17.000000000 -0600
+++ kwallet-5.29.0/src/runtime/kwallet-query/src/CMakeLists.txt	2017-01-02 18:23:25.000000000 -0600
@@ -4,6 +4,10 @@
     querydriver.cpp)
 
 add_executable(kwallet-query ${kwallet-query_SRCS})
+if (APPLE)
+    include(ECMMarkNonGuiExecutable)
+    ecm_mark_nongui_executable(kwallet-query)
+endif ()
 
 TARGET_LINK_LIBRARIES(kwallet-query
     KF5Wallet
diff -ruN kwallet-5.29.0-orig/src/runtime/kwalletd/CMakeLists.txt kwallet-5.29.0/src/runtime/kwalletd/CMakeLists.txt
--- kwallet-5.29.0-orig/src/runtime/kwalletd/CMakeLists.txt	2016-12-03 15:12:17.000000000 -0600
+++ kwallet-5.29.0/src/runtime/kwalletd/CMakeLists.txt	2017-01-02 18:23:25.000000000 -0600
@@ -103,6 +103,11 @@
         DESTINATION ${DBUS_SERVICES_INSTALL_DIR})
 
 add_executable( kwalletd5 ${kwalletd_SRCS} )
+if (APPLE)
+    # Keep kwalletd5 as a .app for now
+    #include(ECMMarkNonGuiExecutable)
+    #ecm_mark_nongui_executable(kwalletd5)
+endif ()
 
 target_link_libraries(kwalletd5
     kwalletbackend5
diff -ruN kwallet-5.29.0-orig/src/runtime/kwalletd/backend/CMakeLists.txt kwallet-5.29.0/src/runtime/kwalletd/backend/CMakeLists.txt
--- kwallet-5.29.0-orig/src/runtime/kwalletd/backend/CMakeLists.txt	2016-12-03 15:12:17.000000000 -0600
+++ kwallet-5.29.0/src/runtime/kwalletd/backend/CMakeLists.txt	2017-01-02 18:23:25.000000000 -0600
@@ -52,6 +52,10 @@
    target_link_libraries(kwalletbackend5 ${GPGMEPP_LIBS})
 endif(Gpgmepp_FOUND OR KF5Gpgmepp_FOUND)
 
+if (APPLE)
+	target_link_libraries(kwalletbackend5 "-lgpgme -Wl,-framework,AppKit" )
+endif ()
+
 # link with advapi32 on windows
 if(WIN32 AND NOT WINCE)
    target_link_libraries(kwalletbackend5 advapi32)
diff -ruN kwallet-5.29.0-orig/src/runtime/kwalletd/main.cpp kwallet-5.29.0/src/runtime/kwalletd/main.cpp
--- kwallet-5.29.0-orig/src/runtime/kwalletd/main.cpp	2016-12-03 15:12:17.000000000 -0600
+++ kwallet-5.29.0/src/runtime/kwalletd/main.cpp	2017-01-02 18:23:25.000000000 -0600
@@ -41,6 +41,10 @@
 #include <sys/un.h>
 #include <unistd.h>
 
+#ifdef Q_OS_MACOS
+#include <CoreFoundation/CoreFoundation.h>
+#endif
+
 #define BSIZE 1000
 static int pipefd = 0;
 static int socketfd = 0;
@@ -164,6 +168,20 @@
 {
     char *hash = NULL;
 #ifndef Q_OS_WIN
+#ifdef Q_OS_MACOS
+    CFBundleRef mainBundle = CFBundleGetMainBundle();
+    if (mainBundle) {
+        // get the application's Info Dictionary. For app bundles this would live in the bundle's Info.plist,
+        // for regular executables it is obtained in another way.
+        CFMutableDictionaryRef infoDict = (CFMutableDictionaryRef) CFBundleGetInfoDictionary(mainBundle);
+        if (infoDict) {
+            // Add or set the "LSUIElement" key with/to value "1". This can simply be a CFString.
+            CFDictionarySetValue(infoDict, CFSTR("LSUIElement"), CFSTR("1"));
+            // That's it. We're now considered as an "agent" by the window server, and thus will have
+            // neither menubar nor presence in the Dock or App Switcher.
+        }
+    }
+#endif // Q_OS_MACOS
     if (getenv("PAM_KWALLET5_LOGIN")) {
         hash = checkPamModule(argc, argv);
     }
