diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/main.cpp b/src/main.cpp index 411ab48..a3503c9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,6 +15,7 @@ #include <map> #include <assert.h> #include <unistd.h> +#include <limits.h> #include <X11/Xlib.h> #include <X11/extensions/Xfixes.h> @@ -155,6 +156,17 @@ static const mgl_monitor* find_monitor_by_cursor_position(mgl::Window &window) { return &win->monitors[0]; } +static std::string find_noto_font_filepath(const char *filename) { + const char *directories[] = { "/usr/share/fonts/noto", "/usr/share/fonts/truetype/noto" }; + char filepath[PATH_MAX]; + for(const char *directory : directories) { + snprintf(filepath, sizeof(filepath), "%s/%s", directory, filename); + if(access(filepath, F_OK) == 0) + return filepath; + } + return ""; +} + int main(int argc, char **argv) { std::string resources_path; if(access("images/stream.png", F_OK) == 0) { @@ -221,6 +233,12 @@ int main(int argc, char **argv) { const mgl::Color icon_color = parse_hex_color(icon_color_str ? icon_color_str : "FFFFFF", resources_path); const mgl::Color bg_color = parse_hex_color(bg_color_str ? bg_color_str : "76b900", resources_path); + const std::string noto_sans_bold_filepath = find_noto_font_filepath("NotoSans-Bold.ttf"); + if(noto_sans_bold_filepath.empty()) { + fprintf(stderr, "error: failed to find NotoSans-Bold.ttf. Make sure noto fonts are installed on your system\n"); + exit(2); + } + mgl::Init init; mgl::Window::CreateParams window_create_params; @@ -246,7 +264,7 @@ int main(int argc, char **argv) { const mgl_monitor *focused_monitor = find_monitor_by_cursor_position(window); mgl::MemoryMappedFile font_file; - if(!font_file.load("/usr/share/fonts/noto/NotoSans-Bold.ttf", mgl::MemoryMappedFile::LoadOptions{true, false})) + if(!font_file.load(noto_sans_bold_filepath.c_str(), mgl::MemoryMappedFile::LoadOptions{true, false})) return 1; mgl::Font font; |