anr: open anr dialog on parent's workspace (#12509)
This commit is contained in:
parent
9817553c66
commit
cbfbd9712a
4 changed files with 147 additions and 15 deletions
|
|
@ -4,6 +4,8 @@
|
|||
#include <algorithm>
|
||||
#include <unistd.h>
|
||||
#include "../managers/eventLoop/EventLoopManager.hpp"
|
||||
#include "../desktop/rule/windowRule/WindowRule.hpp"
|
||||
#include "../desktop/rule/Engine.hpp"
|
||||
|
||||
using namespace Hyprutils::OS;
|
||||
|
||||
|
|
@ -119,6 +121,9 @@ SP<CPromise<std::string>> CAsyncDialogBox::open() {
|
|||
|
||||
m_selfReference = m_selfWeakReference.lock();
|
||||
|
||||
if (!m_execRuleToken.empty())
|
||||
proc.addEnv(Desktop::Rule::EXEC_RULE_ENV_NAME, m_execRuleToken);
|
||||
|
||||
if (!proc.runAsync()) {
|
||||
Log::logger->log(Log::ERR, "CAsyncDialogBox::open: failed to run async");
|
||||
wl_event_source_remove(m_readEventSource);
|
||||
|
|
@ -154,3 +159,9 @@ pid_t CAsyncDialogBox::getPID() const {
|
|||
SP<CAsyncDialogBox> CAsyncDialogBox::lockSelf() {
|
||||
return m_selfWeakReference.lock();
|
||||
}
|
||||
|
||||
void CAsyncDialogBox::setExecRule(std::string&& s) {
|
||||
auto rule = Desktop::Rule::CWindowRule::buildFromExecString(std::move(s));
|
||||
m_execRuleToken = rule->execToken();
|
||||
Desktop::Rule::ruleEngine()->registerRule(std::move(rule));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ class CAsyncDialogBox {
|
|||
void kill();
|
||||
bool isRunning() const;
|
||||
pid_t getPID() const;
|
||||
void setExecRule(std::string&& s);
|
||||
|
||||
SP<CAsyncDialogBox> lockSelf();
|
||||
|
||||
|
|
@ -41,7 +42,8 @@ class CAsyncDialogBox {
|
|||
pid_t m_dialogPid = 0;
|
||||
wl_event_source* m_readEventSource = nullptr;
|
||||
Hyprutils::OS::CFileDescriptor m_pipeReadFd;
|
||||
std::string m_stdout = "";
|
||||
std::string m_stdout = "";
|
||||
std::string m_execRuleToken = "";
|
||||
|
||||
const std::string m_title;
|
||||
const std::string m_description;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue