Last active
August 8, 2025 06:14
-
-
Save Sneakpeakcss/05a97d509b8be67a6f11400b0bee54ab to your computer and use it in GitHub Desktop.
mpv player script to open directory and select currently playing file (Windows).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- open-in-explorer.lua | |
| mp.add_key_binding(nil, "open-in-explorer", function() | |
| local path = mp.get_property("path") | |
| if path ~= nil and not path:match("^%a[%a%d-_]+://") then | |
| path = string.gsub(path, "/", "\\") | |
| mp.command_native({ | |
| name = "subprocess", | |
| playback_only = false, | |
| args = { 'explorer', '/select,', path .. ' ' }, | |
| }) | |
| else | |
| mp.osd_message("Invalid path: " .. (path or "No path provided")) | |
| end | |
| end) |
Author
Author
Here's the problem in more detail: mpvnet-player/mpv.net#580 (comment)
(...)
This seems to work:mp.add_key_binding(nil, "open-in-explorer", function() local path = mp.get_property("path") if path ~= nil and not path:match("^%a[%a%d-_]+://") then local ps_code = [[ Start-Process -FilePath explorer.exe -ArgumentList "/select,`"__path__`"" ]] local path = string.gsub(path, "/", "\\") local path = string.gsub(path, "[%(%)%.%+%-%*%?%[%]%^%$%%]", "%%%1") local ps_path = string.gsub(path, "([$`])", "`%1") -- escape dollar/backtick signs for PowerShell local ps_code = string.gsub(ps_code, "__path__", ps_path) mp.command_native({ name = "subprocess", playback_only = false, args = { 'powershell', '-NoProfile', '-Command', ps_code }, }) else mp.osd_message("Invalid path: " .. (path or "No path provided")) end end)We're breaking records… At this point this seems like a case of "just Windows / mpv things" and pick your poison. It would be far more preferable to get mpv to pass it with a single set of double quotes through cmd in all cases, but i don't think it's possible.
Author
Okay, main version seems to now work in every single case, so there's again no need to use the above PowerShell solution.
Was the fix just appending a space to the path? Please submit a PR with uosc since you have a setup to reproduce this. 🙏
Author
Yea, a trailing space was all it takes to fix this. I've submited the mentioned PR.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment

Well, now that's slightly amusing. This whole thing came to be because of an issue with PowerShell version in
mpv.net, but for some reason it didn't hit me to check if uosc didn't already have this. I guess this is still useful as a standalone solution for people that don't use uosc.Though going through my weirdly named test files,
uoschas an issue with paths that have a comma in them:C:\test\test2\aa,aa.mp4this will open "This PC" directoryC:\test\test2\,aaaa.mp4this will open "test" directory and select test2 folderEverything starts working fine the moment there's a space anywhere in the path.
[edit]
Wait… This one also has the same issue, i'm quite sure that i've used the same files testing this thing previously, but apparently not? PowerShell version also is broken in those 2 cases.
C:\test\test2\..,aaaa.mp4uh huh… Amazing way of navigating directories