mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-20 22:09:55 +00:00
Добавлена базовая поддержка работы биндинга обоев на оконных менеджерах под Linux, пока только поддержка работы через feh и рестора через nitrogen
This commit is contained in:
parent
95012997fc
commit
0aa926c4a1
1 changed files with 27 additions and 3 deletions
|
|
@ -53,6 +53,9 @@
|
|||
static std::map<std::string, bool> defBlurs;
|
||||
// Fallback settings
|
||||
static std::string fallbackPath;
|
||||
//meow
|
||||
bool IsNitrogen = false;
|
||||
bool IsFeh = false;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
@ -60,7 +63,21 @@
|
|||
void desktopEnvironmentInit(){
|
||||
printf("[desktopEnvironmentInit] desktopEnvironmentInit()\n");
|
||||
if (desktop != "uninitialized") {
|
||||
return;
|
||||
printf("[desktopEnvironmentInit] Running on standalone Window Manager?Trying identify configuration...\n");
|
||||
// If Nitrogen wallpaper manager and feh is aviable we can just use nitrogen --restore command and feh --bg-scale:P
|
||||
if (FILE *file = fopen("/usr/bin/nitrogen", "r")){
|
||||
IsNitrogen = true;
|
||||
printf("[desktopEnvironmentInit] Nitrogen wallpaper manager detected!I will try to use it...\n");
|
||||
fclose(file);
|
||||
}else{ fclose(file); }
|
||||
if (FILE *file = fopen("/usr/bin/feh", "r")) {
|
||||
IsFeh = true;
|
||||
printf("[desktopEnvironmentInit] Feh detected!I will try to use it...\n");
|
||||
fclose(file);
|
||||
} else{ fclose(file); }
|
||||
if(!IsNitrogen && !IsFeh){
|
||||
return;
|
||||
}
|
||||
}
|
||||
desktop = shState->oneshot().desktopEnv;
|
||||
if (desktop == "cinnamon" || desktop == "gnome" || desktop == "mate" || desktop == "deepin") {
|
||||
|
|
@ -175,7 +192,7 @@ RB_METHOD(wallpaperSet){
|
|||
std::string path;
|
||||
#ifdef _WIN32
|
||||
path = shState->config().gameFolder + "\\Wallpaper\\" + name + ".bmp";
|
||||
Debug() << "[wallpaperSet]Setting wallpaper to" << path;
|
||||
Debug() << "[wallpaperSet] Setting wallpaper to " << path;
|
||||
// Crapify the slashes
|
||||
size_t index = 0;
|
||||
for (;;) {
|
||||
|
|
@ -301,7 +318,7 @@ end:
|
|||
colorArrType = g_type_from_name("GPtrArray_GValue_");
|
||||
if (!colorArrType) {
|
||||
// Let's do some debug output here and skip changing the color
|
||||
Debug() << "[wallpaperSet]WALLPAPER ERROR: xfconf-query call returned" << colorCommandRes;
|
||||
Debug() << "[wallpaperSet] WALLPAPER ERROR: xfconf-query call returned" << colorCommandRes;
|
||||
return Qnil;
|
||||
}
|
||||
}
|
||||
|
|
@ -349,6 +366,11 @@ end:
|
|||
Debug() << "[wallpaperSet] Wallpaper command:" << command.str();
|
||||
int result = system(command.str().c_str());
|
||||
Debug() << "[wallpaperSet ] Result:" << result;
|
||||
} else if (IsFeh == true) {
|
||||
//path
|
||||
printf("[wallpaperSet] Trying set wallpapers via feh\n");
|
||||
std::string cmd = std::string("feh --bg-scale '") + path + "'";
|
||||
std::system(cmd.c_str());
|
||||
} else {
|
||||
std::ifstream srcHint(gameDirStr + path);
|
||||
std::ofstream dstHint(fallbackPath);
|
||||
|
|
@ -473,6 +495,8 @@ RB_METHOD(wallpaperReset){
|
|||
Debug() << "[wallpaperReset] Reset wallpaper command:" << command.str();
|
||||
int result = system(command.str().c_str());
|
||||
Debug() << "[wallpaperReset] Reset result:" << result;
|
||||
} else if (IsNitrogen == true){
|
||||
system("nitrogen --restore");
|
||||
} else {
|
||||
if (remove(fallbackPath.c_str()) != 0) {
|
||||
Debug() << "[wallpaperReset] Failed to delete:" << fallbackPath;
|
||||
|
|
|
|||
Loading…
Reference in a new issue