nirish

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

main.lua (3161B)


      1 --[[
      2     mpv-file-browser
      3 
      4     This script allows users to browse and open files and folders entirely from within mpv.
      5     The script uses nothing outside the mpv API, so should work identically on all platforms.
      6     The browser can move up and down directories, start playing files and folders, or add them to the queue.
      7 
      8     For full documentation see: https://github.com/CogentRedTester/mpv-file-browser
      9 ]]--
     10 
     11 local mp = require 'mp'
     12 
     13 local o = require 'modules.options'
     14 
     15 -- setting the package paths
     16 package.path = mp.command_native({"expand-path", o.module_directory}).."/?.lua;"..package.path
     17 
     18 local addons = require 'modules.addons'
     19 local keybinds = require 'modules.keybinds'
     20 local setup = require 'modules.setup'
     21 local controls = require 'modules.controls'
     22 local observers = require 'modules.observers'
     23 local script_messages = require 'modules.script-messages'
     24 
     25 local input_loaded, input = pcall(require, "mp.input")
     26 local user_input_loaded, user_input = pcall(require, "user-input-module")
     27 
     28 
     29 -- root and addon setup
     30 setup.root()
     31 addons.load_internal_addons()
     32 if o.addons then addons.load_external_addons() end
     33 addons.setup_addons()
     34 
     35 --these need to be below the addon setup in case any parsers add custom entries
     36 setup.extensions_list()
     37 keybinds.setup_keybinds()
     38 
     39 -- property observers
     40 mp.observe_property('path', 'string', observers.current_directory)
     41 if o.map_dvd_device then mp.observe_property('dvd-device', 'string', observers.dvd_device) end
     42 if o.map_bd_device then mp.observe_property('bluray-device', 'string', observers.bd_device) end
     43 if o.map_cdda_device then mp.observe_property('cdda-device', 'string', observers.cd_device) end
     44 if o.align_x == 'auto' then mp.observe_property('osd-align-x', 'string', observers.osd_align) end
     45 if o.align_y == 'auto' then mp.observe_property('osd-align-y', 'string', observers.osd_align) end
     46 
     47 -- scripts messages
     48 mp.register_script_message('=>', script_messages.chain)
     49 mp.register_script_message('delay-command', script_messages.delay_command)
     50 mp.register_script_message('conditional-command', script_messages.conditional_command)
     51 mp.register_script_message('evaluate-expressions', script_messages.evaluate_expressions)
     52 mp.register_script_message('run-statement', script_messages.run_statement)
     53 
     54 mp.register_script_message('browse-directory', controls.browse_directory)
     55 mp.register_script_message("get-directory-contents", script_messages.get_directory_contents)
     56 
     57 --declares the keybind to open the browser
     58 mp.add_key_binding('MENU','browse-files', controls.toggle)
     59 mp.add_key_binding('Ctrl+o','open-browser', controls.open)
     60 
     61 if input_loaded then
     62     mp.add_key_binding("Alt+o", "browse-directory/get-user-input", function()
     63         input.get({
     64             prompt = "open directory:",
     65             id = "file-browser/browse-directory",
     66             submit = function(text)
     67                 controls.browse_directory(text)
     68                 input.terminate()
     69             end
     70         })
     71     end)
     72 elseif user_input_loaded then
     73     mp.add_key_binding("Alt+o", "browse-directory/get-user-input", function()
     74         user_input.get_user_input(controls.browse_directory, {request_text = "open directory:"})
     75     end)
     76 end