213 lines
5.7 KiB
Lua
213 lines
5.7 KiB
Lua
swayimg.mode = "viewer"
|
|
swayimg.appid = "swayimg"
|
|
|
|
swayimg.imagelist.order = "mtime"
|
|
-- "none": unsorted (whatever order the system returns)
|
|
-- "alpha": lexicographic, so 1, 10, 2, 20, a, b, c
|
|
-- "numeric": numeric-aware, so 1, 2, 3, 10, 100, a, b, c
|
|
-- "mtime": by modification time
|
|
-- "size": by file size
|
|
-- "random": shuffled
|
|
swayimg.imagelist.adjacent = true -- INI list.all = yes (default: false)
|
|
|
|
-- Text overlay
|
|
swayimg.text.visible = false -- INI info.show = no (default: true)
|
|
swayimg.text.size = 19 -- INI font.size = 14pt; Lua uses pixels (14pt ~ 19px)
|
|
swayimg.text.shadow = 0xd0000000 -- INI font.shadow = #000000d0 (ARGB here)
|
|
|
|
-- INI info.viewer layout: image size at top left, frame info at bottom left
|
|
swayimg.viewer.text = {
|
|
topleft = {
|
|
"File:\t{name}",
|
|
"Format:\t{format}",
|
|
"File size:\t{sizehr}",
|
|
"File time:\t{time}",
|
|
"Size:\t{frame.width}x{frame.height}",
|
|
"EXIF date:\t{meta.Exif.Photo.DateTimeOriginal}",
|
|
"EXIF camera:\t{meta.Exif.Image.Model}",
|
|
},
|
|
topright = {
|
|
"Image:\t{list.index} of {list.total}",
|
|
},
|
|
bottomleft = {
|
|
"Scale:\t{scale}",
|
|
"Frame:\t{frame.index} of {frame.total}",
|
|
},
|
|
}
|
|
|
|
-- INI info.gallery layout: only the file name, bottom right
|
|
swayimg.gallery.text = {
|
|
bottomright = { "{name}" },
|
|
}
|
|
|
|
-- Gallery appearance
|
|
swayimg.gallery.border_color = 0xff000000 -- INI gallery.border = #000000ff (default: 0xffaaaaaa)
|
|
|
|
-- Helpers
|
|
local function next_frame()
|
|
swayimg.viewer.frame = swayimg.viewer.frame + 1
|
|
end
|
|
|
|
local function prev_frame()
|
|
local frame = swayimg.viewer.frame
|
|
if frame > 0 then
|
|
swayimg.viewer.frame = frame - 1
|
|
end
|
|
end
|
|
|
|
-- INI "skip_file": drop the current image from the list
|
|
local function skip_image(img)
|
|
if img then
|
|
swayimg.imagelist.remove(img.path)
|
|
end
|
|
end
|
|
|
|
-- INI: exec rm "%"; skip_file (permanently deletes the file from disk!)
|
|
local function delete_image(img)
|
|
if img then
|
|
local path = img.path
|
|
os.remove(path)
|
|
swayimg.imagelist.remove(path)
|
|
swayimg.text.status = "Deleted " .. path
|
|
end
|
|
end
|
|
|
|
-- Signals (INI general.sigusr1 = reload, general.sigusr2 = next_file)
|
|
swayimg.viewer.on_signal("USR1", function()
|
|
swayimg.viewer.reload()
|
|
end)
|
|
swayimg.viewer.on_signal("USR2", function()
|
|
swayimg.viewer.open("next")
|
|
end)
|
|
swayimg.slideshow.on_signal("USR1", function()
|
|
swayimg.slideshow.reload()
|
|
end)
|
|
swayimg.slideshow.on_signal("USR2", function()
|
|
swayimg.slideshow.open("next")
|
|
end)
|
|
swayimg.gallery.on_signal("USR1", function()
|
|
swayimg.gallery.reload()
|
|
end)
|
|
|
|
-- Viewer key bindings
|
|
-- file navigation
|
|
swayimg.viewer.on_key("h", function()
|
|
swayimg.viewer.open("first")
|
|
end)
|
|
swayimg.viewer.on_key("l", function()
|
|
swayimg.viewer.open("last")
|
|
end)
|
|
swayimg.viewer.on_key("j", function()
|
|
swayimg.viewer.open("prev")
|
|
end)
|
|
swayimg.viewer.on_key("k", function()
|
|
swayimg.viewer.open("next")
|
|
end)
|
|
swayimg.viewer.on_key("Home", function()
|
|
swayimg.viewer.open("first")
|
|
end)
|
|
swayimg.viewer.on_key("End", function()
|
|
swayimg.viewer.open("last")
|
|
end)
|
|
-- NOTE: Left/Right switch images, as in the INI. The default (pan image)
|
|
-- is overridden; scroll or the vertical arrows still pan.
|
|
swayimg.viewer.on_key("left", function()
|
|
swayimg.viewer.open("prev")
|
|
end)
|
|
swayimg.viewer.on_key("right", function()
|
|
swayimg.viewer.open("next")
|
|
end)
|
|
swayimg.viewer.on_key("space", function()
|
|
swayimg.viewer.open("next")
|
|
end)
|
|
swayimg.viewer.on_key("Shift+r", function()
|
|
swayimg.viewer.open("random")
|
|
end)
|
|
swayimg.viewer.on_key("Shift+d", function()
|
|
swayimg.viewer.open("prev_dir")
|
|
end)
|
|
swayimg.viewer.on_key("d", function()
|
|
swayimg.viewer.open("next_dir")
|
|
end)
|
|
|
|
-- frames / animation / slideshow
|
|
swayimg.viewer.on_key("Shift+o", prev_frame)
|
|
swayimg.viewer.on_key("o", next_frame)
|
|
swayimg.viewer.on_key("s", function() -- INI: s = animation (toggle)
|
|
swayimg.viewer.animation = not swayimg.viewer.animation
|
|
end)
|
|
swayimg.viewer.on_key("Shift+s", function() -- INI: Shift+s = slideshow
|
|
swayimg.mode = "slideshow"
|
|
end)
|
|
|
|
-- skip / delete
|
|
swayimg.viewer.on_key("c", function()
|
|
skip_image(swayimg.viewer.get_image())
|
|
end)
|
|
swayimg.viewer.on_key("Shift+Delete", function()
|
|
delete_image(swayimg.viewer.get_image())
|
|
end)
|
|
|
|
-- zoom
|
|
swayimg.viewer.on_key("plus", function()
|
|
swayimg.viewer.scale = swayimg.viewer.scale + swayimg.viewer.scale / 10
|
|
end)
|
|
swayimg.viewer.on_key("w", function()
|
|
swayimg.viewer.set_fix_scale("width")
|
|
end)
|
|
swayimg.viewer.on_key("Shift+w", function()
|
|
swayimg.viewer.set_fix_scale("height")
|
|
end)
|
|
swayimg.viewer.on_key("z", function()
|
|
swayimg.viewer.set_fix_scale("fit")
|
|
end)
|
|
swayimg.viewer.on_key("Shift+z", function()
|
|
swayimg.viewer.set_fix_scale("fill")
|
|
end)
|
|
swayimg.viewer.on_key("0", function()
|
|
swayimg.viewer.set_fix_scale("real")
|
|
end)
|
|
swayimg.viewer.on_key("backspace", function()
|
|
swayimg.viewer.set_fix_scale("optimal")
|
|
end)
|
|
|
|
-- misc
|
|
swayimg.viewer.on_key("r", function()
|
|
swayimg.viewer.reload()
|
|
end)
|
|
swayimg.viewer.on_key("i", function()
|
|
swayimg.text.visible = not swayimg.text.visible
|
|
end)
|
|
swayimg.viewer.on_key("q", function()
|
|
swayimg.exit()
|
|
end)
|
|
|
|
-- mouse
|
|
swayimg.viewer.on_mouse("Shift+ScrollUp", function()
|
|
swayimg.viewer.open("prev")
|
|
end)
|
|
swayimg.viewer.on_mouse("Shift+ScrollDown", function()
|
|
swayimg.viewer.open("next")
|
|
end)
|
|
swayimg.viewer.on_mouse("Alt+ScrollUp", prev_frame)
|
|
swayimg.viewer.on_mouse("Alt+ScrollDown", next_frame)
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- Gallery key bindings
|
|
--------------------------------------------------------------------------------
|
|
swayimg.gallery.on_key("c", function()
|
|
skip_image(swayimg.gallery.get_image())
|
|
end)
|
|
swayimg.gallery.on_key("Shift+Delete", function()
|
|
delete_image(swayimg.gallery.get_image())
|
|
end)
|
|
swayimg.gallery.on_key("r", function()
|
|
swayimg.gallery.reload()
|
|
end)
|
|
swayimg.gallery.on_key("i", function()
|
|
swayimg.text.visible = not swayimg.text.visible
|
|
end)
|
|
swayimg.gallery.on_key("q", function()
|
|
swayimg.exit()
|
|
end)
|