From 73d521e73abf7d98ed1c25e2aacfb84ac9ed1eca Mon Sep 17 00:00:00 2001 From: gianmarco Date: Tue, 10 May 2022 22:25:45 +0200 Subject: [PATCH] First commit from myself, changed the config and the icons --- config.h | 200 +++++++++++++++++++++++++++++++++++++++++++++++ icon/128x128.png | Bin 1066 -> 3400 bytes icon/16x16.png | Bin 262 -> 563 bytes icon/32x32.png | Bin 421 -> 1148 bytes icon/48x48.png | Bin 507 -> 1638 bytes icon/64x64.png | Bin 620 -> 2019 bytes 6 files changed, 200 insertions(+) create mode 100644 config.h diff --git a/config.h b/config.h new file mode 100644 index 0000000..94c17a4 --- /dev/null +++ b/config.h @@ -0,0 +1,200 @@ +#ifdef _WINDOW_CONFIG + +/* default window dimensions (overwritten via -g option): */ +static const int WIN_WIDTH = 800; +static const int WIN_HEIGHT = 600; + +/* colors and font can be overwritten via X resource properties. + * See nsxiv(1), X(7) section Resources and xrdb(1) for more information. + */ +static const char *DEFAULT_WIN_BG = "#2a2c2b"; +static const char *DEFAULT_WIN_FG = "#eb4034"; +static const char *DEFAULT_MARK_COLOR = NULL; /* NULL means it will default to window foreground */ +#if HAVE_LIBFONTS +static const char *DEFAULT_BAR_BG = NULL; /* NULL means it will default to window background */ +static const char *DEFAULT_BAR_FG = "#e5e5e5"; /* NULL means it will default to window foreground */ +static const char *DEFAULT_FONT = "Roboto-10"; + +/* if true, statusbar appears on top of the window */ +static const bool TOP_STATUSBAR = false; +#endif /* HAVE_LIBFONTS */ + +#endif +#ifdef _IMAGE_CONFIG + +/* levels (in percent) to use when zooming via '-' and '+': + * (first/last value is used as min/max zoom level) + */ +static const float zoom_levels[] = { + 12.5, 25.0, 50.0, 75.0, + 100.0, 150.0, 200.0, 400.0, 800.0 +}; + +/* default slideshow delay (in sec, overwritten via -S option): */ +static const int SLIDESHOW_DELAY = 5; + +/* gamma correction: the user-visible ranges [-GAMMA_RANGE, 0] and + * (0, GAMMA_RANGE] are mapped to the ranges [0, 1], and (1, GAMMA_MAX]. + */ +static const double GAMMA_MAX = 10.0; +static const int GAMMA_RANGE = 32; + +/* command i_scroll pans image 1/PAN_FRACTION of screen width/height */ +static const int PAN_FRACTION = 5; + +/* if false, pixelate images at zoom level != 100%, + * toggled with 'a' key binding + */ +static const bool ANTI_ALIAS = true; + +/* if true, use a checkerboard background for alpha layer, + * toggled with 'A' key binding + */ +static const bool ALPHA_LAYER = false; + +/* percentage of memory to use for imlib2's cache size. + * 3 means use 3% of total memory which is about 245MiB on 8GiB machine. + * 0 or less means disable cache. + * 100 means use all available memory (but not above CACHE_SIZE_LIMIT). + */ +static const int CACHE_SIZE_MEM_PERCENTAGE = 3; /* use 3% of total memory for cache */ +static const int CACHE_SIZE_LIMIT = 256 * 1024 * 1024; /* but not above 256MiB */ +static const int CACHE_SIZE_FALLBACK = 32 * 1024 * 1024; /* fallback to 32MiB if we can't determine total memory */ + +#endif +#ifdef _THUMBS_CONFIG + +/* thumbnail sizes in pixels (width == height): */ +static const int thumb_sizes[] = { 32, 64, 96, 128, 160 }; + +/* thumbnail size at startup, index into thumb_sizes[]: */ +static const int THUMB_SIZE = 3; + +#endif +#ifdef _MAPPINGS_CONFIG + +/* these modifiers will be used when processing keybindings */ +static const unsigned int USED_MODMASK = ShiftMask | ControlMask | Mod1Mask; + +/* abort the keyhandler */ +static const KeySym KEYHANDLER_ABORT = XK_Escape; + +/* keyboard mappings for image and thumbnail mode: */ +static const keymap_t keys[] = { + /* modifiers key function argument */ + { 0, XK_q, g_quit, 0 }, + { 0, XK_Return, g_switch_mode, None }, + { 0, XK_f, g_toggle_fullscreen, None }, + { 0, XK_b, g_toggle_bar, None }, + { ControlMask, XK_x, g_prefix_external, None }, + { 0, XK_g, g_first, None }, + { 0, XK_G, g_n_or_last, None }, + { 0, XK_r, g_reload_image, None }, + { 0, XK_D, g_remove_image, None }, + { ControlMask, XK_h, g_scroll_screen, DIR_LEFT }, + { ControlMask, XK_Left, g_scroll_screen, DIR_LEFT }, + { ControlMask, XK_j, g_scroll_screen, DIR_DOWN }, + { ControlMask, XK_Down, g_scroll_screen, DIR_DOWN }, + { ControlMask, XK_k, g_scroll_screen, DIR_UP }, + { ControlMask, XK_Up, g_scroll_screen, DIR_UP }, + { ControlMask, XK_l, g_scroll_screen, DIR_RIGHT }, + { ControlMask, XK_Right, g_scroll_screen, DIR_RIGHT }, + { 0, XK_plus, g_zoom, +1 }, + { 0, XK_KP_Add, g_zoom, +1 }, + { 0, XK_minus, g_zoom, -1 }, + { 0, XK_KP_Subtract, g_zoom, -1 }, + { 0, XK_m, g_toggle_image_mark, None }, + { 0, XK_M, g_mark_range, None }, + { ControlMask, XK_m, g_reverse_marks, None }, + { ControlMask, XK_u, g_unmark_all, None }, + { 0, XK_N, g_navigate_marked, +1 }, + { 0, XK_P, g_navigate_marked, -1 }, + { 0, XK_braceleft, g_change_gamma, -1 }, + { 0, XK_braceright, g_change_gamma, +1 }, + { ControlMask, XK_g, g_change_gamma, 0 }, + + { 0, XK_h, t_move_sel, DIR_LEFT }, + { 0, XK_Left, t_move_sel, DIR_LEFT }, + { 0, XK_j, t_move_sel, DIR_DOWN }, + { 0, XK_Down, t_move_sel, DIR_DOWN }, + { 0, XK_k, t_move_sel, DIR_UP }, + { 0, XK_Up, t_move_sel, DIR_UP }, + { 0, XK_l, t_move_sel, DIR_RIGHT }, + { 0, XK_Right, t_move_sel, DIR_RIGHT }, + { 0, XK_R, t_reload_all, None }, + + { 0, XK_n, i_navigate, +1 }, + { 0, XK_n, i_scroll_to_edge, DIR_LEFT | DIR_UP }, + { 0, XK_space, i_navigate, +1 }, + { 0, XK_p, i_navigate, -1 }, + { 0, XK_p, i_scroll_to_edge, DIR_LEFT | DIR_UP }, + { 0, XK_BackSpace, i_navigate, -1 }, + { 0, XK_bracketright, i_navigate, +10 }, + { 0, XK_bracketleft, i_navigate, -10 }, + { ControlMask, XK_6, i_alternate, None }, + { ControlMask, XK_n, i_navigate_frame, +1 }, + { ControlMask, XK_p, i_navigate_frame, -1 }, + { ControlMask, XK_space, i_toggle_animation, None }, + { ControlMask, XK_a, i_toggle_animation, None }, + { 0, XK_h, i_scroll, DIR_LEFT }, + { 0, XK_Left, i_scroll, DIR_LEFT }, + { 0, XK_j, i_scroll, DIR_DOWN }, + { 0, XK_Down, i_scroll, DIR_DOWN }, + { 0, XK_k, i_scroll, DIR_UP }, + { 0, XK_Up, i_scroll, DIR_UP }, + { 0, XK_l, i_scroll, DIR_RIGHT }, + { 0, XK_Right, i_scroll, DIR_RIGHT }, + { 0, XK_H, i_scroll_to_edge, DIR_LEFT }, + { 0, XK_J, i_scroll_to_edge, DIR_DOWN }, + { 0, XK_K, i_scroll_to_edge, DIR_UP }, + { 0, XK_L, i_scroll_to_edge, DIR_RIGHT }, + { 0, XK_z, i_scroll_to_center, None }, + { 0, XK_equal, i_set_zoom, 100 }, + { 0, XK_w, i_fit_to_win, SCALE_DOWN }, + { 0, XK_W, i_fit_to_win, SCALE_FIT }, + { 0, XK_F, i_fit_to_win, SCALE_FILL }, + { 0, XK_e, i_fit_to_win, SCALE_WIDTH }, + { 0, XK_E, i_fit_to_win, SCALE_HEIGHT }, + { 0, XK_less, i_rotate, DEGREE_270 }, + { 0, XK_greater, i_rotate, DEGREE_90 }, + { 0, XK_question, i_rotate, DEGREE_180 }, + { 0, XK_bar, i_flip, FLIP_HORIZONTAL }, + { 0, XK_underscore, i_flip, FLIP_VERTICAL }, + { 0, XK_a, i_toggle_antialias, None }, + { 0, XK_A, i_toggle_alpha, None }, + { 0, XK_s, i_slideshow, None }, +}; + +/* mouse button mappings for image mode: */ +static const button_t buttons_img[] = { + /* modifiers button function argument */ + { 0, 1, i_cursor_navigate, None }, + { ControlMask, 1, i_drag, DRAG_RELATIVE }, + { 0, 2, i_drag, DRAG_ABSOLUTE }, + { 0, 3, g_switch_mode, None }, + { 0, 4, g_zoom, +1 }, + { 0, 5, g_zoom, -1 }, +}; + +/* mouse button mappings for thumbnail mode: */ +static const button_t buttons_tns[] = { + /* modifiers button function argument */ + { 0, 1, t_select, None }, + { 0, 3, t_drag_mark_image, None }, + { 0, 4, t_scroll, DIR_UP }, + { 0, 5, t_scroll, DIR_DOWN }, + { ControlMask, 4, g_scroll_screen, DIR_UP }, + { ControlMask, 5, g_scroll_screen, DIR_DOWN }, +}; + +/* true means NAV_WIDTH is relative (33%), false means absolute (33 pixels) */ +static const bool NAV_IS_REL = true; +/* width of navigation area, 0 disables cursor navigation, */ +static const unsigned int NAV_WIDTH = 33; + +/* mouse cursor on left, middle and right part of the window */ +static const cursor_t imgcursor[3] = { + CURSOR_LEFT, CURSOR_ARROW, CURSOR_RIGHT +}; + +#endif diff --git a/icon/128x128.png b/icon/128x128.png index d45250b80769ef098cf165978d2cea7df50c38d0..dce3e583654ecef007e666657df0cf2521ec7ba9 100644 GIT binary patch literal 3400 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 delta 245 zcmV{Zw?jbT*@x=qCB|s7Y*%X8ir1NY|00000NkvXXu0mjfjbdT< diff --git a/icon/32x32.png b/icon/32x32.png index e18ccf8f2d085ddfd2acd32f635f5649207734c5..55732311bd46e101829ad46d90f00020d99b1fdd 100644 GIT binary patch delta 1138 zcmV-&1daQp1N;b(8Gi-<0047(dh`GQ010qNS#tmY0PFw&0PF#IC~>_2000?uMObuG zZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs000CDNkllp>{6q@9%uKPjcUvQjJ*s|ZCGf)o`I1%DA2f*S>`3s-I|;=+Zd z#Zp|2ZJJ7Ikb_v1yWK(hU8t?#H?J{O|dEPpG3@F1sX2_N%ZD z7y#O7E~ZdUD}1%KRQhsoa4-W9fPsO5-c0>5lV3U@WZP$j?EbEw!&~4xYUH# zFN*-cNER5$mX_NV8_uMGY6BdXMPMlufP<|uds-~NrGYo5s!N_}Cttl zmND>bOT>EH+z*pw5!fC#9HY051#LJP^tKC)1%Co?^XbV&?vwrpA81ZV19rrQ584YH zxKic!23vJgZ9JMO?@y;(T!!`LxxfNp1>Tvi@t0TbwT9s=5EL?Uc@?30eayVLm@o=MH?9~F zIt={n1E;ee%cpa1{>07*qoM6N<$ Eg2_x0FaQ7m delta 406 zcmV;H0crmH2&Ds%8Gix*008_L?V|ty010qNS#tmY3labT3lag+-G2N400CD?L_t(Y z$757dFkzqo+`WGqNGdCu;!?oGKx0623m7R3qJj4T%`ISorvzjGNfr3TiDVD)AmVfI zV<9qFh|E?HL+KvLR0#@v84WY`iAg#5fnj3v2rrB91UeObK!3dHl(e AnE(I) diff --git a/icon/48x48.png b/icon/48x48.png index 442a96c58fba0f440d2ea5a653d0bff4f0415a6c..56a3e7b10795602e205d5ab672930dec3725bc43 100644 GIT binary patch delta 1632 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 s0I5h%1?Wo;K8v#W5011