nirish

config files for niri window manager
Log | Files | Refs | README | LICENSE

last-opened-directory.lua (1673B)


      1 --[[
      2     An addon for mpv-file-browser which stores the last opened directory and
      3     sets it as the opened directory the next time mpv is opened.
      4 
      5     Available at: https://github.com/CogentRedTester/mpv-file-browser/tree/master/addons
      6 ]]--
      7 
      8 local mp = require 'mp'
      9 local msg = require 'mp.msg'
     10 
     11 local fb = require 'file-browser'
     12 
     13 local state_file = mp.command_native({'expand-path', fb.get_opt('last_opened_directory_file')}) --[[@as string]]
     14 msg.verbose('using', state_file)
     15 
     16 ---@param directory? string
     17 ---@return nil
     18 local function write_directory(directory)
     19     if not fb.get_opt('save_last_opened_directory') then return end
     20 
     21     local file = io.open(state_file, 'w+')
     22 
     23     if not file then return msg.error('could not open', state_file, 'for writing') end
     24 
     25     directory = directory or fb.get_directory() or ''
     26     msg.verbose('writing', directory, 'to', state_file)
     27     file:write(directory)
     28     file:close()
     29 end
     30 
     31 ---@type ParserConfig
     32 local addon = {
     33     api_version = '1.7.0',
     34     priority = 0,
     35 }
     36 
     37 function addon:setup()
     38     if not fb.get_opt('default_to_last_opened_directory') then return end
     39 
     40     local file = io.open(state_file, "r")
     41     if not file then
     42         return msg.info('failed to open', state_file, 'for reading (may be due to first load)')
     43     end
     44 
     45     local dir = file:read("*a")
     46     msg.verbose('setting default directory to', dir)
     47     fb.browse_directory(dir, false)
     48     file:close()
     49 end
     50 
     51 function addon:can_parse(dir, parse_state)
     52     if parse_state.source == 'browser' then write_directory(dir) end
     53     return false
     54 end
     55 
     56 function addon:parse()
     57     return nil
     58 end
     59 
     60 mp.register_event('shutdown', function() write_directory() end)
     61 
     62 return addon