diff --git a/README.md b/README.md
index 8523cbf..f9daa77 100644
--- a/README.md
+++ b/README.md
@@ -169,8 +169,15 @@ information:
*(Available from version 0.45.)*
+* `get_window_is_minimised`
+
+
+ Returns `true` if the window is minimised, `false` otherwise.
+
+ *(Available from version 0.46; -`ized` from 0.46)*
+
* `get_window_is_maximised`
-
Returns `true` if the window is maximised, `false` otherwise.
diff --git a/src/script.c b/src/script.c
index 399680b..3f77b8b 100644
--- a/src/script.c
+++ b/src/script.c
@@ -132,6 +132,8 @@ register_cfunctions(lua_State *lua)
DP2_REGISTER(lua, set_skip_tasklist);
DP2_REGISTER(lua, set_skip_pager);
+ DP2_REGISTER(lua, get_window_is_minimized);
+ lua_register(lua, "get_window_is_minimised", c_get_window_is_minimized);
DP2_REGISTER(lua, get_window_is_maximized);
lua_register(lua, "get_window_is_maximised", c_get_window_is_maximized);
diff --git a/src/script_functions.c b/src/script_functions.c
index 240d582..1fca008 100644
--- a/src/script_functions.c
+++ b/src/script_functions.c
@@ -781,7 +781,7 @@ int c_minimize(lua_State *lua)
if (!devilspie2_emulate) {
WnckWindow *window = get_current_window();
- if (window) {
+ if (window && FALSE == wnck_window_is_minimized(window)) {
wnck_window_minimize(window);
}
}
@@ -802,7 +802,7 @@ int c_unminimize(lua_State *lua)
if (!devilspie2_emulate) {
WnckWindow *window = get_current_window();
- if (window) {
+ if (window && TRUE == wnck_window_is_minimized(window)) {
wnck_window_unminimize (window, current_time());
}
}
@@ -1406,6 +1406,19 @@ int c_set_skip_pager(lua_State *lua)
return 0;
}
+int c_get_window_is_minimized(lua_State *lua)
+{
+ if (!check_param_count(lua, "get_window_is_minimized", 0)) {
+ return 0;
+ }
+
+ WnckWindow *window = get_current_window();
+ gboolean is_minimized = window ? wnck_window_is_minimized(window) : FALSE;
+
+ lua_pushboolean(lua, is_minimized);
+
+ return 1;
+}
/**
*
diff --git a/src/script_functions.h b/src/script_functions.h
index 6a2f2d0..8ed2d1c 100644
--- a/src/script_functions.h
+++ b/src/script_functions.h
@@ -86,6 +86,7 @@ int c_get_window_frame_extents(lua_State *lua);
int c_set_skip_tasklist(lua_State *lua);
int c_set_skip_pager(lua_State *lua);
+int c_get_window_is_minimized(lua_State *lua);
int c_get_window_is_maximized(lua_State *lua);
int c_get_window_is_maximized_vertically(lua_State *lua);
int c_get_window_is_maximized_horisontally(lua_State *lua); // deprecated