This commit is contained in:
Frank Skare
2020-03-21 06:43:54 +01:00
parent 639893f2e7
commit 32eed33c82
17 changed files with 161 additions and 110 deletions

View File

@@ -2,30 +2,33 @@
### 5.4.4.2
- new: flag cli switches support now `--no-flag` in addition to `--flag=no`
https://mpv.io/manual/master/#usage
- new: cli switches can also start with single `-` instead of double `--`
- new: the PowerShell script host was completely rewritten, events can
can be assigned to using `Register-ObjectEvent`, the scripting
wiki page was updated
https://mpv.io/manual/master/#legacy-option-syntax
- new: the PowerShell script host was completely rewritten, events can be assigned
to using `Register-ObjectEvent`, the scripting wiki page was updated
https://github.com/stax76/mpv.net/wiki/Scripting#powershell
- new: Context Menu > View > Show Profiles
- new: default mpv.conf is now generated with `osd-duration=2000` and
`script-opts=...,console-scale=<DPI scale>` to
workaround mpv using broken High DPI defaults
https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L147
- new: various default were improved
https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpv.conf.txt
### 5.4.4.1
- new: external console replaced with internal console
- new: external OSD console replaced with internal OSD console
https://mpv.io/manual/master/#console
- new: blue color in dark theme is now less intense
https://github.com/stax76/mpv.net/blob/master/Manual.md#color-theme
- new: menu item 'View > Show Progress' (p key) to show progress bar
https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L146
- new: `script-message mpv.net playlist-first`, unlike mpv does not
restart if the first file is already active
- new: if mpv.net is started from the terminal and an error happens
then the error is printed to the terminal instead of shown
with a message box
https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L44
- new: if mpv.net is started from the terminal and an error happens then the error
is printed to the terminal instead of shown with a message box
- fix: update routine did only work when mpv.net was located in 'Program Files'
- fix: errors were ignored and only seen in the terminal,
now a message box is shown
- fix: when start-size=video was used then enlarging or shrinking the window
size was broken
- fix: fatal errors were ignored and only seen in the terminal, now a message box is shown
- fix: when start-size=video was used then enlarging or shrinking the window size was broken
### 5.4.4.0
@@ -37,7 +40,7 @@
- new: update check, it must be enabled first in the conf editor under General
- new: update feature, requires PowerShell 5 and curl,
an up to date Windows 10 system has both included.
Main menu (input.conf) must be reset or updated manually ([defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt))
Main menu (input.conf) must be reset or updated manually ([defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt))
- update: libmpv shinchiro 2019-11-10
@@ -76,7 +79,7 @@
context menu item in explorer with multi selection support use my
[Open with++](https://github.com/stax76/OpenWithPlusPlus#add-to-mpvnet-playlist) shell extension, as far as I know multi selection
can not be done using the Registry but only via shell extension
- window-size mpv property support added ([default bindings](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt#L137))
- window-size mpv property support added ([default bindings](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L137))
- the config editor keeps profiles and comments in mpv.conf intact!
- the options in the config editor are better organized
@@ -273,7 +276,7 @@
pressed, the files are opened as selected, the order is random though
because Explorer starts multiple mpv.net processes concurrently
- libmpv was updated to shinchiro 2019-06-30
- the [mpv.conf defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpvConf.txt) were changed to show a larger OSC
- the [mpv.conf defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpv.conf.txt) were changed to show a larger OSC
- in case a file is opened that has a aspect ratio smaller then 1.2 then
the window size will use a aspect ratio of 1.8
- new JavaScript script osc-visibility.js included in the distribution
@@ -312,7 +315,7 @@
- the default key binding of the Everything media search was changed to F3
- support for the mpv property 'border' was added to the config editor
to show/hide the window decoration (titlebar, border). A toggle menu item and
key binding (b) was added as well ([Default Binding](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt#L135))
key binding (b) was added as well ([Default Binding](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L135))
### 4.3.1
@@ -327,7 +330,7 @@
- the help and layout in the config editor was improved
- clipboard monitoring for URLs can be disabled in the settings
- the context menu has a new feature: Open > Add files to playlist,
it appends files to the playlist [(Default binding)](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt#L33)
it appends files to the playlist [(Default binding)](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L33)
- a setting was added to force using a single mpv.net process instance
### 4.1
@@ -369,7 +372,7 @@
- there was a bug that caused underscores beeing removed from input like MBTN_LEFT_DBL
- the search clear button in the input editor had a render issue in dark mode
- new search feature added to search and play media files, requires
[Everything](https://www.voidtools.com) to be installed. [Default Binding](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt#L29)
[Everything](https://www.voidtools.com) to be installed. [Default Binding](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L29)
### 3.5
@@ -382,6 +385,6 @@
### 3.4
- new feature added to manage file associations from within the app. It can be found in the menu at: Tools > Manage... [Default Binding](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt#L149)
- new feature added to manage file associations from within the app. It can be found in the menu at: Tools > Manage... [Default Binding](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt#L149)
- new zip download option added
- new x86 download option added

View File

@@ -56,9 +56,9 @@ Table of contents
- Very high degree of mpv compatibility, almost all mpv features are available
- Great usability due to everything in the application being searchable
- Open source built with modern tools
- Customizable context menu defined in the same file as the key bindings ([Screenshot](#context-menu-screenshot), [Defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt))
- Searchable config dialog ([Screenshot](#config-editor-screenshot), [Defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpvConf.txt))
- Searchable input (key/mouse) binding editor ([Screenshot](#input-editor-screenshot), [Defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt))
- Customizable context menu defined in the same file as the key bindings ([Screenshot](#context-menu-screenshot), [Defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt))
- Searchable config dialog ([Screenshot](#config-editor-screenshot), [Defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpv.conf.txt))
- Searchable input (key/mouse) binding editor ([Screenshot](#input-editor-screenshot), [Defaults](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt))
- Configuration files that are easy to read and edit ([Manual](https://mpv.io/manual/master/#configuration-files))
- Searchable command palette to quickly find commands and keys ([Screenshot](#command-palette-screenshot))
- Modern graphical user interface with customizable color themes ([Screenshot](#config-editor-screenshot))
@@ -173,7 +173,7 @@ C:\Users\%username%\AppData\Roaming\mpv\input.conf
if it's missing mpv.net generates it with the following defaults:
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt>
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt>
input.conf defines mpv's key and mouse bindings and mpv.net uses comments to define the context menu.
@@ -191,14 +191,14 @@ all config will be loaded from this folder only.
mpv specific settings are stored in the file mpv.conf, if no mpv.conf file exists
mpv.net generates it with the following defaults:
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpvConf.txt>
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpv.conf.txt>
mpv.net specific settings are stored in the file mpvnet.conf
The input (key/mouse) bindings and the context menu definitions are stored in the
input.conf file, if it's missing mpv.net generates it with the following defaults:
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt>
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt>
mpv.net supports almost all mpv settings and features,
[limitations are listed in the wiki](https://github.com/stax76/mpv.net/wiki/Limitations).
@@ -254,7 +254,7 @@ You can support the development of mpv.net with a PayPal donation:
#### mpv.net
- wiki: <https://github.com/stax76/mpv.net/wiki>
- default key bindings: <https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt>
- default key bindings: <https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt>
- download: <https://github.com/stax76/mpv.net/releases>
- bugs and requests: <https://github.com/stax76/mpv.net/issues>

View File

@@ -8,7 +8,7 @@ using System.Windows.Forms;
using UI;
using static libmpv;
using static Common;
using static NewLine;
using System.Threading.Tasks;

View File

@@ -10,8 +10,7 @@ using System.Windows.Interop;
using VB = Microsoft.VisualBasic;
using ScriptHost;
using static Common;
using System.Collections.Generic;
using static NewLine;
namespace mpvnet
{
@@ -43,6 +42,8 @@ namespace mpvnet
case "playlist-first": PlaylistFirst(); break;
case "playlist-last": PlaylistLast(); break;
case "show-profiles": ShowProfiles(); break;
case "show-properties": ShowProperties(); break;
case "show-commands": ShowCommands(); break;
case "add-files-to-playlist": OpenFiles("append"); break; // deprecated 2019
default: Msg.ShowError($"No command '{id}' found."); break;
}
@@ -299,10 +300,10 @@ namespace mpvnet
}
}
private static void ShowProfiles()
static void ShowProfiles()
{
string psCode = @"
foreach ($item in ($mpvjson | ConvertFrom-Json))
string code = @"
foreach ($item in ($json | ConvertFrom-Json | foreach { $_ } | sort name))
{
$item.name
''
@@ -316,14 +317,44 @@ namespace mpvnet
}";
string json = mp.get_property_string("profile-list");
PowerShell ps = new PowerShell();
ps.Print = false;
ps.Scripts.Add(psCode);
string file = Path.GetTempPath() + @"\mpv profiles.txt";
File.WriteAllText(file, BR + string.Join("\r\n", (ps.Invoke("mpvjson", json)
as IEnumerable<object>).Select(x => x.ToString())).ToString());
string file = Path.GetTempPath() + @"\mpv profile-list.txt";
File.WriteAllText(file, BR + PowerShell.InvokeAndReturnString(code, "json", json));
Process.Start(file);
}
static void ShowCommands()
{
string code = @"
foreach ($item in ($json | ConvertFrom-Json | foreach { $_ } | sort name))
{
''
$item.name
foreach ($arg in $item.args)
{
$value = $arg.name + ' <' + $arg.type.ToLower() + '>'
if ($arg.optional -eq $true)
{
$value = '[' + $value + ']'
}
' ' + $value
}
}";
string json = mp.get_property_string("command-list");
string file = Path.GetTempPath() + @"\mpv command-list.txt";
File.WriteAllText(file, PowerShell.InvokeAndReturnString(code, "json", json) + BR);
Process.Start(file);
}
static void ShowProperties()
{
string file = Path.GetTempPath() + @"\mpv property-list.txt";
var props = mp.get_property_string("property-list").Split(',').OrderBy(prop => prop);
File.WriteAllText(file, BR + string.Join(BR, props) + BR);
Process.Start(file);
ps.Runspace.Dispose();
}
}
}

View File

@@ -1,7 +1,7 @@

using System;
public static class Common
public static class NewLine
{
public static string BR = Environment.NewLine;
public static string BR2 = Environment.NewLine + Environment.NewLine;

View File

@@ -61,7 +61,8 @@ namespace mpvnet.Properties {
}
/// <summary>
/// Looks up a localized string similar to [[settings]]
/// Looks up a localized string similar to
///[[settings]]
///name = &quot;hwdec&quot;
///file = &quot;mpv&quot;
///default = &quot;no&quot;
@@ -69,18 +70,18 @@ namespace mpvnet.Properties {
///url = &quot;https://mpv.io/manual/master/#options-hwdec&quot;
///help = &quot;Specify the hardware video decoding API that should be used if possible. Whether hardware decoding is actually done depends on the video codec. If hardware decoding is not possible, mpv will fall back on software decoding.\n\nFor more information visit:&quot;
///options = [{ name = &quot;no&quot;, help = &quot;always use software decoding&quot; },
/// { name = &quot;auto&quot;, hel [rest of string was truncated]&quot;;.
/// { name = &quot;auto&quot;, h [rest of string was truncated]&quot;;.
/// </summary>
internal static string confToml {
internal static string editor_toml {
get {
return ResourceManager.GetString("confToml", resourceCulture);
return ResourceManager.GetString("editor_toml", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to
/// # This file defines the key and mouse bindings and the context menu
/// # of mpv.net. A input and config editor can be found in mpv.net&apos;s
/// # of mpv.net. A input and config editor can be found in mpv.nets
/// # context menu under &apos;Settings&apos;. The defaults of this file can be found at:
///
/// # https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt
@@ -90,34 +91,34 @@ namespace mpvnet.Properties {
/// # https://github.com/mpv-player/mpv/blob/master/etc/input.conf
///
/// # mpv.net&apos;s defaults of mpv.conf contain: &apos;input-default-bindings = no&apos;
/// # which disables mpv&apos;s [rest of string was truncated]&quot;;.
/// # which disables mpv&apos;s i [rest of string was truncated]&quot;;.
/// </summary>
internal static string inputConf {
internal static string input_conf {
get {
return ResourceManager.GetString("inputConf", resourceCulture);
return ResourceManager.GetString("input_conf", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to input-default-bindings = no
/// Looks up a localized string similar to
///input-default-bindings = no
///input-ar-delay = 500
///input-ar-rate = 20
///keep-open = yes
///keep-open-pause = no
///osd-duration = 2000
///osd-playing-msg = &apos;${filename}&apos;
///script-opts = osc-scalewindowed=1.5
///script-opts = osc-scalewindowed=1.5,osc-hidetimeout=2000,console-scale=1
///screenshot-directory = &apos;~~desktop/&apos;
///cscale = spline36
///dscale = spline36
///scale = spline36
///hwdec = yes
///
///[protocol.https]
///osd-playing-msg = &apos;${media-title}&apos;.
///osd-playing-msg = &apos;${media-title}&apos;
///.
/// </summary>
internal static string mpvConf {
internal static string mpv_conf {
get {
return ResourceManager.GetString("mpvConf", resourceCulture);
return ResourceManager.GetString("mpv_conf", resourceCulture);
}
}
@@ -135,17 +136,18 @@ namespace mpvnet.Properties {
/// Looks up a localized string similar to
///[dark]
///
///heading = #1E90FF
///foreground = #FFFFFF
///foreground2 = #C0C0C0
///heading = #3C8CC8
///foreground = #DDDDDD
///foreground2 = #AAAAAA
///background = #323232
///
///menu-foreground = #FFFFFF
///menu-foreground = #DDDDDD
///menu-background = #323232
///menu-highlight = #505050
///menu-border = #FFFFFF
///menu-checked = #5A5A5A
///
///
///[light]
///
///heading = #0068B2

View File

@@ -118,18 +118,18 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="confToml" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ConfToml.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
<data name="editor_toml" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\editor.toml.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="inputConf" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\inputConf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="mpvConf" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\mpvConf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
<data name="input_conf" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\input.conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="mpvnet" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\mpvnet.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="mpv_conf" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\mpv.conf.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="theme" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\theme.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>

View File

@@ -3,7 +3,7 @@
# of mpv.net. A input and config editor can be found in mpv.nets
# context menu under 'Settings'. The defaults of this file can be found at:
# https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt
# https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt
# The defaults of mpv can be found at:
@@ -145,7 +145,9 @@
F9 show-text ${track-list} 5000 #menu: View > Show Audio/Video/Subtitle List
p show-progress #menu: View > Show Progress
Ctrl+p script-message mpv.net show-profiles #menu: View > Show Profiles
` script-binding console/enable #menu: View > Show REPL
Shift+p script-message mpv.net show-properties #menu: View > Show Properties
Shift+c script-message mpv.net show-commands #menu: View > Show Commands
` script-binding console/enable #menu: View > Show Console
c script-message mpv.net show-conf-editor #menu: Settings > Show Config Editor
Ctrl+i script-message mpv.net show-input-editor #menu: Settings > Show Input Editor

View File

@@ -1,4 +1,5 @@
using System;

using System;
using System.IO;
using System.Reflection;

View File

@@ -1,6 +1,7 @@

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Threading;
@@ -65,6 +66,16 @@ namespace ScriptHost
}
}
public static string InvokeAndReturnString(string code, string varName, object varValue)
{
PowerShell ps = new PowerShell() { Print = false };
ps.Scripts.Add(code);
string ret = string.Join(Environment.NewLine, (ps.Invoke(varName, varValue)
as IEnumerable<object>).Select(item => item.ToString())).ToString();
ps.Runspace.Dispose();
return ret;
}
public void Output_DataReady(object sender, EventArgs e)
{
var output = sender as PipelineReader<PSObject>;

View File

@@ -5,6 +5,7 @@ using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows;
using System.Windows.Controls;
@@ -16,7 +17,7 @@ namespace mpvnet
{
public partial class ConfWindow : Window
{
List<SettingBase> SettingsDefinitions = Settings.LoadSettings(Properties.Resources.confToml);
List<SettingBase> SettingsDefinitions = Settings.LoadSettings(Properties.Resources.editor_toml);
List<ConfItem> ConfItems = new List<ConfItem>();
public ObservableCollection<string> FilterStrings { get; } = new ObservableCollection<string>();
string InitialContent;

View File

@@ -94,7 +94,7 @@ namespace mpvnet
{
string text = null;
foreach (string line in Properties.Resources.inputConf.Split(new[] { "\r\n" }, StringSplitOptions.None))
foreach (string line in Properties.Resources.input_conf.Split(new[] { "\r\n" }, StringSplitOptions.None))
{
string test = line.Trim();
if (test == "" || test.StartsWith("#")) text += test + "\r\n";

View File

@@ -385,7 +385,7 @@ namespace mpvnet
if (!content.Contains("#menu:"))
{
var defaultItems = CommandItem.GetItems(Properties.Resources.inputConf);
var defaultItems = CommandItem.GetItems(Properties.Resources.input_conf);
foreach (CommandItem item in items)
foreach (CommandItem defaultItem in defaultItems)

View File

@@ -118,7 +118,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Misc\App.cs" />
<Compile Include="Misc\Common.cs" />
<Compile Include="Misc\NewLine.cs" />
<Compile Include="Misc\Extension.cs" />
<Content Include="..\License.txt">
<Link>License.txt</Link>
@@ -179,7 +179,7 @@
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Scripting\PythonScript.cs" />
<Compile Include="Scripting\IronPython.cs" />
<Compile Include="mpv\libmpv.cs" />
<Compile Include="WinForms\MainForm.cs">
<SubType>Form</SubType>
@@ -247,8 +247,8 @@
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Content Include="mpvnet.ico" />
<Content Include="Resources\mpvConf.txt" />
<Content Include="Resources\confToml.txt" />
<Content Include="Resources\mpv.conf.txt" />
<Content Include="Resources\editor.toml.txt" />
<None Include="Resources\mpvnet.ico" />
<None Include="Resources\mpvnet.png" />
</ItemGroup>
@@ -256,7 +256,7 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\inputConf.txt" />
<Content Include="Resources\input.conf.txt" />
</ItemGroup>
<ItemGroup>
<Page Include="DynamicGUI\OptionSettingControl.xaml">

View File

@@ -19,7 +19,7 @@ using WinForms = System.Windows.Forms;
using static libmpv;
using static WinAPI;
using static Common;
using static NewLine;
namespace mpvnet
{
@@ -215,11 +215,11 @@ namespace mpvnet
RegistryHelp.SetValue(App.RegPath, "ConfigFolder", _ConfigFolder);
if (!File.Exists(_ConfigFolder + "input.conf"))
File.WriteAllText(_ConfigFolder + "input.conf", Properties.Resources.inputConf);
File.WriteAllText(_ConfigFolder + "input.conf", Properties.Resources.input_conf);
if (!File.Exists(_ConfigFolder + "mpv.conf"))
{
string conf = Properties.Resources.mpvConf;
string conf = Properties.Resources.mpv_conf;
Graphics gx = Graphics.FromHwnd(IntPtr.Zero);
float scale = GetDeviceCaps(gx.GetHdc(), 88 /*LOGPIXELSX*/) / 96.0f;