diff --git a/src/base/commands.c b/src/base/commands.c
index 4d742a503b917c7e572f82d34a1ca1a10e5f8146..c029d911daa0b2b136fc265592e57251f493f498 100644
--- a/src/base/commands.c
+++ b/src/base/commands.c
@@ -161,7 +161,12 @@ command_next(struct lkt_state *srv, char __attribute__((unused)) *args[LKT_MESSA
     char filepath[PATH_MAX];
     if (!database_queue_next(srv->db, filepath))
         return false;
-    return ! MOD_CALL(srv->window_mod, "load", filepath);
+    if (MOD_CALL(srv->window_mod, "load", filepath))
+        return false;
+    else {
+        config_handle_hook(srv->db, "kara_load", 0);
+        return true;
+    }
 }
 
 bool
@@ -180,7 +185,12 @@ command_previous(struct lkt_state *srv, char __attribute__((unused)) *args[LKT_M
     char filepath[PATH_MAX];
     if (!database_queue_prev(srv->db, filepath))
         return false;
-    return ! MOD_CALL(srv->window_mod, "load", filepath);
+    if (MOD_CALL(srv->window_mod, "load", filepath))
+        return false;
+    else {
+        config_handle_hook(srv->db, "kara_load", 0);
+        return true;
+    }
 }
 
 static inline bool
@@ -210,7 +220,14 @@ command_play(struct lkt_state *srv, char __attribute__((unused)) *args[LKT_MESSA
     database_queue_stop(srv->db);
     RETURN_IF(MOD_CALL(srv->window_mod, "new", &srv->queue, srv->db), "Can't create window", false);
     srv->mpd_idle_events |= MPD_IDLE_PLAYER;
-    return __play_that_file(srv, pos);
+
+    /* Hooks */
+    if (__play_that_file(srv, pos)) {
+        config_handle_hook(srv->db, "queue_begin", 0);
+        config_handle_hook(srv->db, "kara_load", 0);
+        return true;
+    } else
+        return false;
 }
 
 bool
@@ -238,7 +255,14 @@ command_playid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX])
     srv->mpd_idle_events |= MPD_IDLE_PLAYER;
     RETURN_IF(MOD_CALL(srv->window_mod, "new", &srv->queue, srv->db), "Can't create window", false);
     database_queue_seekid(srv->db, (int) id, &pos);
-    return __play_that_file(srv, pos);
+
+    /* Hooks */
+    if (__play_that_file(srv, pos)) {
+        config_handle_hook(srv->db, "queue_begin", 0);
+        config_handle_hook(srv->db, "kara_load", 0);
+        return true;
+    } else
+        return false;
 }