diff --git a/client/main.js b/client/main.js
index 24048160922e65d0abe138e35f6394383dd4f208..2d1d9db1973ba58428dff9bcb281f47c9d1ad94a 100644
--- a/client/main.js
+++ b/client/main.js
@@ -4,7 +4,7 @@ const port = 3000;
 
 function launcher() {
     const app = express();
-    logger.debug(`Express started on localhost:${port}`);
+    logger.debug('express', `Express started on localhost:${port}`);
 
     var publicRouter = require('./routes/public.js');
 
@@ -14,7 +14,7 @@ function launcher() {
     app.use('/', publicRouter);
 
     app.listen(port, () => {
-        logger.info(`Express listening on port ${port}`);
+        logger.info('express', `Express listening on port ${port}`);
     });
 }
 
diff --git a/common/db.js b/common/db.js
index c0a666547df546f283f3b9c2ff03f47862836c2d..6d8b1a3636579b76e369804a2aaf99557a22489a 100644
--- a/common/db.js
+++ b/common/db.js
@@ -46,28 +46,32 @@ class KaraDatabase {
     constructor(karaPath) {
         this.m_karaPath = karaPath;
         this.m_db = new sqlite3.Database(this.m_karaPath);
-        logger.log('info', 'Create database from file ' + karaPath);
+        logger.info('db', 'Create database from file ' + karaPath);
     }
 
     /* Call this as a destructor */
     close() {
         this.m_db.close();
-        logger.log('info', `Close database ${this.m_karaPath}`);
+        logger.info('db', `Close database ${this.m_karaPath}`);
     }
 
     /* Search from the kara table, a string. Can be anything (query, name,
      * language, source, etc).
-     * - queryString: String => a promize, callback with [(id: Int, string,
-     *   cat, type, language, author, title, source)] */
-    search(queryString) {
+     *  - queryString: String
+     *  - limit: Int | null -> maximal number of results
+     *  - offset: Int | null -> offset in the search
+     * => a promize, callback with [(id: Int, string, cat, type, language, author, title, source)] */
+    search(queryString, offset = null, limit = null) {
         var __ret = [];
-        let __sqlQuery = `SELECT id, string,
+        var __sqlQuery = `SELECT id, string,
                             category AS cat,
                             (song_type || song_number) AS type,
                             language, author_name AS author,
                             song_name AS title, source_name AS source
                           FROM kara
                           WHERE string LIKE ? OR author_name COLLATE nocase = ?`;
+        if (offset != null && limit != null)
+            __sqlQuery += ` LIMIT ${offset}, ${limit}`;
 
         function __getRecords(db) {
             return new Promise(resolv => {
@@ -76,7 +80,7 @@ class KaraDatabase {
                     [`%${queryString}%`, queryString],
                     (err, rows) => {
                         if (err) {
-                            logger.error(err);
+                            logger.error('db', err);
                             throw err;
                         }
                         rows.forEach(row => {
@@ -92,22 +96,25 @@ class KaraDatabase {
     }
 
     /* List all the kara in the db.
-     * => a promize, callback with [(id: Int, string, cat, type, language,
-     *    author, title, source)] */
-    all() {
+     *  - limit: Int | null -> maximal number of results
+     *  - offset: Int | null -> offset in the search
+     * => a promize, callback with [(id: Int, string, cat, type, language, author, title, source)] */
+    all(offset = null, limit = null) {
         var __ret = [];
-        let __sqlQuery = `SELECT id, string,
+        var __sqlQuery = `SELECT id, string,
                             category AS cat,
                             (song_type || song_number) AS type,
                             language, author_name AS author,
                             song_name AS title, source_name AS source
-                          FROM kara;`;
+                          FROM kara`;
+        if (offset != null && limit != null)
+            __sqlQuery += ` LIMIT ${offset}, ${limit}`;
 
         function __getRecords(db) {
             return new Promise(resolv => {
                 db.all(__sqlQuery, [], (err, rows) => {
                     if (err) {
-                        logger.error(err);
+                        logger.error('db', err);
                         throw err;
                     }
                     rows.forEach(row => {
@@ -122,9 +129,9 @@ class KaraDatabase {
     }
 
     /* List all the next karas in the queue.
-     * - first: Integer => the first kara to consider being in the queue (the
-     *   current one, starts ad 0)
-     * - count: Integer => the number of karas of the queue to load.
+     * -  first: Integer => the first kara to consider being in the queue (the
+     *    current one, starts ad 0)
+     * -  count: Integer => the number of karas of the queue to load.
      * => a promize, callback with [(id: Int, string, cat, type, language,
      *    author, title, source, position: Int)] */
     queue(first, count) {
@@ -147,7 +154,7 @@ class KaraDatabase {
             return new Promise(resolv => {
                 db.all(__sqlQuery, [], (err, rows) => {
                     if (err) {
-                        logger.error(err);
+                        logger.error('db', err);
                         throw err;
                     }
                     rows.forEach(row => {
diff --git a/common/lkt.js b/common/lkt.js
index 916f2b9dbd9ed91d850c4b089519e5767aaabcbf..903ced8456d558956af9aa1f47ed6cb005f72169 100644
--- a/common/lkt.js
+++ b/common/lkt.js
@@ -30,28 +30,35 @@ class LktClient {
             writable: true,
         };
 
-        logger.debug('Creating the lektor client');
+        logger.debug('lkt', 'Creating the lektor client');
         this.m_socket.setTimeout(3000);
         this.m_socket.setEncoding('utf8');
         this.m_socket.on('timeout', () => {
             logger.error(
+                'lkt',
                 `Got timeout while connecting to localhost:${this.m_port}`
             );
             this.m_socket.end();
         });
 
         this.m_socket.on('ready', () => {
-            logger.debug(`Ready to use socker with localhost:${this.m_port}`);
+            logger.debug(
+                'lkt',
+                `Ready to use socker with localhost:${this.m_port}`
+            );
             this.m_online = true;
         });
 
         this.m_socket.on('end', () => {
-            logger.info(`Disconnected from server localhost:${this.m_port}`);
+            logger.info(
+                'lkt',
+                `Disconnected from server localhost:${this.m_port}`
+            );
             this.m_online = false;
         });
 
         this.m_socket.on('error', err => {
-            logger.error(`${err}`);
+            logger.error('lkt', `${err}`);
             if (this.m_online) {
                 this.m_socket.destroy();
                 this.m_online = false;
@@ -59,12 +66,12 @@ class LktClient {
         });
 
         this.m_socket.on('close', () => {
-            logger.info(`Socket localhost:${this.m_port} closed`);
+            logger.info('lkt', `Socket localhost:${this.m_port} closed`);
             this.m_online = false;
         });
 
         this.m_socket.connect(sockopt, () => {
-            logger.info(`Socket connected to localhost:${this.m_port}`);
+            logger.info('lkt', `Socket connected to localhost:${this.m_port}`);
             this.m_online = true;
         });
 
@@ -75,10 +82,10 @@ class LktClient {
      * Note: Prefere using the static methods. */
     close() {
         if (this.m_online) {
-            logger.debug('Requesting socket shutdown');
+            logger.debug('lkt', 'Requesting socket shutdown');
             this.m_socket.destroy();
         } else {
-            logger.debug('Socket already closed');
+            logger.debug('lkt', 'Socket already closed');
         }
         this.m_closed = true;
     }
diff --git a/common/logger.js b/common/logger.js
index 995a80717855bdf7ddd642d78b58a6449830e3cb..29a747676f1022f00291c433e5eb94401d206772 100644
--- a/common/logger.js
+++ b/common/logger.js
@@ -18,7 +18,6 @@ const __loggerCustomLevels = {
     levels: {
         debug: 3,
         info: 2,
-        warn: 1,
         warning: 1,
         error: 0,
     },
@@ -31,7 +30,7 @@ const __loggerCustomLevels = {
     },
 };
 
-var logger = winston.createLogger({
+var __logger = winston.createLogger({
     transports: [
         new winston.transports.File({
             eol: '\n',
@@ -55,6 +54,23 @@ var logger = winston.createLogger({
     ),
 });
 
-Object.assign(logger, { logfile: './lektor-app.log' });
+var logger = {
+    logfile: './lektor-app.log',
+    debug: (cat, lg) => {
+        __logger.debug(`${cat.padEnd(10)} | ${lg}`);
+    },
+    info: (cat, lg) => {
+        __logger.info(`${cat.padEnd(10)} | ${lg}`);
+    },
+    warn: (cat, lg) => {
+        __logger.warning(`${cat.padEnd(10)} | ${lg}`);
+    },
+    warning: (cat, lg) => {
+        __logger.warning(`${cat.padEnd(10)} | ${lg}`);
+    },
+    error: (cat, lg) => {
+        __logger.error(`${cat.padEnd(10)} | ${lg}`);
+    },
+};
 
 module.exports = global.logger = module.exports = logger;
diff --git a/instance/index.html b/instance/index.html
index ef0eaf399c3820e1ea5fee33011542da3a4caf63..bb77bf419e40a1d22604be937b4ffc304aa30998 100644
--- a/instance/index.html
+++ b/instance/index.html
@@ -3,8 +3,9 @@
     <head>
         <meta charset="UTF-8" />
         <title>Lektor App</title>
-        <!-- https://electronjs.org/docs/tutorial/security#csp-meta-tag -->
-        <script src="../style/jquery/jquery-3.5.1.js"></script>
+        <script>
+            window.$ = window.jQuery = require('../style/jquery/jquery-3.5.1.js');
+        </script>
         <script src="../style/bootstrap-4.5.2-dist/js/bootstrap.min.js"></script>
         <link
             rel="stylesheet"
@@ -21,6 +22,7 @@
                 display: none;
             }
         </style>
+        <script></script>
     </head>
     <body>
         <div id="mainFrame" class="container-fluid">
@@ -29,14 +31,14 @@
                 class="d-flex flex-row bd-highlight mb-3 row card"
             ></div>
             <div id="panelWrapper" class="row">
-                <div
+                <ul
                     id="panelLeft"
                     class="col panel d-flex flex-column bd-highlight mb-3"
-                ></div>
-                <div
+                ></ul>
+                <ul
                     id="panelRight"
                     class="col panel d-flex flex-column bd-highlight mb-3"
-                ></div>
+                ></ul>
             </div>
             <div
                 id="progressBar"
diff --git a/instance/main.js b/instance/main.js
index 9d491f0de62d9245859b0f1ab256f2655ea9b660..bf1f6b234724d12f962bf941953246c05e68b706 100644
--- a/instance/main.js
+++ b/instance/main.js
@@ -1,4 +1,5 @@
 const { ipcRenderer } = require('electron');
+const ejs = require('ejs');
 const logger = require('../common/logger.js');
 
 /* prettier-ignore */
@@ -13,6 +14,7 @@ const buttonList = [
     [ 'sleft',  `<i class="fas fa-tag"></i>`,           'selectPlaylist',   'Playlist search'       ],
     [ 'sleft',  `<i class="fas fa-bookmark"></i>`,      'selectPool',       'Pool search'           ],
 
+    [ 'right',  `<i class="fas fa-compass"></i>`,       'openKurisu',       'Kurisu in a new page'  ],
     [ 'right',  `<i class="fas fa-user-friends"></i>`,  'openUserView',     'Open client view'      ],
     [ 'right',  `<i class="fas fa-music"></i>`,         'openMdtView',      'Open metadata view'    ],
     [ 'right',  `<i class="fas fa-sync-alt"></i>`,      'reloadQueue',      'Reload the queue'      ],
@@ -42,6 +44,7 @@ window.onload = () => {
     addIpcToButton('selectPool', ['select-pool']);
     addIpcToButton('openMdtView', ['select-mdt']);
 
+    addIpcToButton('openKurisu', ['toggle-kurisu']);
     addIpcToButton('openUserView', ['toggle-client-view']);
     addIpcToButton('reloadQueue', ['reload-queue-request']);
     addIpcToButton('reloadDb', ['reload-db-request', 'reload-queue-request']);
@@ -49,11 +52,31 @@ window.onload = () => {
     logger.debug('Window loaded');
     setTimeout(()=>ipcRenderer.send('reload-queue-request'),500);
     setInterval(()=>ipcRenderer.send('verify-queue-reloaded-request'),1000);
-}
+    logger.debug('instance', 'Window loaded');
+
+    $('#filterInput').on('keypress', e => {
+        /* On 'Return'. */
+        if (e.which != 13) return;
+        ipcRenderer.send('reload-db-request', $('#filterInput').val());
+    });
+
+    document.addEventListener(
+        'keydown',
+        e => {
+            if (e.ctrlKey && e.keyCode == 70) {
+                logger.debug('instance', 'Focus find bar');
+                $('#filterInput').focus();
+            }
+        },
+        false
+    );
+};
+
 /* Create the button list */
 function createButtonList(list) {
     function action(ipc, argument) {
         logger.error(
+            'instance',
             'The action function builder for control buttons is not implemented'
         );
     }
@@ -66,6 +89,7 @@ function createButtonList(list) {
                               <button id="${btn[2]}" type="button" class="btn btn-primary p-2 bd-highlight"
                                       data-toggle="tooltip" data-placement="bottom" title="${btn[3]}">${btn[1]}</button>`;
             logger.debug(
+                'instance',
                 `Create button for "${btn[1]}" with id "${btn[2]} at the left"`
             );
         } else if (btn[0] == 'right') {
@@ -73,6 +97,7 @@ function createButtonList(list) {
                                <button id="${btn[2]}" type="button" class="btn btn-secondary p-2 bd-highlight"
                                        data-toggle="tooltip" data-placement="bottom" title="${btn[3]}">${btn[1]}</button>`;
             logger.debug(
+                'instance',
                 `Create button for "${btn[1]}" with id "${btn[2]} at the right"`
             );
         } else if (btn[0] == 'sleft') {
@@ -80,62 +105,59 @@ function createButtonList(list) {
                                <button id="${btn[2]}" type="button" class="btn btn-secondary p-2 bd-highlight"
                                        data-toggle="tooltip" data-placement="bottom" title="${btn[3]}">${btn[1]}</button>`;
             logger.debug(
+                'instance',
                 `Create button for "${btn[1]}" with id "${btn[2]} at the right"`
             );
         } else {
-            logger.warn(`Unknown button type ${btn[0]} in top bar builder`);
+            logger.warn(
+                'instance',
+                `Unknown button type ${btn[0]} in top bar builder`
+            );
         }
     });
-    document.getElementById(
-        'buttonPanelListLeft'
-    ).innerHTML = `${renderHtmlLeft}${renderHtmlSLeft}
-         <h5 class="text-capitalize font-weight-bold text-center p-2 mr-auto ml-auto bd-highlight align-middle"
-             style="-webkit-user-select: none; -webkit-app-region: drag;">
-         lektor-app admin iterface</h5>
-         ${renderHtmlRight}`;
+    document.getElementById('buttonPanelListLeft').innerHTML = `
+        <div class="btn-group" role="group">${renderHtmlLeft}</div>
+        <div class="btn-group" role="group">${renderHtmlSLeft}</div>
+        <div class="p-1 bd-highlight mb-1 mr-auto ml-auto" style="width: 60%;">
+            <input id="filterInput" type="text" class="form-control filterInput" placeholder="Filter...">
+        </div>
+        <div class="btn-group" role="group">${renderHtmlRight}</div>`;
 }
 
 /* Create the left panel */
 ipcRenderer.on('reload-db-responce', (event, arg) => {
-    var karaList = '';
-    logger.debug(`Web page got reload-db`);
+    logger.debug('instance', `Web page got reload-db`);
+    document.getElementById('panelLeft').innerHTML = '';
     arg.forEach(kara => {
-        karaList += `<div class="card p-2 bd-highlight shadow-none d-flex flex-row bd-highlight mb-3 border border-info karaCard">
-            <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.language}</b></span>
-            <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.cat}</b></span>
-            <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.type}</b></span>
-            <div class="karaElement p-2 bd-highlight mr-auto"><b>${kara.source}<br> ${kara.title}</b> <i>[${kara.author}]</i></div>
-            <div class="karaElement p-2 bd-highlight">
-                <div class="d-flex flex-row bd-highlight mb-3 btn-group karaActionBtnGroup" role="group">
-                    <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-plus"></i></button>
-                    <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-level-up-alt"></i></button>
-                </div>
-            </div>
-            </div>`;
+        ejs.renderFile(
+            __dirname + '/views/karaListItem.ejs',
+            { kara: kara },
+            (err, data) => {
+                if (err) logger.error('instance', err);
+                document.getElementById('panelLeft').innerHTML = `
+                ${document.getElementById('panelLeft').innerHTML}
+                ${data}`;
+            }
+        );
     });
-    document.getElementById('panelLeft').innerHTML = karaList;
 });
 
 /* Create the right panel: the queue */
 ipcRenderer.on('reload-queue-responce', (event, arg) => {
-    var karaList = '';
-    logger.debug(`Web page got reload-queue`);
+    logger.debug('instance', `Web page got reload-queue`);
+    document.getElementById('panelRight').innerHTML = '';
     arg.forEach(kara => {
-        karaList += `<div class="card p-2 bd-highlight shadow-none d-flex flex-row bd-highlight mb-3 border border-info karaCard">
-            <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.language}</b></span>
-            <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.cat}</b></span>
-            <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b>${kara.type}</b></span>
-            <div class="karaElement p-2 bd-highlight mr-auto"><b>${kara.source}<br> ${kara.title}</b> <i>[${kara.author}]</i></div>
-            <span class="karaElement p-3 bd-highlight"><b>${kara.position}</b></span>
-            <div class="karaElement p-2 bd-highlight">
-                <div class="d-flex flex-row bd-highlight mb-3 btn-group karaActionBtnGroup" role="group">
-                    <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-minus"></i></button>
-                    <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-play"></i></button>
-                </div>
-            </div>
-            </div>`;
+        ejs.renderFile(
+            __dirname + '/views/karaListItem.ejs',
+            { kara: kara },
+            (err, data) => {
+                if (err) logger.error('instance', err);
+                document.getElementById('panelRight').innerHTML = `
+                ${document.getElementById('panelRight').innerHTML}
+                ${data}`;
+            }
+        );
     });
-    document.getElementById('panelRight').innerHTML = karaList;
 });
 
 
diff --git a/instance/views/karaListItem.ejs b/instance/views/karaListItem.ejs
new file mode 100644
index 0000000000000000000000000000000000000000..0d3c1ec9ffe25c3d1ffd87942eae179c68b40b24
--- /dev/null
+++ b/instance/views/karaListItem.ejs
@@ -0,0 +1,17 @@
+<%# vim: ts=4 syntax=html
+    The template for the kara card in lists %>
+<li class="card p-2 bd-highlight shadow-none d-flex flex-row bd-highlight mb-3 karaCard">
+    <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b><%= kara.language %></b></span>
+    <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b><%= kara.cat      %></b></span>
+    <span class="karaElement text-uppercase p-2 bd-highlight badge badge-light"><b><%= kara.type     %></b></span>
+    <span class="karaElement p-2 bd-highlight mr-auto"><b><%= kara.source %><br> <%= kara.title %></b> <i>[<%= kara.author %>]</i></span>
+    <% if (kara.hasOwnProperty('position')) { %>
+        <span class="karaElement p-3 bd-highlight"><b><%= kara.position %></b></span>
+    <% } %>
+    <div class="karaElement p-2 bd-highlight">
+        <div class="d-flex flex-row bd-highlight mb-3 btn-group karaActionBtnGroup" role="group">
+            <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-plus"></i></button>
+            <button class="btn btn-outline-light karaActionBtn"><i class="fas fa-level-up-alt"></i></button>
+        </div>
+    </div>
+</li>
diff --git a/main.js b/main.js
index 8cd34fa1bc8f7f8329ba697d4fa41491bba712f4..eb5711dc438396462673a5cf607752139a7fce25 100644
--- a/main.js
+++ b/main.js
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 const logger = require.main.require('./common/logger.js');
 const electron = require('electron');
 const { app, BrowserWindow, ipcRenderer } = require('electron');
@@ -7,6 +8,15 @@ const { fork, spawn } = require('child_process');
 const fs = require('fs');
 const db = require.main.require('./common/db.js');
 const lkt = require.main.require('./common/lkt.js');
+=======
+const logger = require.main.require('./common/logger.js'),
+    electron = require('electron'),
+    { app, BrowserWindow, globalShortcut, ipcMain } = require('electron'),
+    { fork, spawn } = require('child_process'),
+    fs = require('fs'),
+    db = require.main.require('./common/db.js'),
+    lkt = require.main.require('./common/lkt.js');
+>>>>>>> origin/master
 var tail = require('tail').Tail;
 var client; /* Sub process for the express server */
 var lektor; /* Sub process, the lektord player */
@@ -14,6 +24,8 @@ var lektor_closed = false; /* Is lektord closed? */
 
 var myDb = new db('/home/kara/kara.db');
 
+var win = null; /* The main window */
+
 /**********************
  * Reinit the logfile *
  **********************/
@@ -30,9 +42,10 @@ tail.on('line', function (data) {
 
 function createInstanceWindow() {
     /* Main window */
-    const win = new BrowserWindow({
+    win = new BrowserWindow({
         width: 1280,
         height: 720,
+        hasShadow: false,
         frame: false,
         menuBarVisible: true,
         webPreferences: {
@@ -42,6 +55,24 @@ function createInstanceWindow() {
     win.loadFile('instance/index.html');
 }
 
+function createKurisuWindow() {
+    /* Main window */
+    const kurisu = new BrowserWindow({
+        width: 1280,
+        title: 'Kurisu',
+        height: 720,
+        frame: false,
+        parent: win,
+        webPreferences: {
+            nodeIntegration: true,
+        },
+    });
+    kurisu.loadURL('https://dev-kurisu.iiens.net');
+    kurisu.once('ready-to-show', () => {
+        kurisu.show();
+    });
+}
+
 /******************************
  * The end of the application *
  ******************************/
@@ -51,7 +82,10 @@ ipcMain.on('close-app', (evt, arg) => {
 });
 
 app.on('quit', () => {
-    logger.info('Send SIGTERM to express process, lektord and tailler process');
+    logger.info(
+        'main',
+        'Send SIGTERM to express process, lektord and tailler process'
+    );
     client.kill('SIGTERM');
     if (!lektor_closed) {
         lektor.kill('SIGTERM');
@@ -63,7 +97,7 @@ app.on('quit', () => {
  *********************************/
 
 app.on('ready', () => {
-    logger.info('Main window is ready');
+    logger.info('main', 'Main window is ready');
     createInstanceWindow();
     client = fork('client/main.js');
     lektor = spawn('lektord', ['-F']);
@@ -72,7 +106,7 @@ app.on('ready', () => {
         if (win === null) {
             return;
         }
-        logger.info('Reloading DB');
+        logger.info('main', 'Reloading DB');
         let contents = win.webContents;
         myDb.all().then(karas => {
             contents.send('reload-db-responce', karas);
@@ -93,63 +127,90 @@ app.on('ready', () => {
                 if (!line) return;
                 switch (line[0]) {
                     case '*':
-                        logger.warn(line.replace(/^\* (.*)$/g, '$1'));
+                        logger.warn(
+                            'lektord',
+                            line.replace(/^\* (.*)$/g, '$1')
+                        );
                         break;
                     case '!':
-                        logger.error(line.replace(/^! (.*)$/g, '$1'));
+                        logger.error(
+                            'lektord',
+                            line.replace(/^! (.*)$/g, '$1')
+                        );
                         break;
                     case '.':
                         if (line.length >= 2 && line[1] != '.') {
-                            logger.info(line.replace(/^\. (.*)$/g, '$1'));
+                            logger.info(
+                                'lektord',
+                                line.replace(/^\. (.*)$/g, '$1')
+                            );
                             break;
                         }
                     /* Fallthrough case */
                     default:
-                        logger.debug(line.replace(/^\.\.\. (.*)$/g, '\t$1'));
+                        logger.debug(
+                            'lektord',
+                            line.replace(/^\.\.\. (.*)$/g, '\t$1')
+                        );
                         break;
                 }
             });
     });
     setTimeout(() => {lkt.idleActualisation(ipcRenderer);},500);
     lektor.on('close', code => {
-        logger.warn(`Lektor exited with code ${code}`);
+        logger.warn('main', `Lektor exited with code ${code}`);
         lektor_closed = true;
         app.quit();
     });
 });
 
+/***************
+ * Kurisu View *
+ ***************/
+
+ipcMain.on('toggle-kurisu', (event, arg) => {
+    logger.debug('main', 'Toggle kurisu view');
+    createKurisuWindow();
+});
+
 /*********************************
  * Messages from the main window *
  *********************************/
 
 ipcMain.on('cmd-play', (event, arg) => {
     lkt.commandPlay().then(arg => {
-        logger.debug('Returned from cmd-play');
+        logger.debug('main', 'Returned from cmd-play');
     });
 });
 ipcMain.on('cmd-stop', (event, arg) => {
     lkt.commandStop().then(arg => {
-        logger.debug('Returned from cmd-stop');
+        logger.debug('main', 'Returned from cmd-stop');
     });
 });
 ipcMain.on('cmd-clear', (event, arg) => {
     lkt.commandClear().then(arg => {
-        logger.debug('Cleared queue with cmd-clear');
+        logger.debug('main', 'Cleared queue with cmd-clear');
     });
 });
 
 /* Fill the pannel with the content of the DB.
  * The `arg` is the HTML object of the pannel */
 ipcMain.on('reload-db-request', (event, arg) => {
-    logger.info('Reloading the DB content');
-    myDb.all().then(karas => {
+    logger.info('main', 'Reloading the DB content');
+    var callback = karas => {
         event.reply('reload-db-responce', karas);
-    });
+    };
+    if (arg) {
+        logger.debug('main', `Reload DB with search '${arg}'`);
+        myDb.search(arg, 0, 15).then(callback);
+    } else {
+        myDb.all(0, 15).then(callback);
+    }
 });
 
 /* Send the queue to the webpage when asked to */
 ipcMain.on('reload-queue-request', (event, arg) => {
-    logger.info('Reloading next karas in queue');
+    logger.info('main', 'Reloading next karas in queue');
     myDb.queue(0, 100).then(karas => {
         event.reply('reload-queue-responce', karas);
     });
diff --git a/style/css/instance.css b/style/css/instance.css
index b7b6a356bb2c5bbfaefbd99cb7009ac6ffabbf01..a7b997213a6a819fcae72d5475c83b41719ab0e6 100644
--- a/style/css/instance.css
+++ b/style/css/instance.css
@@ -21,6 +21,32 @@ button {
     -webkit-transition: none;
 }
 
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+    outline: none !important;
+    box-shadow: none !important;
+    border-color: transparent !important;
+}
+
+#filterInput {
+    background-color: #2b3e50 !important;
+    color: white;
+}
+
 #mainFrame {
     height: 100%;
     display: flex;
@@ -44,8 +70,10 @@ button {
     width: 100%;
     margin-left: 0px;
     margin-right: 0px;
+    margin-top: 0px !important;
     flex-grow: 1;
     overflow: hidden;
+    border-top: 0px !important;
     padding: 0px !important;
 }
 
diff --git a/test/test_db.js b/test/test_db.js
index ba3fad0a1290216ec30266cc0b99f888d3f96976..36094fa67c790738100a9a3a851ae052ae052a41 100644
--- a/test/test_db.js
+++ b/test/test_db.js
@@ -3,5 +3,5 @@ const KaraDatabase = require.main.require('./common/db.js');
 
 var myDb = new KaraDatabase("/home/kara/kara.db");
 
-myDb.search(`kubat`).then( val => logger.log("debug", val) )
+myDb.search(`kubat`).then( val => logger.debug("test", val) )
 myDb.close()