Browse Source

Manager: Fix crash when reading ENV variable as root

master
Riyyi 3 days ago
parent
commit
05aff91858
  1. 22
      src/machine.cpp

22
src/machine.cpp

@ -72,18 +72,24 @@ void Machine::fetchSession()
int8_t likelyWayland = 0; int8_t likelyWayland = 0;
// Detect via environment variable // Detect via environment variable
std::string env; const char* env;
env = std::string(std::getenv("XDG_SESSION_TYPE")); env = std::getenv("XDG_SESSION_TYPE");
if (env == "wayland") { if (env != nullptr) {
auto session = std::string(env);
if (session == "wayland") {
likelyWayland++; likelyWayland++;
} }
else if (env == "x11") { else if (session == "x11") {
likelyWayland--; likelyWayland--;
} }
env = std::string(std::getenv("WAYLAND_DISPLAY")); }
if (env.find("wayland-", 0) == 0) { env = std::getenv("WAYLAND_DISPLAY");
if (env != nullptr) {
auto display = std::string(env);
if (display.find("wayland-", 0) == 0) {
likelyWayland++; likelyWayland++;
} }
}
// Detect via Wayland socket // Detect via Wayland socket
auto socket = std::filesystem::path("/run/user") / std::to_string(uid()); auto socket = std::filesystem::path("/run/user") / std::to_string(uid());
@ -117,12 +123,12 @@ void Machine::fetchSession()
std::string command; std::string command;
std::getline(stream, command); std::getline(stream, command);
if (command == "Xwayland" || command == "hyprland" || command == "sway") { if (command == "Xwayland" || command == "sway" || command == "hyprland") {
likelyWayland++; likelyWayland++;
break; break;
} }
if (command == "Xorg" || command == "xinit" || command == "bspwm") { if (command == "Xorg" || command == "xinit" || command == "i3" || command == "bspwm") {
likelyWayland--; likelyWayland--;
break; break;
} }

Loading…
Cancel
Save