diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 0a15b44..ba9e3ee 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -30,14 +30,22 @@ jobs: clangcheck: name: Clang - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest + container: + image: ubuntu:25.04 steps: - uses: actions/checkout@v4 - - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: "clang-format clang-tidy bear libpam0g-dev" - version: 1.0 + - run: apt -y update && apt install -y clang-format clang-tidy make gcc git bear libpam0g-dev + - run: bear -- make - - run: clang-format -ni src/*.c include/*.h - - run: clang-tidy -p . src/*.c include/*.h + - run: clang-format -version && clang-format -dump-config + - run: | + set -euo pipefail + clang-format -ni src/*.c include/*.h -Werror 2>&1 | \ + sed -E 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/' + - run: clang-tidy -version && clang-tidy -dump-config + - run: | + set -euo pipefail + clang-tidy -p . src/*.c include/*.h -warnings-as-errors=\* 2>&1 1>/dev/null | + sed -E 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/' diff --git a/README.md b/README.md index 09c35c8..b941ec3 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,18 @@ LiDM is like any [Display Manager](https://en.wikipedia.org/wiki/X_display_manag ![demo gif](assets/media/lidm.gif) -> _shown as in a featured terminal emulator, actual linux console doesn't support as much color and decorations_ +
+ +shown as in a featured terminal emulator, actual linux console doesn't support as much color and decorations + + +If you want to add fancy color and font support to your TTYs you can wrap lidm in [`kmscon`](https://wiki.archlinux.org/title/KMSCON). (edit appropriate service files). e.g: + +```sh +kmscon -l --vt /dev/tty7 --font-name "Cascadia Code" -- /usr/bin/lidm +``` + +
> _however, all colors and strings are fully customizable_ diff --git a/assets/github_scripts/build.sh b/assets/github_scripts/build.sh index 8536363..f407d8a 100755 --- a/assets/github_scripts/build.sh +++ b/assets/github_scripts/build.sh @@ -13,8 +13,9 @@ make -j"$(nproc)" "$@" 2> /tmp/stderr || ERR=$? BSIZE=$(stat --printf="%s" lidm) HSIZE=$(numfmt --to=iec-i<<<"$BSIZE")B WARNS=$( - { grep -E '^[^ ]+\.[ch]:[0-9]+:[0-9]+: [a-z]+:' /tmp/stderr || :; } \ - | sed -E 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/' + sed -nE \ + 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/p' \ + /tmp/stderr ) WARNS_NUM=$({ [[ "$WARNS" == "" ]] && echo 0; } || wc -l <<<"$WARNS") diff --git a/include/log.h b/include/log.h index 226b48b..9fa8079 100644 --- a/include/log.h +++ b/include/log.h @@ -3,10 +3,12 @@ #include -void log_init(FILE* fd); -void log_puts(const char* msg); -void log_printf(const char* fmt, ...); +#include "macros.h" + +void log_init(FILE* NNULLABLE fd); +void log_puts(const char* NNULLABLE msg); +void log_printf(const char* NNULLABLE fmt, ...); // NOLINTNEXTLINE(readability-identifier-length) -void log_perror(const char* s); +void log_perror(const char* NNULLABLE s); #endif diff --git a/src/auth.c b/src/auth.c index 18313d9..8750c2c 100644 --- a/src/auth.c +++ b/src/auth.c @@ -36,7 +36,7 @@ int pam_conversation(int num_msg, const struct pam_message** msg, } #ifndef PAM_SERVICE_FALLBACK -#define PAM_SERVICE_FALLBACK "login" + #define PAM_SERVICE_FALLBACK "login" #endif #define CHECK_PAM_RET(call) \ diff --git a/src/config.c b/src/config.c index fc11b11..3c9e7ea 100644 --- a/src/config.c +++ b/src/config.c @@ -243,7 +243,7 @@ int parse_config(struct config* NNULLABLE config, char* NNULLABLE path) { if (fd == NULL) { log_perror("fopen"); log_printf(" [I] No config, place one at " LIDM_CONF_PATH - " or set the LIDM_CONF env variable"); + " or set the LIDM_CONF env variable\n"); return 0; // Its fine now anyways } diff --git a/src/log.c b/src/log.c index bd473e2..34ddc36 100644 --- a/src/log.c +++ b/src/log.c @@ -32,7 +32,7 @@ void log_perror(const char* s) { if (!logger_out) return; if (s) - (void)fprintf(logger_out, "%s: %s", s, strerror(errno)); + (void)fprintf(logger_out, "%s: %s\n", s, strerror(errno)); else - (void)fprintf(logger_out, "%s", strerror(errno)); + (void)fprintf(logger_out, "%s\n", strerror(errno)); } diff --git a/src/ui.c b/src/ui.c index a0f21c6..4bc5512 100644 --- a/src/ui.c +++ b/src/ui.c @@ -115,13 +115,13 @@ char* trunc_gethostname(const size_t MAXLEN, const char* const ELLIPSIS) { char* buf = malloc(alloc_size); if (!buf) return NULL; - if(gethostname(buf, alloc_size) != 0) { + if (gethostname(buf, alloc_size) != 0) { free(buf); return NULL; } if (utf8len(buf) > MAXLEN) { - int end = utf8trunc(buf, MAXLEN - utf8len(ELLIPSIS)); + size_t end = utf8trunc(buf, MAXLEN - utf8len(ELLIPSIS)); strcpy(&buf[end], ELLIPSIS); } return buf; diff --git a/src/util.c b/src/util.c index 0b882d4..0b730ad 100644 --- a/src/util.c +++ b/src/util.c @@ -106,12 +106,12 @@ size_t utf8len_until(const char* str, const char* until) { size_t utf8trunc(char* str, size_t n) { size_t bytes = 0; while (true) { - if(str[bytes] == '\0') break; + if (str[bytes] == '\0') break; if (utf8_iscont(str[bytes])) { bytes++; continue; } - if(n == 0) { + if (n == 0) { str[bytes] = '\0'; break; }