diff options
| author | verdant <im@verdant.ee> | 2026-07-28 17:08:18 +0800 |
|---|---|---|
| committer | verdant <im@verdant.ee> | 2026-07-28 17:09:32 +0800 |
| commit | 365d54d6de5ad84238698f986649aa4af0fd8dae (patch) | |
| tree | 2fcd88236c91721470ff6573b316cbd91c42a0fb | |
| parent | d760f14a540ea334ade0d705b44a9f5e52ee56d8 (diff) | |
| download | sf-365d54d6de5ad84238698f986649aa4af0fd8dae.tar.gz sf-365d54d6de5ad84238698f986649aa4af0fd8dae.zip | |
Implement status bar
Print current working directory
| -rw-r--r-- | fm.c | 15 | ||||
| -rw-r--r-- | fm.h | 2 | ||||
| -rw-r--r-- | main.c | 10 |
3 files changed, 26 insertions, 1 deletions
@@ -147,6 +147,7 @@ fm_init(terminal *t) info->next = xmalloc(sizeof(file_list)); fm_file_list_init(info->cur, 30); fm_file_list_init(info->next, 30); + create_status_bar_win(t); return info; } @@ -405,3 +406,17 @@ open_with_editor(char **argv) return 0; } + +void +create_status_bar_win(terminal *t) +{ + wm_create_new_w(t, "status_bar", 1, t->maxx, t->maxy - 1, 0); +} + +void +draw_status_bar(window *bar_win, const char *cwd) +{ + werase(bar_win->win); + + mvwprintw(bar_win->win, bar_win->height - 1, 0, "%s", cwd); +} @@ -61,4 +61,6 @@ bool fm_preview_file(window *w, const char *path); int open_with_editor(char **argv); void magic_init(void); void magic_cleanup(void); +void create_status_bar_win(terminal *t); +void draw_status_bar(window *bar_win, const char *cwd); #endif /* SF_FM_H */ @@ -37,7 +37,8 @@ static void path_normalize(char *path) return; } -int main(int argc, char **argv) +int +main(int argc, char **argv) { if (argc > 1 && (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-v") == 0)) @@ -49,6 +50,10 @@ int main(int argc, char **argv) terminal *term = ncurses_init(); fm_info *info = fm_init(term); + int stat_bar_win_index = wm_fd_w_by_name(term, "status_bar"); + if (stat_bar_win_index == -1) { + log_write(LOG_WARN, "Cannot find window: status_bar"); + } need_redraw = true; if (argc == 2) { snprintf(info->cwd, sizeof(info->cwd), "%s", argv[1]); @@ -97,8 +102,11 @@ int main(int argc, char **argv) } } + draw_status_bar(term->windows[stat_bar_win_index], info->cwd); + wrefresh(info->windows[FM_PANE_RIGHT]->win); wrefresh(info->windows[FM_PANE_LEFT]->win); + wrefresh(term->windows[stat_bar_win_index]->win); ch = getch(); handling_keys(ch, info); |
