Add MATE support

This commit is contained in:
KockaAdmiralac 2018-05-01 14:14:58 +02:00
parent 50079e637c
commit ac05c06551
2 changed files with 29 additions and 11 deletions

View file

@ -33,7 +33,7 @@
static std::string desktop = "uninitialized";
// GNOME settings
static Glib::RefPtr<Gio::Settings> bgsetting;
static std::string defPictureURI, defPictureOptions, defPrimaryColor;
static std::string defPictureURI, defPictureOptions, defPrimaryColor, defColorShading;
// XFCE settings
static XfconfChannel* bgchannel;
static int defPictureStyle;
@ -51,11 +51,17 @@ void desktopEnvironmentInit()
return;
}
desktop = shState->oneshot().desktopEnv;
if (desktop == "gnome") {
bgsetting = Gio::Settings::create("org.gnome.desktop.background");
defPictureURI = bgsetting->get_string("picture-uri");
if (desktop == "gnome" || desktop == "mate") {
if (desktop == "gnome") {
bgsetting = Gio::Settings::create("org.gnome.desktop.background");
defPictureURI = bgsetting->get_string("picture-uri");
} else {
bgsetting = Gio::Settings::create("org.mate.background");
defPictureURI = bgsetting->get_string("picture-filename");
}
defPictureOptions = bgsetting->get_string("picture-options");
defPrimaryColor = bgsetting->get_string("primary-color");
defColorShading = bgsetting->get_string("color-shading-type");
} else if (desktop == "xfce") {
GError *xferror = NULL;
if (xfconf_init(&xferror)) {
@ -177,12 +183,17 @@ end:
}
std::string gameDirStr(gameDir);
desktopEnvironmentInit();
if (desktop == "gnome") {
if (desktop == "gnome" || desktop == "mate") {
std::stringstream hexColor;
hexColor << "#" << std::hex << color;
bgsetting->set_string("picture-uri", "file://" + gameDirStr + path);
if (desktop == "gnome") {
bgsetting->set_string("picture-uri", "file://" + gameDirStr + path);
} else {
bgsetting->set_string("picture-filename", gameDirStr + path);
}
bgsetting->set_string("picture-options", "scaled");
bgsetting->set_string("primary-color", hexColor.str());
bgsetting->set_string("color-shading-type", "solid");
} else if (desktop == "xfce") {
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
@ -270,10 +281,15 @@ RB_METHOD(wallpaperReset)
MacDesktop::ResetBackground();
#else
desktopEnvironmentInit();
if (desktop == "gnome") {
bgsetting->set_string("picture-uri", defPictureURI);
if (desktop == "gnome" || desktop == "mate") {
if (desktop == "gnome") {
bgsetting->set_string("picture-uri", defPictureURI);
} else {
bgsetting->set_string("picture-filename", defPictureURI);
}
bgsetting->set_string("picture-options", defPictureOptions);
bgsetting->set_string("primary-color", defPrimaryColor);
bgsetting->set_string("color-shading-type", defColorShading);
} else if (desktop == "xfce") {
if (defColorExists) {
xfconf_channel_set_property(bgchannel, optionColor.c_str(), &defColor);

View file

@ -277,11 +277,13 @@ Oneshot::Oneshot(RGSSThreadData &threadData) :
if (
desktop.find("cinnamon") != std::string::npos ||
desktop.find("gnome") != std::string::npos ||
desktop.find("unity") != std::string::npos ||
desktop.find("mate") != std::string::npos
desktop.find("unity") != std::string::npos
) {
desktopEnv = "gnome";
gtk_init(0, 0);
} else if (desktop.find("mate") != std::string::npos) {
desktopEnv = "mate";
gtk_init(0, 0);
} else if (desktop.find("xfce") != std::string::npos) {
desktopEnv = "xfce";
}
@ -456,7 +458,7 @@ bool Oneshot::msgbox(int type, const char *body, const char *title)
if (!title)
title = "";
#if defined OS_LINUX
if (desktopEnv == "gnome") {
if (desktopEnv == "gnome" || desktopEnv == "mate") {
linux_DialogData data = {type, body, title, 0};
gdk_threads_add_idle(linux_dialog, &data);
gtk_main();