feat(niri): niri depends on socket
Don't attempt to use niri modules when socket connection fails. Prevents
rendering modules when running another compositor. In same concept as
previous Hyprland change
4295faa7c4
Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
This commit is contained in:
@ -24,8 +24,7 @@ int IPC::connectToSocket() {
|
|||||||
const char* socket_path = getenv("NIRI_SOCKET");
|
const char* socket_path = getenv("NIRI_SOCKET");
|
||||||
|
|
||||||
if (socket_path == nullptr) {
|
if (socket_path == nullptr) {
|
||||||
spdlog::warn("Niri is not running, niri IPC will not be available.");
|
throw std::runtime_error("Niri IPC: NIRI_SOCKET was not set! (Is Niri running?)");
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sockaddr_un addr;
|
struct sockaddr_un addr;
|
||||||
@ -54,15 +53,9 @@ int IPC::connectToSocket() {
|
|||||||
void IPC::startIPC() {
|
void IPC::startIPC() {
|
||||||
// will start IPC and relay events to parseIPC
|
// will start IPC and relay events to parseIPC
|
||||||
|
|
||||||
std::thread([&]() {
|
int socketfd = connectToSocket();
|
||||||
int socketfd;
|
|
||||||
try {
|
std::thread([this, socketfd]() {
|
||||||
socketfd = connectToSocket();
|
|
||||||
} catch (std::exception& e) {
|
|
||||||
spdlog::error("Niri IPC: failed to start, reason: {}", e.what());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (socketfd == -1) return;
|
|
||||||
|
|
||||||
spdlog::info("Niri IPC starting");
|
spdlog::info("Niri IPC starting");
|
||||||
|
|
||||||
@ -242,7 +235,6 @@ void IPC::unregisterForIPC(EventHandler* ev_handler) {
|
|||||||
|
|
||||||
Json::Value IPC::send(const Json::Value& request) {
|
Json::Value IPC::send(const Json::Value& request) {
|
||||||
int socketfd = connectToSocket();
|
int socketfd = connectToSocket();
|
||||||
if (socketfd == -1) throw std::runtime_error("Niri is not running");
|
|
||||||
|
|
||||||
auto unix_istream = Gio::UnixInputStream::create(socketfd, true);
|
auto unix_istream = Gio::UnixInputStream::create(socketfd, true);
|
||||||
auto unix_ostream = Gio::UnixOutputStream::create(socketfd, false);
|
auto unix_ostream = Gio::UnixOutputStream::create(socketfd, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user