diff --git a/inc/lektor/config.def b/inc/lektor/config.def
index 35f43dfd14ea98201121a27713909788f94dd93f..5536e16fc39bddc825ab061781828d1877b82227 100644
--- a/inc/lektor/config.def
+++ b/inc/lektor/config.def
@@ -11,11 +11,6 @@
 comment("Can be DEBUG, INFO, WARN, ERROR.")
 value_opt("log", "INFO")
 
-/* EXTERNALS */
-section("externals")
-comment("All specified programs in this section must exists!")
-value("mkvpropedit", "/usr/bin/mkvpropedit")
-
 /* SERVER */
 section("server")
 value("max_clients", "16")
diff --git a/inc/lektor/mkv.h b/inc/lektor/mkv.h
index a9116732fecc681e0dce8d2ad446dea4bb77a330..b29d6029095c6b8be6a0d48f05dbcf774dea17b6 100644
--- a/inc/lektor/mkv.h
+++ b/inc/lektor/mkv.h
@@ -47,7 +47,7 @@ int kara_metadata_read(struct kara_metadata *dst, const char *filename);
 int kara_read_length(double *len, const char *filename);
 
 /* Write metadata to a mkv file. Returns 0 on success and -1 on error */
-int kara_metadata_write(struct kara_metadata *mdt, const char *filename, const char *mkvpropedit);
+int kara_metadata_write(struct kara_metadata *mdt, const char *filename);
 
 /* Concatenate the mdt in a string that is allocated and the user must free it */
 void mdtcat(struct kara_metadata *mdt, char **ret);
@@ -58,10 +58,10 @@ void mdtcat(struct kara_metadata *mdt, char **ret);
 int kara_metadata_equals(struct kara_metadata *mdt, const char *filename);
 
 /* Set the metadata for the file according to its path. */
-int metadata_set_file(char *karapath, const char *mkvpropedit);
+int metadata_set_file(char *karapath);
 
 /* Set metadata for files under a given directory by their path. */
-int metadata_set_directory(const char *kara_dir, const char *mkvpropedit);
+int metadata_set_directory(const char *kara_dir);
 
 /* Returns 0 if the correct magic number is found in the file, anything
  * otherwise. The correct magic number is `1A 45 DF A3`. */
diff --git a/src/main/lkt.c b/src/main/lkt.c
index 814178c09f3657c392f301ad8a7203b5f94072b0..8e4c1d38639debc4bf2e2fe9236138a3364eda99 100644
--- a/src/main/lkt.c
+++ b/src/main/lkt.c
@@ -565,10 +565,10 @@ __read_kara_and_exit(FILE *sock)
 
 ok:
     if (language[0])
-        printf("%s - %s / %s - %s - %s [ %s ]\n",
+        printf("%s - %s / %s - %s - %s [%s]\n",
                category, language, source, type, title, author);
     else if (category[0])
-        printf("%s / %s - %s - %s [ %s ]\n",
+        printf("%s / %s - %s - %s [%s]\n",
                category, source, type, title, author);
     else
         exit(EXIT_FAILURE);
@@ -749,9 +749,8 @@ status__(struct cmd_args *args)
     if (is_updating) {
         printf("Updating: %d/%d%s\n", update_tick, update_count,
                update_count >= update_tick ? "" : " (invalid)");
-    } else {
+    } else
         printf("Last update: %s\n", buff);
-    }
 
     /* If there is a kara loaded in mpv, get this kara. */
     if (!stopped) {
diff --git a/src/main/mkv_test.c b/src/main/mkv_test.c
deleted file mode 100644
index be64642ee2c7c4a49f70ad625e0087f01116cea7..0000000000000000000000000000000000000000
--- a/src/main/mkv_test.c
+++ /dev/null
@@ -1,58 +0,0 @@
-#define _POSIX_C_SOURCE 200809L
-
-#include <lektor/common.h>
-#include <lektor/segv.h>
-#include <lektor/mkv.h>
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <strings.h>
-#include <unistd.h>
-#include <signal.h>
-#include <limits.h>
-#include <ctype.h>
-
-int
-main(int argc, char **argv)
-{
-    if (argc != 2) {
-        puts("ARG MUST BE A FILENAME");
-        exit(EXIT_FAILURE);
-    }
-
-#define WHICH "TOTO"
-
-    struct kara_metadata mdt = {
-        .song_name   = WHICH "_SONG_NAME",
-        .source_name = WHICH "_SOURCE_NAME",
-        .category    = WHICH "_CAT_NAME",
-        .language    = WHICH "_LANG_NAME",
-        .author_name = WHICH "_AUTHOR_NAME",
-        .song_type   = WHICH "_TYPE ",
-        .song_number = 42,
-    };
-
-    puts(argv[1]);
-
-    if (kara_metadata_write(&mdt, argv[1], "/usr/bin/mkvpropedit")) {
-        puts("WRITE FAILED");
-        exit(EXIT_FAILURE);
-    }
-
-    if (kara_metadata_read(&mdt, argv[1])) {
-        puts("WRITE FAILED");
-        exit(EXIT_FAILURE);
-    }
-
-    fprintf(stdout, "title:\t%s\nsource:\t%s\ncat:\t%s\nlang:\t%s\nauthor:\t%s\ntype:\t%s%d\n",
-            mdt.song_name, mdt.source_name, mdt.category, mdt.language, mdt.author_name,
-            mdt.song_type, mdt.song_number);
-
-    return 0;
-
-    return 0;
-}
diff --git a/src/main/server.c b/src/main/server.c
index 2223ad06333c70003cd770b85bb034bea2cce259..64c15f3af6a61a6223667d86af08d7eef4a724e8 100644
--- a/src/main/server.c
+++ b/src/main/server.c
@@ -36,8 +36,8 @@
 extern char **environ;
 
 /* Disable echo in the console, only for the program */
-
 struct termios ___tty_cur, ___tty_save;
+static int ___tty_must_be_restored = 0;
 
 __attribute__((constructor))
 static void ___tty_disable_echo(void)
@@ -50,6 +50,7 @@ static void ___tty_disable_echo(void)
 
     GOTO_IF((tcsetattr(STDIN_FILENO, TCSAFLUSH, &___tty_cur) == -1),
             "Failed to turned of echo in termios flags", error);
+    ___tty_must_be_restored = 1;
 
     return;
 error:
@@ -60,6 +61,10 @@ error:
 __attribute__((destructor))
 static void ___tty_enable_echo(void)
 {
+    if (!___tty_must_be_restored) {
+        LOG_DEBUG("INIT", "No need to restore the tty");
+        return;
+    }
     if (tcsetattr(STDIN_FILENO, TCSANOW, &___tty_save) == -1)
         LOG_ERROR("INIT", "Failed to reset termios flags");
     errno = 0;
@@ -122,7 +127,7 @@ ___kill_klkt(void)
     } while (!WIFEXITED(status) && !WIFSIGNALED(status));
 }
 
-static inline int
+static int
 launch_klkt(va_list UNUSED *___args)
 {
     /* Check env variable! */
@@ -149,16 +154,18 @@ launch_klkt(va_list UNUSED *___args)
 
     bool appimage_once_goto = false;
 
+    /* No AppImage */
     if (appimage == NULL) {
-        /* No AppImage */
-retry_without_appimage:
+    retry_without_appimage:
         appimage_once_goto = true;
         if (read_self_exe(exe_path, LKT_LINE_MAX)) {
             LOG_ERROR("INIT", "Failed to get the current executable path, not patching the PATH");
             goto error;
         }
-    } else {
-        /* AppImage */
+    }
+
+    /* AppImage */
+    else {
         safe_strncpy(exe_path, appimage, LKT_LINE_MAX);
         LOG_DEBUG("INIT", "Running an AppImage, file is %s", appimage);
     }
@@ -210,6 +217,25 @@ end:
     return 0;
 }
 
+static inline void
+___resolve_appimage(void)
+{
+    /* Detect AppImage. Those env var names are defined for V2 AppImages, see
+     * https://docs.appimage.org/packaging-guide/environment-variables.html */
+    const char *env_APPIMAGE = getenv("APPIMAGE");
+    const char *env_APPDIR   = getenv("APPDIR");
+    const char *env_OWD      = getenv("OWD");
+    const char *env_ARGV0    = getenv("ARGV0");
+    if (env_APPDIR || env_ARGV0 || env_APPIMAGE || env_OWD) {
+        LOG_DEBUG("INIT", "AppImage build detected, here are some usefull env vars");
+        LOG_DEBUG("INIT", "AppImage env APPIMAGE = %s", env_APPIMAGE);
+        LOG_DEBUG("INIT", "AppImage env APPDIR   = %s", env_APPDIR);
+        LOG_DEBUG("INIT", "AppImage env OWD      = %s", env_OWD);
+        LOG_DEBUG("INIT", "AppImage env ARGV0    = %s", env_ARGV0);
+    } else
+        LOG_DEBUG("INIT", "No AppImage env variable found!");
+}
+
 int
 main(int argc, char *argv[])
 {
@@ -262,20 +288,8 @@ main(int argc, char *argv[])
     executable_name = exe;
     LOG_WARN("INIT", "The argv[0] from main is: %s", exe);
 
-    /* Detect AppImage. Those env var names are defined for V2 AppImages, see
-     * https://docs.appimage.org/packaging-guide/environment-variables.html */
-    char *env_APPIMAGE = getenv("APPIMAGE");
-    char *env_APPDIR   = getenv("APPDIR");
-    char *env_OWD      = getenv("OWD");
-    char *env_ARGV0    = getenv("ARGV0");
-    if (env_APPDIR || env_ARGV0 || env_APPIMAGE || env_OWD) {
-        LOG_DEBUG("INIT", "AppImage build detected, here are some usefull env vars");
-        LOG_DEBUG("INIT", "AppImage env APPIMAGE = %s", env_APPIMAGE);
-        LOG_DEBUG("INIT", "AppImage env APPDIR   = %s", env_APPDIR);
-        LOG_DEBUG("INIT", "AppImage env OWD      = %s", env_OWD);
-        LOG_DEBUG("INIT", "AppImage env ARGV0    = %s", env_ARGV0);
-    } else
-        LOG_DEBUG("INIT", "No AppImage env variable found!");
+    /* Resolves */
+    ___resolve_appimage();
 
     /* Init the server */
     struct lkt_state srv;
diff --git a/src/mkv/write.c b/src/mkv/write.c
index ad9de592e29ef96b8726a5976832d93d8f7986f4..cfc941c2d553325dc691ea71368a52d2ba92a58e 100644
--- a/src/mkv/write.c
+++ b/src/mkv/write.c
@@ -75,7 +75,8 @@ mkvpropedit__(const char *const args[])
             return false;
         }
 
-        execv(args[0], (char *const *) args);
+        /* Let exec search the PATH for us */
+        execvp(args[0], (char *const *) args);
         exit(EXIT_FAILURE);
     }
 
@@ -106,20 +107,19 @@ mkvpropedit__(const char *const args[])
 }
 
 int
-kara_metadata_write(struct kara_metadata *mdt, const char *filename,
-                    const char *mkvpropedit)
+kara_metadata_write(struct kara_metadata *mdt, const char *filename)
 {
     char tmpfilepath[PATH_MAX];
     char *const metadafilepath = &tmpfilepath[4];
-    const char *args1[] = { mkvpropedit, "-t", "all:", filename, NULL };
-    const char *args2[] = { mkvpropedit, "-t", tmpfilepath, filename, NULL };
+    const char *args1[] = { "mkvpropedit", "-t", "all:", filename, NULL };
+    const char *args2[] = { "mkvpropedit", "-t", tmpfilepath, filename, NULL };
     int fd, sta = -1;
 
     memset(tmpfilepath, 0, PATH_MAX);
     strncat(tmpfilepath, "all:/tmp/lektor.metadata.XXXXXX", PATH_MAX - 1);
 
     if ((fd = mkstemp(metadafilepath)) < 0) {
-        LOG_ERROR("WRITER", "Failed to create temporary file: %s",
+        LOG_ERROR("MKV", "Failed to create temporary file: %s",
                   strerror(errno));
         goto error;
     }
@@ -127,7 +127,7 @@ kara_metadata_write(struct kara_metadata *mdt, const char *filename,
     if (dprintf(fd, METADATA_TEMPLATE, mdt->source_name, mdt->song_name,
                 mdt->category, mdt->language, mdt->author_name, mdt->song_type,
                 mdt->song_number) < 0) {
-        LOG_ERROR("WRITER", "Failed to write to temporary file: %s",
+        LOG_ERROR("MKV", "Failed to write to temporary file: %s",
                   metadafilepath);
         goto error;
     }
@@ -155,7 +155,7 @@ metadata_from_path(char *const mkvfile, struct kara_metadata *meta)
 
     /* TODO: Import types and categories from the db */
     static const char *rgx =
-        "^/(.+)/(vo|va|amv|cdg|autres|vocaloid)/"
+        "^/(.+)/(vo|va|amv|cdg|autres|vtuber)/"
         "(jp|fr|en|ru|sp|it|ch|latin|multi|undefined)/(.+)/"
         "(.+) - (OP|ED|IS|AMV|PV|MV|LIVE)([[:digit:]]*) - (.+)\\.mkv$";
 
@@ -180,11 +180,11 @@ metadata_from_path(char *const mkvfile, struct kara_metadata *meta)
         memcpy(meta->song_name,   mkvfile + pmatch[8].rm_so, pmatch[8].rm_eo - pmatch[8].rm_so);
         // *INDENT-ON*
     } else if (REG_NOMATCH == reti) {
-        LOG_ERROR("WRITER", "No match for: %s", mkvfile);
+        LOG_ERROR("MKV", "No match for: %s", mkvfile);
         goto error;
     } else {
         regerror(reti, &regex, msgbuf, sizeof(msgbuf));
-        LOG_ERROR("WRITER", "Failed to execute regex: %s", msgbuf);
+        LOG_ERROR("MKV", "Failed to execute regex: %s", msgbuf);
         goto error;
     }
 
@@ -199,7 +199,7 @@ error:
 }
 
 int
-metadata_set_directory(const char *kara_dir, const char *mkvpropedit)
+metadata_set_directory(const char *kara_dir)
 {
     DIR *d;
     struct dirent *dir;
@@ -208,7 +208,7 @@ metadata_set_directory(const char *kara_dir, const char *mkvpropedit)
     memset(path, 0, PATH_MAX * sizeof(char));
 
     if (!(d = opendir(kara_dir))) {
-        LOG_ERROR("WRITER", "Failed to open directory '%s': %s", kara_dir,
+        LOG_ERROR("MKV", "Failed to open directory '%s': %s", kara_dir,
                   strerror(errno));
         return 1;
     }
@@ -220,25 +220,25 @@ metadata_set_directory(const char *kara_dir, const char *mkvpropedit)
 
         if (dir->d_type == DT_REG               &&
             metadata_from_path(path, &meta)     &&
-            ! kara_metadata_write(&meta, path, mkvpropedit))
+            ! kara_metadata_write(&meta, path))
             continue;
         else if (dir->d_type == DT_DIR          &&
                  !STR_MATCH(dir->d_name, ".")   &&
                  !STR_MATCH(dir->d_name, ".."))
-            metadata_set_directory(path, mkvpropedit);
+            metadata_set_directory(path);
     }
 
-    LOG_INFO("WRITER", "Passed directory '%s'", kara_dir);
+    LOG_INFO("MKV", "Passed directory '%s'", kara_dir);
     closedir(d);
     return false;
 }
 
 int
-metadata_set_file(char *karapath, const char *mkvpropedit)
+metadata_set_file(char *karapath)
 {
     struct kara_metadata meta;
 
     return metadata_from_path(karapath, &meta) &&
-           ! kara_metadata_write(&meta, karapath, mkvpropedit);
+           ! kara_metadata_write(&meta, karapath);
 }
 
diff --git a/src/module/module_repo.c b/src/module/module_repo.c
index d05c07a1a9bfdd123caf1dcf813dd53c495b49fb..b52ac104ef8928d215393748a4139936452ca909 100644
--- a/src/module/module_repo.c
+++ b/src/module/module_repo.c
@@ -46,7 +46,6 @@ struct kara {
     long id;
     long unix_timestamp;
     struct kara_metadata mdt;
-    char mkvpropedit[LKT_LINE_MAX];
     char url[LKT_LINE_MAX];
     char database_filepath[PATH_MAX];
     char filename[PATH_MAX];
@@ -349,7 +348,7 @@ __handle_got_json_dl(struct kara *kara, int current_id)
         return;
     }
 
-    if (kara_metadata_write(&kara->mdt, kara->filename, kara->mkvpropedit)) {
+    if (kara_metadata_write(&kara->mdt, kara->filename)) {
         LOG_WARN("REPO", "Could not write metadata to kara '%ld' with path '%s'",
                  kara->id, kara->filename);
         return;
@@ -455,9 +454,6 @@ __handle_got_json(volatile sqlite3 *db, struct module_repo_internal *repo, const
     };
 
     RETURN_UNLESS(len > 0, "Json invalid or array empty", NOTHING);
-    RETURN_UNLESS(database_config_get(db, "externals", "mkvpropedit",
-                                      kara.mkvpropedit, PATH_MAX),
-                  "Can't get the mkvpropedit executable path", NOTHING);
 
     /* Craft a folder path here, it will be used later */
     kara.kara_dir_len = strlen(repo->kara_dir);