summaryrefslogtreecommitdiff
path: root/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'init.lua')
-rw-r--r--init.lua171
1 files changed, 171 insertions, 0 deletions
diff --git a/init.lua b/init.lua
new file mode 100644
index 0000000..f6e996c
--- /dev/null
+++ b/init.lua
@@ -0,0 +1,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(false) -- 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)