sfm

simple file manager
git clone https://git.afify.dev/sfm.git
Log | Files | Refs | README | LICENSE

config.def.h (7024B)


      1 /* See LICENSE file for copyright and license details.*/
      2 
      3 #ifndef CONFIG_H
      4 #define CONFIG_H
      5 
      6 /* colors                      fg,  bg */
      7 static const Cpair cdir    = { 31, 0 };
      8 static const Cpair cfile   = { 243, 0 };
      9 static const Cpair clnk    = { 96, 0 };
     10 static const Cpair cblk    = { 95, 0 };
     11 static const Cpair cchr    = { 94, 0 };
     12 static const Cpair cifo    = { 93, 0 };
     13 static const Cpair csock   = { 92, 0 };
     14 static const Cpair cexec   = { 91, 0 };
     15 static const Cpair cother  = { 90, 0 };
     16 
     17 static const Cpair cframe  = { 233, 233 };
     18 static const Cpair cpanell = { 166, 233 };
     19 static const Cpair cpanelr = { 5,   233 };
     20 static const Cpair cerr    = { 124, 0 };
     21 static const Cpair cprompt = { 33,  0 };
     22 static const Cpair csearch = { 255, 0 };
     23 static const Cpair cstatus = { 243, 0 };
     24 
     25 /* commands */
     26 #if defined(__linux__)
     27 #define CHFLAG "chattr"
     28 #else
     29 #define CHFLAG "chflags"
     30 #endif
     31 static const char *rm_cmd[]      = { "rm", "-rf" }; /* delete */
     32 static const char *cp_cmd[]      = { "cp", "-r" }; /* copy */
     33 static const char *chown_cmd[]   = { "chown", "-R" }; /* change file owner and group */
     34 static const char *chmod_cmd[]   = { "chmod" }; /* change file mode bits */
     35 static const char *chflags_cmd[] = { CHFLAG }; /* change file flags */
     36 static const char *mv_cmd[]      = { "mv" }; /* move */
     37 static const char delconf[]      = "yes";
     38 
     39 static const size_t rm_cmd_len      = LEN(rm_cmd);
     40 static const size_t cp_cmd_len      = LEN(cp_cmd);
     41 static const size_t chown_cmd_len   = LEN(chown_cmd);
     42 static const size_t chmod_cmd_len   = LEN(chmod_cmd);
     43 static const size_t chflags_cmd_len = LEN(chflags_cmd);
     44 static const size_t mv_cmd_len      = LEN(mv_cmd);
     45 static const size_t delconf_len     = LEN(delconf);
     46 
     47 /* bookmarks */
     48 static const char root[]   = "/";
     49 
     50 /* software */
     51 static const char *mpv[]          = { "mpv", "--fullscreen" };
     52 static const char *sxiv[]         = { "sxiv" };
     53 static const char *mupdf[]        = { "mupdf", "-I" };
     54 static const char *libreoffice[]  = { "libreoffice" };
     55 static const char *gimp[]         = { "gimp" };
     56 static const char *r2[]           = { "r2", "-c", "vv" };
     57 
     58 /* extensions*/
     59 static const char *images[]    = { "bmp", "jpg", "jpeg", "png", "gif", "webp", "xpm" };
     60 static const char *pdf[]       = { "epub", "pdf" };
     61 static const char *arts[]      = { "xcf" };
     62 static const char *obj[]       = { "o", "a", "so" };
     63 static const char *videos[]    = { "avi", "flv", "wav", "webm", "wma", "wmv",
     64 				   "m2v", "m4a", "m4v", "mkv", "mov", "mp3",
     65 				   "mp4", "mpeg", "mpg" };
     66 static const char *documents[] = { "odt", "doc", "docx", "xls", "xlsx", "odp",
     67 				   "ods", "pptx", "odg" };
     68 
     69 static Rule rules[] = {
     70 	{videos,    LEN(videos),    mpv,         LEN(mpv)         },
     71 	{images,    LEN(images),    sxiv,        LEN(sxiv)        },
     72 	{pdf,       LEN(pdf),       mupdf,       LEN(mupdf)       },
     73 	{documents, LEN(documents), libreoffice, LEN(libreoffice) },
     74 	{arts,      LEN(arts),      gimp,        LEN(gimp)        },
     75 	{obj,       LEN(obj),       r2,          LEN(r2)          },
     76 };
     77 
     78 /* normal keys */
     79 static Key nkeys[] = {
     80 	/* keyval                      function      arg */
     81 	{ {.ch = 'j'},                 mv_ver,       {.i = -1}       },
     82 	{ {.key = TB_KEY_ARROW_DOWN},  mv_ver,       {.i = -1}       },
     83 	{ {.ch = 'k'},                 mv_ver,       {.i = +1}       },
     84 	{ {.key = TB_KEY_ARROW_UP},    mv_ver,       {.i = +1}       },
     85 	{ {.key = TB_KEY_CTRL_U},      mv_ver,       {.i = +3}       },
     86 	{ {.key = TB_KEY_CTRL_D},      mv_ver,       {.i = -3}       },
     87 	{ {.ch = 'l'},                 mvfwd,        {.i = 0}        },
     88 	{ {.key = TB_KEY_ARROW_RIGHT}, mvfwd,        {.i = 0}        },
     89 	{ {.ch = 'h'},                 mvbk,         {.i = 0}        },
     90 	{ {.key = TB_KEY_ARROW_LEFT},  mvbk,         {.i = 0}        },
     91 	{ {.ch = 'g'},                 mvtop,        {.i = 0}        },
     92 	{ {.ch = 'G'},                 mvbtm,        {.i = 0}        },
     93 	{ {.ch = 'n'},                 crnf,         {0}             },
     94 	{ {.ch = 'N'},                 crnd,         {0}             },
     95 	{ {.ch = 'd'},                 delent,       {0}             },
     96 	{ {.ch = 'D'},                 dupl,         {0}             },
     97 	{ {.ch = 'x'},                 calcdir,      {0}             },
     98 	{ {.ch = '/'},                 start_filter, {0}             },
     99 	{ {.ch = 'q'},                 quit,         {0}             },
    100 	{ {.ch = 'v'},                 start_vmode,  {0}             },
    101 	{ {.ch = 'y'},                 yank,         {0}             },
    102 	{ {.ch = 'p'},                 paste,        {0}             },
    103 	{ {.ch = 'P'},                 selmv,        {0}             },
    104 	{ {.ch = 'c'},                 start_change, {0}             },
    105 	{ {.ch = 'b'},                 opnsh,        {0}             },
    106 	{ {.key = TB_KEY_SPACE},       switch_pane,  {0}             },
    107 	{ {.key = TB_KEY_CTRL_R},      refresh,      {0}             },
    108 	{ {.ch = '\\'},                bkmrk,        {.v = root}     },
    109 	{ {.ch = '.'},                 toggle_df,    {0}             },
    110 };
    111 
    112 /* change keys */
    113 static Key ckeys[] = {
    114 	/* keyval                      function         arg */
    115 	{ {.ch = 'w'},                 rname,            {0}            },
    116 	{ {.ch = 'o'},                 chngo,            {0}            },
    117 	{ {.ch = 'm'},                 chngm,            {0}            },
    118 	{ {.ch = 'f'},                 chngf,            {0}            },
    119 	{ {.ch = 'q'},                 exit_change,      {0}            },
    120 	{ {.ch = 'c'},                 exit_change,      {0}            },
    121 	{ {.key = TB_KEY_ESC},         exit_change,      {0}            },
    122 };
    123 
    124 /* visual keys */
    125 static Key vkeys[] = {
    126 	/* keyval                      function         arg */
    127 	{ {.ch = 'j'},                 seldwn,          {.i = -1}      },
    128 	{ {.key = TB_KEY_ARROW_DOWN},  seldwn,          {.i = -1}      },
    129 	{ {.ch = 'k'},                 selup,           {.i = +1}      },
    130 	{ {.key = TB_KEY_ARROW_UP},    selup,           {.i = +1}      },
    131 	{ {.ch = 'a'},                 selall,          {0}            },
    132 	{ {.ch = 'y'},                 selynk,          {0}            },
    133 	{ {.ch = 'd'},                 seldel,          {.v = delconf} },
    134 	{ {.ch = 'q'},                 exit_vmode,      {0}            },
    135 	{ {.ch = 'v'},                 exit_vmode,      {0}            },
    136 	{ {.key = TB_KEY_ESC},         exit_vmode,      {0}            },
    137 };
    138 
    139 static const size_t nkeyslen = LEN(nkeys);
    140 static const size_t vkeyslen = LEN(vkeys);
    141 static const size_t ckeyslen = LEN(ckeys);
    142 
    143 /* permissions */
    144 static const mode_t ndir_perm = S_IRWXU;
    145 static const mode_t nf_perm   = S_IRUSR | S_IWUSR;
    146 
    147 /* dotfiles */
    148 static int show_dotfiles = 1;
    149 
    150 /* statusbar */
    151 static const char dtfmt[] = "%F %R"; /* date time format */
    152 
    153 /* unicode chars */
    154 #define u_hl  0x2500 /* ─ */
    155 #define u_vl  0x2502 /* │ */
    156 #define u_cnw 0x250C /* ┌ */
    157 #define u_cne 0x2510 /* ┐ */
    158 #define u_csw 0x2514 /* └ */
    159 #define u_cse 0x2518 /* ┘ */
    160 #define u_mn  0x252C /* ┬ */
    161 #define u_ms  0x2534 /* ┴ */
    162 
    163 #endif /* CONFIG_H */