diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp index 2bd325e3..45fe9142 100644 --- a/hyprctl/main.cpp +++ b/hyprctl/main.cpp @@ -47,7 +47,7 @@ void log(std::string str) { if (quiet) return; - std::cout << str; + std::cout << str << "\n"; } std::string getRuntimeDir() { diff --git a/src/Compositor.cpp b/src/Compositor.cpp index c607dfb6..2ed1a951 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -311,10 +311,10 @@ void CCompositor::cleanEnvironment() { if (m_sWLRSession) { const auto CMD = #ifdef USES_SYSTEMD - "systemctl --user unset-environment DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME && hash " + "systemctl --user unset-environment DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME PATH XDG_DATA_DIRS && hash " "dbus-update-activation-environment 2>/dev/null && " #endif - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE QT_QPA_PLATFORMTHEME"; + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE QT_QPA_PLATFORMTHEME PATH XDG_DATA_DIRS"; g_pKeybindManager->spawn(CMD); } } @@ -569,10 +569,10 @@ void CCompositor::startCompositor() { if (m_sWLRSession /* Session-less Hyprland usually means a nest, don't update the env in that case */) { const auto CMD = #ifdef USES_SYSTEMD - "systemctl --user import-environment DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME && hash " + "systemctl --user import-environment DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME PATH XDG_DATA_DIRS && hash " "dbus-update-activation-environment 2>/dev/null && " #endif - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE QT_QPA_PLATFORMTHEME"; + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE QT_QPA_PLATFORMTHEME PATH XDG_DATA_DIRS"; g_pKeybindManager->spawn(CMD); } diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 55e44754..ff9d3a6d 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -1282,10 +1282,10 @@ void CConfigManager::dispatchExecOnce() { if (g_pCompositor->m_sWLRSession) handleRawExec("", #ifdef USES_SYSTEMD - "systemctl --user import-environment DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME && hash " + "systemctl --user import-environment DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME PATH XDG_DATA_DIRS && hash " "dbus-update-activation-environment 2>/dev/null && " #endif - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE QT_QPA_PLATFORMTHEME"); + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP HYPRLAND_INSTANCE_SIGNATURE QT_QPA_PLATFORMTHEME PATH XDG_DATA_DIRS"); firstExecDispatched = true; diff --git a/src/desktop/Workspace.hpp b/src/desktop/Workspace.hpp index ab3907aa..bb5cd441 100644 --- a/src/desktop/Workspace.hpp +++ b/src/desktop/Workspace.hpp @@ -4,7 +4,7 @@ #include #include "../defines.hpp" #include "DesktopTypes.hpp" -#include "helpers/MiscFunctions.hpp" +#include "../helpers/MiscFunctions.hpp" enum eFullscreenMode : int8_t { FULLSCREEN_INVALID = -1, diff --git a/src/protocols/ForeignToplevelWlr.cpp b/src/protocols/ForeignToplevelWlr.cpp index 14800393..2b378386 100644 --- a/src/protocols/ForeignToplevelWlr.cpp +++ b/src/protocols/ForeignToplevelWlr.cpp @@ -124,17 +124,19 @@ void CForeignToplevelHandleWlr::sendMonitor(CMonitor* pMonitor) { const auto CLIENT = resource->client(); - if (const auto PLASTMONITOR = g_pCompositor->getMonitorFromID(lastMonitorID); PLASTMONITOR) { + if (const auto PLASTMONITOR = g_pCompositor->getMonitorFromID(lastMonitorID); PLASTMONITOR && PROTO::outputs.contains(PLASTMONITOR->szName)) { const auto OLDRESOURCE = PROTO::outputs.at(PLASTMONITOR->szName)->outputResourceFrom(CLIENT); if (OLDRESOURCE) resource->sendOutputLeave(OLDRESOURCE->getResource()->resource()); } - const auto NEWRESOURCE = PROTO::outputs.at(pMonitor->szName)->outputResourceFrom(CLIENT); + if (PROTO::outputs.contains(pMonitor->szName)) { + const auto NEWRESOURCE = PROTO::outputs.at(pMonitor->szName)->outputResourceFrom(CLIENT); - if (NEWRESOURCE) - resource->sendOutputEnter(NEWRESOURCE->getResource()->resource()); + if (NEWRESOURCE) + resource->sendOutputEnter(NEWRESOURCE->getResource()->resource()); + } lastMonitorID = pMonitor->ID; } diff --git a/src/protocols/core/Compositor.cpp b/src/protocols/core/Compositor.cpp index 4bce3f58..691267b0 100644 --- a/src/protocols/core/Compositor.cpp +++ b/src/protocols/core/Compositor.cpp @@ -221,6 +221,11 @@ void CWLSurfaceResource::enter(SP monitor) { return; } + if (PROTO::outputs.at(monitor->szName)->isDefunct()) { + LOGM(ERR, "enter() called on a defunct output global"); + return; + } + auto output = PROTO::outputs.at(monitor->szName)->outputResourceFrom(pClient); if (!output || !output->getResource() || !output->getResource()->resource()) {