1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
-- Example config for Swayimg.
-- This file contains the default configuration used by the application.
-- The viewer searches for the config file in the following locations:
-- 1. $XDG_CONFIG_HOME/swayimg/init.lua
-- 2. $HOME/.config/swayimg/init.lua
-- 3. $XDG_CONFIG_DIRS/swayimg/init.lua
-- 4. /etc/xdg/swayimg/init.lua
-- general config
swayimg.set_mode("viewer") -- mode at startup
swayimg.enable_antialiasing(true) -- anti-aliasing
swayimg.enable_decoration(true) -- window title/buttons/borders
swayimg.enable_overlay(false) -- window overlay mode
swayimg.enable_exif_orientation(true) -- image orientation by EXIF
swayimg.set_dnd_button("MouseRight") -- drag-and-drop mouse button
-- Image list configuration
swayimg.imagelist.set_order("numeric") -- list order
swayimg.imagelist.enable_reverse(false) -- reverse order
swayimg.imagelist.enable_recursive(false) -- recursive directory reading
swayimg.imagelist.enable_adjacent(false) -- add adjacent files from same dir
swayimg.imagelist.enable_fsmon(true) -- enable file system monitoring
-- Text overlay configuration
swayimg.text.set_font("monospace") -- font name
swayimg.text.set_size(18) -- font size in pixels
swayimg.text.set_spacing(0) -- line spacing
swayimg.text.set_padding(10) -- padding from window edge
swayimg.text.set_foreground(0xffcccccc) -- foreground text color
swayimg.text.set_background(0x00000000) -- text background color
swayimg.text.set_shadow(0x0d000000) -- text shadow color
swayimg.text.set_timeout(5) -- layer hide timeout
swayimg.text.set_status_timeout(3) -- status message hide timeout
-- Image viewer mode
swayimg.viewer.set_default_scale("optimal") -- default image scale
swayimg.viewer.set_default_position("center") -- default image position
swayimg.viewer.set_drag_button("MouseLeft") -- mouse button to drag image
swayimg.viewer.set_window_background(0xff000000) -- window background color
swayimg.viewer.set_image_chessboard(20, 0xff333333, 0xff4c4c4c) -- chessboard
swayimg.viewer.enable_centering(true) -- enable automatic centering
swayimg.viewer.enable_loop(true) -- enable image list loop mode
swayimg.viewer.limit_preload(1) -- number of images to preload
swayimg.viewer.limit_history(1) -- number of the history cache
swayimg.viewer.set_mark_color(0xff808080) -- mark icon color
swayimg.viewer.set_pinch_factor(1.0) -- pinch gesture factor
swayimg.viewer.set_text("topleft", { -- top left text block scheme
"File: {name}",
"Format: {format}",
"File size: {sizehr}",
"File time: {time}",
"EXIF date: {meta.Exif.Photo.DateTimeOriginal}",
"EXIF camera: {meta.Exif.Image.Model}"
})
swayimg.viewer.set_text("topright", { -- top right text block scheme
"Image: {list.index} of {list.total}",
"Frame: {frame.index} of {frame.total}",
"Size: {frame.width}x{frame.height}"
})
swayimg.viewer.set_text("bottomleft", { -- bottom left text block scheme
"Scale: {scale}"
})
-- Key and mouse bindings in viewer mode (example only, not all):
-- bind Escape key for exit
swayimg.viewer.on_key("Escape", function() swayimg.exit() end)
-- bind the left arrow key to move the image to the left by 1/10 of the application window size
swayimg.viewer.on_key("Left", function()
local wnd = swayimg.get_window_size()
local pos = swayimg.viewer.get_position()
swayimg.viewer.set_abs_position(math.floor(pos.x + wnd.width / 10), pos.y);
end)
-- bind mouse vertical scroll button with pressed Ctrl to zoom in the image at mouse pointer coordinates
swayimg.viewer.on_mouse("Ctrl-ScrollUp", function()
local pos = swayimg.get_mouse_pos()
local scale = swayimg.viewer.get_scale()
scale = scale + scale / 10
swayimg.viewer.set_abs_scale(scale, pos.x, pos.y);
end)
-- Slide show mode, same config as for viewer mode with the following defaults:
swayimg.slideshow.set_timeout(5) -- timeout to switch image
swayimg.slideshow.set_default_scale("fit") -- default image scale
swayimg.slideshow.set_window_background("auto") -- window background mode
swayimg.slideshow.limit_history(0) -- number of the history cache
swayimg.slideshow.set_text("topleft", { "{name}" }) -- top left text block scheme
-- Gallery mode
swayimg.gallery.set_aspect("fill") -- thumbnail aspect ratio
swayimg.gallery.set_thumb_size(200) -- thumbnail size in pixels
swayimg.gallery.set_padding_size(5) -- padding between thumbnails
swayimg.gallery.set_border_size(5) -- border size for selected thumbnail
swayimg.gallery.set_border_color(0xffaaaaaa) -- border color for selected thumbnail
swayimg.gallery.set_selected_scale(1.15) -- scale for selected thumbnail
swayimg.gallery.set_selected_color(0xff404040) -- background color for selected thumbnail
swayimg.gallery.set_unselected_color(0xff202020) -- background color for unselected thumbnail
swayimg.gallery.set_window_color(0xff000000) -- window background color
swayimg.gallery.set_pinch_factor(100.0) -- pinch gesture factor
swayimg.gallery.limit_cache(100) -- number of thumbnails stored in memory
swayimg.gallery.enable_preload(false) -- preloading invisible thumbnails
swayimg.gallery.enable_pstore(true) -- enable persistent storage for thumbnails
swayimg.gallery.set_text("topleft", { -- top left text block scheme
"File: {name}"
})
swayimg.gallery.set_text("topright", { -- top right text block scheme
"{list.index} of {list.total}"
})
-- Key and mouse bindings in gallery mode (example only, not all):
-- bind Enter key to open image in viewer
swayimg.gallery.on_key("Return", function()
swayimg.set_mode("viewer")
end)
-- bind the left arrow key to select thumbnail on the left side
swayimg.gallery.on_key("Left", function() swayimg.gallery.switch_image("left") end)
-- Vim motions
swayimg.gallery.on_key("j", function() swayimg.gallery.switch_image("up") end)
swayimg.gallery.on_key("k", function() swayimg.gallery.switch_image("down") end)
swayimg.gallery.on_key("l", function() swayimg.gallery.switch_image("left") end)
swayimg.gallery.on_key(";", function() swayimg.gallery.switch_image("right") end)
swayimg.gallery.on_key("q", function() swayimg.exit() end)
swayimg.viewer.on_key("q", function() swayimg.exit() end)
-- Set wallpaper
swayimg.gallery.on_key("Ctrl+w", function()
local image = swayimg.gallery.get_image()
local cpimage= string.format("cp -f %s ~/.cache/wallpaper", image.path)
os.execute(cpimage)
os.execute("swaymsg 'output * bg ~/.cache/wallpaper fill'")
end)
--
-- Other configuration examples
--
-- force set scale mode on window resize (useful for tiling compositors)
swayimg.on_window_resize(function()
swayimg.viewer.set_fix_scale("optimal")
end)
-- bind the Delete key in slide gallery mode to delete the current file and display a status message
swayimg.gallery.on_key("Delete", function()
local image = swayimg.gallery.get_image()
os.remove(image.path)
swayimg.text.set_status("File "..image.path.." removed")
end)
-- set a custom window title in gallery mode
swayimg.gallery.on_image_change(function()
local image = swayimg.gallery.get_image()
swayimg.set_title("Gallery: "..image.path)
end)
-- print paths to all marked files by pressing Ctrl-p in gallery mode
swayimg.gallery.on_key("Ctrl-p", function()
local entries = swayimg.imagelist.get()
for _, entry in ipairs(entries) do
if entry.mark then
print(entry.path)
end
end
end)
|