Files
lidm/include/ui.h
javalsai 0b2d0bdf03 fixes: improve login environment handling (#114)
* chore(organization): allow nested header and c files

* feat: add shell login "middleware" & etc:
  * lidm now calls `bash` (or other shells, depends on PACKAGE cfg) in
  login mode as a session wrapper to source most env (can be disabled)
  * this fixes a lot of env problems with all `/etc/profile` and more

Extra:
* implemented a musl compatible version of `execvpe` and now lidm should
  search for PATH everywhere it needs to
* `search_path` now also checks if the found binary is properly
  executable
* lidm now uses `confstr` for a decent PATH default if none is found
* logs are unbuffered for cases where debug logs appear empty (exit
  without handlers moment)

* chore: one-time evaluate certain makefile vars

---------

Co-authored-by: grialion <48643945+grialion@users.noreply.github.com>
2026-02-07 17:12:03 +01:00

58 lines
2.1 KiB
C

#ifndef UIH_
#define UIH_
#include "config.h"
#include "ofield.h"
#include "util/vec.h"
// [box_start]
// ↓
// 0 [┌]───────────────────────────────────────────────┐
// 1 │ │
// 2 │ the-art 2025-06-20 21:40:44 │
// 3 │ | │
// 4 │ | │
// 5 │ xorg < Default > | │
// 6 │ | │
// 7 │ user javalsai | │
// 8 │ | │
// 9 │ password ________________________________ │
// 10 │ | | │
// 11 └────────────────────────────────────────────────┘
// 01234567890123456789012345678901234567890123456789
// 00000000001111111111222222222233333333334444444444
// |--| | ↑ |--|[BOX_HMARGIN]
// [BOX_HMARGIN] [VALUES_COL] |
// |---|[VALUES_SEPR] |
// |--------------------------------|[VALUE_MAXLEN]
#define HEAD_ROW 2
#define SESSION_ROW 5
#define USER_ROW 7
#define PASSWD_ROW 9
#define BOX_WIDTH 50
#define BOX_HEIGHT 12
#define BOX_HMARGIN 2
#define VALUES_COL 15
#define VALUES_SEPR 3
#define VALUE_MAXLEN (BOX_WIDTH - VALUES_COL + 1 - BOX_HMARGIN - 2)
enum Input { SESSION, USER, PASSWD };
extern const uint8_t INPUTS_N;
void setup(struct config* config);
int load(struct Vector* users, struct Vector* sessions);
void print_err(const char* /*msg*/);
void print_errno(const char* /*descr*/);
void print_pam_msg(const char* msg, int msg_style);
void clear_pam_msg(void);
void ui_update_field(enum Input focused_input);
void ui_update_ffield();
void ui_update_ofield(struct opts_field* self);
void ui_update_cursor_focus();
#endif