summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp39
1 files changed, 33 insertions, 6 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 0e870b9..81f7ba5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -28,16 +28,43 @@
#include "Patchage.hpp"
-int
-main(int argc, char** argv)
-{
#ifdef __APPLE__
- const std::string binary = binary_location();
- const std::string bundle = binary.substr(0, binary.find_last_of('/'));
- const std::string gtkrc_path = bundle + "/Resources/gtkrc";
+void
+set_bundle_environment()
+{
+ const std::string binary = binary_location();
+ const std::string bundle = binary.substr(0, binary.find_last_of('/'));
+ const std::string lib_path = bundle + "/lib";
+ if (!Glib::file_test(lib_path, Glib::FILE_TEST_EXISTS)) {
+ // If lib does not exist, we have not been bundleified, do nothing
+ return;
+ }
+
+ setenv("GTK_PATH", lib_path.c_str(), 1);
+ setenv("DYLD_LIBRARY_PATH", lib_path.c_str(), 1);
+
+ const std::string pangorc_path(bundle + "/Resources/pangorc");
+ if (Glib::file_test(pangorc_path, Glib::FILE_TEST_EXISTS)) {
+ setenv("PANGO_RC_FILE", pangorc_path.c_str(), 1);
+ }
+
+ const std::string fonts_conf_path(bundle + "/Resources/fonts.conf");
+ if (Glib::file_test(fonts_conf_path, Glib::FILE_TEST_EXISTS)) {
+ setenv("FONTCONFIG_FILE", fonts_conf_path.c_str(), 1);
+ }
+
+ const std::string gtkrc_path(bundle + "/Resources/gtkrc");
if (Glib::file_test(gtkrc_path, Glib::FILE_TEST_EXISTS)) {
gtk_rc_parse(gtkrc_path.c_str());
}
+}
+#endif
+
+int
+main(int argc, char** argv)
+{
+#ifdef __APPLE__
+ set_bundle_environment();
#endif
try {