A Simple X Image Viewer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

преди 13 години
преди 12 години
преди 12 години
преди 12 години
преди 12 години
преди 13 години
преди 13 години
преди 13 години
преди 11 години
преди 7 години
преди 9 години
преди 13 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #ifdef _WINDOW_CONFIG
  2. /* default window dimensions (overwritten via -g option): */
  3. enum {
  4. WIN_WIDTH = 800,
  5. WIN_HEIGHT = 600
  6. };
  7. /* bar font:
  8. * (see fonts-conf(5) subsection "FONT NAMES" for valid values)
  9. */
  10. static const char * const BAR_FONT = "monospace:size=8";
  11. /* colors:
  12. * (see X(7) section "COLOR NAMES" for valid values)
  13. */
  14. static const char * const WIN_BG_COLOR = "#555555";
  15. static const char * const WIN_FS_COLOR = "#000000";
  16. static const char * const SEL_COLOR = "#EEEEEE";
  17. static const char * const BAR_BG_COLOR = "#222222";
  18. static const char * const BAR_FG_COLOR = "#EEEEEE";
  19. #endif
  20. #ifdef _IMAGE_CONFIG
  21. /* levels (in percent) to use when zooming via '-' and '+':
  22. * (first/last value is used as min/max zoom level)
  23. */
  24. static const float zoom_levels[] = {
  25. 12.5, 25.0, 50.0, 75.0,
  26. 100.0, 150.0, 200.0, 400.0, 800.0
  27. };
  28. /* default slideshow delay (in sec, overwritten via -S option): */
  29. enum { SLIDESHOW_DELAY = 5 };
  30. /* gamma correction: the user-visible ranges [-GAMMA_RANGE, 0] and
  31. * (0, GAMMA_RANGE] are mapped to the ranges [0, 1], and (1, GAMMA_MAX].
  32. * */
  33. static const double GAMMA_MAX = 10.0;
  34. static const int GAMMA_RANGE = 32;
  35. /* command i_scroll pans image 1/PAN_FRACTION of screen width/height */
  36. static const int PAN_FRACTION = 5;
  37. /* if false, pixelate images at zoom level != 100%,
  38. * toggled with 'a' key binding
  39. */
  40. static const bool ANTI_ALIAS = true;
  41. /* if true, use a checkerboard background for alpha layer,
  42. * toggled with 'A' key binding
  43. */
  44. static const bool ALPHA_LAYER = false;
  45. #endif
  46. #ifdef _THUMBS_CONFIG
  47. /* thumbnail sizes in pixels (width == height): */
  48. static const int thumb_sizes[] = { 32, 64, 96, 128, 160 };
  49. /* thumbnail size at startup, index into thumb_sizes[]: */
  50. static const int THUMB_SIZE = 3;
  51. #endif
  52. #ifdef _MAPPINGS_CONFIG
  53. /* keyboard mappings for image and thumbnail mode: */
  54. static const keymap_t keys[] = {
  55. /* modifiers key function argument */
  56. { 0, XK_q, g_quit, None },
  57. { 0, XK_Return, g_switch_mode, None },
  58. { 0, XK_f, g_toggle_fullscreen, None },
  59. { 0, XK_b, g_toggle_bar, None },
  60. { ControlMask, XK_x, g_prefix_external, None },
  61. { 0, XK_g, g_first, None },
  62. { 0, XK_G, g_n_or_last, None },
  63. { 0, XK_r, g_reload_image, None },
  64. { 0, XK_D, g_remove_image, None },
  65. { ControlMask, XK_h, g_scroll_screen, DIR_LEFT },
  66. { ControlMask, XK_Left, g_scroll_screen, DIR_LEFT },
  67. { ControlMask, XK_j, g_scroll_screen, DIR_DOWN },
  68. { ControlMask, XK_Down, g_scroll_screen, DIR_DOWN },
  69. { ControlMask, XK_k, g_scroll_screen, DIR_UP },
  70. { ControlMask, XK_Up, g_scroll_screen, DIR_UP },
  71. { ControlMask, XK_l, g_scroll_screen, DIR_RIGHT },
  72. { ControlMask, XK_Right, g_scroll_screen, DIR_RIGHT },
  73. { 0, XK_plus, g_zoom, +1 },
  74. { 0, XK_KP_Add, g_zoom, +1 },
  75. { 0, XK_minus, g_zoom, -1 },
  76. { 0, XK_KP_Subtract, g_zoom, -1 },
  77. { 0, XK_m, g_toggle_image_mark, None },
  78. { 0, XK_M, g_reverse_marks, None },
  79. { ControlMask, XK_m, g_unmark_all, None },
  80. { 0, XK_N, g_navigate_marked, +1 },
  81. { 0, XK_P, g_navigate_marked, -1 },
  82. { 0, XK_braceleft, g_change_gamma, -1 },
  83. { 0, XK_braceright, g_change_gamma, +1 },
  84. { ControlMask, XK_g, g_change_gamma, 0 },
  85. { 0, XK_h, t_move_sel, DIR_LEFT },
  86. { 0, XK_Left, t_move_sel, DIR_LEFT },
  87. { 0, XK_j, t_move_sel, DIR_DOWN },
  88. { 0, XK_Down, t_move_sel, DIR_DOWN },
  89. { 0, XK_k, t_move_sel, DIR_UP },
  90. { 0, XK_Up, t_move_sel, DIR_UP },
  91. { 0, XK_l, t_move_sel, DIR_RIGHT },
  92. { 0, XK_Right, t_move_sel, DIR_RIGHT },
  93. { 0, XK_R, t_reload_all, None },
  94. { 0, XK_n, i_navigate, +1 },
  95. { 0, XK_n, i_scroll_to_edge, DIR_LEFT | DIR_UP },
  96. { 0, XK_space, i_navigate, +1 },
  97. { 0, XK_p, i_navigate, -1 },
  98. { 0, XK_p, i_scroll_to_edge, DIR_LEFT | DIR_UP },
  99. { 0, XK_BackSpace, i_navigate, -1 },
  100. { 0, XK_bracketright, i_navigate, +10 },
  101. { 0, XK_bracketleft, i_navigate, -10 },
  102. { ControlMask, XK_6, i_alternate, None },
  103. { ControlMask, XK_n, i_navigate_frame, +1 },
  104. { ControlMask, XK_p, i_navigate_frame, -1 },
  105. { ControlMask, XK_space, i_toggle_animation, None },
  106. { 0, XK_h, i_scroll, DIR_LEFT },
  107. { 0, XK_Left, i_scroll, DIR_LEFT },
  108. { 0, XK_j, i_scroll, DIR_DOWN },
  109. { 0, XK_Down, i_scroll, DIR_DOWN },
  110. { 0, XK_k, i_scroll, DIR_UP },
  111. { 0, XK_Up, i_scroll, DIR_UP },
  112. { 0, XK_l, i_scroll, DIR_RIGHT },
  113. { 0, XK_Right, i_scroll, DIR_RIGHT },
  114. { 0, XK_H, i_scroll_to_edge, DIR_LEFT },
  115. { 0, XK_J, i_scroll_to_edge, DIR_DOWN },
  116. { 0, XK_K, i_scroll_to_edge, DIR_UP },
  117. { 0, XK_L, i_scroll_to_edge, DIR_RIGHT },
  118. { 0, XK_equal, i_set_zoom, 100 },
  119. { 0, XK_w, i_fit_to_win, SCALE_DOWN },
  120. { 0, XK_W, i_fit_to_win, SCALE_FIT },
  121. { 0, XK_e, i_fit_to_win, SCALE_WIDTH },
  122. { 0, XK_E, i_fit_to_win, SCALE_HEIGHT },
  123. { 0, XK_less, i_rotate, DEGREE_270 },
  124. { 0, XK_greater, i_rotate, DEGREE_90 },
  125. { 0, XK_question, i_rotate, DEGREE_180 },
  126. { 0, XK_bar, i_flip, FLIP_HORIZONTAL },
  127. { 0, XK_underscore, i_flip, FLIP_VERTICAL },
  128. { 0, XK_a, i_toggle_antialias, None },
  129. { 0, XK_A, i_toggle_alpha, None },
  130. { 0, XK_s, i_slideshow, None },
  131. };
  132. /* mouse button mappings for image mode: */
  133. static const button_t buttons[] = {
  134. /* modifiers button function argument */
  135. { 0, 1, i_cursor_navigate, None },
  136. { 0, 2, i_drag, DRAG_ABSOLUTE },
  137. { 0, 3, g_switch_mode, None },
  138. { 0, 4, g_zoom, +1 },
  139. { 0, 5, g_zoom, -1 },
  140. };
  141. #endif