@@ -1723,7 +1723,7 @@ SDispatchResult CKeybindManager::changeGroupActive(std::string args) {
1723
1723
// index starts from '1'; '0' means last window
1724
1724
const int INDEX = std::stoi (args);
1725
1725
if (INDEX > PWINDOW->getGroupSize ())
1726
- return {};
1726
+ return {. success = false , . error = " Index too big, there aren't that many windows in this group " };
1727
1727
if (INDEX == 0 )
1728
1728
PWINDOW->setGroupCurrent (PWINDOW->getGroupTail ());
1729
1729
else
@@ -1986,7 +1986,7 @@ SDispatchResult CKeybindManager::moveCurrentWorkspaceToMonitor(std::string args)
1986
1986
1987
1987
SDispatchResult CKeybindManager::moveWorkspaceToMonitor (std::string args) {
1988
1988
if (!args.contains (' ' ))
1989
- return {};
1989
+ return {. success = false , . error = " Invalid arguments, expected: workspace monitor " };
1990
1990
1991
1991
std::string workspace = args.substr (0 , args.find_first_of (' ' ));
1992
1992
std::string monitor = args.substr (args.find_first_of (' ' ) + 1 );
@@ -2129,13 +2129,16 @@ SDispatchResult CKeybindManager::forceRendererReload(std::string args) {
2129
2129
SDispatchResult CKeybindManager::resizeActive (std::string args) {
2130
2130
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow .lock ();
2131
2131
2132
- if (!PLASTWINDOW || PLASTWINDOW->isFullscreen ())
2133
- return {};
2132
+ if (!PLASTWINDOW)
2133
+ return {.success = false , .error = " No window found" };
2134
+
2135
+ if (PLASTWINDOW->isFullscreen ())
2136
+ return {.success = false , .error = " Window is fullscreen" };
2134
2137
2135
2138
const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative (args, PLASTWINDOW->m_vRealSize ->goal ());
2136
2139
2137
2140
if (SIZ.x < 1 || SIZ.y < 1 )
2138
- return {};
2141
+ return {. success = false , . error = " Invalid size provided " };
2139
2142
2140
2143
g_pLayoutManager->getCurrentLayout ()->resizeActiveWindow (SIZ - PLASTWINDOW->m_vRealSize ->goal ());
2141
2144
@@ -2148,8 +2151,11 @@ SDispatchResult CKeybindManager::resizeActive(std::string args) {
2148
2151
SDispatchResult CKeybindManager::moveActive (std::string args) {
2149
2152
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow .lock ();
2150
2153
2151
- if (!PLASTWINDOW || PLASTWINDOW->isFullscreen ())
2152
- return {};
2154
+ if (!PLASTWINDOW)
2155
+ return {.success = false , .error = " No window found" };
2156
+
2157
+ if (PLASTWINDOW->isFullscreen ())
2158
+ return {.success = false , .error = " Window is fullscreen" };
2153
2159
2154
2160
const auto POS = g_pCompositor->parseWindowVectorArgsRelative (args, PLASTWINDOW->m_vRealPosition ->goal ());
2155
2161
@@ -2171,7 +2177,7 @@ SDispatchResult CKeybindManager::moveWindow(std::string args) {
2171
2177
}
2172
2178
2173
2179
if (PWINDOW->isFullscreen ())
2174
- return {};
2180
+ return {. success = false , . error = " Window is fullscreen " };
2175
2181
2176
2182
const auto POS = g_pCompositor->parseWindowVectorArgsRelative (MOVECMD, PWINDOW->m_vRealPosition ->goal ());
2177
2183
@@ -2193,12 +2199,12 @@ SDispatchResult CKeybindManager::resizeWindow(std::string args) {
2193
2199
}
2194
2200
2195
2201
if (PWINDOW->isFullscreen ())
2196
- return {};
2202
+ return {. success = false , . error = " Window is fullscreen " };
2197
2203
2198
2204
const auto SIZ = g_pCompositor->parseWindowVectorArgsRelative (MOVECMD, PWINDOW->m_vRealSize ->goal ());
2199
2205
2200
2206
if (SIZ.x < 1 || SIZ.y < 1 )
2201
- return {};
2207
+ return {. success = false , . error = " Invalid size provided " };
2202
2208
2203
2209
g_pLayoutManager->getCurrentLayout ()->resizeActiveWindow (SIZ - PWINDOW->m_vRealSize ->goal (), CORNER_NONE, PWINDOW);
2204
2210
@@ -2244,7 +2250,7 @@ SDispatchResult CKeybindManager::focusWindow(std::string regexp) {
2244
2250
const auto PWINDOW = g_pCompositor->getWindowByRegex (regexp);
2245
2251
2246
2252
if (!PWINDOW)
2247
- return {};
2253
+ return {. success = false , . error = " No such window found " };
2248
2254
2249
2255
Debug::log (LOG, " Focusing to window name: {}" , PWINDOW->m_szTitle );
2250
2256
@@ -2304,7 +2310,7 @@ SDispatchResult CKeybindManager::tagWindow(std::string args) {
2304
2310
else if (vars.size () == 2 )
2305
2311
PWINDOW = g_pCompositor->getWindowByRegex (vars[1 ]);
2306
2312
else
2307
- return {};
2313
+ return {. success = false , . error = " Invalid number of arguments, expected 1 or 2 arguments " };
2308
2314
2309
2315
if (PWINDOW && PWINDOW->m_tags .applyTag (vars[0 ])) {
2310
2316
PWINDOW->updateDynamicRules ();
@@ -2674,7 +2680,10 @@ SDispatchResult CKeybindManager::swapActiveWorkspaces(std::string args) {
2674
2680
const auto PMON1 = g_pCompositor->getMonitorFromString (MON1);
2675
2681
const auto PMON2 = g_pCompositor->getMonitorFromString (MON2);
2676
2682
2677
- if (!PMON1 || !PMON2 || PMON1 == PMON2)
2683
+ if (!PMON1 || !PMON2)
2684
+ return {.success = false , .error = " No such monitor found" };
2685
+
2686
+ if (PMON1 == PMON2)
2678
2687
return {};
2679
2688
2680
2689
g_pCompositor->swapActiveWorkspaces (PMON1, PMON2);
@@ -2697,7 +2706,7 @@ SDispatchResult CKeybindManager::pinActive(std::string args) {
2697
2706
}
2698
2707
2699
2708
if (!PWINDOW->m_bIsFloating || PWINDOW->isFullscreen ())
2700
- return {};
2709
+ return {. success = false , . error = " Window does not qualify to be pinned " };
2701
2710
2702
2711
PWINDOW->m_bPinned = !PWINDOW->m_bPinned ;
2703
2712
@@ -2825,8 +2834,11 @@ SDispatchResult CKeybindManager::lockGroups(std::string args) {
2825
2834
SDispatchResult CKeybindManager::lockActiveGroup (std::string args) {
2826
2835
const auto PWINDOW = g_pCompositor->m_pLastWindow .lock ();
2827
2836
2828
- if (!PWINDOW || !PWINDOW->m_sGroupData .pNextWindow .lock ())
2829
- return {};
2837
+ if (!PWINDOW)
2838
+ return {.success = false , .error = " No window found" };
2839
+
2840
+ if (!PWINDOW->m_sGroupData .pNextWindow .lock ())
2841
+ return {.success = false , .error = " Not a group" };
2830
2842
2831
2843
const auto PHEAD = PWINDOW->getGroupHead ();
2832
2844
@@ -2947,7 +2959,7 @@ SDispatchResult CKeybindManager::moveOutOfGroup(std::string args) {
2947
2959
static auto PIGNOREGROUPLOCK = CConfigValue<Hyprlang::INT>(" binds:ignore_group_lock" );
2948
2960
2949
2961
if (!*PIGNOREGROUPLOCK && g_pKeybindManager->m_bGroupsLocked )
2950
- return {};
2962
+ return {. success = false , . error = " Groups locked " };
2951
2963
2952
2964
PHLWINDOW PWINDOW = nullptr ;
2953
2965
@@ -2956,8 +2968,11 @@ SDispatchResult CKeybindManager::moveOutOfGroup(std::string args) {
2956
2968
else
2957
2969
PWINDOW = g_pCompositor->m_pLastWindow .lock ();
2958
2970
2959
- if (!PWINDOW || !PWINDOW->m_sGroupData .pNextWindow .lock ())
2960
- return {};
2971
+ if (!PWINDOW)
2972
+ return {.success = false , .error = " No window found" };
2973
+
2974
+ if (!PWINDOW->m_sGroupData .pNextWindow .lock ())
2975
+ return {.success = false , .error = " Window not in a group" };
2961
2976
2962
2977
moveWindowOutOfGroup (PWINDOW);
2963
2978
@@ -2975,7 +2990,10 @@ SDispatchResult CKeybindManager::moveWindowOrGroup(std::string args) {
2975
2990
}
2976
2991
2977
2992
const auto PWINDOW = g_pCompositor->m_pLastWindow .lock ();
2978
- if (!PWINDOW || PWINDOW->isFullscreen ())
2993
+ if (!PWINDOW)
2994
+ return {.success = false , .error = " No window found" };
2995
+
2996
+ if (PWINDOW->isFullscreen ())
2979
2997
return {};
2980
2998
2981
2999
if (!*PIGNOREGROUPLOCK && g_pKeybindManager->m_bGroupsLocked ) {
@@ -3064,8 +3082,11 @@ SDispatchResult CKeybindManager::moveGroupWindow(std::string args) {
3064
3082
3065
3083
const auto PLASTWINDOW = g_pCompositor->m_pLastWindow .lock ();
3066
3084
3067
- if (!PLASTWINDOW || !PLASTWINDOW->m_sGroupData .pNextWindow .lock ())
3068
- return {};
3085
+ if (!PLASTWINDOW)
3086
+ return {.success = false , .error = " No window found" };
3087
+
3088
+ if (!PLASTWINDOW->m_sGroupData .pNextWindow .lock ())
3089
+ return {.success = false , .error = " Window not in a group" };
3069
3090
3070
3091
if ((!BACK && PLASTWINDOW->m_sGroupData .pNextWindow ->m_sGroupData .head ) || (BACK && PLASTWINDOW->m_sGroupData .head )) {
3071
3092
std::swap (PLASTWINDOW->m_sGroupData .head , PLASTWINDOW->m_sGroupData .pNextWindow ->m_sGroupData .head );
0 commit comments