lektor mk7
A Karaoke player made to replace the old bash scripts on Sakura.
Table of content
Building the player
Prerequisites
- cmake with at least the version 3.17
- a C compiler with C11 support
- a C++ compiler with C++20 support (for the Qt5 module)
- the sqlite3 development library, version 3.31.0 or newer for generated columns support
- a POSIX.1-2008 compatible system (for MS Windows, use something like WSL2)
For the module sdl2, you will need the following prerequisites:
- the mpv development library
- the sdl2 development library
- the sdl2-image development library
For the Qt module, you will need the following prerequisites:
- the Qt develipment library, QtCore, QtWidgets in at least version 5.15 (Qt6 should be supported)
For the module repo, you will need the folowing prerequisites:
- the libcurl developmemt library
You will also need the following executables, with their path setted in the configuration file:
- mkvpropedit from mkvtoolnix
- the bourn shell again: bash
- the command line tool xxd, is distributed in the vim and gvim packages on archlinux, seems to be distributed in its own package on debian: xxd
If you are developping for lektor, you will need the
clang-format command line utility,
for a beautifull and uniform C++ code style.
Here is the list of
all the options to put in the .clang-format
file.
Building instructions
The manual way of installing and setting up lektor:
cmake -Bbuild \
-DCMAKE_C_COMPILER=clang \ # Choose the compiler
-DCMAKE_CXX_COMPILER=clang++ \ # Choose the compiler
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ # For clangd/ccls
-DCMAKE_BUILD_TYPE=Debug # The debug stuff
Note that the last option is here to generate the compile_commands.json
, you
should copy it at the root of the project.
The sqlite database and the config file will be created automatically if needed,
i.e. on the first run. If you are upgrading lektor, the config might not be
correct. You can delete the config file or use the lkt admin config
to
generate the config file again. If you are using special modules or are
compiling lektor without static modules, you may set their absolute path
inside the lektor's config file.
Important note: Upgrading the config or the database scheme automatically is not supported yet. If you are experiencing weird things with lektord, please try first to delete the database and config and regenerate them. There are currently no way of doing a backup of playlists and stickers with lektor, this is WIP.
Preparing a kara for lektor
The ideal way of populating lektor is using Kurisu. The update
is here for
that. To import the favorites and playlists from Kurisu, use the import
command.
How to use lektor
Launch instructions
To run lektor, you can simply run the binary like: ./lektord
. If lektord did
not exited normally (i.e. without the lkt adm kill
command), the database will
still store the fact that lektord is running. To by-pass it, you will need to
launch lektord with the -F
(forced) option, like lektord -F
. It is not
recommended to launch always lektord with the -F
option, because that way you
could launch multiple instances of the lektod daemon, which could results in
undefined behaviours. Lektor will use specialized software (hwdec set to yes),
if you have an nvidia card with optimus (in almose every laptop), please use
optirun
or primusrun
: optirun ./lektord
How to update the lektord database
To update the lektor database, you first need to launch lektord
, then use the
lkt adm update
to update the database and lkt adm import
to import users'
favorite lists as playlists.
How to send commands to lektor
Lektor is compatible with mpd, which means that you can use any client (only mpc
is tested) to interact with lektor. Some functions are not really compatible
(somme work to be done) because mpc really makes some assumptions. The ideal
way is to use lkt
.
How to configure lektor
Lektor configuration is done with an INI file. Modules' configuration is also done by the same INI file using diferent sections. Lektor searches for the configuration file in that order:
$PWD/lektor.ini
- if
XDG_CONFIG_HOME
defined?$XDG_CONFIG_HOME/lektor/lektor.ini
:$HOME/.config/lektor/lektor.ini
/opt/lektor/lektor.ini
/usr/local/etc/lektor.ini
/etc/lektor.ini
To get the default config file, you can use the lkt adm conf
command. If no
config file is found, lektord will try to create the
$HOME/.config/lektor/lektor.ini
config file with the default content.
Be aware that if the home directory or the XDG_CONFIG_HOME
are too long they
will be ignored and truncated. You may then get uncomprehensible errors.
Contributing
Please, refer to the CONTRIBUTING file.
MPD
Lektor is almost MPD compatible, at least it uses the same protocol, which can be consulted here. The full support for MPD clients (like mpc and ncmpc) is still WIP. For the MPD compatibility list, see the CONTRIBUTING file.