diff --git a/EntryList.cs b/EntryList.cs index de388bf..e0a3855 100755 --- a/EntryList.cs +++ b/EntryList.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text; @@ -9,9 +10,63 @@ namespace Entries { public class Entry - { + { public string Target { get; set; } + public string TargetExpanded + { + get { return Expand(Target); } + } public string Arguments { get; set; } + + private static bool setWSLName = false; + private string Expand(string input) + { + if (!setWSLName) + { + using (Process wslconf = new Process()) + { + wslconf.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%systemroot%\Sysnative\wslconfig.exe"); + wslconf.StartInfo.StandardOutputEncoding = new UnicodeEncoding(); + wslconf.StartInfo.Arguments = "/l"; + wslconf.StartInfo.UseShellExecute = false; + wslconf.StartInfo.RedirectStandardOutput = true; + + string defaultDist = "Ubuntu-18.04"; + try + { + wslconf.Start(); + + string all = wslconf.StandardOutput.ReadToEnd(); + + List lines = all.Split('\n').Select(s => s.Trim()).Where(s => s.Length > 0).Skip(1).ToList(); + + wslconf.WaitForExit(); + + + if (lines.Count > 0) + { + defaultDist = lines.FirstOrDefault(s => s.Contains("Default")); + if (defaultDist == null) defaultDist = lines[0]; + + defaultDist = defaultDist.Replace("(Default)", "").Trim(); + } + + setWSLName = true; + Environment.SetEnvironmentVariable("WSLNAME", defaultDist); + } + catch (Exception) + { + } + } + } + return Environment.ExpandEnvironmentVariables(input); + + } + public string ArgumentsExpanded + { + get { return Expand(Arguments); } + } + public string Icon { get; set; } public int IconIndex { get; set; } public string Name { get; set; } diff --git a/EntryList.cs b/EntryList.cs index de388bf..e0a3855 100755 --- a/EntryList.cs +++ b/EntryList.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text; @@ -9,9 +10,63 @@ namespace Entries { public class Entry - { + { public string Target { get; set; } + public string TargetExpanded + { + get { return Expand(Target); } + } public string Arguments { get; set; } + + private static bool setWSLName = false; + private string Expand(string input) + { + if (!setWSLName) + { + using (Process wslconf = new Process()) + { + wslconf.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%systemroot%\Sysnative\wslconfig.exe"); + wslconf.StartInfo.StandardOutputEncoding = new UnicodeEncoding(); + wslconf.StartInfo.Arguments = "/l"; + wslconf.StartInfo.UseShellExecute = false; + wslconf.StartInfo.RedirectStandardOutput = true; + + string defaultDist = "Ubuntu-18.04"; + try + { + wslconf.Start(); + + string all = wslconf.StandardOutput.ReadToEnd(); + + List lines = all.Split('\n').Select(s => s.Trim()).Where(s => s.Length > 0).Skip(1).ToList(); + + wslconf.WaitForExit(); + + + if (lines.Count > 0) + { + defaultDist = lines.FirstOrDefault(s => s.Contains("Default")); + if (defaultDist == null) defaultDist = lines[0]; + + defaultDist = defaultDist.Replace("(Default)", "").Trim(); + } + + setWSLName = true; + Environment.SetEnvironmentVariable("WSLNAME", defaultDist); + } + catch (Exception) + { + } + } + } + return Environment.ExpandEnvironmentVariables(input); + + } + public string ArgumentsExpanded + { + get { return Expand(Arguments); } + } + public string Icon { get; set; } public int IconIndex { get; set; } public string Name { get; set; } diff --git a/JumpListUtil/Program.cs b/JumpListUtil/Program.cs index 87c7e22..71d533c 100755 --- a/JumpListUtil/Program.cs +++ b/JumpListUtil/Program.cs @@ -115,12 +115,12 @@ foreach (Entry entry in entryList.Entries) { JumpTask task = new JumpTask(); - task.ApplicationPath = Environment.ExpandEnvironmentVariables(entry.Target); + task.ApplicationPath = entry.TargetExpanded; task.Description = entry.Description; task.Title = entry.Name; task.IconResourcePath = entry.Icon; task.IconResourceIndex = entry.IconIndex; - task.Arguments = Environment.ExpandEnvironmentVariables(entry.Arguments); + task.Arguments = entry.ArgumentsExpanded; jumpItems.Add(task); } @@ -145,9 +145,9 @@ Entry start = entryList.Entries[startIndex]; Process p = Process.Start(new ProcessStartInfo { - FileName = Environment.ExpandEnvironmentVariables(start.Target), + FileName = start.TargetExpanded, UseShellExecute = true, - Arguments = Environment.ExpandEnvironmentVariables(start.Arguments) + Arguments = start.ArgumentsExpanded, }); } else diff --git a/EntryList.cs b/EntryList.cs index de388bf..e0a3855 100755 --- a/EntryList.cs +++ b/EntryList.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text; @@ -9,9 +10,63 @@ namespace Entries { public class Entry - { + { public string Target { get; set; } + public string TargetExpanded + { + get { return Expand(Target); } + } public string Arguments { get; set; } + + private static bool setWSLName = false; + private string Expand(string input) + { + if (!setWSLName) + { + using (Process wslconf = new Process()) + { + wslconf.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%systemroot%\Sysnative\wslconfig.exe"); + wslconf.StartInfo.StandardOutputEncoding = new UnicodeEncoding(); + wslconf.StartInfo.Arguments = "/l"; + wslconf.StartInfo.UseShellExecute = false; + wslconf.StartInfo.RedirectStandardOutput = true; + + string defaultDist = "Ubuntu-18.04"; + try + { + wslconf.Start(); + + string all = wslconf.StandardOutput.ReadToEnd(); + + List lines = all.Split('\n').Select(s => s.Trim()).Where(s => s.Length > 0).Skip(1).ToList(); + + wslconf.WaitForExit(); + + + if (lines.Count > 0) + { + defaultDist = lines.FirstOrDefault(s => s.Contains("Default")); + if (defaultDist == null) defaultDist = lines[0]; + + defaultDist = defaultDist.Replace("(Default)", "").Trim(); + } + + setWSLName = true; + Environment.SetEnvironmentVariable("WSLNAME", defaultDist); + } + catch (Exception) + { + } + } + } + return Environment.ExpandEnvironmentVariables(input); + + } + public string ArgumentsExpanded + { + get { return Expand(Arguments); } + } + public string Icon { get; set; } public int IconIndex { get; set; } public string Name { get; set; } diff --git a/JumpListUtil/Program.cs b/JumpListUtil/Program.cs index 87c7e22..71d533c 100755 --- a/JumpListUtil/Program.cs +++ b/JumpListUtil/Program.cs @@ -115,12 +115,12 @@ foreach (Entry entry in entryList.Entries) { JumpTask task = new JumpTask(); - task.ApplicationPath = Environment.ExpandEnvironmentVariables(entry.Target); + task.ApplicationPath = entry.TargetExpanded; task.Description = entry.Description; task.Title = entry.Name; task.IconResourcePath = entry.Icon; task.IconResourceIndex = entry.IconIndex; - task.Arguments = Environment.ExpandEnvironmentVariables(entry.Arguments); + task.Arguments = entry.ArgumentsExpanded; jumpItems.Add(task); } @@ -145,9 +145,9 @@ Entry start = entryList.Entries[startIndex]; Process p = Process.Start(new ProcessStartInfo { - FileName = Environment.ExpandEnvironmentVariables(start.Target), + FileName = start.TargetExpanded, UseShellExecute = true, - Arguments = Environment.ExpandEnvironmentVariables(start.Arguments) + Arguments = start.ArgumentsExpanded, }); } else diff --git a/ShortcutUtil/MainForm.cs b/ShortcutUtil/MainForm.cs index 491d893..952b3d4 100755 --- a/ShortcutUtil/MainForm.cs +++ b/ShortcutUtil/MainForm.cs @@ -107,9 +107,9 @@ ProcessStartInfo startInfo = new ProcessStartInfo { - FileName = Environment.ExpandEnvironmentVariables(entry.Target), - Arguments = Environment.ExpandEnvironmentVariables(entry.Arguments), - UseShellExecute = true + FileName = entry.TargetExpanded, + Arguments = entry.ArgumentsExpanded, + UseShellExecute = true, }; Process.Start(startInfo); }