default.nix (2844B)
1 { 2 lib, 3 pkgs, 4 user, 5 ... 6 }: 7 { 8 home-manager.users.${user} = { 9 programs.swayimg.enable = true; 10 11 xdg.configFile."swayimg/init.lua".text = # lua 12 '' 13 swayimg.text.set_font("JetBrains Mono Nerd Font Propo") 14 swayimg.text.set_size(16) 15 16 swayimg.viewer.set_drag_button("MouseLeft") 17 18 local exit = function() swayimg.exit() end 19 swayimg.viewer.on_key("q", exit) 20 swayimg.gallery.on_key("q", exit) 21 22 swayimg.viewer.on_key("Escape", function() swayimg.set_mode("gallery") end) 23 24 local gallery_move = function(dir) return function() swayimg.gallery.switch_image(dir) end end 25 swayimg.gallery.on_key("g", gallery_move("first")) 26 swayimg.gallery.on_key("Shift+g", gallery_move("last")) 27 swayimg.gallery.on_key("Ctrl+u", gallery_move("pgup")) 28 swayimg.gallery.on_key("Ctrl+d", gallery_move("pgdown")) 29 swayimg.gallery.on_key("h", gallery_move("left")) 30 swayimg.gallery.on_key("j", gallery_move("down")) 31 swayimg.gallery.on_key("k", gallery_move("up")) 32 swayimg.gallery.on_key("l", gallery_move("right")) 33 34 local viewer_move = function(dir) return function() swayimg.viewer.switch_image(dir) end end 35 swayimg.viewer.on_key("g", viewer_move("first")) 36 swayimg.viewer.on_key("Shift+g", viewer_move("last")) 37 swayimg.viewer.on_key("j", viewer_move("next")) 38 swayimg.viewer.on_key("k", viewer_move("prev")) 39 swayimg.viewer.on_key("r", viewer_move("random")) 40 41 local show_zoom = function() 42 swayimg.text.set_status(swayimg.viewer.get_scale() * 100 .. "%") 43 end 44 local zoom = function(multiplier) 45 return function() 46 local m = swayimg.get_mouse_pos() 47 swayimg.viewer.set_abs_scale(swayimg.viewer.get_scale() * multiplier, m.x, m.y) 48 show_zoom() 49 end 50 end 51 swayimg.viewer.on_mouse("MouseMiddle", function() 52 swayimg.viewer.reset() 53 show_zoom() 54 end) 55 swayimg.viewer.on_mouse("ScrollUp", zoom(1.1)) 56 swayimg.viewer.on_mouse("ScrollDown", zoom(1/1.1)) 57 58 local function shell_escape(s) return "'"..string.gsub(s, "'", "'\"'\"'").."'" end 59 swayimg.viewer.on_key("y", function() 60 local image = swayimg.viewer.get_image() 61 os.execute("${lib.getExe' pkgs.wl-clipboard "wl-copy"} -- "..shell_escape(image.path)) 62 swayimg.text.set_status("Image path copied to clipboard") 63 end) 64 swayimg.viewer.on_key("Shift+y", function() 65 local image = swayimg.viewer.get_image() 66 os.execute("${lib.getExe pkgs.imagemagick} "..shell_escape(image.path).." png:- | ${lib.getExe' pkgs.wl-clipboard "wl-copy"}") 67 swayimg.text.set_status("Image data copied to clipboard") 68 end) 69 ''; 70 }; 71 }