diff options
Diffstat (limited to 'init.lua')
| -rw-r--r-- | init.lua | 171 |
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) |
