Skip to content

Commit 62abaee

Browse files
authored
Terminal: Use path as terminal identifier (#989)
1 parent 7c241c9 commit 62abaee

File tree

5 files changed

+22
-20
lines changed

5 files changed

+22
-20
lines changed

Files/Assets/terminal/terminal.json

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
{
22
"version": 1,
3-
"defaultTerminalId": 1,
3+
"defaultTerminalPath": "cmd.exe",
44
"terminals": [
55
{
6-
"id": 1,
76
"name": "CMD",
87
"path": "cmd.exe",
98
"arguments": "/k \"cd /d {0} && title Command Prompt\"",
109
"icon": ""
1110
}
1211
/*
1312
{
14-
"id": 2,
1513
"name": "PowerShell Core 6",
1614
"path": "pwsh.exe",
1715
"arguments": "-WorkingDirectory \"{0}\"",
1816
"icon": ""
1917
},
2018
{
21-
"id": 3,
2219
"name": "Windows Terminal",
2320
"path": "wt.exe",
2421
"arguments": "-d \"{0}\"",

Files/DataModels/TerminalFileModel.cs

+17-7
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,33 @@ public class TerminalFileModel
1212
[JsonProperty("version")]
1313
public int Version { get; set; }
1414

15-
[JsonProperty("defaultTerminalId")]
16-
public int DefaultTerminalId { get; set; }
15+
[JsonProperty("defaultTerminalPath")]
16+
public string DefaultTerminalPath { get; set; }
1717

1818
[JsonProperty("terminals")]
1919
public List<TerminalModel> Terminals { get; set; } = new List<TerminalModel>();
2020

2121
public TerminalModel GetDefaultTerminal()
2222
{
23-
if (DefaultTerminalId != 0)
23+
TerminalModel terminal = Terminals.FirstOrDefault(x => x.Path.Equals(DefaultTerminalPath, StringComparison.OrdinalIgnoreCase));
24+
if (terminal != null)
2425
{
25-
return Terminals.Single(x => x.Id == DefaultTerminalId);
26+
return terminal;
2627
}
28+
else
29+
{
30+
ResetToDefaultTerminal();
31+
}
32+
2733
return Terminals.First();
2834
}
2935

3036
public void ResetToDefaultTerminal()
3137
{
32-
DefaultTerminalId = 1;
38+
DefaultTerminalPath = "cmd.exe";
3339
}
3440

35-
public async Task<bool> AddTerminal(TerminalModel terminal, string packageName)
41+
public async Task<bool> AddOrRemoveTerminal(TerminalModel terminal, string packageName)
3642
{
3743
bool isChanged = false;
3844
bool isInstalled = await PackageHelper.IsAppInstalledAsync(packageName);
@@ -44,8 +50,12 @@ public async Task<bool> AddTerminal(TerminalModel terminal, string packageName)
4450
}
4551
else if (!isInstalled)
4652
{
53+
if (DefaultTerminalPath.Equals(terminal.Path, StringComparison.OrdinalIgnoreCase))
54+
{
55+
ResetToDefaultTerminal();
56+
}
4757
Terminals.Remove(Terminals.FirstOrDefault(x => x.Path.Equals(terminal.Path, StringComparison.OrdinalIgnoreCase)));
48-
ResetToDefaultTerminal();
58+
4959
isChanged = true;
5060
}
5161
return isChanged;

Files/DataModels/TerminalModel.cs

-3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ namespace Files.DataModels
44
{
55
public class TerminalModel
66
{
7-
[JsonProperty("id")]
8-
public int Id { get; set; }
9-
107
[JsonProperty("name")]
118
public string Name { get; set; }
129

Files/View Models/SettingsViewModel.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -347,24 +347,22 @@ private async void LoadTerminalApps()
347347

348348
var windowsTerminal = new TerminalModel()
349349
{
350-
Id = TerminalsModel.Terminals.Count + 1,
351350
Name = "Windows Terminal",
352351
Path = "wt.exe",
353-
Arguments = "-d {0}",
352+
Arguments = "-d \"{0}\"",
354353
Icon = ""
355354
};
356355

357356
var fluentTerminal = new TerminalModel()
358357
{
359-
Id = TerminalsModel.Terminals.Count + 1,
360358
Name = "Fluent Terminal",
361359
Path = "flute.exe",
362360
Arguments = "new \"{0}\"",
363361
Icon = ""
364362
};
365363

366-
bool isWindowsTerminalAddedOrRemoved = await TerminalsModel.AddTerminal(windowsTerminal, "Microsoft.WindowsTerminal_8wekyb3d8bbwe");
367-
bool isFluentTerminalAddedOrRemoved = await TerminalsModel.AddTerminal(fluentTerminal, "53621FSApps.FluentTerminal_87x1pks76srcp");
364+
bool isWindowsTerminalAddedOrRemoved = await TerminalsModel.AddOrRemoveTerminal(windowsTerminal, "Microsoft.WindowsTerminal_8wekyb3d8bbwe");
365+
bool isFluentTerminalAddedOrRemoved = await TerminalsModel.AddOrRemoveTerminal(fluentTerminal, "53621FSApps.FluentTerminal_87x1pks76srcp");
368366
if (isWindowsTerminalAddedOrRemoved || isFluentTerminalAddedOrRemoved)
369367
{
370368
await FileIO.WriteTextAsync(TerminalsModelFile, JsonConvert.SerializeObject(TerminalsModel, Formatting.Indented));

Files/Views/SettingsPages/Preferences.xaml.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ private void TerminalApp_SelectionChanged(object sender, SelectionChangedEventAr
5252

5353
var selectedTerminal = (TerminalModel)comboBox.SelectedItem;
5454

55-
App.AppSettings.TerminalsModel.DefaultTerminalId = selectedTerminal.Id;
55+
App.AppSettings.TerminalsModel.DefaultTerminalPath = selectedTerminal.Path;
5656

5757
SaveTerminalSettings();
5858
}

0 commit comments

Comments
 (0)