diff options
| author | iamcheeseman <[hidden email]> | 2026-03-02 19:34:00 -0500 |
|---|---|---|
| committer | iamcheeseman <[hidden email]> | 2026-03-02 19:34:00 -0500 |
| commit | e8364fc209280180e64bf9cfce13f9bb71af7f6c (patch) | |
| tree | ebedaf4a67ff0f4f421ff859101e40a9effbe8ab | |
| parent | bc7a3fa5770ad43c0715a5a78afbf9a1a9fedbb5 (diff) | |
End text with an ellipse if it goes above the limit
| -rw-r--r-- | src/bardata.c | 27 | ||||
| -rw-r--r-- | src/bardata.h | 4 | ||||
| -rw-r--r-- | src/pipe.c | 6 |
3 files changed, 24 insertions, 13 deletions
diff --git a/src/bardata.c b/src/bardata.c index b9f221d..89c892f 100644 --- a/src/bardata.c +++ b/src/bardata.c @@ -67,7 +67,7 @@ void init_bardata(void) { set_default_background("#202020"); } -comp_t *find_comp(char *name) { +comp_t *find_comp(const char *name) { for (size_t i = 0; i < comps_size; i++) { if (strcmp(comps[i].name, name) == 0) { return &comps[i]; @@ -83,7 +83,7 @@ comp_t *find_comp(char *name) { return comp; } -void add_component(comp_side_t side, char *name) { +void add_component(comp_side_t side, const char *name) { comp_t *comp = find_comp(name); if (side == SIDE_LEFT) { comps_left[left_size] = comp; @@ -107,25 +107,34 @@ void set_component(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) { for (int i = 2; i < argc; i++) { if (strcmp(argv[i], "-text") == 0) { - strcpy(comp->data, argv[i + 1]); + const char* data = argv[i + 1]; + size_t len = strlen(data); + if (len > MAX_COMP_DATA - 1) { + len = MAX_COMP_DATA - 4; + char ellipse[] = "..."; + memcpy(comp->data + len, ellipse, sizeof(ellipse)); + } else { + comp->data[len] = '\0'; + } + memcpy(comp->data, argv[i + 1], len); i++; continue; } - if (strcmp(argv[i], "-margin") == 0) { + if (strcmp(argv[i], "-margin-left") == 0) { int margin = atoi(argv[i + 1]); comp->margin_left = margin; - comp->margin_right = margin; i++; continue; } - if (strcmp(argv[i], "-margin-left") == 0) { + if (strcmp(argv[i], "-margin-right") == 0) { int margin = atoi(argv[i + 1]); - comp->margin_left = margin; + comp->margin_right = margin; i++; continue; } - if (strcmp(argv[i], "-margin-right") == 0) { + if (strcmp(argv[i], "-margin") == 0) { int margin = atoi(argv[i + 1]); + comp->margin_left = margin; comp->margin_right = margin; i++; continue; @@ -173,7 +182,7 @@ void set_layout(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) { } void set_config(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) { - char *var = argv[1]; + const char *var = argv[1]; if (strcmp(var, "-height") == 0) { int new_bar_height = atoi(argv[2]); if (new_bar_height <= 0) { diff --git a/src/bardata.h b/src/bardata.h index bfab709..3ad4c46 100644 --- a/src/bardata.h +++ b/src/bardata.h @@ -7,6 +7,8 @@ #include "pipe.h" +#define MAX_COMP_DATA 64 + typedef XftColor color_t; typedef enum { @@ -17,7 +19,7 @@ typedef enum { typedef struct { char name[16]; - char data[64]; + char data[MAX_COMP_DATA]; int flags; int margin_left; int margin_right; @@ -67,9 +67,9 @@ void await_change(void) { void make_change(char argv[MAX_ARGS][MAX_ARG_LEN], int argc) { // printf("Making change with:\n"); - for (int i = 0; i < argc; i++) { - // printf("Arg %d: %s\n", i + 1, argv[i]); - } + // for (int i = 0; i < argc; i++) { + // printf("Arg %d: %s\n", i + 1, argv[i]); + // } char *cmd = argv[0]; if (strcmp(cmd, "set") == 0) { |
