dot

NixOS dotfiles
git clone https://git.echoz.io/dot.git
Log | Files | Refs

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 }