Update dotfiles (2026-10-27 20:18:43)
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user