From 4dba08083b2c43f33c708347072b2402f91fa5ba Mon Sep 17 00:00:00 2001 From: Vitalii Koshura Date: Fri, 24 Jun 2022 23:58:51 +0200 Subject: [PATCH] [Manager][linux] Search for skins in /usr/(local)/share/boinc-manager/skins or ./skins folders. This fixes #4809. Signed-off-by: Vitalii Koshura --- Makefile.am | 2 +- clientgui/SkinManager.cpp | 8 ++++++++ clientgui/skins/Makefile.am | 23 +++++++++++++++++++++++ configure.ac | 1 + 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 clientgui/skins/Makefile.am diff --git a/Makefile.am b/Makefile.am index c563ef95f5..8ec65e3cb5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,7 +32,7 @@ if ENABLE_CLIENT endif if ENABLE_MANAGER - CLIENTGUI_SUBDIRS = clientgui locale clientgui/res + CLIENTGUI_SUBDIRS = clientgui locale clientgui/res clientgui/skins if BUILD_X11_SCREENSAVER CLIENTGUI_SUBDIRS += clientscr endif diff --git a/clientgui/SkinManager.cpp b/clientgui/SkinManager.cpp index 59d2b41f8d..aab179d352 100644 --- a/clientgui/SkinManager.cpp +++ b/clientgui/SkinManager.cpp @@ -976,6 +976,14 @@ wxString CSkinManager::GetSkinsLocation() { strSkinLocation = wxGetApp().GetRootDirectory(); strSkinLocation += wxFileName::GetPathSeparator(); strSkinLocation += wxT("skins"); +#elif defined(__WXGTK__) + strSkinLocation = wxGetApp().GetRootDirectory(); + if (strSkinLocation.StartsWith("/usr/")) { + strSkinLocation += wxT("/../share/boinc-manager/skins"); + } + else { + strSkinLocation += wxT("/skins"); + } #else strSkinLocation = wxString(wxGetCwd() + wxString(wxFileName::GetPathSeparator()) + wxT("skins")); #endif diff --git a/clientgui/skins/Makefile.am b/clientgui/skins/Makefile.am new file mode 100644 index 0000000000..f45940c453 --- /dev/null +++ b/clientgui/skins/Makefile.am @@ -0,0 +1,23 @@ +## -*- mode: makefile; tab-width: 4 -*- + +include $(top_srcdir)/Makefile.incl + +datadir = $(prefix)/share/boinc-manager/skins + +skins_dirs = \ + "Charity Engine" \ + "GridRepublic" \ + "People for a Smarter Planet" \ + "People for a Smarter Planet/graphic" \ + "ProgressThruProcessors" \ + "World Community Grid" \ + "Default" + +install-data-hook: + mydir=$(DESTDIR)$(datadir) ;\ + for sdir in $(skins_dirs) ; do \ + $(INSTALL) -d "$$mydir/$$sdir" ; \ + find "$(top_srcdir)/clientgui/skins/$$sdir" -maxdepth 1 -type f -print0 | while read -d $$'\0' file ; do \ + $(INSTALL_DATA) "$$file" "$$mydir/$$sdir" ; \ + done ; \ + done diff --git a/configure.ac b/configure.ac index 40d4d1ffb9..4e5cc29989 100644 --- a/configure.ac +++ b/configure.ac @@ -1372,6 +1372,7 @@ AC_CONFIG_FILES([ apps/Makefile clientgui/Makefile clientgui/res/Makefile + clientgui/skins/Makefile clientscr/Makefile client/Makefile client/win/boinc_path_config.py:py/boinc_path_config.py.in