Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68208ff0ec | ||
|
|
2d7d1810a9 | ||
|
|
cbc90cc94c | ||
|
|
0d48fac129 | ||
|
|
099f7c701d | ||
|
|
2057c6d189 | ||
|
|
56ed197b02 | ||
|
|
5642e755af | ||
|
|
981eb9b362 | ||
|
|
dd6917e1f7 | ||
|
|
e9769a776d | ||
|
|
1068ca98e8 | ||
|
|
c2c93878c7 | ||
|
|
cded0ad97a | ||
|
|
fb299121a3 | ||
|
|
cce7b6e0f1 | ||
|
|
c169dd496b | ||
|
|
70d117cb64 | ||
|
|
39e8f2ba7a | ||
|
|
0a8c186a98 | ||
|
|
ea23b37947 | ||
|
|
ea50883d1c | ||
|
|
1c08a6d486 | ||
|
|
9f75007e21 | ||
|
|
38e1c4f68f | ||
|
|
57cfa6e99a | ||
|
|
1e7831c9a5 | ||
|
|
16730d2810 | ||
|
|
4ca061baa9 | ||
|
|
b753dcbf4d | ||
|
|
7dc2c85d62 | ||
|
|
5e76cf9967 | ||
|
|
8999ded059 | ||
|
|
6d83e357d6 | ||
|
|
05c385342c | ||
|
|
0dc1a1cd5d | ||
|
|
e1fc980779 | ||
|
|
ccd8c1eaa4 | ||
|
|
ad1a933207 | ||
|
|
8d7c57d6fe | ||
|
|
8d039f59ef | ||
|
|
cb8d3cabc7 | ||
|
|
579def4f63 | ||
|
|
5d54d448b0 |
No files matched your search
@@ -20,4 +20,4 @@ jobs:
|
||||
uses: warrenbuckley/Setup-MSBuild@v1
|
||||
|
||||
- name: MSBuild
|
||||
run: msbuild FluentTerminal.sln -t:build -p:Configuration=Debug -p:Platform=x64 -p:AppxPackage=false -m -restore
|
||||
run: msbuild FluentTerminal.sln -t:build -p:Configuration=Debug -p:Platform=x64 -m -restore
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
@@ -12,12 +12,12 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoFixture" Version="4.11.0" />
|
||||
<PackageReference Include="FluentAssertions" Version="5.10.2" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
|
||||
<PackageReference Include="Moq" Version="4.13.1" />
|
||||
<PackageReference Include="FluentAssertions" Version="5.10.3" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
|
||||
<PackageReference Include="Moq" Version="4.14.4" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.2">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
|
||||
namespace FluentTerminal.App.Services.Exceptions
|
||||
{
|
||||
public class ReadTextFileException : Exception
|
||||
{
|
||||
public ReadTextFileException() : base()
|
||||
{
|
||||
}
|
||||
|
||||
public ReadTextFileException(string message) : base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public ReadTextFileException(string message, Exception innerException) : base(message, innerException)
|
||||
{
|
||||
}
|
||||
|
||||
protected ReadTextFileException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,10 +7,10 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||
<PackageReference Include="MvvmLightLibs" Version="5.4.1.1" />
|
||||
<PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="PListNet" Version="3.0.0" />
|
||||
<PackageReference Include="RestSharp" Version="106.10.1" />
|
||||
<PackageReference Include="PListNet" Version="3.2.0" />
|
||||
<PackageReference Include="RestSharp" Version="106.11.4" />
|
||||
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
|
||||
<PackageReference Include="System.Runtime.InteropServices.WindowsRuntime" Version="4.3.0" />
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
using FluentTerminal.Models.Enums;
|
||||
|
||||
namespace FluentTerminal.App.Services
|
||||
{
|
||||
// This validator is needed because accelerator key has to be member of VirtualKey enum.
|
||||
public interface IAcceleratorKeyValidator
|
||||
{
|
||||
bool Valid(int key);
|
||||
|
||||
bool Valid(ExtendedVirtualKey key);
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,8 @@ namespace FluentTerminal.App.Services
|
||||
|
||||
Task SaveTextFileAsync(string path, string content);
|
||||
|
||||
Task<string> ReadTextFileAsync(string path);
|
||||
|
||||
Task<string> GetSshConfigDirAsync();
|
||||
|
||||
Task<string[]> GetFilesFromSshConfigDirAsync();
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using FluentTerminal.App.Services.Utilities;
|
||||
using FluentTerminal.Models;
|
||||
using FluentTerminal.Models;
|
||||
using FluentTerminal.Models.Enums;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -231,8 +230,7 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
Command = nameof(Command.ShowSettings),
|
||||
Ctrl = true,
|
||||
Shift = true,
|
||||
// I've had to replace ExtendedVirtualKey.Comma because it isn't a member of VirtualKey enum, thus cannot be shown in menu.
|
||||
Key = (int)ExtendedVirtualKey.S
|
||||
Key = (int)ExtendedVirtualKey.Comma
|
||||
}
|
||||
};
|
||||
|
||||
@@ -324,7 +322,36 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
Key = (int)ExtendedVirtualKey.L
|
||||
}
|
||||
};
|
||||
|
||||
case Command.IncreaseFontSize:
|
||||
return new List<KeyBinding>
|
||||
{
|
||||
new KeyBinding
|
||||
{
|
||||
Command = nameof(Command.IncreaseFontSize),
|
||||
Ctrl = true,
|
||||
Key = (int)ExtendedVirtualKey.Plus
|
||||
}
|
||||
};
|
||||
case Command.DecreaseFontSize:
|
||||
return new List<KeyBinding>
|
||||
{
|
||||
new KeyBinding
|
||||
{
|
||||
Command = nameof(Command.DecreaseFontSize),
|
||||
Ctrl = true,
|
||||
Key = (int)ExtendedVirtualKey.Minus
|
||||
}
|
||||
};
|
||||
case Command.ResetFontSize:
|
||||
return new List<KeyBinding>
|
||||
{
|
||||
new KeyBinding
|
||||
{
|
||||
Command = nameof(Command.ResetFontSize),
|
||||
Ctrl = true,
|
||||
Key = (int)ExtendedVirtualKey.Number0
|
||||
}
|
||||
};
|
||||
default:
|
||||
throw new InvalidOperationException($"Default keybindings for Command '{command}' are missing");
|
||||
}
|
||||
@@ -342,7 +369,7 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
new TabTheme
|
||||
{
|
||||
Id = 0,
|
||||
Name = I18N.Translate("TabTheme.None"),
|
||||
Name = "TabTheme.None",
|
||||
BackgroundOpacity = double.NaN,
|
||||
BackgroundPointerOverOpacity = double.NaN,
|
||||
BackgroundPressedOpacity = double.NaN,
|
||||
@@ -353,37 +380,37 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
new TabTheme
|
||||
{
|
||||
Id = 1,
|
||||
Name = I18N.Translate("TabTheme.Red"),
|
||||
Name = "TabTheme.Red",
|
||||
Color = "#E81123"
|
||||
},
|
||||
new TabTheme
|
||||
{
|
||||
Id = 2,
|
||||
Name = I18N.Translate("TabTheme.Green"),
|
||||
Name = "TabTheme.Green",
|
||||
Color = "#10893E"
|
||||
},
|
||||
new TabTheme
|
||||
{
|
||||
Id = 3,
|
||||
Name = I18N.Translate("TabTheme.Blue"),
|
||||
Name = "TabTheme.Blue",
|
||||
Color = "#0078D7"
|
||||
},
|
||||
new TabTheme
|
||||
{
|
||||
Id = 4,
|
||||
Name = I18N.Translate("TabTheme.Purple"),
|
||||
Name = "TabTheme.Purple",
|
||||
Color = "#881798"
|
||||
},
|
||||
new TabTheme
|
||||
{
|
||||
Id = 5,
|
||||
Name = I18N.Translate("TabTheme.Orange"),
|
||||
Name = "TabTheme.Orange",
|
||||
Color = "#FF8C00"
|
||||
},
|
||||
new TabTheme
|
||||
{
|
||||
Id = 6,
|
||||
Name = I18N.Translate("TabTheme.Teal"),
|
||||
Name = "TabTheme.Teal",
|
||||
Color = "#00B7C3"
|
||||
}
|
||||
};
|
||||
|
||||
@@ -63,7 +63,8 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
TerminalOptions = GetTerminalOptions(),
|
||||
Themes = new List<TerminalTheme>(),
|
||||
Profiles = new List<ShellProfile>(),
|
||||
SshProfiles = new List<SshProfile>()
|
||||
SshProfiles = new List<SshProfile>(),
|
||||
DefaultSettings = GetDefaultSettings(),
|
||||
};
|
||||
|
||||
foreach (var theme in GetThemes().Where(x => !x.PreInstalled))
|
||||
@@ -71,7 +72,7 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
config.Themes.Add(theme);
|
||||
}
|
||||
|
||||
foreach (var profile in GetShellProfiles().Where(x => !x.PreInstalled))
|
||||
foreach (var profile in GetShellProfiles())
|
||||
{
|
||||
config.Profiles.Add(profile);
|
||||
}
|
||||
@@ -84,6 +85,15 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
return JsonConvert.SerializeObject(config, PreserveDictionaryKeyCaseContractResolver.SerializerSettings);
|
||||
}
|
||||
|
||||
private Dictionary<string, string> GetDefaultSettings()
|
||||
{
|
||||
return new Dictionary<string, string>
|
||||
{
|
||||
[DefaultShellProfileKey] = GetDefaultShellProfileId().ToString(),
|
||||
[CurrentThemeKey] = GetCurrentThemeId().ToString(),
|
||||
};
|
||||
}
|
||||
|
||||
public void ImportSettings(string serializedSettings)
|
||||
{
|
||||
var config = new
|
||||
@@ -93,7 +103,8 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
Themes = new List<TerminalTheme>(),
|
||||
Profiles = new List<ShellProfile>(),
|
||||
SshProfiles = new List<SshProfile>(),
|
||||
TerminalOptions = GetTerminalOptions()
|
||||
TerminalOptions = GetTerminalOptions(),
|
||||
DefaultSettings = new Dictionary<string, string>(),
|
||||
};
|
||||
|
||||
JsonConvert.PopulateObject(serializedSettings, config);
|
||||
@@ -117,21 +128,18 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
SaveTheme(theme, existingTheme != null);
|
||||
}
|
||||
|
||||
// Can't create pre-installed profiles
|
||||
foreach (var profile in config.Profiles.Where(x => !x.PreInstalled))
|
||||
foreach (var profile in config.Profiles)
|
||||
{
|
||||
var existingProfile = GetShellProfile(profile.Id);
|
||||
var isNew = existingProfile.EqualTo(default);
|
||||
var isNew = existingProfile == default;
|
||||
|
||||
// You can only edit certain parts of preinstalled profiles
|
||||
if (!isNew && existingProfile.PreInstalled)
|
||||
{
|
||||
existingProfile.WorkingDirectory = profile.WorkingDirectory;
|
||||
existingProfile.Arguments = profile.Arguments;
|
||||
existingProfile.TabThemeId = profile.TabThemeId;
|
||||
existingProfile.TerminalThemeId = profile.TerminalThemeId;
|
||||
existingProfile.KeyBindings = profile.KeyBindings;
|
||||
SaveShellProfile(profile, isNew);
|
||||
// those cannot be edited
|
||||
profile.Name = existingProfile.Name;
|
||||
profile.Location = existingProfile.Location;
|
||||
|
||||
SaveShellProfile(profile, false);
|
||||
continue;
|
||||
}
|
||||
SaveShellProfile(profile, isNew);
|
||||
@@ -140,12 +148,22 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
foreach (var profile in config.SshProfiles)
|
||||
{
|
||||
var existingProfile = GetSshProfile(profile.Id);
|
||||
var isNew = existingProfile.EqualTo(default(SshProfile));
|
||||
var isNew = existingProfile == default;
|
||||
|
||||
SaveSshProfile(profile, isNew);
|
||||
}
|
||||
|
||||
SaveTerminalOptions(config.TerminalOptions);
|
||||
|
||||
if (config.DefaultSettings.ContainsKey(DefaultShellProfileKey))
|
||||
{
|
||||
SaveDefaultShellProfileId(new Guid(config.DefaultSettings[DefaultShellProfileKey]));
|
||||
}
|
||||
|
||||
if (config.DefaultSettings.ContainsKey(CurrentThemeKey))
|
||||
{
|
||||
SaveCurrentThemeId(new Guid(config.DefaultSettings[CurrentThemeKey]));
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteShellProfile(Guid id)
|
||||
|
||||
@@ -84,6 +84,18 @@ namespace FluentTerminal.App.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<string> ReadTextFileAsync(string path)
|
||||
{
|
||||
var response = await GetResponseAsync<StringValueResponse>(new ReadTextFileRequest { Path = path }).ConfigureAwait(false);
|
||||
|
||||
if (!response.Success)
|
||||
{
|
||||
throw new ReadTextFileException(string.IsNullOrWhiteSpace(response.Error) ? "Failed to read the file." : response.Error);
|
||||
}
|
||||
|
||||
return response.Value;
|
||||
}
|
||||
|
||||
public async Task<string> GetSshConfigDirAsync()
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_sshConfigDir))
|
||||
|
||||
@@ -77,6 +77,8 @@ namespace FluentTerminal.App.Services
|
||||
|
||||
public byte Id { get; }
|
||||
|
||||
public ShellProfile Profile { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// To be called by either view or viewmodel
|
||||
/// </summary>
|
||||
@@ -143,6 +145,8 @@ namespace FluentTerminal.App.Services
|
||||
/// </summary>
|
||||
public async Task<TerminalResponse> StartShellProcessAsync(ShellProfile shellProfile, TerminalSize size, SessionType sessionType, string termState)
|
||||
{
|
||||
Profile = shellProfile;
|
||||
|
||||
if (!_requireShellProcessStart && !string.IsNullOrEmpty(termState))
|
||||
{
|
||||
OutputReceived?.Invoke(this, Encoding.UTF8.GetBytes(termState));
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MvvmLightLibs" Version="5.4.1.1" />
|
||||
<PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -6,6 +6,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
{
|
||||
public interface ITerminalView : IDisposable
|
||||
{
|
||||
Task ChangeFontSize(int fontSize);
|
||||
Task ChangeThemeAsync(TerminalTheme theme);
|
||||
Task ChangeKeyBindingsAsync();
|
||||
Task ChangeOptionsAsync(TerminalOptions options);
|
||||
|
||||
@@ -28,7 +28,6 @@ namespace FluentTerminal.App.ViewModels
|
||||
private readonly ISettingsService _settingsService;
|
||||
private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;
|
||||
private readonly ICommandHistoryService _commandHistoryService;
|
||||
private readonly IAcceleratorKeyValidator _acceleratorKeyValidator;
|
||||
private ApplicationSettings _applicationSettings;
|
||||
private bool _useAcrylicBackground;
|
||||
private double _backgroundOpacity;
|
||||
@@ -38,7 +37,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
private IDictionary<string, ICollection<KeyBinding>> _keyBindings;
|
||||
|
||||
public MainViewModel(ISettingsService settingsService, ITrayProcessCommunicationService trayProcessCommunicationService, IDialogService dialogService, IKeyboardCommandService keyboardCommandService,
|
||||
IApplicationView applicationView, IClipboardService clipboardService, ICommandHistoryService commandHistoryService, IAcceleratorKeyValidator acceleratorKeyValidator)
|
||||
IApplicationView applicationView, IClipboardService clipboardService, ICommandHistoryService commandHistoryService)
|
||||
{
|
||||
MessengerInstance.Register<ApplicationSettingsChangedMessage>(this, OnApplicationSettingsChanged);
|
||||
MessengerInstance.Register<ShellProfileAddedMessage>(this, OnShellProfileAdded);
|
||||
@@ -57,7 +56,6 @@ namespace FluentTerminal.App.ViewModels
|
||||
_clipboardService = clipboardService;
|
||||
_keyboardCommandService = keyboardCommandService;
|
||||
_commandHistoryService = commandHistoryService;
|
||||
_acceleratorKeyValidator = acceleratorKeyValidator;
|
||||
|
||||
_keyboardCommandService.RegisterCommandHandler(nameof(Command.NewTab), async () => await AddDefaultProfileAsync(NewTerminalLocation.Tab));
|
||||
_keyboardCommandService.RegisterCommandHandler(nameof(Command.NewWindow), async () => await AddDefaultProfileAsync(NewTerminalLocation.Window));
|
||||
@@ -73,10 +71,16 @@ namespace FluentTerminal.App.ViewModels
|
||||
_keyboardCommandService.RegisterCommandHandler(nameof(Command.DuplicateTab), async () => await AddTabAsync(SelectedTerminal.ShellProfile.Clone()));
|
||||
_keyboardCommandService.RegisterCommandHandler(nameof(Command.ReconnectTab), async () => { if (SelectedTerminal.ReconnectTabCommand.CanExecute()) await SelectedTerminal.ReconnectTabAsync(); });
|
||||
|
||||
// empty command handlers for copy and paste so that the main window does not execute these when copy keyboard shortcut is used in a popup search panel
|
||||
// in such a case an exception would be thrown if no handlers are available so these empty ones mitigate that. Also there is no need for these on the main window anyway
|
||||
// so leaving them empty is fine.
|
||||
_keyboardCommandService.RegisterCommandHandler(nameof(Command.Paste), () => { });
|
||||
_keyboardCommandService.RegisterCommandHandler(nameof(Command.Copy), () => { });
|
||||
|
||||
// Add all of the commands for switching to a tab of a given ID, if there's one open there
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
var switchCmd = Command.SwitchToTerm1 + i;
|
||||
var switchCmd = Command.SwitchToTerm1 + i;
|
||||
int tabNumber = i;
|
||||
// ReSharper disable once InconsistentNaming
|
||||
void handler() => SelectTabNumber(tabNumber);
|
||||
@@ -677,8 +681,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
icon: Mdl2Icon.Settings());
|
||||
|
||||
if (_keyBindings.TryGetValue(nameof(Command.ShowSettings), out var keyBindings) &&
|
||||
keyBindings.FirstOrDefault() is KeyBinding settingsKeyBinding &&
|
||||
_acceleratorKeyValidator.Valid(settingsKeyBinding.Key))
|
||||
keyBindings.FirstOrDefault() is KeyBinding settingsKeyBinding)
|
||||
{
|
||||
LoadKeyBindingsFromModel(settingsItem, settingsKeyBinding);
|
||||
}
|
||||
@@ -720,8 +723,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
var defaultProfileCommand = tab ? nameof(Command.NewTab) : nameof(Command.NewWindow);
|
||||
|
||||
if (_keyBindings.TryGetValue(defaultProfileCommand, out var kbs) &&
|
||||
kbs.FirstOrDefault() is KeyBinding tabKeyBindings &&
|
||||
_acceleratorKeyValidator.Valid(tabKeyBindings.Key))
|
||||
kbs.FirstOrDefault() is KeyBinding tabKeyBindings)
|
||||
{
|
||||
LoadKeyBindingsFromModel(defaultProfileItem, tabKeyBindings);
|
||||
}
|
||||
@@ -743,8 +745,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
var command = tab ? nameof(Command.NewSshTab) : nameof(Command.NewSshWindow);
|
||||
|
||||
if (_keyBindings.TryGetValue(command, out var keyBindings) &&
|
||||
keyBindings.FirstOrDefault() is KeyBinding remoteTabKeyBinding &&
|
||||
_acceleratorKeyValidator.Valid(remoteTabKeyBinding.Key))
|
||||
keyBindings.FirstOrDefault() is KeyBinding remoteTabKeyBinding)
|
||||
{
|
||||
LoadKeyBindingsFromModel(remoteConnectItem, remoteTabKeyBinding);
|
||||
}
|
||||
@@ -765,8 +766,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
command = tab ? nameof(Command.NewCustomCommandTab) : nameof(Command.NewCustomCommandWindow);
|
||||
|
||||
if (_keyBindings.TryGetValue(command, out keyBindings) &&
|
||||
keyBindings.FirstOrDefault() is KeyBinding quickTabKeyBinding &&
|
||||
_acceleratorKeyValidator.Valid(quickTabKeyBinding.Key))
|
||||
keyBindings.FirstOrDefault() is KeyBinding quickTabKeyBinding)
|
||||
{
|
||||
LoadKeyBindingsFromModel(quickLaunchItem, quickTabKeyBinding);
|
||||
}
|
||||
@@ -795,13 +795,6 @@ namespace FluentTerminal.App.ViewModels
|
||||
|
||||
private void LoadKeyBindingsFromModel(MenuItemViewModel menuItemViewModel, KeyBinding keyBinding)
|
||||
{
|
||||
if (!_acceleratorKeyValidator.Valid(keyBinding.Key))
|
||||
{
|
||||
menuItemViewModel.KeyBinding = null;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (menuItemViewModel.KeyBinding == null)
|
||||
{
|
||||
menuItemViewModel.KeyBinding = new MenuItemKeyBindingViewModel(keyBinding);
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
using FluentTerminal.Models;
|
||||
using FluentTerminal.App.Services.Utilities;
|
||||
using FluentTerminal.Models;
|
||||
using FluentTerminal.Models.Enums;
|
||||
using GalaSoft.MvvmLight;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Windows.System;
|
||||
|
||||
namespace FluentTerminal.App.ViewModels.Menu
|
||||
{
|
||||
public class MenuItemKeyBindingViewModel : ViewModelBase
|
||||
{
|
||||
#region Properties
|
||||
|
||||
private int _key;
|
||||
|
||||
public int Key
|
||||
@@ -80,9 +83,21 @@ namespace FluentTerminal.App.ViewModels.Menu
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Properties
|
||||
public bool IsExtendedVirtualKey => !Enum.IsDefined(typeof(VirtualKey), Key);
|
||||
|
||||
#region Constructors
|
||||
public string GetOverrideText()
|
||||
{
|
||||
var segments = new List<string>();
|
||||
|
||||
if (Ctrl) segments.Add("Ctrl");
|
||||
if (Alt) segments.Add("Alt");
|
||||
if (Windows) segments.Add("Windows");
|
||||
if (Shift) segments.Add("Shift");
|
||||
|
||||
segments.Add(EnumHelper.GetEnumDescription((ExtendedVirtualKey)Key));
|
||||
|
||||
return string.Join("+", segments);
|
||||
}
|
||||
|
||||
public MenuItemKeyBindingViewModel(int key = 0, bool ctrl = false, bool alt = false, bool shift = false,
|
||||
bool windows = false)
|
||||
@@ -101,9 +116,7 @@ namespace FluentTerminal.App.ViewModels.Menu
|
||||
{
|
||||
}
|
||||
|
||||
#endregion Constructors
|
||||
|
||||
#region Methods
|
||||
|
||||
private void SetKeyModifiers()
|
||||
{
|
||||
@@ -142,6 +155,5 @@ namespace FluentTerminal.App.ViewModels.Menu
|
||||
return _key == other._key && _keyModifiers == other._keyModifiers;
|
||||
}
|
||||
|
||||
#endregion Methods
|
||||
}
|
||||
}
|
||||
@@ -199,8 +199,8 @@ namespace FluentTerminal.App.ViewModels.Profiles
|
||||
}
|
||||
|
||||
return _sshPort == SshProfile.DefaultSshPort
|
||||
? $"-i '{_identityFile}'"
|
||||
: $"-p {_sshPort:#####} -i '{_identityFile}'";
|
||||
? $"-i \"{_identityFile}\""
|
||||
: $"-p {_sshPort:#####} -i \"{_identityFile}\"";
|
||||
}
|
||||
|
||||
protected override void LoadFromProfile(ShellProfile profile)
|
||||
|
||||
@@ -46,6 +46,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
public string XtermBufferState { get; set; }
|
||||
public byte TerminalId { get; set; }
|
||||
public ShellProfile ShellProfile { get; set; }
|
||||
public int FontSize { get; set; }
|
||||
}
|
||||
|
||||
public async Task<string> SerializeAsync()
|
||||
@@ -64,7 +65,8 @@ namespace FluentTerminal.App.ViewModels
|
||||
SearchWithRegex = SearchWithRegex,
|
||||
XtermBufferState = await SerializeXtermStateAsync().ConfigureAwait(false),
|
||||
TerminalId = Terminal.Id,
|
||||
ShellProfile = ShellProfile
|
||||
ShellProfile = ShellProfile,
|
||||
FontSize = FontSize
|
||||
};
|
||||
|
||||
return JsonConvert.SerializeObject(state);
|
||||
@@ -88,7 +90,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
XtermBufferState = state.XtermBufferState;
|
||||
_terminalId = state.TerminalId;
|
||||
ShellProfile = state.ShellProfile;
|
||||
|
||||
FontSize = state.FontSize;
|
||||
TabTheme.IsSelected = true;
|
||||
}
|
||||
}
|
||||
@@ -116,6 +118,8 @@ namespace FluentTerminal.App.ViewModels
|
||||
private string _hoveredUri;
|
||||
private MenuViewModel _contextMenu;
|
||||
private MenuViewModel _tabContextMenu;
|
||||
private readonly TabThemeViewModel _transparentTabThemeViewModel;
|
||||
private int _fontSize;
|
||||
|
||||
public TerminalViewModel(ISettingsService settingsService, ITrayProcessCommunicationService trayProcessCommunicationService, IDialogService dialogService,
|
||||
IKeyboardCommandService keyboardCommandService, ApplicationSettings applicationSettings, ShellProfile shellProfile,
|
||||
@@ -157,6 +161,8 @@ namespace FluentTerminal.App.ViewModels
|
||||
CopyLinkCommand = new AsyncCommand(() => CopyTextAsync(HoveredUri), () => !string.IsNullOrWhiteSpace(HoveredUri));
|
||||
ShowSearchPanelCommand = new RelayCommand(() => ShowSearchPanel = true, () => !ShowSearchPanel);
|
||||
|
||||
FontSize = _terminalOptions.FontSize;
|
||||
|
||||
if (!string.IsNullOrEmpty(terminalState))
|
||||
{
|
||||
Restore(terminalState);
|
||||
@@ -167,6 +173,8 @@ namespace FluentTerminal.App.ViewModels
|
||||
defaultTabTheme.IsSelected = true;
|
||||
}
|
||||
|
||||
_transparentTabThemeViewModel = TabThemes.FirstOrDefault(t => t.Theme.Id == 0);
|
||||
|
||||
Terminal = new Terminal(TrayProcessCommunicationService, _terminalId);
|
||||
Terminal.KeyboardCommandReceived += Terminal_KeyboardCommandReceived;
|
||||
Terminal.OutputReceived += Terminal_OutputReceived;
|
||||
@@ -213,18 +221,19 @@ namespace FluentTerminal.App.ViewModels
|
||||
public event EventHandler CloseRightTabsRequested;
|
||||
public event EventHandler CloseOtherTabsRequested;
|
||||
public event EventHandler DuplicateTabRequested;
|
||||
public event EventHandler<int> FontSizeChanged;
|
||||
|
||||
public ApplicationSettings ApplicationSettings { get; private set; }
|
||||
|
||||
public IApplicationView ApplicationView { get; }
|
||||
|
||||
public TabTheme BackgroundTabTheme
|
||||
public TabThemeViewModel BackgroundTabTheme
|
||||
{
|
||||
// The effective background theme depends on whether it is selected (use the theme), or if it is inactive
|
||||
// (if we're set to underline inactive tabs, use the null theme).
|
||||
get => IsSelected || (!IsSelected && ApplicationSettings.InactiveTabColorMode == InactiveTabColorMode.Background) ?
|
||||
_tabTheme?.Theme :
|
||||
SettingsService.GetTabThemes().FirstOrDefault(t => t.Color == null);
|
||||
TabTheme :
|
||||
_transparentTabThemeViewModel;
|
||||
}
|
||||
|
||||
public IClipboardService ClipboardService { get; }
|
||||
@@ -377,6 +386,8 @@ namespace FluentTerminal.App.ViewModels
|
||||
set => Set(ref _showSearchPanel, value);
|
||||
}
|
||||
|
||||
public bool SearchHasFocus { get; set; }
|
||||
|
||||
public TabThemeViewModel TabTheme
|
||||
{
|
||||
get => _tabTheme;
|
||||
@@ -385,6 +396,9 @@ namespace FluentTerminal.App.ViewModels
|
||||
Set(ref _tabTheme, value);
|
||||
RaisePropertyChanged(nameof(IsUnderlined));
|
||||
RaisePropertyChanged(nameof(BackgroundTabTheme));
|
||||
|
||||
// necessary to update this constantly so that duplicated tabs will also carry over the color
|
||||
ShellProfile.TabThemeId = value.Theme.Id;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -429,6 +443,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
}
|
||||
|
||||
Set(ref _tabTitle, title);
|
||||
ShellProfile.Name = title;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -444,6 +459,15 @@ namespace FluentTerminal.App.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public int FontSize
|
||||
{
|
||||
get => _fontSize;
|
||||
set
|
||||
{
|
||||
_fontSize = value > 0 ? value : 1;
|
||||
}
|
||||
}
|
||||
|
||||
public ITrayProcessCommunicationService TrayProcessCommunicationService { get; }
|
||||
|
||||
public Task CloseAsync()
|
||||
@@ -660,6 +684,28 @@ namespace FluentTerminal.App.ViewModels
|
||||
}).ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
case nameof(Command.IncreaseFontSize):
|
||||
{
|
||||
FontSize++;
|
||||
FontSizeChanged?.Invoke(this, FontSize);
|
||||
return;
|
||||
}
|
||||
case nameof(Command.DecreaseFontSize):
|
||||
{
|
||||
if (FontSize > 2)
|
||||
{
|
||||
FontSize--;
|
||||
FontSizeChanged?.Invoke(this, FontSize);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
case nameof(Command.ResetFontSize):
|
||||
{
|
||||
FontSize = _terminalOptions.FontSize;
|
||||
FontSizeChanged?.Invoke(this, FontSize);
|
||||
return;
|
||||
}
|
||||
default:
|
||||
{
|
||||
await ApplicationView.ExecuteOnUiThreadAsync(() => _keyboardCommandService.SendCommand(e))
|
||||
@@ -689,6 +735,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
|
||||
private void Terminal_TitleChanged(object sender, string e)
|
||||
{
|
||||
if (e == Terminal.Profile.Location) return;
|
||||
ApplicationView.ExecuteOnUiThreadAsync(() => ShellTitle = e);
|
||||
}
|
||||
|
||||
@@ -716,10 +763,15 @@ namespace FluentTerminal.App.ViewModels
|
||||
|
||||
private async Task Paste()
|
||||
{
|
||||
var content = await ClipboardService.GetTextAsync().ConfigureAwait(false);
|
||||
if (content != null)
|
||||
// prevent from pasting something into the terminal window when the actual command is executed
|
||||
// while being in the search box
|
||||
if (!SearchHasFocus)
|
||||
{
|
||||
TerminalView.Paste(content);
|
||||
var content = await ClipboardService.GetTextAsync().ConfigureAwait(false);
|
||||
if (content != null)
|
||||
{
|
||||
TerminalView.Paste(content);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -777,7 +829,7 @@ namespace FluentTerminal.App.ViewModels
|
||||
{
|
||||
//todo localise name
|
||||
var icon = tabTheme.Theme.Id == 0 ? Mdl2Icon.PaginationDotOutline10() : Mdl2Icon.PaginationDotSolid10(tabTheme.Theme.Color);
|
||||
return new RadioMenuItemViewModel(I18N.Translate($"TabTheme.{tabTheme.Theme.Name}"), $"{Terminal.Id}_tabTheme", tabTheme, bindingPath: nameof(TabThemeViewModel.IsSelected) , icon: icon);
|
||||
return new RadioMenuItemViewModel(I18N.Translate($"{tabTheme.Theme.Name}"), $"{Terminal.Id}_tabTheme", tabTheme, bindingPath: nameof(TabThemeViewModel.IsSelected) , icon: icon);
|
||||
}
|
||||
|
||||
var tabColor = new ExpandableMenuItemViewModel(I18N.Translate("Color.Text"));
|
||||
|
||||
@@ -9,11 +9,24 @@ namespace FluentTerminal.App.Actions
|
||||
public object Execute(object sender, object parameter)
|
||||
{
|
||||
var control = TargetObject ?? sender as Control;
|
||||
control?.Focus(FocusState.Programmatic);
|
||||
if (control != null)
|
||||
{
|
||||
if (!control.IsLoaded)
|
||||
control.Loaded += Control_Loaded;
|
||||
else
|
||||
control.Focus(FocusState.Programmatic);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void Control_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Control control = sender as Control;
|
||||
control.Focus(FocusState.Programmatic);
|
||||
control.Loaded -= Control_Loaded; // won't be needed anymore. Remove reference just in case
|
||||
}
|
||||
|
||||
public Control TargetObject
|
||||
{
|
||||
get { return (Control)GetValue(TargetObjectProperty); }
|
||||
|
||||
+193
-149
@@ -47,6 +47,7 @@ namespace FluentTerminal.App
|
||||
private readonly ISettingsService _settingsService;
|
||||
private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;
|
||||
private readonly IDialogService _dialogService;
|
||||
private readonly INotificationService _notificationService;
|
||||
private bool _alreadyLaunched;
|
||||
private bool _isLaunching;
|
||||
private ApplicationSettings _applicationSettings;
|
||||
@@ -110,13 +111,13 @@ namespace FluentTerminal.App
|
||||
builder.RegisterType<StartupTaskService>().As<IStartupTaskService>().SingleInstance();
|
||||
builder.RegisterType<ApplicationLanguageService>().As<IApplicationLanguageService>().SingleInstance();
|
||||
builder.RegisterType<ShellProfileMigrationService>().As<IShellProfileMigrationService>().SingleInstance();
|
||||
builder.RegisterType<AcceleratorKeyValidator>().As<IAcceleratorKeyValidator>().SingleInstance();
|
||||
|
||||
_container = builder.Build();
|
||||
|
||||
Messenger.Default.Register<ApplicationSettingsChangedMessage>(this, OnApplicationSettingsChanged);
|
||||
|
||||
_settingsService = _container.Resolve<ISettingsService>();
|
||||
_notificationService = _container.Resolve<INotificationService>();
|
||||
|
||||
var shellProfileMigrationService = _container.Resolve<IShellProfileMigrationService>();
|
||||
foreach (var profile in _settingsService.GetShellProfiles())
|
||||
@@ -186,7 +187,189 @@ namespace FluentTerminal.App
|
||||
|
||||
protected override async void OnActivated(IActivatedEventArgs args)
|
||||
{
|
||||
if (args is ProtocolActivatedEventArgs protocolActivated)
|
||||
await OnLaunchOrActivate(args);
|
||||
base.OnActivated(args);
|
||||
}
|
||||
|
||||
private async Task ParseCommandLineArgumentsAsync(object verb, CommandLineActivatedEventArgs commandLineActivated)
|
||||
{
|
||||
using var deferral = commandLineActivated.Operation.GetDeferral();
|
||||
|
||||
if (verb is SettingsVerb settingsVerb)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(settingsVerb.Import) && !settingsVerb.Export)
|
||||
{
|
||||
await ShowSettingsAsync();
|
||||
}
|
||||
else if (settingsVerb.Export)
|
||||
{
|
||||
var settings = _settingsService.ExportSettings();
|
||||
var path = Path.Combine(commandLineActivated.Operation.CurrentDirectoryPath, "config.json");
|
||||
try
|
||||
{
|
||||
await StartSystemTray().ConfigureAwait(false);
|
||||
await _trayProcessCommunicationService.SaveTextFileAsync(path, settings).ConfigureAwait(false);
|
||||
_notificationService.ShowNotification("Export settings", $"Settings were exported to {path}.");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_notificationService.ShowNotification("Export settings", $"Failed with error: {e.Message}");
|
||||
commandLineActivated.Operation.ExitCode = 1;
|
||||
}
|
||||
|
||||
if (!_isLaunching && !_alreadyLaunched)
|
||||
{
|
||||
Exit();
|
||||
}
|
||||
}
|
||||
else if (!string.IsNullOrWhiteSpace(settingsVerb.Import))
|
||||
{
|
||||
var path = Path.Combine(commandLineActivated.Operation.CurrentDirectoryPath, settingsVerb.Import.Replace(".\\", string.Empty));
|
||||
try
|
||||
{
|
||||
await StartSystemTray().ConfigureAwait(false);
|
||||
var content = await _trayProcessCommunicationService.ReadTextFileAsync(path).ConfigureAwait(false);
|
||||
_settingsService.ImportSettings(content);
|
||||
_notificationService.ShowNotification("Import settings", $"Successfully imported settings from {path}.");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_notificationService.ShowNotification("Import settings", $"Failed with error: {e.Message}");
|
||||
commandLineActivated.Operation.ExitCode = 1;
|
||||
}
|
||||
|
||||
if (!_isLaunching && !_alreadyLaunched)
|
||||
{
|
||||
Exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (verb is NewVerb newVerb)
|
||||
{
|
||||
var profile = default(ShellProfile);
|
||||
if (!string.IsNullOrWhiteSpace(newVerb.Profile))
|
||||
{
|
||||
profile = _settingsService.GetShellProfiles().FirstOrDefault(x => x.Name.Equals(newVerb.Profile, StringComparison.CurrentCultureIgnoreCase));
|
||||
}
|
||||
|
||||
if (profile == null)
|
||||
{
|
||||
profile = _settingsService.GetDefaultShellProfile();
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(newVerb.Directory) && newVerb.Directory != ".")
|
||||
{
|
||||
profile.WorkingDirectory = newVerb.Directory;
|
||||
}
|
||||
else
|
||||
{
|
||||
profile.WorkingDirectory = commandLineActivated.Operation.CurrentDirectoryPath;
|
||||
}
|
||||
|
||||
var location = newVerb.Target == Target.Default ? _applicationSettings.NewTerminalLocation
|
||||
: newVerb.Target == Target.Tab ? NewTerminalLocation.Tab
|
||||
: NewTerminalLocation.Window;
|
||||
|
||||
await CreateTerminalAsync(profile, location);
|
||||
}
|
||||
else if (verb is RunVerb runVerb)
|
||||
{
|
||||
var profile = new ShellProfile
|
||||
{
|
||||
Id = Guid.Empty,
|
||||
Location = null,
|
||||
Arguments = runVerb.Command,
|
||||
WorkingDirectory = runVerb.Directory
|
||||
};
|
||||
|
||||
if (runVerb.SmartBuffer.HasValue)
|
||||
{
|
||||
profile.UseBuffer = runVerb.SmartBuffer.Value;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(runVerb.Theme))
|
||||
{
|
||||
var theme = _settingsService.GetThemes().FirstOrDefault(x => x.Name.Equals(runVerb.Theme, StringComparison.CurrentCultureIgnoreCase));
|
||||
if (theme != null)
|
||||
{
|
||||
profile.TerminalThemeId = theme.Id;
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(profile.WorkingDirectory))
|
||||
{
|
||||
profile.WorkingDirectory = commandLineActivated.Operation.CurrentDirectoryPath;
|
||||
}
|
||||
|
||||
var location = runVerb.Target == Target.Default ? _applicationSettings.NewTerminalLocation
|
||||
: runVerb.Target == Target.Tab ? NewTerminalLocation.Tab
|
||||
: NewTerminalLocation.Window;
|
||||
|
||||
await CreateTerminalAsync(profile, location);
|
||||
}
|
||||
}
|
||||
|
||||
private Task ShowOrCreateWindowAsync(ActivationViewSwitcher viewSwitcher)
|
||||
{
|
||||
var viewModel = _mainViewModels.Find(o => o.ApplicationView.Id == _activeWindowId) ??
|
||||
_mainViewModels.LastOrDefault();
|
||||
|
||||
return viewModel == null
|
||||
? CreateTerminalAsync(_settingsService.GetDefaultShellProfile(), NewTerminalLocation.Tab, viewSwitcher)
|
||||
: ShowAsStandaloneAsync(viewModel, viewSwitcher);
|
||||
}
|
||||
|
||||
protected override async void OnLaunched(LaunchActivatedEventArgs args)
|
||||
{
|
||||
await OnLaunchOrActivate(args);
|
||||
}
|
||||
|
||||
public async Task OnLaunchOrActivate(IActivatedEventArgs args)
|
||||
{
|
||||
if (args is LaunchActivatedEventArgs launchActivated)
|
||||
{
|
||||
if (_isLaunching)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_isLaunching = true;
|
||||
|
||||
if (!_alreadyLaunched)
|
||||
{
|
||||
await InitializeLoggerAsync();
|
||||
|
||||
// ReSharper disable once AssignmentIsFullyDiscarded
|
||||
_ = JumpListHelper.UpdateAsync(_settingsService);
|
||||
|
||||
var viewModel = _container.Resolve<MainViewModel>();
|
||||
if (launchActivated.Arguments.StartsWith(JumpListHelper.ShellProfileFlag))
|
||||
{
|
||||
await viewModel.AddProfileByGuidAsync(Guid.Parse(launchActivated.Arguments.Replace(JumpListHelper.ShellProfileFlag, string.Empty)));
|
||||
}
|
||||
else
|
||||
{
|
||||
await viewModel.AddDefaultProfileAsync(NewTerminalLocation.Tab);
|
||||
}
|
||||
await CreateMainViewAsync(typeof(MainPage), viewModel, true);
|
||||
Window.Current.Activate();
|
||||
}
|
||||
else if (launchActivated.Arguments.StartsWith(JumpListHelper.ShellProfileFlag))
|
||||
{
|
||||
var location = _applicationSettings.NewTerminalLocation;
|
||||
var profile = _settingsService.GetShellProfile(Guid.Parse(launchActivated.Arguments.Replace(JumpListHelper.ShellProfileFlag, string.Empty)));
|
||||
await CreateTerminalAsync(profile, location, launchActivated.ViewSwitcher);
|
||||
}
|
||||
else
|
||||
{
|
||||
var viewModel = await CreateNewTerminalWindowAsync();
|
||||
await viewModel.AddDefaultProfileAsync(NewTerminalLocation.Tab);
|
||||
await ShowAsStandaloneAsync(viewModel, launchActivated.ViewSwitcher);
|
||||
}
|
||||
|
||||
_isLaunching = false;
|
||||
}
|
||||
else if (args is ProtocolActivatedEventArgs protocolActivated)
|
||||
{
|
||||
if (protocolActivated.Uri == new Uri("ftcmd://fluent.terminal?focus"))
|
||||
{
|
||||
@@ -262,7 +445,7 @@ namespace FluentTerminal.App
|
||||
|
||||
var error = await vm.AcceptChangesAsync(true);
|
||||
|
||||
var profile = (SshProfile) vm.Model;
|
||||
var profile = (SshProfile)vm.Model;
|
||||
|
||||
if (!string.IsNullOrEmpty(error))
|
||||
{
|
||||
@@ -347,8 +530,7 @@ namespace FluentTerminal.App
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (args is CommandLineActivatedEventArgs commandLineActivated)
|
||||
else if (args is CommandLineActivatedEventArgs commandLineActivated)
|
||||
{
|
||||
var arguments = commandLineActivated.Operation.Arguments;
|
||||
if (string.IsNullOrWhiteSpace(arguments))
|
||||
@@ -358,153 +540,10 @@ namespace FluentTerminal.App
|
||||
|
||||
_commandLineParser
|
||||
.ParseArguments(SplitArguments(arguments), typeof(NewVerb), typeof(RunVerb), typeof(SettingsVerb))
|
||||
.WithParsed(async verb => await CliRunAsync(verb, commandLineActivated));
|
||||
.WithParsed(async verb => await ParseCommandLineArgumentsAsync(verb, commandLineActivated));
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CliRunAsync(object verb, CommandLineActivatedEventArgs commandLineActivated)
|
||||
{
|
||||
if (verb is SettingsVerb settingsVerb)
|
||||
{
|
||||
if (!settingsVerb.Import && !settingsVerb.Export)
|
||||
{
|
||||
await ShowSettingsAsync();
|
||||
}
|
||||
else if (settingsVerb.Export)
|
||||
{
|
||||
var exportFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("config.json", CreationCollisionOption.OpenIfExists);
|
||||
|
||||
var settings = _settingsService.ExportSettings();
|
||||
await FileIO.WriteTextAsync(exportFile, settings);
|
||||
await new MessageDialog($"{I18N.Translate("SettingsExported")} {exportFile.Path}").ShowAsync();
|
||||
}
|
||||
else if (settingsVerb.Import)
|
||||
{
|
||||
var file = await ApplicationData.Current.LocalFolder.GetFileAsync("config.json");
|
||||
var content = await FileIO.ReadTextAsync(file);
|
||||
_settingsService.ImportSettings(content);
|
||||
await new MessageDialog($"{I18N.Translate("SettingsImported")} {file.Path}").ShowAsync();
|
||||
}
|
||||
}
|
||||
else if (verb is NewVerb newVerb)
|
||||
{
|
||||
var profile = default(ShellProfile);
|
||||
if (!string.IsNullOrWhiteSpace(newVerb.Profile))
|
||||
{
|
||||
profile = _settingsService.GetShellProfiles().FirstOrDefault(x => x.Name.Equals(newVerb.Profile, StringComparison.CurrentCultureIgnoreCase));
|
||||
}
|
||||
|
||||
if (profile == null)
|
||||
{
|
||||
profile = _settingsService.GetDefaultShellProfile();
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(newVerb.Directory) && newVerb.Directory != ".")
|
||||
{
|
||||
profile.WorkingDirectory = newVerb.Directory;
|
||||
}
|
||||
else
|
||||
{
|
||||
profile.WorkingDirectory = commandLineActivated.Operation.CurrentDirectoryPath;
|
||||
}
|
||||
|
||||
var location = newVerb.Target == Target.Default ? _applicationSettings.NewTerminalLocation
|
||||
: newVerb.Target == Target.Tab ? NewTerminalLocation.Tab
|
||||
: NewTerminalLocation.Window;
|
||||
|
||||
await CreateTerminalAsync(profile, location);
|
||||
}
|
||||
else if (verb is RunVerb runVerb)
|
||||
{
|
||||
var profile = new ShellProfile
|
||||
{
|
||||
Id = Guid.Empty,
|
||||
Location = null,
|
||||
Arguments = runVerb.Command,
|
||||
WorkingDirectory = runVerb.Directory
|
||||
};
|
||||
|
||||
if (!string.IsNullOrEmpty(runVerb.Buffer) && bool.TryParse(runVerb.Buffer, out var useBuffer))
|
||||
{
|
||||
profile.UseBuffer = useBuffer;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(runVerb.Theme))
|
||||
{
|
||||
var theme = _settingsService.GetThemes().FirstOrDefault(x => x.Name.Equals(runVerb.Theme, StringComparison.CurrentCultureIgnoreCase));
|
||||
if (theme != null)
|
||||
{
|
||||
profile.TerminalThemeId = theme.Id;
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(profile.WorkingDirectory))
|
||||
{
|
||||
profile.WorkingDirectory = commandLineActivated.Operation.CurrentDirectoryPath;
|
||||
}
|
||||
|
||||
var location = runVerb.Target == Target.Default ? _applicationSettings.NewTerminalLocation
|
||||
: runVerb.Target == Target.Tab ? NewTerminalLocation.Tab
|
||||
: NewTerminalLocation.Window;
|
||||
|
||||
await CreateTerminalAsync(profile, location);
|
||||
}
|
||||
}
|
||||
|
||||
private Task ShowOrCreateWindowAsync(ActivationViewSwitcher viewSwitcher)
|
||||
{
|
||||
var viewModel = _mainViewModels.Find(o => o.ApplicationView.Id == _activeWindowId) ??
|
||||
_mainViewModels.LastOrDefault();
|
||||
|
||||
return viewModel == null
|
||||
? CreateTerminalAsync(_settingsService.GetDefaultShellProfile(), NewTerminalLocation.Tab, viewSwitcher)
|
||||
: ShowAsStandaloneAsync(viewModel, viewSwitcher);
|
||||
}
|
||||
|
||||
protected override async void OnLaunched(LaunchActivatedEventArgs args)
|
||||
{
|
||||
if (_isLaunching)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_isLaunching = true;
|
||||
|
||||
if (!_alreadyLaunched)
|
||||
{
|
||||
await InitializeLoggerAsync();
|
||||
|
||||
// ReSharper disable once AssignmentIsFullyDiscarded
|
||||
_ = JumpListHelper.UpdateAsync(_settingsService);
|
||||
|
||||
var viewModel = _container.Resolve<MainViewModel>();
|
||||
if (args.Arguments.StartsWith(JumpListHelper.ShellProfileFlag))
|
||||
{
|
||||
await viewModel.AddProfileByGuidAsync(Guid.Parse(args.Arguments.Replace(JumpListHelper.ShellProfileFlag, string.Empty)));
|
||||
}
|
||||
else
|
||||
{
|
||||
await viewModel.AddDefaultProfileAsync(NewTerminalLocation.Tab);
|
||||
}
|
||||
await CreateMainViewAsync(typeof(MainPage), viewModel, true);
|
||||
Window.Current.Activate();
|
||||
}
|
||||
else if (args.Arguments.StartsWith(JumpListHelper.ShellProfileFlag))
|
||||
{
|
||||
var location = _applicationSettings.NewTerminalLocation;
|
||||
var profile = _settingsService.GetShellProfile(Guid.Parse(args.Arguments.Replace(JumpListHelper.ShellProfileFlag, string.Empty)));
|
||||
await CreateTerminalAsync(profile, location, args.ViewSwitcher);
|
||||
}
|
||||
else
|
||||
{
|
||||
var viewModel = await CreateNewTerminalWindowAsync();
|
||||
await viewModel.AddDefaultProfileAsync(NewTerminalLocation.Tab);
|
||||
await ShowAsStandaloneAsync(viewModel, args.ViewSwitcher);
|
||||
}
|
||||
|
||||
_isLaunching = false;
|
||||
}
|
||||
|
||||
private static async Task InitializeLoggerAsync()
|
||||
{
|
||||
var logDirectory = await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync("Logs", CreationCollisionOption.OpenIfExists);
|
||||
@@ -759,6 +798,11 @@ namespace FluentTerminal.App
|
||||
|
||||
private Task StartSystemTray()
|
||||
{
|
||||
if (_trayReady.Task.IsCompleted)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
var launch = FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("AppLaunchedParameterGroup").AsTask();
|
||||
|
||||
return Task.WhenAll(launch, _trayReady.Task).ContinueWith(
|
||||
|
||||
@@ -14,8 +14,8 @@ namespace FluentTerminal.App.CommandLineArguments
|
||||
[Option("theme")]
|
||||
public string Theme { get; set; }
|
||||
|
||||
[Option("buffer")]
|
||||
public string Buffer { get; set; }
|
||||
[Option("smart-buffer")]
|
||||
public bool? SmartBuffer { get; set; }
|
||||
|
||||
[Option("target")]
|
||||
public Target Target { get; set; }
|
||||
|
||||
@@ -6,8 +6,8 @@ namespace FluentTerminal.App.CommandLineArguments
|
||||
public class SettingsVerb
|
||||
{
|
||||
[Option('i', "import",
|
||||
HelpText = "Import settings.")]
|
||||
public bool Import { get; set; }
|
||||
HelpText = "Import settings from specified file.")]
|
||||
public string Import { get; set; }
|
||||
|
||||
[Option('e', "export",
|
||||
HelpText = "Export settings.")]
|
||||
|
||||
@@ -20,6 +20,10 @@ namespace FluentTerminal.App.Converters
|
||||
{
|
||||
return Translate($"{enumType}.{enumValue}");
|
||||
}
|
||||
else if (value is string stringValue)
|
||||
{
|
||||
return Translate(stringValue);
|
||||
}
|
||||
else if (parameter is string resource)
|
||||
{
|
||||
return Translate(resource);
|
||||
|
||||
+16
-5
@@ -7,6 +7,7 @@ using Windows.UI.Xaml.Input;
|
||||
using FluentTerminal.App.ViewModels.Menu;
|
||||
using FluentTerminal.App.Views;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Windows.Foundation.Metadata;
|
||||
|
||||
// ReSharper disable LocalizableElement
|
||||
|
||||
@@ -90,12 +91,22 @@ namespace FluentTerminal.App.Converters
|
||||
|
||||
if (viewModel.KeyBinding != null)
|
||||
{
|
||||
item.KeyboardAccelerators?.Add(new KeyboardAccelerator
|
||||
if (viewModel.KeyBinding.IsExtendedVirtualKey)
|
||||
{
|
||||
Key = (VirtualKey) viewModel.KeyBinding.Key,
|
||||
Modifiers = (VirtualKeyModifiers) viewModel.KeyBinding.KeyModifiers,
|
||||
IsEnabled = true
|
||||
});
|
||||
if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 6))
|
||||
{
|
||||
item.KeyboardAcceleratorTextOverride = viewModel.KeyBinding.GetOverrideText();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
item.KeyboardAccelerators?.Add(new KeyboardAccelerator
|
||||
{
|
||||
Key = (VirtualKey)viewModel.KeyBinding.Key,
|
||||
Modifiers = (VirtualKeyModifiers)viewModel.KeyBinding.KeyModifiers,
|
||||
IsEnabled = true
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return item;
|
||||
|
||||
@@ -16,8 +16,6 @@ namespace FluentTerminal.App.Dialogs
|
||||
// ReSharper disable once RedundantExtendsListEntry
|
||||
public sealed partial class CreateKeyBindingDialog : ContentDialog, ICreateKeyBindingDialog, INotifyPropertyChanged
|
||||
{
|
||||
private readonly IAcceleratorKeyValidator _acceleratorKeyValidator;
|
||||
|
||||
private bool _ctrl;
|
||||
private bool _shift;
|
||||
private bool _alt;
|
||||
@@ -53,17 +51,12 @@ namespace FluentTerminal.App.Dialogs
|
||||
get => _key;
|
||||
set
|
||||
{
|
||||
// We're ignoring invalid keys.
|
||||
if (_acceleratorKeyValidator.Valid(value))
|
||||
{
|
||||
Set(ref _key, value);
|
||||
}
|
||||
Set(ref _key, value);
|
||||
}
|
||||
}
|
||||
|
||||
public CreateKeyBindingDialog(IAcceleratorKeyValidator acceleratorKeyValidator)
|
||||
public CreateKeyBindingDialog()
|
||||
{
|
||||
_acceleratorKeyValidator = acceleratorKeyValidator;
|
||||
InitializeComponent();
|
||||
ResetCommand = new RelayCommand(Reset);
|
||||
PreviewKeyDown += RegisterKeyBindingDialog_PreviewKeyDown;
|
||||
|
||||
@@ -79,7 +79,6 @@
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Row -->
|
||||
@@ -124,16 +123,6 @@
|
||||
Margin="0,8,0,0"
|
||||
Content="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}"
|
||||
IsChecked="{x:Bind ViewModel.UseConPty, Mode=TwoWay}" />
|
||||
|
||||
<!-- Row -->
|
||||
<CheckBox
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="2"
|
||||
Margin="0,8,0,0"
|
||||
Content="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseBuffer}"
|
||||
IsChecked="{x:Bind ViewModel.UseBuffer, Mode=TwoWay}" />
|
||||
|
||||
</Grid>
|
||||
</controls:Expander>
|
||||
|
||||
|
||||
@@ -233,9 +233,13 @@ namespace FluentTerminal.App.Dialogs
|
||||
else
|
||||
{
|
||||
await new MessageDialog(error, I18N.Translate("InvalidInput")).ShowAsync();
|
||||
SetupFocus(); // needed to apply focus back to the textbox instead of the terminal in the background.
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
case VirtualKey.Escape:
|
||||
Hide();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +129,6 @@
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<!-- Row -->
|
||||
@@ -209,16 +208,6 @@
|
||||
Margin="0,8,0,0"
|
||||
Content="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}"
|
||||
IsChecked="{x:Bind ViewModel.UseConPty, Mode=TwoWay}" />
|
||||
|
||||
<!-- Row -->
|
||||
<CheckBox
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="4"
|
||||
Margin="0,8,0,0"
|
||||
Content="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseBuffer}"
|
||||
IsChecked="{x:Bind ViewModel.UseBuffer, Mode=TwoWay}" />
|
||||
|
||||
</Grid>
|
||||
</controls:Expander>
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>FluentTerminal.App</RootNamespace>
|
||||
<AssemblyName>FluentTerminal.App</AssemblyName>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
|
||||
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>
|
||||
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
|
||||
@@ -17,6 +17,7 @@
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WindowsXamlEnableOverview>true</WindowsXamlEnableOverview>
|
||||
<AppxBundlePlatforms>x64</AppxBundlePlatforms>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@@ -133,7 +134,6 @@
|
||||
<Compile Include="Dialogs\AboutDialog.xaml.cs">
|
||||
<DependentUpon>AboutDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Services\AcceleratorKeyValidator.cs" />
|
||||
<Compile Include="Services\CommandHistoryService.cs" />
|
||||
<Compile Include="Utilities\DelayedAction.cs" />
|
||||
<Compile Include="Utilities\DispatcherExtensions.cs" />
|
||||
@@ -237,12 +237,14 @@
|
||||
<Content Include="Client\index.html" />
|
||||
<Content Include="Client\style.css" />
|
||||
<Content Include="Client\xterm.css" />
|
||||
<PRIResource Include="Strings\eo\Resources.resw" />
|
||||
<PRIResource Include="Strings\ru\Resources.resw" />
|
||||
<PRIResource Include="Strings\fr\Resources.resw" />
|
||||
<PRIResource Include="Strings\es\Resources.resw" />
|
||||
<PRIResource Include="Strings\de\Resources.resw" />
|
||||
<PRIResource Include="Strings\ug-Arab\Resources.resw" />
|
||||
<PRIResource Include="Strings\zh-Hant\Resources.resw" />
|
||||
<PRIResource Include="Strings\en\Resources.resw" />
|
||||
<PRIResource Include="Strings\en-US\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Properties\Default.rd.xml" />
|
||||
@@ -351,22 +353,22 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Autofac">
|
||||
<Version>5.1.2</Version>
|
||||
<Version>5.2.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="CommandLineParser">
|
||||
<Version>2.7.82</Version>
|
||||
<Version>2.8.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
|
||||
<Version>6.2.10</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.UI">
|
||||
<Version>6.0.0</Version>
|
||||
<Version>6.1.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.UI.Controls">
|
||||
<Version>6.0.0</Version>
|
||||
<Version>6.1.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.UI.Xaml">
|
||||
<Version>2.3.200213001</Version>
|
||||
<Version>2.4.2</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.Xaml.Behaviors.Uwp.Managed">
|
||||
<Version>2.0.1</Version>
|
||||
@@ -374,8 +376,17 @@
|
||||
<PackageReference Include="Newtonsoft.Json">
|
||||
<Version>12.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.IO.FileSystem.Primitives">
|
||||
<Version>4.3.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.Runtime.Handles">
|
||||
<Version>4.3.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.Text.Encoding.Extensions">
|
||||
<Version>4.3.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Win2D.uwp">
|
||||
<Version>1.24.0</Version>
|
||||
<Version>1.25.0</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -416,9 +427,6 @@
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\he\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\az\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\ja\Resources.resw" />
|
||||
</ItemGroup>
|
||||
@@ -437,6 +445,25 @@
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\zh-Hans\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\fa\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\hu\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\tr\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\hr\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\sl\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PRIResource Include="Strings\az-Latn\Resources.resw" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
|
||||
<VisualStudioVersion>14.0</VisualStudioVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
@@ -25,4 +26,5 @@ using System.Runtime.InteropServices;
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: NeutralResourcesLanguage("en-US")]
|
||||
@@ -1,13 +0,0 @@
|
||||
using System;
|
||||
using Windows.System;
|
||||
using FluentTerminal.Models.Enums;
|
||||
|
||||
namespace FluentTerminal.App.Services
|
||||
{
|
||||
public class AcceleratorKeyValidator : IAcceleratorKeyValidator
|
||||
{
|
||||
public bool Valid(int key) => Enum.IsDefined(typeof(VirtualKey), key);
|
||||
|
||||
public bool Valid(ExtendedVirtualKey key) => Valid((int) key);
|
||||
}
|
||||
}
|
||||
@@ -12,13 +12,17 @@ namespace FluentTerminal.App.Services
|
||||
[""] = "System default",
|
||||
["ar"] = "العربية",
|
||||
["ar-IQ"] = "اللهجة العراقية",
|
||||
["az"] = "azərbaycan dili",
|
||||
["az-Latn"] = "azərbaycan dili",
|
||||
["de"] = "Deutsch",
|
||||
["en"] = "English",
|
||||
["eo"] = "Esperanto",
|
||||
["es"] = "Español",
|
||||
["fa"] = "فارسی",
|
||||
["fr"] = "Français",
|
||||
["he"] = "עברית",
|
||||
["hi"] = "हिन्दुस्तानी",
|
||||
["hr"] = "Hrvatski",
|
||||
["hu"] = "magyar",
|
||||
["id"] = "Bahasa Indonesia",
|
||||
["it"] = "Italiano",
|
||||
["ja"] = "日本語",
|
||||
@@ -28,9 +32,12 @@ namespace FluentTerminal.App.Services
|
||||
["pt-BR"] = "Português-Brasil",
|
||||
["ro"] = "Română",
|
||||
["ru"] = "Pусский",
|
||||
["sl"] = "Slovenščina",
|
||||
["tr"] = "Türkçe",
|
||||
["ug-Arab"] = "ئۇيغۇر تىلى",
|
||||
["uk"] = "Українська",
|
||||
["zh-Hans"] = "繁體中文",
|
||||
["zh-Hant"] = "简体中文"
|
||||
["zh-Hans"] = "简体中文",
|
||||
["zh-Hant"] = "繁體中文"
|
||||
};
|
||||
|
||||
public IEnumerable<string> Languages => _languages.Values;
|
||||
|
||||
@@ -1052,4 +1052,13 @@
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1095,4 +1095,13 @@ Type "أخرج من منفذ الأوامر " then type the name in th
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
+9
@@ -1052,4 +1052,13 @@
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1085,4 +1085,13 @@ Fuzzy</comment>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Sitzung wurde getrennt.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Schriftgröße vergrößern</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Schriftgröße verkleinern</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Schriftgröße zurücksetzen</value>
|
||||
</data>
|
||||
</root>
|
||||
+9
@@ -1117,4 +1117,13 @@ Fuzzy</comment>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1068,9 +1068,18 @@ Fuzzy</comment>
|
||||
<value>Usar búfer inteligente</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Reiniciar sesión</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Sesión finalizada.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -123,7 +123,7 @@
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Background.Content" xml:space="preserve">
|
||||
<value>Fond</value>
|
||||
<value>Arrière-plan</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="TabTheme.Blue" xml:space="preserve">
|
||||
@@ -177,11 +177,11 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="IndicatorOutput.Header" xml:space="preserve">
|
||||
<value>Afficher l'indicateur de nouvelle sortie sur les onglets en arrière-plan</value>
|
||||
<value>Afficher l'indicateur de nouvelle sortie sur les onglets inactifs</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="NeedRelaunch.Text" xml:space="preserve">
|
||||
<value>Redémarrage de l'application requis pour appliquer le réglage</value>
|
||||
<value>Relancez l'application pour appliquer ce réglage</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="NewTab.Text" xml:space="preserve">
|
||||
@@ -202,7 +202,7 @@ Fuzzy</comment>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="OpenNewTerminalAs.Text" xml:space="preserve">
|
||||
<value>Ouvrir de nouveaux terminaux en tant que</value>
|
||||
<value>Ouvrir les nouveaux terminaux en tant que</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="TabTheme.Orange" xml:space="preserve">
|
||||
@@ -246,7 +246,7 @@ Fuzzy</comment>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="TabsPostion.Text" xml:space="preserve">
|
||||
<value>Afficher les onglets sur</value>
|
||||
<value>Disposition des onglets</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="TabTheme.Teal" xml:space="preserve">
|
||||
@@ -255,11 +255,11 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="TP_Bottom.Content" xml:space="preserve">
|
||||
<value>Bas</value>
|
||||
<value>En bas</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="TP_Top.Content" xml:space="preserve">
|
||||
<value>Haut</value>
|
||||
<value>En haut</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Underline.Content" xml:space="preserve">
|
||||
@@ -267,11 +267,11 @@ Fuzzy</comment>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="UnderlineTab.Header" xml:space="preserve">
|
||||
<value>Souligner l'onglet sélectionné</value>
|
||||
<value>Souligner l'onglet actif</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Setting_About.Content" xml:space="preserve">
|
||||
<value>A propos</value>
|
||||
<value>À propos</value>
|
||||
<comment>SettingsPage.xaml</comment>
|
||||
</data>
|
||||
<data name="Setting_General.Content" xml:space="preserve">
|
||||
@@ -287,7 +287,7 @@ Fuzzy</comment>
|
||||
<comment>SettingsPage.xaml</comment>
|
||||
</data>
|
||||
<data name="Setting_Profiles.Content" xml:space="preserve">
|
||||
<value>Profiles</value>
|
||||
<value>Profils</value>
|
||||
<comment>SettingsPage.xaml</comment>
|
||||
</data>
|
||||
<data name="Setting_Terminal.Content" xml:space="preserve">
|
||||
@@ -308,15 +308,15 @@ Fuzzy</comment>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="BackgroundOpacity.Header" xml:space="preserve">
|
||||
<value>Opacité du fond</value>
|
||||
<value>Opacité de l'arrière-plan</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="BlinkingCursor.Header" xml:space="preserve">
|
||||
<value>Clignotement du curseur</value>
|
||||
<value>Curseur clignotant</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="BoldText.Header" xml:space="preserve">
|
||||
<value>Texte en gras</value>
|
||||
<value>Texte gras</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="CancelAppBarButton.Label" xml:space="preserve">
|
||||
@@ -324,7 +324,7 @@ Fuzzy</comment>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="CheckingUpdates.Text" xml:space="preserve">
|
||||
<value>Vérification des mises à jour ...</value>
|
||||
<value>Vérification des mises à jour...</value>
|
||||
<comment>About.xaml</comment>
|
||||
</data>
|
||||
<data name="CheckUpdates.Label" xml:space="preserve">
|
||||
@@ -332,7 +332,7 @@ Fuzzy</comment>
|
||||
<comment>About.xaml</comment>
|
||||
</data>
|
||||
<data name="ClickColorEdit.Text" xml:space="preserve">
|
||||
<value>Cliquez sur une couleur pour éditer</value>
|
||||
<value>Cliquez sur une couleur pour l'éditer</value>
|
||||
<comment>ThemeSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="CloneAppBarButton.Label" xml:space="preserve">
|
||||
@@ -348,11 +348,11 @@ Fuzzy</comment>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="CopyOnSelect.Header" xml:space="preserve">
|
||||
<value>Copier sur sélectionner</value>
|
||||
<value>Copie automatique</value>
|
||||
<comment>MouseSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="CreateProfile.Text" xml:space="preserve">
|
||||
<value>Créer un nouveau</value>
|
||||
<value>Créer un profil</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="CurrentVersion.Text" xml:space="preserve">
|
||||
@@ -385,7 +385,7 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="EditAppBarButton.Label" xml:space="preserve">
|
||||
<value>Editer</value>
|
||||
<value>Éditer</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ExportAppBarButton.Label" xml:space="preserve">
|
||||
@@ -393,7 +393,7 @@ Fuzzy</comment>
|
||||
<comment>ThemeSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="FontFamily.Header" xml:space="preserve">
|
||||
<value>Famille de polices</value>
|
||||
<value>Famille de police</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="FontSize.Header" xml:space="preserve">
|
||||
@@ -421,15 +421,15 @@ Fuzzy</comment>
|
||||
<comment>About.xaml</comment>
|
||||
</data>
|
||||
<data name="LineEndingMode.Header" xml:space="preserve">
|
||||
<value>Mode de traduction de fin de ligne</value>
|
||||
<value>Conversion de fin de ligne</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="LineEndingModeOnPaste.Text" xml:space="preserve">
|
||||
<value>Mode de traduction de fin de ligne sur coller:</value>
|
||||
<value>Conversion de fin des lignes collées:</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="MiddleButtonAction.Text" xml:space="preserve">
|
||||
<value>Action du bouton du milieu</value>
|
||||
<value>Action du bouton central</value>
|
||||
<comment>MouseSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Mouse.Text" xml:space="preserve">
|
||||
@@ -450,11 +450,11 @@ Fuzzy</comment>
|
||||
<comment>MouseSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="NewTheme.Text" xml:space="preserve">
|
||||
<value>Créer un nouveau</value>
|
||||
<value>Créer un thème</value>
|
||||
<comment>ThemeSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Padding.Header" xml:space="preserve">
|
||||
<value>Padding</value>
|
||||
<value>Bords</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ProfileName.Header" xml:space="preserve">
|
||||
@@ -462,7 +462,7 @@ Fuzzy</comment>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Profiles.Text" xml:space="preserve">
|
||||
<value>Profiles</value>
|
||||
<value>Profils</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ProfileTheme.Header" xml:space="preserve">
|
||||
@@ -478,7 +478,7 @@ Fuzzy</comment>
|
||||
<comment>MouseSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="SaveAppBarButton.Label" xml:space="preserve">
|
||||
<value>Sauvgarder</value>
|
||||
<value>Sauvegarder</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollbackLimit.Header" xml:space="preserve">
|
||||
@@ -486,15 +486,15 @@ Fuzzy</comment>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollBarAuto.Content" xml:space="preserve">
|
||||
<value>Masquage automatique</value>
|
||||
<value>Masquer automatiquement</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollBarHidden.Content" xml:space="preserve">
|
||||
<value>Masqué</value>
|
||||
<value>Masquée</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollbarStyle.Text" xml:space="preserve">
|
||||
<value>Style de barre de défilement</value>
|
||||
<value>Barre de défilement</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollBarVisible.Content" xml:space="preserve">
|
||||
@@ -502,7 +502,7 @@ Fuzzy</comment>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="SetActiveAppBarButton.Label" xml:space="preserve">
|
||||
<value>Définir actif</value>
|
||||
<value>Définir comme actif</value>
|
||||
<comment>ThemeSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="SetDefaultAppBarButton.Label" xml:space="preserve">
|
||||
@@ -510,11 +510,11 @@ Fuzzy</comment>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ShellLocation.Header" xml:space="preserve">
|
||||
<value>Emplacement exécutable du shell</value>
|
||||
<value>Emplacement de l'exécutable du shell</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="TabColor.Header" xml:space="preserve">
|
||||
<value>Couleur d'onglet</value>
|
||||
<value>Couleur de l'onglet</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Terminal.Text" xml:space="preserve">
|
||||
@@ -549,51 +549,51 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="WorkingDir.Header" xml:space="preserve">
|
||||
<value>Directeur de travail</value>
|
||||
<value>Dossier de départ</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ConfirmCloseTab" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir fermer "{0}" onglets?</value>
|
||||
<value>Êtes-vous sûr(e) de vouloir fermer "{0}" onglets ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmCloseWindow" xml:space="preserve">
|
||||
<value>Are you sure you want to close this window?</value>
|
||||
<value>Voulez-vous fermer cette fenêtre ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDeleteKeybindings" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this keybinding?</value>
|
||||
<value>Voulez-vous supprimer ce raccourci ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDeleteTheme" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir supprimer ce thème?</value>
|
||||
<value>Voulez-vous supprimer ce thème ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDiscardChanges" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir annuler toutes les modifications?</value>
|
||||
<value>Voulez-vous annuler toutes les modifications ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreGeneralSettings" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir restaurer les paramètres généraux?</value>
|
||||
<value>Voulez-vous restaurer les paramètres généraux ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreKeybindings" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir restaurer les raccourcis clavier par défaut?</value>
|
||||
<value>Voulez-vous restaurer les raccourcis clavier par défaut ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreMouseSettings" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir restaurer les paramètres de la souris?</value>
|
||||
<value>Voulez-vous restaurer les paramètres de la souris ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreProfile" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir restaurer ce profil?</value>
|
||||
<value>Voulez-vous restaurer ce profil ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreTerminalOptions" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir restaurer les options du terminal par défaut?</value>
|
||||
<value>Voulez-vous restaurer les options du terminal par défaut ?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="DisabledByPolicy" xml:space="preserve">
|
||||
<value>Désactivé par politique.</value>
|
||||
<value>Désactivé par Stratégie de Goupe.</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="DisabledByUser" xml:space="preserve">
|
||||
@@ -601,7 +601,7 @@ Fuzzy</comment>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="EditTitleString" xml:space="preserve">
|
||||
<value>Editer le titre</value>
|
||||
<value>Éditer le titre</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
@@ -613,7 +613,7 @@ Fuzzy</comment>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ImportThemeFailed" xml:space="preserve">
|
||||
<value>L'importation du thème a échouer</value>
|
||||
<value>L'importation du thème a échoué</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="NoSuitableParserFound" xml:space="preserve">
|
||||
@@ -628,7 +628,7 @@ Fuzzy</comment>
|
||||
<value>Annuler</value>
|
||||
</data>
|
||||
<data name="KeybindingDialogTitle.Text" xml:space="preserve">
|
||||
<value>Entrez votre raccourcis maintenant</value>
|
||||
<value>Entrez votre raccourci maintenant</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
@@ -638,7 +638,7 @@ Fuzzy</comment>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="TextCopied" xml:space="preserve">
|
||||
<value>Texte copier</value>
|
||||
<value>Texte copié</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="AddAppBarButton.Label" xml:space="preserve">
|
||||
@@ -670,7 +670,7 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="KeyBindingsViewEdit.Content" xml:space="preserve">
|
||||
<value>Editer</value>
|
||||
<value>Éditer</value>
|
||||
<comment>KeyBindingsView.xaml</comment>
|
||||
</data>
|
||||
<data name="Command.NewTab" xml:space="preserve">
|
||||
@@ -699,12 +699,12 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.Search" xml:space="preserve">
|
||||
<value>Chercher</value>
|
||||
<value>Recherche</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.SelectAll" xml:space="preserve">
|
||||
<value>Selectionner tout</value>
|
||||
<value>Sélectionner tout</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
@@ -759,12 +759,12 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.ToggleFullScreen" xml:space="preserve">
|
||||
<value>Basculer en plein écran</value>
|
||||
<value>Plein écran</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.ToggleWindow" xml:space="preserve">
|
||||
<value>Basculer la fenêtre</value>
|
||||
<value>Afficher/Masquer la fenêtre</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
@@ -773,11 +773,11 @@ Fuzzy</comment>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.NewSshTab" xml:space="preserve">
|
||||
<value>Nouvel SSH onglet</value>
|
||||
<value>Nouvel onglet SSH</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="SshInfoDialog.Title" xml:space="preserve">
|
||||
<value>SSH Informations</value>
|
||||
<value>Informations SSH</value>
|
||||
</data>
|
||||
<data name="UserTextBox.PlaceholderText" xml:space="preserve">
|
||||
<value>utilisateur</value>
|
||||
@@ -797,7 +797,7 @@ Fuzzy</comment>
|
||||
<value>Naviguer</value>
|
||||
</data>
|
||||
<data name="UseMoshCheckBox.Content" xml:space="preserve">
|
||||
<value>Utilisez Mosh</value>
|
||||
<value>Utiliser Mosh</value>
|
||||
</data>
|
||||
<data name="AdvancedExpander.Header" xml:space="preserve">
|
||||
<value>Avancé</value>
|
||||
@@ -825,7 +825,7 @@ Fuzzy</comment>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.UsernameEmpty" xml:space="preserve">
|
||||
<value>Le nom d'utilisateur ne peut pas être vide.</value>
|
||||
<value>Le nom d'utilisateur ne peut être vide.</value>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.HostEmpty" xml:space="preserve">
|
||||
<value>L'hôte ne peut être vide.</value>
|
||||
@@ -849,7 +849,7 @@ Fuzzy</comment>
|
||||
<value>Non</value>
|
||||
</data>
|
||||
<data name="Language.Header" xml:space="preserve">
|
||||
<value>Language</value>
|
||||
<value>Langage</value>
|
||||
</data>
|
||||
<data name="None.Text" xml:space="preserve">
|
||||
<value>Aucun</value>
|
||||
@@ -861,7 +861,7 @@ Fuzzy</comment>
|
||||
<value>Sortie avec erreur</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteProfile" xml:space="preserve">
|
||||
<value>Êtes-vous sûr de vouloir supprimer ce profil?</value>
|
||||
<value>Voulez-vous supprimer ce profil ?</value>
|
||||
</data>
|
||||
<data name="Command.NewSshWindow" xml:space="preserve">
|
||||
<value>Nouvelle fenêtre SSH</value>
|
||||
@@ -875,7 +875,7 @@ Fuzzy</comment>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="UseConPty" xml:space="preserve">
|
||||
<value>Utilisez ConPty</value>
|
||||
<value>Utiliser ConPty</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Username.Header" xml:space="preserve">
|
||||
@@ -887,7 +887,7 @@ Fuzzy</comment>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="MoshPortTo.Header" xml:space="preserve">
|
||||
<value>au portt</value>
|
||||
<value>au port</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="MoshPortRange.Text" xml:space="preserve">
|
||||
@@ -906,28 +906,28 @@ Fuzzy</comment>
|
||||
<value>Le fichier d'identification n'existe pas</value>
|
||||
</data>
|
||||
<data name="AutoFallbackToWindowsUsername.Header" xml:space="preserve">
|
||||
<value>Utilisez le nom d'utilisateur Windows lors de l'ouverture d'URL SSH qui don't spécifier un</value>
|
||||
<value>Utiliser le nom d'utilisateur Windows pour les connexions SSH qui n'en spécifient aucun</value>
|
||||
</data>
|
||||
<data name="UseMoshByDefault.Header" xml:space="preserve">
|
||||
<value>Mosh par défaut pour les connexions SSH</value>
|
||||
</data>
|
||||
<data name="RTrimCopiedLines.Header" xml:space="preserve">
|
||||
<value>Couper les lignes copiées</value>
|
||||
<value>Rogner les lignes copiées</value>
|
||||
</data>
|
||||
<data name="QuickSshDefault.Header" xml:space="preserve">
|
||||
<value>Utiliser SSH rapide par défaut</value>
|
||||
</data>
|
||||
<data name="InvalidCommand" xml:space="preserve">
|
||||
<value>Commande non valide.</value>
|
||||
<value>Commande invalide.</value>
|
||||
</data>
|
||||
<data name="LocationCantBeEmpty" xml:space="preserve">
|
||||
<value>L'emplacement ne peut pas être vide.</value>
|
||||
</data>
|
||||
<data name="MuteTerminalBeeps.Header" xml:space="preserve">
|
||||
<value>Mutter les bips du terminal</value>
|
||||
<value>Désactiver les bips du terminal</value>
|
||||
</data>
|
||||
<data name="CommandTextBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Entrez une commande (e.g. 'ssh username@host')</value>
|
||||
<value>Entrez une commande (ex: 'ssh username@host')</value>
|
||||
</data>
|
||||
<data name="CommandLine.Header" xml:space="preserve">
|
||||
<value>Commande</value>
|
||||
@@ -936,17 +936,17 @@ Fuzzy</comment>
|
||||
<value>Commande non supportée:</value>
|
||||
</data>
|
||||
<data name="CommandArgumentsMandatory" xml:space="preserve">
|
||||
<value>Les arguments de commande sont manquants.</value>
|
||||
<value>Les arguments de la commande sont manquants.</value>
|
||||
</data>
|
||||
<data name="QuickCommandDialog.Title" xml:space="preserve">
|
||||
<value>Démarrage rapide</value>
|
||||
<value>Lancement rapide</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.NewCustomCommandTab" xml:space="preserve">
|
||||
<value>Nouvel onglet de lancement rapide</value>
|
||||
<value>Lancement rapide (onglet)</value>
|
||||
</data>
|
||||
<data name="Command.NewCustomCommandWindow" xml:space="preserve">
|
||||
<value>Nouvelle fenêtre de lancement rapide</value>
|
||||
<value>Lancement rapide (fenêtre)</value>
|
||||
</data>
|
||||
<data name="NewQuickTab.Text" xml:space="preserve">
|
||||
<value>Nouvel onglet rapide</value>
|
||||
@@ -958,7 +958,7 @@ Fuzzy</comment>
|
||||
<value>Lien invalide.</value>
|
||||
</data>
|
||||
<data name="DropTabHere" xml:space="preserve">
|
||||
<value>Drop tab here</value>
|
||||
<value>Déposez l'onglet ici</value>
|
||||
</data>
|
||||
<data name="CloseLeft.Text" xml:space="preserve">
|
||||
<value>Fermer les onglets à gauche</value>
|
||||
@@ -970,7 +970,7 @@ Fuzzy</comment>
|
||||
<value>Fermer les onglets à droite</value>
|
||||
</data>
|
||||
<data name="Command.DuplicateTab" xml:space="preserve">
|
||||
<value>Onglet dupliquer</value>
|
||||
<value>Dupliquer l'onglet</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Duplicate.Text" xml:space="preserve">
|
||||
@@ -989,16 +989,16 @@ Fuzzy</comment>
|
||||
<value>Fermer le panneau de recherche</value>
|
||||
</data>
|
||||
<data name="FindNext.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Trouver le suivant</value>
|
||||
<value>Résultat suivant</value>
|
||||
</data>
|
||||
<data name="FindPrevious.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Trouver le précédent</value>
|
||||
<value>Résultat précédent</value>
|
||||
</data>
|
||||
<data name="SearchTextBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Entrez le terme de recherche</value>
|
||||
</data>
|
||||
<data name="Search.Text" xml:space="preserve">
|
||||
<value>Chercher</value>
|
||||
<value>Recherche</value>
|
||||
</data>
|
||||
<data name="PrintableOutputOnly.Content" xml:space="preserve">
|
||||
<value>Sortie imprimable seulement</value>
|
||||
@@ -1010,79 +1010,80 @@ Fuzzy</comment>
|
||||
<value>Caractères séparateurs de mots</value>
|
||||
</data>
|
||||
<data name="Recent.Text" xml:space="preserve">
|
||||
<value>Récent</value>
|
||||
<value>Récents</value>
|
||||
</data>
|
||||
<data name="NewTab_Description" xml:space="preserve">
|
||||
<value>Ouvrir le profile par défaut dans un nouvel onglet.</value>
|
||||
<value>Ouvre le profil par défaut dans un nouvel onglet.</value>
|
||||
</data>
|
||||
<data name="NewSshTab_Description" xml:space="preserve">
|
||||
<value>Ouvrir une session SSH ou Msh dans un nouvel onglet.</value>
|
||||
<value>Ouvre une session SSH ou Mosh dans un nouvel onglet.</value>
|
||||
</data>
|
||||
<data name="NewQuickTab_Description" xml:space="preserve">
|
||||
<value>Ouvrir le dialogue "Lancement rapide" et commencer une session dans un nouvel onglet.</value>
|
||||
<value>Ouvre le dialogue "Lancement rapide" et démarre une session dans un nouvel onglet.</value>
|
||||
</data>
|
||||
<data name="Settings_Description" xml:space="preserve">
|
||||
<value>Ouvrir les paramètres.</value>
|
||||
<value>Ouvre les paramètres.</value>
|
||||
</data>
|
||||
<data name="About_Description" xml:space="preserve">
|
||||
<value>Informations sur l'application.</value>
|
||||
</data>
|
||||
<data name="Recent_Description" xml:space="preserve">
|
||||
<value>Session récentes.</value>
|
||||
<value>Sessions récentes.</value>
|
||||
</data>
|
||||
<data name="MenuItem_DefaultProfile_Description" xml:space="preserve">
|
||||
<value>Commencer une nouvelle session du profil par défaut.</value>
|
||||
<value>Démarre une nouvelle session de terminal du profil par défaut.</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Text" xml:space="preserve">
|
||||
<value>Connexion distante...</value>
|
||||
<value>Connexion à distance...</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Description" xml:space="preserve">
|
||||
<value>Ouvrir un dialogue pour une nouvelle session SSH ou Mosh.</value>
|
||||
<value>Ouvre un dialogue permettant de lancer une nouvelle session SSH ou Mosh.</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Text" xml:space="preserve">
|
||||
<value>Lancement rapide...</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Description" xml:space="preserve">
|
||||
<value>Ouvrir un dialogue "Lancement rapide" pour un nouvelle session.</value>
|
||||
<value>Ouvrir un dialogue "Lancement rapide" pour une nouvelle session de terminal.</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewWindow_Text" xml:space="preserve">
|
||||
<value>Nouvelle fenêtre.</value>
|
||||
<value>Nouvelle fenêtre</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewTab_Text" xml:space="preserve">
|
||||
<value>Nouvel onglet.</value>
|
||||
<value>Nouvel onglet</value>
|
||||
<comment>@William Why adding dots everywhere? These are not sentences</comment>
|
||||
</data>
|
||||
<data name="MenuItem_NewTab_Description" xml:space="preserve">
|
||||
<value>Lancer une session dans un nouvel onglet.</value>
|
||||
<value>Lance une session dans un nouvel onglet.</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewWindow_Description" xml:space="preserve">
|
||||
<value>Lancer une session dans une nouvelle fenêtre.</value>
|
||||
<value>Lance une session dans une nouvelle fenêtre.</value>
|
||||
</data>
|
||||
<data name="AppMenuType.Text" xml:space="preserve">
|
||||
<value>Application menu type</value>
|
||||
<value>Style du menu d'application</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Flat.Content" xml:space="preserve">
|
||||
<value>Plat, honorant le paramètre "Ouvrir de nouveaux terminaux comme"</value>
|
||||
<value>Plat, honorant le paramètre "Ouvrir les nouveaux terminaux en tant que"</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Cascading.Content" xml:space="preserve">
|
||||
<value>"Nouvel onglet" / "Nouvelle fenêtre" en cascade.</value>
|
||||
</data>
|
||||
<data name="Quit.Text" xml:space="preserve">
|
||||
<value>Quitter.</value>
|
||||
<value>Quitter</value>
|
||||
</data>
|
||||
<data name="Quit.Description" xml:space="preserve">
|
||||
<value>Quitter Fluent Terminal</value>
|
||||
</data>
|
||||
<data name="EnabledByPolicy" xml:space="preserve">
|
||||
<value>Autorisé par la politique.</value>
|
||||
<value>Autorisé par Stratégie de Goupe.</value>
|
||||
</data>
|
||||
<data name="BackgroundImage.Content" xml:space="preserve">
|
||||
<value>Image de fond</value>
|
||||
<value>Image d'arrière-plan</value>
|
||||
</data>
|
||||
<data name="AcrylicBackground.Header" xml:space="preserve">
|
||||
<value>Utilise un fond acrylique.</value>
|
||||
<value>Arrière-plan transparent</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Êtes vous sûr de vouloir supprimer cette image de fond ?</value>
|
||||
<value>Voulez-vous supprimer cet arrière-plan ?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>Couleurs</value>
|
||||
@@ -1100,18 +1101,27 @@ Fuzzy</comment>
|
||||
<value>Mot entier</value>
|
||||
</data>
|
||||
<data name="SearchCaseSensitive.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Sensible à la casse.</value>
|
||||
<value>Sensible à la casse</value>
|
||||
</data>
|
||||
<data name="MouseCopySelectionOrPaste.Content" xml:space="preserve">
|
||||
<value>Copier la sélection ou coller</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>Utiliser le buffer intelligent</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Redémarrer</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Session déconnectée.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1061,4 +1061,13 @@ Fuzzy</comment>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1052,4 +1052,13 @@
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1052,4 +1052,13 @@
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -255,8 +255,7 @@
|
||||
</data>
|
||||
<data name="UnderlineTab.Header" xml:space="preserve">
|
||||
<value>Sottolinea la scheda attiva</value>
|
||||
<comment>GeneralSettings.xaml
|
||||
Fuzzy</comment>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Setting_About.Content" xml:space="preserve">
|
||||
<value>Informazioni su</value>
|
||||
@@ -578,8 +577,7 @@ Fuzzy</comment>
|
||||
</data>
|
||||
<data name="DisabledByPolicy" xml:space="preserve">
|
||||
<value>Disattivato da policy</value>
|
||||
<comment>ViewModel
|
||||
Fuzzy</comment>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="DisabledByUser" xml:space="preserve">
|
||||
<value>Disattivato dall'utente. Riattiva Fluent Terminal nella scheda Avvio del Task Manager</value>
|
||||
@@ -863,7 +861,6 @@ Fuzzy</comment>
|
||||
</data>
|
||||
<data name="QuickSshDefault.Header" xml:space="preserve">
|
||||
<value>Usa Quick SSH come impostazione predefinita</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="InvalidCommand" xml:space="preserve">
|
||||
<value>Comando non valido</value>
|
||||
@@ -1059,9 +1056,18 @@ Fuzzy</comment>
|
||||
<value>Usa smart buffer</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Riavvia</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Sessione terminata.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1014,42 +1014,51 @@
|
||||
<value>ポリシーによる許可</value>
|
||||
</data>
|
||||
<data name="BackgroundImage.Content" xml:space="preserve">
|
||||
<value>Background image</value>
|
||||
<value>背景画像</value>
|
||||
</data>
|
||||
<data name="AcrylicBackground.Header" xml:space="preserve">
|
||||
<value>Use acrylic background</value>
|
||||
<value>透過背景</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this background image?</value>
|
||||
<value>この背景画像を削除してもよろしいですか?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>Colors</value>
|
||||
<value>色</value>
|
||||
</data>
|
||||
<data name="BrightColors.Text" xml:space="preserve">
|
||||
<value>Bright colors</value>
|
||||
<value>明色</value>
|
||||
</data>
|
||||
<data name="CopyLink" xml:space="preserve">
|
||||
<value>Copy link</value>
|
||||
<value>リンクをコピー</value>
|
||||
</data>
|
||||
<data name="SearchWithRegex.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Regex</value>
|
||||
<value>正規表現</value>
|
||||
</data>
|
||||
<data name="SearchWholeWord.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Whole word</value>
|
||||
<value>単語単位</value>
|
||||
</data>
|
||||
<data name="SearchCaseSensitive.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Case sensitive</value>
|
||||
<value>大/小文字</value>
|
||||
</data>
|
||||
<data name="MouseCopySelectionOrPaste.Content" xml:space="preserve">
|
||||
<value>Copy selection or paste</value>
|
||||
<value>選択部分のコピーあるいは貼り付け</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>スマートバッファを使用</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>再起動</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>セッションが切断されました</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1061,4 +1061,13 @@ Fuzzy</comment>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -137,7 +137,7 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="ConfirmWindowClosing.Header" xml:space="preserve">
|
||||
<value>Vraag voor het sluiten van alle window's</value>
|
||||
<value>Vraag voor het sluiten van alle vensters</value>
|
||||
<comment>GeneralSettings.xaml
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
@@ -151,7 +151,7 @@ Fuzzy</comment>
|
||||
<comment>TabBar.xaml</comment>
|
||||
</data>
|
||||
<data name="ColorInactiveTabs.Text" xml:space="preserve">
|
||||
<value>Kleuren in interactive tab's</value>
|
||||
<value>Kleuren in interactieve tab's</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Command.Copy" xml:space="preserve">
|
||||
@@ -160,11 +160,11 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="CustomTitle.Header" xml:space="preserve">
|
||||
<value>Laat de tab zijn title zien in de title balk</value>
|
||||
<value>Toon de tab naam in de titelbalk</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="EditTitle.Text" xml:space="preserve">
|
||||
<value>Verander Title</value>
|
||||
<value>Verander Titel</value>
|
||||
<comment>TabBar.xaml</comment>
|
||||
</data>
|
||||
<data name="General.Text" xml:space="preserve">
|
||||
@@ -181,7 +181,7 @@ Fuzzy</comment>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="NeedRelaunch.Text" xml:space="preserve">
|
||||
<value>herstart is nodig om de settings toe te passen</value>
|
||||
<value>herstart is nodig om de instellingen toe te passen</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="NewTab.Text" xml:space="preserve">
|
||||
@@ -198,7 +198,7 @@ Fuzzy</comment>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ONTA_Windows.Content" xml:space="preserve">
|
||||
<value>Window's</value>
|
||||
<value>Vensters</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="OpenNewTerminalAs.Text" xml:space="preserve">
|
||||
@@ -234,7 +234,7 @@ Fuzzy</comment>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Setting" xml:space="preserve">
|
||||
<value>Instellingen</value>
|
||||
<value>Instelling</value>
|
||||
<comment>SettingsPage.xaml.cs</comment>
|
||||
</data>
|
||||
<data name="Settings.Text" xml:space="preserve">
|
||||
@@ -397,15 +397,15 @@ Fuzzy</comment>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="FontSize.Header" xml:space="preserve">
|
||||
<value>Letter grote</value>
|
||||
<value>Letter grootte</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ImportTheme.Text" xml:space="preserve">
|
||||
<value>Importerne</value>
|
||||
<value>Importeren</value>
|
||||
<comment>ThemeSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="KeyboardShortcut.Header" xml:space="preserve">
|
||||
<value>Keyboard shortcut</value>
|
||||
<value>Sneltoets</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="KeyboardShortcut1.Text" xml:space="preserve">
|
||||
@@ -429,7 +429,7 @@ Fuzzy</comment>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="MiddleButtonAction.Text" xml:space="preserve">
|
||||
<value>Middle muisklik</value>
|
||||
<value>Midden muisklik</value>
|
||||
<comment>MouseSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Mouse.Text" xml:space="preserve">
|
||||
@@ -454,7 +454,7 @@ Fuzzy</comment>
|
||||
<comment>ThemeSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Padding.Header" xml:space="preserve">
|
||||
<value>Padding</value>
|
||||
<value>Vulling</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ProfileName.Header" xml:space="preserve">
|
||||
@@ -466,7 +466,7 @@ Fuzzy</comment>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ProfileTheme.Header" xml:space="preserve">
|
||||
<value>Theme</value>
|
||||
<value>Thema</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ReleaseNotes.Text" xml:space="preserve">
|
||||
@@ -482,7 +482,7 @@ Fuzzy</comment>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollbackLimit.Header" xml:space="preserve">
|
||||
<value>Terug scrollen liemiet</value>
|
||||
<value>Terug scrollen limiet</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollBarAuto.Content" xml:space="preserve">
|
||||
@@ -494,7 +494,7 @@ Fuzzy</comment>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollbarStyle.Text" xml:space="preserve">
|
||||
<value>Scrollbar style</value>
|
||||
<value>Scrollbar stijl</value>
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ScrollBarVisible.Content" xml:space="preserve">
|
||||
@@ -549,60 +549,60 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="WorkingDir.Header" xml:space="preserve">
|
||||
<value>Working directory</value>
|
||||
<value>Werkmap</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ConfirmCloseTab" xml:space="preserve">
|
||||
<value>Weet je het zeker dat je tab "{0}" wil sluiten?</value>
|
||||
<value>Weet je zeker dat je tab "{0}" wilt sluiten?</value>
|
||||
<comment>ViewModel
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="ConfirmCloseWindow" xml:space="preserve">
|
||||
<value>Weet je zeker dat je deze window wil sluiten?</value>
|
||||
<value>Weet je zeker dat je dit venster wilt sluiten?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDeleteKeybindings" xml:space="preserve">
|
||||
<value>Weet je zeker dat je deze keybinding wil verwijderen?</value>
|
||||
<value>Weet je zeker dat je deze sneltoets wilt verwijderen?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDeleteTheme" xml:space="preserve">
|
||||
<value>Weet je zeker dat je deze thema wil verwijderen?</value>
|
||||
<value>Weet je zeker dat je dit thema wilt verwijderen?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDiscardChanges" xml:space="preserve">
|
||||
<value>Weet je zeker dat je alle wijzigingen wil negeeren?</value>
|
||||
<value>Weet je zeker dat je alle wijzigingen wilt negeren?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreGeneralSettings" xml:space="preserve">
|
||||
<value>Weet je zeker dat je de algemene instellingen wil terug zetten naar de standaard instellingen?</value>
|
||||
<value>Weet je zeker dat je de algemene instellingen wilt terug zetten naar de standaard instellingen?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreKeybindings" xml:space="preserve">
|
||||
<value>Weet je zeker dat je de keybindings will terug zetten naar de standaard instellingen?</value>
|
||||
<value>Weet je zeker dat je de keybindings wilt terug zetten naar de standaard instellingen?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreMouseSettings" xml:space="preserve">
|
||||
<value>Weet je zeker dat je de muis instellingen will terug zetten naar de standaard instellingen?</value>
|
||||
<value>Weet je zeker dat je de muis instellingen wilt terug zetten naar de standaard instellingen?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreProfile" xml:space="preserve">
|
||||
<value>Weet je zeker dat je dit profiel wil herstellen?</value>
|
||||
<value>Weet je zeker dat je dit profiel wilt herstellen?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmRestoreTerminalOptions" xml:space="preserve">
|
||||
<value>Weet je zeker dat je wil terug gaan naar de standaard terminal instellingen?</value>
|
||||
<value>Weet je zeker dat je de standaard terminal instellingen wilt herstellen?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="DisabledByPolicy" xml:space="preserve">
|
||||
<value>Uitgeschakeld door policy.</value>
|
||||
<value>Uitgeschakeld door beleid.</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="DisabledByUser" xml:space="preserve">
|
||||
<value>Uit gezet door gebruiker. Activeer het opnieuw in de automaties starten tab in Taak Beheer.</value>
|
||||
<value>Uitgezet door gebruiker. Activeer deze opnieuw in de automatisch starten tab in Taak Beheer.</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="EditTitleString" xml:space="preserve">
|
||||
<value>Verander Title</value>
|
||||
<value>Verander Titel</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="Error" xml:space="preserve">
|
||||
@@ -610,11 +610,11 @@ Fuzzy</comment>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ErrorString1" xml:space="preserve">
|
||||
<value>De actie kan niet worden voltooid door de volgende error:</value>
|
||||
<value>De actie kan niet worden voltooid door de volgende fout:</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ImportThemeFailed" xml:space="preserve">
|
||||
<value>Inporteren van theme mislukt</value>
|
||||
<value>Inporteren van thema mislukt</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="NoSuitableParserFound" xml:space="preserve">
|
||||
@@ -629,10 +629,10 @@ Fuzzy</comment>
|
||||
<value>Annuleren</value>
|
||||
</data>
|
||||
<data name="KeybindingDialogTitle.Text" xml:space="preserve">
|
||||
<value>Voer de keybinding nu in</value>
|
||||
<value>Voer de sneltoets nu in</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>Oke</value>
|
||||
<value>Oké</value>
|
||||
</data>
|
||||
<data name="ResetBtn.Content" xml:space="preserve">
|
||||
<value>Reset</value>
|
||||
@@ -647,7 +647,7 @@ Fuzzy</comment>
|
||||
<comment>KeyBindingSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Command.ChangeTabTitle" xml:space="preserve">
|
||||
<value>Verander tab title</value>
|
||||
<value>Verander tab titel</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
@@ -662,7 +662,7 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Keybindings.Text" xml:space="preserve">
|
||||
<value>Keybindings</value>
|
||||
<value>Sneltoetsen</value>
|
||||
<comment>KeyBindingSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Delete.Content" xml:space="preserve">
|
||||
@@ -680,7 +680,7 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.NewWindow" xml:space="preserve">
|
||||
<value>Nieuwe window</value>
|
||||
<value>Nieuw venster</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
@@ -710,7 +710,7 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.ShowSettings" xml:space="preserve">
|
||||
<value>Laat settings zien</value>
|
||||
<value>Laat instellingen zien</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
@@ -760,17 +760,17 @@ Fuzzy</comment>
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.ToggleFullScreen" xml:space="preserve">
|
||||
<value>Schakel naar Fullscreen</value>
|
||||
<value>Schakel naar volledig scherm</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.ToggleWindow" xml:space="preserve">
|
||||
<value>Schakel naar window</value>
|
||||
<value>Schakel naar venster</value>
|
||||
<comment>Command
|
||||
Fuzzy</comment>
|
||||
</data>
|
||||
<data name="NewSshTab.Text" xml:space="preserve">
|
||||
<value>Nieuwe remote tab</value>
|
||||
<value>Nieuwe externe tab</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="Command.NewSshTab" xml:space="preserve">
|
||||
@@ -788,7 +788,7 @@ Fuzzy</comment>
|
||||
<value>host</value>
|
||||
</data>
|
||||
<data name="PortTextBox.PlaceholderText" xml:space="preserve">
|
||||
<value>port</value>
|
||||
<value>poort</value>
|
||||
</data>
|
||||
<data name="IdentityFileTextBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Identiteit bestand pad</value>
|
||||
@@ -801,20 +801,20 @@ Fuzzy</comment>
|
||||
<value>Gebruik Mosh</value>
|
||||
</data>
|
||||
<data name="AdvancedExpander.Header" xml:space="preserve">
|
||||
<value>Advanced</value>
|
||||
<value>Geavanceerd</value>
|
||||
</data>
|
||||
<data name="MoshPorts.Text" xml:space="preserve">
|
||||
<value>Mosh poorten:</value>
|
||||
</data>
|
||||
<data name="SaveShortcutButton.Content" xml:space="preserve">
|
||||
<value>Shortcut opslaan</value>
|
||||
<value>Sneltoets opslaan</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="NeedsToRestart.Text" xml:space="preserve">
|
||||
<value>De applicatie moet herstarten om deze veranderingen in werking te stellen.</value>
|
||||
</data>
|
||||
<data name="InvalidInput" xml:space="preserve">
|
||||
<value>Ongeldige Input</value>
|
||||
<value>Ongeldige Invoer</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="PortCannotBeZero" xml:space="preserve">
|
||||
@@ -822,7 +822,7 @@ Fuzzy</comment>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="UserAndHostMandatory" xml:space="preserve">
|
||||
<value>Gebruiker en host azijn verplichte velden.</value>
|
||||
<value>Gebruiker en host zijn verplichte velden.</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.UsernameEmpty" xml:space="preserve">
|
||||
@@ -833,7 +833,7 @@ Fuzzy</comment>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.SshPortZeroOrNegative" xml:space="preserve">
|
||||
<value>SSH port moet meer dan nul zijn.</value>
|
||||
<value>SSH poort moet groter dan nul zijn.</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.MoshPortZeroOrNegative" xml:space="preserve">
|
||||
@@ -856,16 +856,16 @@ Fuzzy</comment>
|
||||
<value>Geen</value>
|
||||
</data>
|
||||
<data name="NewOutput.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Nieuwe output</value>
|
||||
<value>Nieuwe uitvoer</value>
|
||||
</data>
|
||||
<data name="ExitedWithError.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Gestopt met een fout</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteProfile" xml:space="preserve">
|
||||
<value>Weet je zeker dat je deze profiel wil verwijderen?</value>
|
||||
<value>Weet je zeker dat je dit profiel wilt verwijderen?</value>
|
||||
</data>
|
||||
<data name="Command.NewSshWindow" xml:space="preserve">
|
||||
<value>Nieuwe SSH window</value>
|
||||
<value>Nieuw SSH venster</value>
|
||||
</data>
|
||||
<data name="Setting_SShProfiles.Content" xml:space="preserve">
|
||||
<value>SSH-profielen</value>
|
||||
@@ -901,10 +901,10 @@ Fuzzy</comment>
|
||||
<value>Instellingen zijn geëxporteerd naar bestand</value>
|
||||
</data>
|
||||
<data name="SettingsImported" xml:space="preserve">
|
||||
<value>Instellingen zijn geimporteerd van bestand</value>
|
||||
<value>Instellingen zijn geïmporteerd van bestand</value>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.IdentityFileDoesNotExist" xml:space="preserve">
|
||||
<value>Identitijt bestaat niet, Identitijt bestand bestaat niet</value>
|
||||
<value>Identiteit bestaat niet, Identiteit bestand bestaat niet</value>
|
||||
</data>
|
||||
<data name="AutoFallbackToWindowsUsername.Header" xml:space="preserve">
|
||||
<value>Gebruik Windows gebruikersnaam bij het openen van SSH URLs die geen gebruikersnaam hebben</value>
|
||||
@@ -922,7 +922,7 @@ Fuzzy</comment>
|
||||
<value>Ongeldig command.</value>
|
||||
</data>
|
||||
<data name="LocationCantBeEmpty" xml:space="preserve">
|
||||
<value>Locaatsie kan niet leeg zijn.</value>
|
||||
<value>Locatie kan niet leeg zijn.</value>
|
||||
</data>
|
||||
<data name="MuteTerminalBeeps.Header" xml:space="preserve">
|
||||
<value>Demp terminal geluiden</value>
|
||||
@@ -931,7 +931,7 @@ Fuzzy</comment>
|
||||
<value>Voer een commando (b.v. 'ssh gebruikersnaam@host')</value>
|
||||
</data>
|
||||
<data name="CommandLine.Header" xml:space="preserve">
|
||||
<value>Command</value>
|
||||
<value>Commando</value>
|
||||
</data>
|
||||
<data name="UnsupportedCommand" xml:space="preserve">
|
||||
<value>Niet ondersteund commando:</value>
|
||||
@@ -947,7 +947,7 @@ Fuzzy</comment>
|
||||
<value>Nieuwe snel uitvoeren tab</value>
|
||||
</data>
|
||||
<data name="Command.NewCustomCommandWindow" xml:space="preserve">
|
||||
<value>Nieuw snelle uitvoeren window</value>
|
||||
<value>Nieuw snel uitvoeren venster</value>
|
||||
</data>
|
||||
<data name="NewQuickTab.Text" xml:space="preserve">
|
||||
<value>Snel nieuwe tab</value>
|
||||
@@ -959,7 +959,7 @@ Fuzzy</comment>
|
||||
<value>Ongeldige link.</value>
|
||||
</data>
|
||||
<data name="DropTabHere" xml:space="preserve">
|
||||
<value>Drop tab here</value>
|
||||
<value>Plaats tab hier</value>
|
||||
</data>
|
||||
<data name="CloseLeft.Text" xml:space="preserve">
|
||||
<value>Sluit alle tabs naar links</value>
|
||||
@@ -977,16 +977,16 @@ Fuzzy</comment>
|
||||
<value>Duplicaat</value>
|
||||
</data>
|
||||
<data name="DuplicateEnvironmentVariable" xml:space="preserve">
|
||||
<value>Kan niet 2 envourment variables met dezelfde naam hebben.</value>
|
||||
<value>Kan niet 2 omgeving variabelen met dezelfde naam hebben.</value>
|
||||
</data>
|
||||
<data name="EmptyEnvironmentVariableName" xml:space="preserve">
|
||||
<value>Kan geen envourment variable aanmaken zonder een naam.</value>
|
||||
<value>Kan geen omgeving variabele aanmaken zonder een naam.</value>
|
||||
</data>
|
||||
<data name="EnvironmentVariables.Text" xml:space="preserve">
|
||||
<value>Environment variables</value>
|
||||
<value>Omgeving variabelen</value>
|
||||
</data>
|
||||
<data name="CloseSearchPanel.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Sluit zoek balk</value>
|
||||
<value>Sluit zoekbalk</value>
|
||||
</data>
|
||||
<data name="FindNext.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Find volgende</value>
|
||||
@@ -995,17 +995,17 @@ Fuzzy</comment>
|
||||
<value>Find vorige</value>
|
||||
</data>
|
||||
<data name="SearchTextBox.PlaceholderText" xml:space="preserve">
|
||||
<value>Enter zoek term</value>
|
||||
<value>Voer zoekterm in</value>
|
||||
</data>
|
||||
<data name="Search.Text" xml:space="preserve">
|
||||
<value>Zoekken</value>
|
||||
<value>Zoeken</value>
|
||||
</data>
|
||||
<data name="PrintableOutputOnly.Content" xml:space="preserve">
|
||||
<value>Print output alleen</value>
|
||||
<value>Print alleen uitvoer</value>
|
||||
<comment>Fuzzy</comment>
|
||||
</data>
|
||||
<data name="EnableLogging.Header" xml:space="preserve">
|
||||
<value>Log output voor debugging</value>
|
||||
<value>Log uitvoer voor debugging</value>
|
||||
</data>
|
||||
<data name="WordSeparator.Header" xml:space="preserve">
|
||||
<value>Woord scheidingstekens</value>
|
||||
@@ -1015,105 +1015,114 @@ Fuzzy</comment>
|
||||
<value>Recent</value>
|
||||
</data>
|
||||
<data name="NewTab_Description" xml:space="preserve">
|
||||
<value>Opens default profile in a new tab.</value>
|
||||
<value>Opent standaard profiel in een nieuw tab</value>
|
||||
</data>
|
||||
<data name="NewSshTab_Description" xml:space="preserve">
|
||||
<value>Opens a new SSH or Mosh session in a new tab.</value>
|
||||
</data>
|
||||
<data name="NewQuickTab_Description" xml:space="preserve">
|
||||
<value>Opens "Quick Launch" dialog and starts session in a new tab.</value>
|
||||
<value>Opent "Snel Laden" dialoog en start een sessie in een nieuwe tab</value>
|
||||
</data>
|
||||
<data name="Settings_Description" xml:space="preserve">
|
||||
<value>Opens settings window.</value>
|
||||
<value>Opent het instellingen venster</value>
|
||||
</data>
|
||||
<data name="About_Description" xml:space="preserve">
|
||||
<value>Basic info about the app.</value>
|
||||
<value>Basisinformatie over de applicatie.</value>
|
||||
</data>
|
||||
<data name="Recent_Description" xml:space="preserve">
|
||||
<value>Recently opened sessions.</value>
|
||||
<value>Recentelijk geopende sessies.</value>
|
||||
</data>
|
||||
<data name="MenuItem_DefaultProfile_Description" xml:space="preserve">
|
||||
<value>Starts new terminal session based on the default profile.</value>
|
||||
<value>Start een nieuwe Terminal sessie, gebaseerd op het standaard profiel.</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Text" xml:space="preserve">
|
||||
<value>Remote Connect...</value>
|
||||
<value>Extern verbinden...</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Description" xml:space="preserve">
|
||||
<value>Opens a dialog for launching a new SSH or Mosh terminal session.</value>
|
||||
<value>Opent een dialoog voor het starten van een nieuwe SSH of Mosh Terminal sessie.</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Text" xml:space="preserve">
|
||||
<value>Quick Launch...</value>
|
||||
<value>Snel Laden...</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Description" xml:space="preserve">
|
||||
<value>Opens a "Quick Launch" dialog for starting a new terminal session.</value>
|
||||
<value>Opent een "Snel Laden" dialoog om een nieuwe Terminal sessie te starten.</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewWindow_Text" xml:space="preserve">
|
||||
<value>New Window</value>
|
||||
<value>Nieuw Venster</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewTab_Text" xml:space="preserve">
|
||||
<value>New Tab</value>
|
||||
<value>Nieuwe Tab</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewTab_Description" xml:space="preserve">
|
||||
<value>Launches a session in a new tab.</value>
|
||||
<value>Start een sessie in een nieuw tab</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewWindow_Description" xml:space="preserve">
|
||||
<value>Launches a session in a new window.</value>
|
||||
<value>Start een sessie in een nieuw venster.</value>
|
||||
</data>
|
||||
<data name="AppMenuType.Text" xml:space="preserve">
|
||||
<value>Application menu type</value>
|
||||
<value>Applicatie menu type</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Flat.Content" xml:space="preserve">
|
||||
<value>Flat, honoring "Open new terminals as" setting</value>
|
||||
<value>Plat, naar de "Open nieuwe terminals als" instelling</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Cascading.Content" xml:space="preserve">
|
||||
<value>"New Tab" / "New Window" cascading</value>
|
||||
<value>"Nieuw Tab" / "Nieuw Venster" trapsgewijs</value>
|
||||
</data>
|
||||
<data name="Quit.Text" xml:space="preserve">
|
||||
<value>Quit</value>
|
||||
<value>Stop</value>
|
||||
</data>
|
||||
<data name="Quit.Description" xml:space="preserve">
|
||||
<value>Quit Fluent Terminal</value>
|
||||
<value>Stop Fluent Terminal</value>
|
||||
</data>
|
||||
<data name="EnabledByPolicy" xml:space="preserve">
|
||||
<value>Enabled by policy.</value>
|
||||
<value>Aangezet doot beleid.</value>
|
||||
</data>
|
||||
<data name="BackgroundImage.Content" xml:space="preserve">
|
||||
<value>Background image</value>
|
||||
<value>Achtergrond afbeelding</value>
|
||||
</data>
|
||||
<data name="AcrylicBackground.Header" xml:space="preserve">
|
||||
<value>Use acrylic background</value>
|
||||
<value>Gebruik een acryl achtergrond</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this background image?</value>
|
||||
<value>Weet je zeker dat je deze achtergrond wilt verwijderen?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>Colors</value>
|
||||
<value>Kleuren</value>
|
||||
</data>
|
||||
<data name="BrightColors.Text" xml:space="preserve">
|
||||
<value>Bright colors</value>
|
||||
<value>Felle kleuren</value>
|
||||
</data>
|
||||
<data name="CopyLink" xml:space="preserve">
|
||||
<value>Copy link</value>
|
||||
<value>Kopieer link</value>
|
||||
</data>
|
||||
<data name="SearchWithRegex.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Regex</value>
|
||||
</data>
|
||||
<data name="SearchWholeWord.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Whole word</value>
|
||||
<value>Heel woord</value>
|
||||
</data>
|
||||
<data name="SearchCaseSensitive.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Case sensitive</value>
|
||||
<value>Hoofdlettergevoelig</value>
|
||||
</data>
|
||||
<data name="MouseCopySelectionOrPaste.Content" xml:space="preserve">
|
||||
<value>Copy selection or paste</value>
|
||||
<value>Kopieer selectie of plak</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>Gebruik slimme buffer</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Herstart</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Sessie verbroken.</value>
|
||||
</data>
|
||||
</root>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Verhoog lettertype grootte</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Verlaag lettertype grootte</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Herstel lettertype grootte</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -154,9 +154,8 @@
|
||||
<comment>XtermTerminalView.xaml.cs</comment>
|
||||
</data>
|
||||
<data name="CustomTitle.Header" xml:space="preserve">
|
||||
<value>Pokaż</value>
|
||||
<comment>GeneralSettings.xaml
|
||||
Fuzzy</comment>
|
||||
<value>Pokaż niestandardowe tytuły kart także w pasku tytułu</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="EditTitle.Text" xml:space="preserve">
|
||||
<value>Zmień tytuł</value>
|
||||
@@ -772,13 +771,13 @@ Fuzzy</comment>
|
||||
<value>Port nie może być 0</value>
|
||||
</data>
|
||||
<data name="UserAndHostMandatory" xml:space="preserve">
|
||||
<value>Użytkownik i IP są niezbędne</value>
|
||||
<value>Użytkownik i adres hosta są niezbędne</value>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.UsernameEmpty" xml:space="preserve">
|
||||
<value>Nazwa użytkownika nie może być pusta</value>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.HostEmpty" xml:space="preserve">
|
||||
<value>IP nie może być puste</value>
|
||||
<value>Adres hosta nie może być pusty</value>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.SshPortZeroOrNegative" xml:space="preserve">
|
||||
<value>Port SSH musi być większy od 0</value>
|
||||
@@ -949,108 +948,117 @@ Fuzzy</comment>
|
||||
<value>Znaki seperujące słowa</value>
|
||||
</data>
|
||||
<data name="Recent.Text" xml:space="preserve">
|
||||
<value>Recent</value>
|
||||
<value>Ostatnie</value>
|
||||
</data>
|
||||
<data name="NewTab_Description" xml:space="preserve">
|
||||
<value>Opens default profile in a new tab.</value>
|
||||
<value>Otwórz domyślny profil w nowej karcie.</value>
|
||||
</data>
|
||||
<data name="NewSshTab_Description" xml:space="preserve">
|
||||
<value>Opens a new SSH or Mosh session in a new tab.</value>
|
||||
<value>Otwórz nową sesję SSH lub Mosh w nowej karcie.</value>
|
||||
</data>
|
||||
<data name="NewQuickTab_Description" xml:space="preserve">
|
||||
<value>Opens "Quick Launch" dialog and starts session in a new tab.</value>
|
||||
<value>Otwiera okno dialogowe "Szybkie uruchomienie" i rozpoczyna sesję w nowej karcie.</value>
|
||||
</data>
|
||||
<data name="Settings_Description" xml:space="preserve">
|
||||
<value>Opens settings window.</value>
|
||||
<value>Otwórz okno ustawień.</value>
|
||||
</data>
|
||||
<data name="About_Description" xml:space="preserve">
|
||||
<value>Basic info about the app.</value>
|
||||
<value>Podstawowe informacje o aplikacji.</value>
|
||||
</data>
|
||||
<data name="Recent_Description" xml:space="preserve">
|
||||
<value>Recently opened sessions.</value>
|
||||
<value>Niedawno otwarte sesje.</value>
|
||||
</data>
|
||||
<data name="MenuItem_DefaultProfile_Description" xml:space="preserve">
|
||||
<value>Starts new terminal session based on the default profile.</value>
|
||||
<value>Rozpoczyna nowa sesję terminala bazującą na domyślnym profilu.</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Text" xml:space="preserve">
|
||||
<value>Remote Connect...</value>
|
||||
<value>Połącz zdalnie...</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Description" xml:space="preserve">
|
||||
<value>Opens a dialog for launching a new SSH or Mosh terminal session.</value>
|
||||
<value>Otwiera okno dialogowe do rozpoczynania nowej sesji terminala SSH lub Mosh.</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Text" xml:space="preserve">
|
||||
<value>Quick Launch...</value>
|
||||
<value>Szybkie uruchomienie...</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Description" xml:space="preserve">
|
||||
<value>Opens a "Quick Launch" dialog for starting a new terminal session.</value>
|
||||
<value>Otwiera okno dialogowe "Szybkie uruchomienie" aby rozpocząć nową sesje terminala.</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewWindow_Text" xml:space="preserve">
|
||||
<value>New Window</value>
|
||||
<value>Nowe okno</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewTab_Text" xml:space="preserve">
|
||||
<value>New Tab</value>
|
||||
<value>Nowa Karta</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewTab_Description" xml:space="preserve">
|
||||
<value>Launches a session in a new tab.</value>
|
||||
<value>Otwiera sesję w nowej karcie.</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewWindow_Description" xml:space="preserve">
|
||||
<value>Launches a session in a new window.</value>
|
||||
<value>Otwiera sesję w nowym oknie.</value>
|
||||
</data>
|
||||
<data name="AppMenuType.Text" xml:space="preserve">
|
||||
<value>Application menu type</value>
|
||||
<value>Typ menu aplikacji</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Flat.Content" xml:space="preserve">
|
||||
<value>Flat, honoring "Open new terminals as" setting</value>
|
||||
<value>Płaskie, przestrzegające ustawienia "Otwórz nowe terminale jako".</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Cascading.Content" xml:space="preserve">
|
||||
<value>"New Tab" / "New Window" cascading</value>
|
||||
<value>"Nowa karta" / "Nowe okno" kaskadowo</value>
|
||||
</data>
|
||||
<data name="Quit.Text" xml:space="preserve">
|
||||
<value>Quit</value>
|
||||
<value>Zakończ</value>
|
||||
</data>
|
||||
<data name="Quit.Description" xml:space="preserve">
|
||||
<value>Quit Fluent Terminal</value>
|
||||
<value>Wyjdź z Fluent Terminal</value>
|
||||
</data>
|
||||
<data name="EnabledByPolicy" xml:space="preserve">
|
||||
<value>Enabled by policy.</value>
|
||||
<value>Włączone przez polityke.</value>
|
||||
</data>
|
||||
<data name="BackgroundImage.Content" xml:space="preserve">
|
||||
<value>Background image</value>
|
||||
<value>Obraz tła</value>
|
||||
</data>
|
||||
<data name="AcrylicBackground.Header" xml:space="preserve">
|
||||
<value>Use acrylic background</value>
|
||||
<value>Użyj akrylowego tła</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this background image?</value>
|
||||
<value>Czy na pewno chcesz usunąć ten obraz tła?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>Colors</value>
|
||||
<value>Kolory</value>
|
||||
</data>
|
||||
<data name="BrightColors.Text" xml:space="preserve">
|
||||
<value>Bright colors</value>
|
||||
<value>Jasne kolory</value>
|
||||
</data>
|
||||
<data name="CopyLink" xml:space="preserve">
|
||||
<value>Copy link</value>
|
||||
<value>Skopiuj łącze</value>
|
||||
</data>
|
||||
<data name="SearchWithRegex.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Regex</value>
|
||||
</data>
|
||||
<data name="SearchWholeWord.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Whole word</value>
|
||||
<value>Całe słowo</value>
|
||||
</data>
|
||||
<data name="SearchCaseSensitive.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Case sensitive</value>
|
||||
<value>Uwzględnij wielkość liter</value>
|
||||
</data>
|
||||
<data name="MouseCopySelectionOrPaste.Content" xml:space="preserve">
|
||||
<value>Copy selection or paste</value>
|
||||
<value>Skopiuj zaznaczenie lub wklej</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>Użyj inteligentnego buforowania</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Uruchom ponownie</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Sesja rozłączona</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Zwiększ rozmiar czcionki</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Zmniejsz rozmiar czcionki</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Zresetuj rozmiar czcionki</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -230,9 +230,8 @@
|
||||
<comment>MainPage.xaml</comment>
|
||||
</data>
|
||||
<data name="SystemTray.Header" xml:space="preserve">
|
||||
<value>Exibir em segundo plano</value>
|
||||
<comment>GeneralSettings.xaml
|
||||
Fuzzy</comment>
|
||||
<value>Exibir na bandeja do sistema</value>
|
||||
<comment>GeneralSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="TabsPostion.Text" xml:space="preserve">
|
||||
<value>Exibir abas em</value>
|
||||
@@ -1015,42 +1014,51 @@ Fuzzy</comment>
|
||||
<value>Habilitado pela política</value>
|
||||
</data>
|
||||
<data name="BackgroundImage.Content" xml:space="preserve">
|
||||
<value>Background image</value>
|
||||
<value>Imagem de fundo</value>
|
||||
</data>
|
||||
<data name="AcrylicBackground.Header" xml:space="preserve">
|
||||
<value>Use acrylic background</value>
|
||||
<value>Usar fundo acrílico</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this background image?</value>
|
||||
<value>Tem certeza que deseja remover esta imagem de fundo?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>Colors</value>
|
||||
<value>Cores</value>
|
||||
</data>
|
||||
<data name="BrightColors.Text" xml:space="preserve">
|
||||
<value>Bright colors</value>
|
||||
<value>Cores claras</value>
|
||||
</data>
|
||||
<data name="CopyLink" xml:space="preserve">
|
||||
<value>Copy link</value>
|
||||
<value>Copiar link</value>
|
||||
</data>
|
||||
<data name="SearchWithRegex.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Regex</value>
|
||||
</data>
|
||||
<data name="SearchWholeWord.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Whole word</value>
|
||||
<value>Toda a palavra</value>
|
||||
</data>
|
||||
<data name="SearchCaseSensitive.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Case sensitive</value>
|
||||
<value>Sensível à maiúsculas</value>
|
||||
</data>
|
||||
<data name="MouseCopySelectionOrPaste.Content" xml:space="preserve">
|
||||
<value>Copy selection or paste</value>
|
||||
<value>Copiar seleção ou colar</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>Usar buffer inteligente</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Reiniciar</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Sessão desconectada</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1014,42 +1014,51 @@
|
||||
<value>Activat de politică.</value>
|
||||
</data>
|
||||
<data name="BackgroundImage.Content" xml:space="preserve">
|
||||
<value>Background image</value>
|
||||
<value>Imagine de fundal</value>
|
||||
</data>
|
||||
<data name="AcrylicBackground.Header" xml:space="preserve">
|
||||
<value>Use acrylic background</value>
|
||||
<value>Folosiți fundal acrilic</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this background image?</value>
|
||||
<value>Sigur doriți să ștergeți această imagine de fundal?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>Colors</value>
|
||||
<value>Culori</value>
|
||||
</data>
|
||||
<data name="BrightColors.Text" xml:space="preserve">
|
||||
<value>Bright colors</value>
|
||||
<value>Culori deschise</value>
|
||||
</data>
|
||||
<data name="CopyLink" xml:space="preserve">
|
||||
<value>Copy link</value>
|
||||
<value>Copiere link</value>
|
||||
</data>
|
||||
<data name="SearchWithRegex.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Regex</value>
|
||||
</data>
|
||||
<data name="SearchWholeWord.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Whole word</value>
|
||||
<value>Întregul cuvânt</value>
|
||||
</data>
|
||||
<data name="SearchCaseSensitive.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Case sensitive</value>
|
||||
<value>Potrivire litere</value>
|
||||
</data>
|
||||
<data name="MouseCopySelectionOrPaste.Content" xml:space="preserve">
|
||||
<value>Copy selection or paste</value>
|
||||
<value>Copiați selecția sau lipiți</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>Folosiți tampon inteligent</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Repornire</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Sesiunea a fost deconectată.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -182,7 +182,7 @@
|
||||
<comment>MainPage.xaml</comment>
|
||||
</data>
|
||||
<data name="TabTheme.None" xml:space="preserve">
|
||||
<value>Ничего</value>
|
||||
<value>Нет</value>
|
||||
<comment>TabBar.xaml</comment>
|
||||
</data>
|
||||
<data name="ONTA_Tabs.Content" xml:space="preserve">
|
||||
@@ -362,7 +362,7 @@
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="DeleteAppBarButton.Label" xml:space="preserve">
|
||||
<value>Удали</value>
|
||||
<value>Удалить</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="LineEndingStyle.DoNotModify" xml:space="preserve">
|
||||
@@ -442,7 +442,7 @@
|
||||
<comment>TerminalSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="ProfileName.Header" xml:space="preserve">
|
||||
<value>Назване</value>
|
||||
<value>Название</value>
|
||||
<comment>ShellProfileSettings.xaml</comment>
|
||||
</data>
|
||||
<data name="Profiles.Text" xml:space="preserve">
|
||||
@@ -542,11 +542,11 @@
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDeleteKeybindings" xml:space="preserve">
|
||||
<value>Вы действительно хотите удалить горячую клавишу?</value>
|
||||
<value>Вы действительно хотите удалить эту горячую клавишу?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDeleteTheme" xml:space="preserve">
|
||||
<value>Вы действительно хотите удалить тему?</value>
|
||||
<value>Вы действительно хотите удалить эту тему?</value>
|
||||
<comment>ViewModel</comment>
|
||||
</data>
|
||||
<data name="ConfirmDiscardChanges" xml:space="preserve">
|
||||
@@ -771,7 +771,7 @@
|
||||
<value>Порт не может быть 0.</value>
|
||||
</data>
|
||||
<data name="UserAndHostMandatory" xml:space="preserve">
|
||||
<value>Пользователь и хост обязательные поля</value>
|
||||
<value>Пользователь и хост обязательные поля.</value>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.UsernameEmpty" xml:space="preserve">
|
||||
<value>Пользователь не может быть пустым.</value>
|
||||
@@ -786,7 +786,7 @@
|
||||
<value>Порт Mosh не может быть равен нулю.</value>
|
||||
</data>
|
||||
<data name="SshConnectionInfoValidationResult.MoshPortRangeInvalid" xml:space="preserve">
|
||||
<value>Диапозон портов Mosh недействителен.</value>
|
||||
<value>Диапазон Mosh портов недействителен.</value>
|
||||
</data>
|
||||
<data name="Yes.Text" xml:space="preserve">
|
||||
<value>Да</value>
|
||||
@@ -825,19 +825,19 @@
|
||||
<value>Пользователь</value>
|
||||
</data>
|
||||
<data name="MoshPortFrom.Header" xml:space="preserve">
|
||||
<value>C порта</value>
|
||||
<value>От порта</value>
|
||||
</data>
|
||||
<data name="MoshPortTo.Header" xml:space="preserve">
|
||||
<value>До порта</value>
|
||||
</data>
|
||||
<data name="MoshPortRange.Text" xml:space="preserve">
|
||||
<value>Диапозон Mosh портов</value>
|
||||
<value>Диапазон Mosh портов</value>
|
||||
</data>
|
||||
<data name="Authenticate" xml:space="preserve">
|
||||
<value>Аутентификация</value>
|
||||
</data>
|
||||
<data name="SettingsExported" xml:space="preserve">
|
||||
<value>Настройки сохранены в файл</value>
|
||||
<value>Настройки экспортированы в файл</value>
|
||||
</data>
|
||||
<data name="SettingsImported" xml:space="preserve">
|
||||
<value>Настройки импортированы из файла</value>
|
||||
@@ -1021,7 +1021,7 @@
|
||||
<value>Использовать акриловый фон</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Удалить это фоновое изображение?</value>
|
||||
<value>Вы действительно хотите удалить это фоновое изображение?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>Цвета</value>
|
||||
@@ -1045,12 +1045,21 @@
|
||||
<value>Скопировать выделение или вставить</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>Использовать буфер</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>Перезапустить</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>Соединение разорвано.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1052,4 +1052,13 @@
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -971,13 +971,13 @@ Fuzzy</comment>
|
||||
<value>最近</value>
|
||||
</data>
|
||||
<data name="NewTab_Description" xml:space="preserve">
|
||||
<value>Opens default profile in a new tab.</value>
|
||||
<value>在新标签打开默认配置。</value>
|
||||
</data>
|
||||
<data name="NewSshTab_Description" xml:space="preserve">
|
||||
<value>从新标签页打开SSH或Mosh会话</value>
|
||||
</data>
|
||||
<data name="NewQuickTab_Description" xml:space="preserve">
|
||||
<value>Opens "Quick Launch" dialog and starts session in a new tab.</value>
|
||||
<value>打开“快速启动”对话框并在新标签中开启会话。</value>
|
||||
</data>
|
||||
<data name="Settings_Description" xml:space="preserve">
|
||||
<value>打开设置页面</value>
|
||||
@@ -989,19 +989,19 @@ Fuzzy</comment>
|
||||
<value>最近打开的会话</value>
|
||||
</data>
|
||||
<data name="MenuItem_DefaultProfile_Description" xml:space="preserve">
|
||||
<value>Starts new terminal session based on the default profile.</value>
|
||||
<value>基于默认配置开启新的终端会话。</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Text" xml:space="preserve">
|
||||
<value>远程连接</value>
|
||||
</data>
|
||||
<data name="MenuItem_Remote_Description" xml:space="preserve">
|
||||
<value>Opens a dialog for launching a new SSH or Mosh terminal session.</value>
|
||||
<value>打开对话框开启新的 SSH 或 Mosh 终端会话。</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Text" xml:space="preserve">
|
||||
<value>快捷启动</value>
|
||||
</data>
|
||||
<data name="MenuItem_QuickLaunch_Description" xml:space="preserve">
|
||||
<value>Opens a "Quick Launch" dialog for starting a new terminal session.</value>
|
||||
<value>打开“快速启动”对话框并开启终端会话。</value>
|
||||
</data>
|
||||
<data name="MenuItem_NewWindow_Text" xml:space="preserve">
|
||||
<value>新建窗口</value>
|
||||
@@ -1016,13 +1016,13 @@ Fuzzy</comment>
|
||||
<value>从新窗口启动会话</value>
|
||||
</data>
|
||||
<data name="AppMenuType.Text" xml:space="preserve">
|
||||
<value>Application menu type</value>
|
||||
<value>应用菜单类型</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Flat.Content" xml:space="preserve">
|
||||
<value>Flat, honoring "Open new terminals as" setting</value>
|
||||
<value>扁平,荣耀的“打开新的终端”设置</value>
|
||||
</data>
|
||||
<data name="AppMenuType_Cascading.Content" xml:space="preserve">
|
||||
<value>"New Tab" / "New Window" cascading</value>
|
||||
<value>“新标签”/“新窗口”级联菜单</value>
|
||||
</data>
|
||||
<data name="Quit.Text" xml:space="preserve">
|
||||
<value>退出</value>
|
||||
@@ -1031,16 +1031,16 @@ Fuzzy</comment>
|
||||
<value>退出关于</value>
|
||||
</data>
|
||||
<data name="EnabledByPolicy" xml:space="preserve">
|
||||
<value>Enabled by policy.</value>
|
||||
<value>根据策略启用。</value>
|
||||
</data>
|
||||
<data name="BackgroundImage.Content" xml:space="preserve">
|
||||
<value>背景图片</value>
|
||||
</data>
|
||||
<data name="AcrylicBackground.Header" xml:space="preserve">
|
||||
<value>Use acrylic background</value>
|
||||
<value>使用亚克力背景</value>
|
||||
</data>
|
||||
<data name="ConfirmDeleteBackgroundImage" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this background image?</value>
|
||||
<value>你确定你想要删除这个背景图片吗?</value>
|
||||
</data>
|
||||
<data name="Colors.Text" xml:space="preserve">
|
||||
<value>颜色</value>
|
||||
@@ -1055,21 +1055,30 @@ Fuzzy</comment>
|
||||
<value>正则表达式</value>
|
||||
</data>
|
||||
<data name="SearchWholeWord.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>Whole word</value>
|
||||
<value>全字匹配</value>
|
||||
</data>
|
||||
<data name="SearchCaseSensitive.ToolTipService.ToolTip" xml:space="preserve">
|
||||
<value>大小写敏感</value>
|
||||
</data>
|
||||
<data name="MouseCopySelectionOrPaste.Content" xml:space="preserve">
|
||||
<value>Copy selection or paste</value>
|
||||
<value>复制或者粘贴选中的文本</value>
|
||||
</data>
|
||||
<data name="UseBuffer" xml:space="preserve">
|
||||
<value>Use smart buffer</value>
|
||||
<value>使用智能缓冲</value>
|
||||
</data>
|
||||
<data name="RestartSession.Content" xml:space="preserve">
|
||||
<value>Restart</value>
|
||||
<value>重启</value>
|
||||
</data>
|
||||
<data name="SessionDisconnected.Text" xml:space="preserve">
|
||||
<value>Session disconnected.</value>
|
||||
<value>会话已断开</value>
|
||||
</data>
|
||||
<data name="Command.IncreaseFontSize" xml:space="preserve">
|
||||
<value>Increase font size</value>
|
||||
</data>
|
||||
<data name="Command.DecreaseFontSize" xml:space="preserve">
|
||||
<value>Decrease font size</value>
|
||||
</data>
|
||||
<data name="Command.ResetFontSize" xml:space="preserve">
|
||||
<value>Reset font size</value>
|
||||
</data>
|
||||
</root>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -249,13 +249,6 @@
|
||||
IsEnabled="{x:Bind InEditMode, Mode=OneWay}"
|
||||
IsOn="{x:Bind ProfileVm.UseConPty, Mode=TwoWay}" />
|
||||
|
||||
<ToggleSwitch
|
||||
x:Uid="UseBuffer"
|
||||
Margin="{StaticResource ItemMargin}"
|
||||
Header="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseBuffer}"
|
||||
IsEnabled="{x:Bind InEditMode, Mode=OneWay}"
|
||||
IsOn="{x:Bind ProfileVm.UseBuffer, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Margin="{StaticResource ItemMargin}">
|
||||
<TextBlock
|
||||
x:Uid="EnvironmentVariables"
|
||||
@@ -283,11 +276,11 @@
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="{x:Bind Name, Mode=OneWay}" />
|
||||
|
||||
<controls:HeaderedTextBlock
|
||||
<controls:HeaderedContentControl
|
||||
x:Uid="ShellLocation"
|
||||
Margin="{StaticResource ItemMargin}"
|
||||
Header="Shell executable location"
|
||||
Text="{x:Bind ProfileVm.Location, Mode=OneWay}" />
|
||||
Content="{x:Bind ProfileVm.Location, Mode=OneWay}" />
|
||||
|
||||
<controls:HeaderedContentControl
|
||||
x:Uid="WorkingDir"
|
||||
@@ -350,18 +343,6 @@
|
||||
FontWeight="Light" />
|
||||
</controls:HeaderedContentControl>
|
||||
|
||||
<controls:HeaderedContentControl
|
||||
Margin="{StaticResource ItemMargin}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
Header="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseBuffer}">
|
||||
<ContentControl
|
||||
Margin="0,6,0,0"
|
||||
Content="{x:Bind ProfileVm.UseBuffer, Mode=OneWay}"
|
||||
ContentTemplateSelector="{StaticResource UseConPtyTemplateSelector}"
|
||||
FontSize="18"
|
||||
FontWeight="Light" />
|
||||
</controls:HeaderedContentControl>
|
||||
|
||||
<controls:HeaderedContentControl
|
||||
Margin="{StaticResource ItemMargin}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
|
||||
@@ -291,12 +291,6 @@
|
||||
IsEnabled="{x:Bind InEditMode, Mode=OneWay}"
|
||||
IsOn="{x:Bind ProfileVm.UseConPty, Mode=TwoWay}" />
|
||||
|
||||
<ToggleSwitch
|
||||
Margin="{StaticResource ItemMargin}"
|
||||
Header="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseBuffer}"
|
||||
IsEnabled="{x:Bind InEditMode, Mode=OneWay}"
|
||||
IsOn="{x:Bind ProfileVm.UseBuffer, Mode=TwoWay}" />
|
||||
|
||||
<StackPanel Margin="{StaticResource ItemMargin}">
|
||||
<TextBlock
|
||||
x:Uid="EnvironmentVariables"
|
||||
@@ -468,19 +462,6 @@
|
||||
FontWeight="Light" />
|
||||
</controls:HeaderedContentControl>
|
||||
|
||||
<controls:HeaderedContentControl
|
||||
Margin="{StaticResource ItemMargin}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
DataContext="{Binding ProfileVm}"
|
||||
Header="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseBuffer}">
|
||||
<ContentControl
|
||||
Margin="0,6,0,0"
|
||||
Content="{Binding UseBuffer, Mode=OneWay}"
|
||||
ContentTemplateSelector="{StaticResource UseConPtyTemplateSelector}"
|
||||
FontSize="18"
|
||||
FontWeight="Light" />
|
||||
</controls:HeaderedContentControl>
|
||||
|
||||
<controls:HeaderedContentControl
|
||||
Margin="{StaticResource ItemMargin}"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
RelativePanel.AlignRightWithPanel="True"
|
||||
Visibility="{x:Bind IsUnderlined, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}" />
|
||||
<Grid
|
||||
x:Name="HasExitedWithError"
|
||||
x:Name="HasExitedWithErrorGrid"
|
||||
Height="32"
|
||||
Margin="6,0,0,0"
|
||||
RelativePanel.AlignLeftWithPanel="True"
|
||||
@@ -105,7 +105,7 @@
|
||||
<TextBlock
|
||||
Margin="12,8,6,0"
|
||||
RelativePanel.LeftOf="CloseButton"
|
||||
RelativePanel.RightOf="HasExitedWithError"
|
||||
RelativePanel.RightOf="HasExitedWithErrorGrid"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{x:Bind TabTitle, Mode=OneWay, Converter={StaticResource TextMiddleEllipsisConverter}}"
|
||||
TextWrapping="NoWrap" />
|
||||
@@ -118,7 +118,7 @@
|
||||
HorizontalAlignment="Center"
|
||||
Command="{x:Bind CloseCommand}"
|
||||
Style="{StaticResource TitleBarButtonStyle}"
|
||||
ToolTipService.ToolTip="Close"
|
||||
ToolTipService.ToolTip="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=Close}"
|
||||
Visibility="{x:Bind ShowCloseButton, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
|
||||
<Viewbox Width="12" Height="12">
|
||||
<SymbolIcon Symbol="Cancel" />
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<ResourceDictionary
|
||||
x:Class="FluentTerminal.App.Views.TemplateSelectors"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:views="using:FluentTerminal.App.Views"
|
||||
xmlns:models="using:FluentTerminal.Models"
|
||||
xmlns:settings="using:FluentTerminal.App.ViewModels.Settings">
|
||||
xmlns:settings="using:FluentTerminal.App.ViewModels.Settings"
|
||||
xmlns:views="using:FluentTerminal.App.Views">
|
||||
<views:TabThemeTemplateSelector x:Key="TabThemeTemplateSelector">
|
||||
<views:TabThemeTemplateSelector.DefaultTemplate>
|
||||
<DataTemplate x:DataType="models:TabTheme">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<FontIcon
|
||||
Margin="0,0,6,0"
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
Glyph="" />
|
||||
<TextBlock Text="{x:Bind Name, Mode=OneWay}" />
|
||||
Margin="0,0,6,0"
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
Glyph="" />
|
||||
<TextBlock Text="{x:Bind Name, Mode=OneTime, Converter={StaticResource I18NConverter}}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</views:TabThemeTemplateSelector.DefaultTemplate>
|
||||
@@ -21,11 +21,11 @@
|
||||
<DataTemplate x:DataType="models:TabTheme">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<FontIcon
|
||||
Margin="0,0,6,0"
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
Foreground="{x:Bind Color}"
|
||||
Glyph="" />
|
||||
<TextBlock Text="{x:Bind Name, Mode=OneWay}" />
|
||||
Margin="0,0,6,0"
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
Foreground="{x:Bind Color}"
|
||||
Glyph="" />
|
||||
<TextBlock Text="{x:Bind Name, Mode=OneTime, Converter={StaticResource I18NConverter}}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</views:TabThemeTemplateSelector.ColoredTemplate>
|
||||
@@ -51,9 +51,9 @@
|
||||
<views:TerminalKeybindTemplateSelector.KeyBindingsTemplate>
|
||||
<DataTemplate x:DataType="settings:KeyBindingsViewModel">
|
||||
<views:KeyBindingsView
|
||||
Margin="0,6,0,0"
|
||||
ShowCommandName="False"
|
||||
ViewModel="{x:Bind}" />
|
||||
Margin="0,6,0,0"
|
||||
ShowCommandName="False"
|
||||
ViewModel="{x:Bind}" />
|
||||
</DataTemplate>
|
||||
</views:TerminalKeybindTemplateSelector.KeyBindingsTemplate>
|
||||
</views:TerminalKeybindTemplateSelector>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
Width="16"
|
||||
Height="16"
|
||||
Margin="6,0,0,0">
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph="" />
|
||||
<SymbolIcon Symbol="Find" />
|
||||
</Viewbox>
|
||||
<TextBox
|
||||
Name="SearchTextBox"
|
||||
@@ -47,7 +47,9 @@
|
||||
IsTabStop="True"
|
||||
KeyUp="OnSearchTextBoxKeyUp"
|
||||
PlaceholderText="Enter search term"
|
||||
Text="{x:Bind ViewModel.SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
|
||||
Text="{x:Bind ViewModel.SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
GotFocus="SearchTextBox_GotFocus"
|
||||
LostFocus="SearchTextBox_LostFocus">
|
||||
<Interactivity:Interaction.Behaviors>
|
||||
<Core:DataTriggerBehavior Binding="{x:Bind ViewModel.ShowSearchPanel, Mode=OneWay}" Value="true">
|
||||
<actions:FocusAction />
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace FluentTerminal.App.Views
|
||||
ViewModel.ThemeChanged += OnThemeChanged;
|
||||
ViewModel.FindNextRequested += OnFindNextRequested;
|
||||
ViewModel.FindPreviousRequested += OnFindPreviousRequested;
|
||||
ViewModel.FontSizeChanged += OnFontSizeChanged;
|
||||
InitializeComponent();
|
||||
_terminalView = new XtermTerminalView();
|
||||
TerminalContainer.Children.Add((UIElement)_terminalView);
|
||||
@@ -54,6 +55,7 @@ namespace FluentTerminal.App.Views
|
||||
ViewModel.ThemeChanged -= OnThemeChanged;
|
||||
ViewModel.FindNextRequested -= OnFindNextRequested;
|
||||
ViewModel.FindPreviousRequested -= OnFindPreviousRequested;
|
||||
ViewModel.FontSizeChanged -= OnFontSizeChanged;
|
||||
|
||||
ViewModel = null;
|
||||
}
|
||||
@@ -107,10 +109,14 @@ namespace FluentTerminal.App.Views
|
||||
await _terminalView.ChangeThemeAsync(e);
|
||||
SetGridBackgroundTheme(e);
|
||||
}
|
||||
|
||||
|
||||
private async void OnFontSizeChanged(object sender, int e)
|
||||
{
|
||||
await _terminalView.ChangeFontSize(e);
|
||||
}
|
||||
|
||||
private void SetGridBackgroundTheme(TerminalTheme terminalTheme)
|
||||
{
|
||||
var color = terminalTheme.Colors.Background;
|
||||
var imageFile = terminalTheme.BackgroundImage;
|
||||
|
||||
Brush backgroundBrush;
|
||||
@@ -132,5 +138,15 @@ namespace FluentTerminal.App.Views
|
||||
|
||||
TerminalContainer.Background = backgroundBrush;
|
||||
}
|
||||
|
||||
private void SearchTextBox_GotFocus(object sender, RoutedEventArgs e)
|
||||
{
|
||||
ViewModel.SearchHasFocus = true;
|
||||
}
|
||||
|
||||
private void SearchTextBox_LostFocus(object sender, RoutedEventArgs e)
|
||||
{
|
||||
ViewModel.SearchHasFocus = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -118,6 +118,7 @@ namespace FluentTerminal.App.Views
|
||||
|
||||
public event EventHandler<object> OnOutput;
|
||||
public event EventHandler<string> OnPaste;
|
||||
public event EventHandler<string> OnSessionRestart;
|
||||
|
||||
public XtermTerminalView()
|
||||
{
|
||||
@@ -179,6 +180,16 @@ namespace FluentTerminal.App.Views
|
||||
return ExecuteScriptAsync($"changeTheme('{serialized}')");
|
||||
}
|
||||
|
||||
public Task ChangeFontSize(int fontSize)
|
||||
{
|
||||
if (_terminalClosed)
|
||||
{
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
return ExecuteScriptAsync($"setFontSize({fontSize})");
|
||||
}
|
||||
|
||||
public Task<string> SerializeXtermStateAsync()
|
||||
{
|
||||
if (_terminalClosed)
|
||||
@@ -225,10 +236,23 @@ namespace FluentTerminal.App.Views
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private const string OpenSSH = "OpenSSH";
|
||||
|
||||
public async Task ReconnectAsync()
|
||||
{
|
||||
// Fill full screen with new output to not allow erasing of available output on start of new shell
|
||||
Terminal_OutputReceived(this, System.Text.Encoding.UTF8.GetBytes(new String('\n', _requestedSize.Rows + 1)));
|
||||
if (ViewModel.ShellProfile.Location.Contains(OpenSSH))
|
||||
{
|
||||
OnSessionRestart?.Invoke(this, OpenSSH);
|
||||
|
||||
await Task.Delay(500).ConfigureAwait(false);
|
||||
|
||||
Terminal_OutputReceived(this, System.Text.Encoding.UTF8.GetBytes("\n\x1b[2EReconnecting current session...\n\x1b[E"));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Fill full screen with new output to not allow erasing of available output on start of new shell
|
||||
Terminal_OutputReceived(this, System.Text.Encoding.UTF8.GetBytes(new String('\n', _requestedSize.Rows + 1)));
|
||||
}
|
||||
|
||||
if (true == await StartShellProcessAsync(_requestedSize).ConfigureAwait(false))
|
||||
{
|
||||
|
||||
Generated
+3746
File diff suppressed because it is too large.
Load diff
@@ -5,22 +5,22 @@
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"build": "xcopy /y /s node_modules\\xterm\\css\\xterm.css dist\\ && xcopy /y /s src\\style.css dist\\ && xcopy /y /s src\\index.html dist\\ && cd node_modules/xterm && yarn && yarn package && cd ../.. && npx webpack --config webpack.config.js"
|
||||
"build": "xcopy /y /s node_modules\\xterm\\css\\xterm.css dist\\ && xcopy /y /s src\\style.css dist\\ && xcopy /y /s src\\index.html dist\\ && npx webpack --config webpack.config.js"
|
||||
},
|
||||
"author": "FS Apps",
|
||||
"license": "GPL-3.0",
|
||||
"devDependencies": {
|
||||
"ts-loader": "^6.0.2",
|
||||
"typescript": "^3.5.1",
|
||||
"webpack": "^4.29.6",
|
||||
"webpack-cli": "^3.2.3"
|
||||
"ts-loader": "^7.0.5",
|
||||
"typescript": "^3.9.5",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.12"
|
||||
},
|
||||
"dependencies": {
|
||||
"xterm": "felixse/xterm.js#fix-edge-selection-color",
|
||||
"xterm-addon-fit": "^0.3.0",
|
||||
"xterm-addon-search": "^0.5.0",
|
||||
"xterm-addon-serialize": "^0.1.2",
|
||||
"xterm-addon-unicode11": "^0.1.1",
|
||||
"xterm-addon-web-links": "^0.2.1"
|
||||
"xterm": "^4.8.1",
|
||||
"xterm-addon-fit": "^0.4.0",
|
||||
"xterm-addon-search": "^0.7.0",
|
||||
"xterm-addon-serialize": "^0.3.0",
|
||||
"xterm-addon-unicode11": "^0.2.0",
|
||||
"xterm-addon-web-links": "^0.4.0"
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,7 @@ interface ExtendedWindow extends Window {
|
||||
findNext(content: string, caseSensitive: boolean, wholeWord: boolean, regex: boolean): void;
|
||||
findPrevious(content: string, caseSensitive: boolean, wholeWord: boolean, regex: boolean): void;
|
||||
serializeTerminal() : void;
|
||||
setFontSize(fontSize: number): void;
|
||||
}
|
||||
|
||||
declare var window: ExtendedWindow;
|
||||
@@ -29,6 +30,8 @@ let searchAddon: SearchAddon;
|
||||
let serializeAddon: SerializeAddon;
|
||||
let webLinksAddon: WebLinksAddon;
|
||||
let unicode11Addon: Unicode11Addon;
|
||||
let altGrPressed = false;
|
||||
let filterOutOpenSSHOutput = false;
|
||||
|
||||
const terminalContainer = document.getElementById('terminal-container');
|
||||
|
||||
@@ -42,6 +45,13 @@ function DecodeSpecialChars(data: string) {
|
||||
return replaceAll("\", "\\", data);
|
||||
}
|
||||
|
||||
window.setFontSize = (fontSize: number) => {
|
||||
if (fontSize > 0) {
|
||||
term.setOption('fontSize', fontSize);
|
||||
fitAddon.fit();
|
||||
}
|
||||
}
|
||||
|
||||
window.serializeTerminal = () => {
|
||||
let serialized = serializeAddon.serialize();
|
||||
return serialized;
|
||||
@@ -101,7 +111,46 @@ window.createTerminal = (options, theme, keyBindings) => {
|
||||
|
||||
window.term = term;
|
||||
|
||||
function stringToUint8Array(param: string) {
|
||||
var str = unescape(encodeURIComponent(param));
|
||||
var charList = str.split('');
|
||||
var output = [];
|
||||
for (var i = 0; i < charList.length; i++) {
|
||||
output.push(charList[i].charCodeAt(0));
|
||||
}
|
||||
return new Uint8Array(output);
|
||||
}
|
||||
|
||||
function uint8ArrayToString(param: Uint8Array) {
|
||||
var encodedString = String.fromCharCode.apply(null, param);
|
||||
return decodeURIComponent(escape(encodedString));
|
||||
}
|
||||
|
||||
window.terminalBridge.onsessionrestart = ((param: string) => {
|
||||
if (filterOutOpenSSHOutput == false) {
|
||||
filterOutOpenSSHOutput = true;
|
||||
}
|
||||
});
|
||||
|
||||
window.terminalBridge.onoutput = (data => {
|
||||
if (filterOutOpenSSHOutput == true) {
|
||||
var str = uint8ArrayToString(data);
|
||||
var sessionStarted = str.search(/(\x1b\[H\x1b\[\?25h)|(\x1b\[2;1H\x1b\]0;OpenSSH SSH client)/u);
|
||||
|
||||
if (sessionStarted != -1) {
|
||||
filterOutOpenSSHOutput = false;
|
||||
}
|
||||
|
||||
// Filter out new line characters following by cursor movement CSIs X and C
|
||||
str = replaceAll(/\n\x1b\[\d*X\x1b\[\d*C/u, "", str);
|
||||
// Filter out J (clear screen) CSIs and H (set cursor position) CSIs
|
||||
str = replaceAll(/\x1b\[\d*J/u, "", str);
|
||||
// Filter out H (set cursor position) CSIs
|
||||
str = replaceAll(/\x1b\[\d*;?\d*H/u, "", str);
|
||||
|
||||
data = stringToUint8Array(str);
|
||||
}
|
||||
|
||||
term.writeUtf8(data);
|
||||
});
|
||||
|
||||
@@ -135,7 +184,7 @@ window.createTerminal = (options, theme, keyBindings) => {
|
||||
|
||||
setPadding(options.padding);
|
||||
|
||||
let resizeTimeout: any;
|
||||
let resizeTimeout: number;
|
||||
window.onresize = function () {
|
||||
clearTimeout(resizeTimeout);
|
||||
resizeTimeout = setTimeout(() => fitAddon.fit(), 500);
|
||||
@@ -165,9 +214,16 @@ window.createTerminal = (options, theme, keyBindings) => {
|
||||
});
|
||||
|
||||
term.attachCustomKeyEventHandler(function (e) {
|
||||
if (e.type != "keydown") {
|
||||
if (e.altKey && e.type === "keydown" && e.location === 2) {
|
||||
altGrPressed = true;
|
||||
} else if (e.altKey && e.type === "keyup" && e.key === "Control") {
|
||||
altGrPressed = false
|
||||
}
|
||||
|
||||
if (e.type != "keydown" || altGrPressed) {
|
||||
return true;
|
||||
}
|
||||
|
||||
for (var i = 0; i < window.keyBindings.length; i++) {
|
||||
var keyBinding = window.keyBindings[i];
|
||||
if (keyBinding.ctrl == e.ctrlKey
|
||||
@@ -189,7 +245,6 @@ window.createTerminal = (options, theme, keyBindings) => {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
e.preventDefault();
|
||||
window.terminalBridge.invokeCommand(keyBinding.command);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -31,6 +31,9 @@
|
||||
SwitchToTerm8,
|
||||
SwitchToTerm9,
|
||||
DuplicateTab,
|
||||
ReconnectTab
|
||||
ReconnectTab,
|
||||
IncreaseFontSize,
|
||||
DecreaseFontSize,
|
||||
ResetFontSize
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,7 @@
|
||||
GetCommandPathRequest = 15,
|
||||
PauseTerminalOutputRequest = 16,
|
||||
PauseTerminalOutputResponse = 17,
|
||||
QuitApplicationRequest = 18
|
||||
QuitApplicationRequest = 18,
|
||||
ReadTextFileRequest = 19
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace FluentTerminal.Models.Requests
|
||||
{
|
||||
public class ReadTextFileRequest : IMessage
|
||||
{
|
||||
public byte Identifier => (byte)MessageIdentifiers.ReadTextFileRequest;
|
||||
|
||||
public string Path { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
namespace FluentTerminal.Models.Responses
|
||||
{
|
||||
public class CommonResponse : IMessage
|
||||
public class CommonResponse : TerminalResponse
|
||||
{
|
||||
public virtual byte Identifier => (byte) MessageIdentifiers.CommonResponse;
|
||||
|
||||
public bool Success { get; set; }
|
||||
|
||||
public string Error { get; set; }
|
||||
public override byte Identifier => (byte) MessageIdentifiers.CommonResponse;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
namespace FluentTerminal.Models.Responses
|
||||
{
|
||||
public class CreateTerminalResponse : TerminalResponse, IMessage
|
||||
public class CreateTerminalResponse : TerminalResponse
|
||||
{
|
||||
public byte Identifier => (byte) MessageIdentifiers.CreateTerminalResponse;
|
||||
public override byte Identifier => (byte) MessageIdentifiers.CreateTerminalResponse;
|
||||
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace FluentTerminal.Models.Responses
|
||||
{
|
||||
public class PauseTerminalOutputResponse : TerminalResponse, IMessage
|
||||
public class PauseTerminalOutputResponse : TerminalResponse
|
||||
{
|
||||
public byte Identifier => (byte) MessageIdentifiers.PauseTerminalOutputResponse;
|
||||
public override byte Identifier => (byte) MessageIdentifiers.PauseTerminalOutputResponse;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace FluentTerminal.Models.Responses
|
||||
namespace FluentTerminal.Models.Responses
|
||||
{
|
||||
public class TerminalResponse
|
||||
public abstract class TerminalResponse : IMessage
|
||||
{
|
||||
public abstract byte Identifier { get; }
|
||||
public bool Success { get; set; }
|
||||
public string Error { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
namespace FluentTerminal.Models
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace FluentTerminal.Models
|
||||
{
|
||||
public class TabTheme
|
||||
{
|
||||
|
||||
@@ -59,6 +59,7 @@
|
||||
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
<AppxPackageSigningEnabled>True</AppxPackageSigningEnabled>
|
||||
<PackageCertificateKeyFile>FluentTerminal.App_StoreKey.pfx</PackageCertificateKeyFile>
|
||||
<EntryPointProjectUniqueName>$(SolutionDir)FluentTerminal.App\FluentTerminal.App.csproj</EntryPointProjectUniqueName>
|
||||
<GenerateAppInstallerFile>False</GenerateAppInstallerFile>
|
||||
<AppxAutoIncrementPackageRevision>False</AppxAutoIncrementPackageRevision>
|
||||
@@ -66,48 +67,47 @@
|
||||
<AppxBundlePlatforms>x64</AppxBundlePlatforms>
|
||||
<HoursBetweenUpdateChecks>0</HoursBetweenUpdateChecks>
|
||||
<AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm>
|
||||
<PackageCertificateThumbprint>9E39FAC27F1AEA1BAC9BCF60FF29B32B354E0E93</PackageCertificateThumbprint>
|
||||
<AppxPackageSigningTimestampServerUrl>http://timestamp.comodoca.com</AppxPackageSigningTimestampServerUrl>
|
||||
<PackageCertificateThumbprint>8A5DE5B20B663BD6A99B44C5BA278289521F419F</PackageCertificateThumbprint>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
|
||||
<AppxBundle>Always</AppxBundle>
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
<DefaultLanguage>en-US</DefaultLanguage>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<AppxManifest Include="Package.appxmanifest">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
|
||||
IgnorableNamespaces="uap rescap desktop">
|
||||
|
||||
<Identity Name="53621FSApps.FluentTerminal" Publisher="CN=Felix Seidl, O=Felix Seidl, STREET=Kapellenstr. 4, L=Nürnberg, S=Bayern, PostalCode=90478, C=DE" Version="0.7.0.0" />
|
||||
<Identity Name="53621FSApps.FluentTerminal" Publisher="CN=BDC72197-B634-438A-B863-16DCB7D90C85" Version="0.7.2.0" />
|
||||
|
||||
<Properties>
|
||||
<DisplayName>Fluent Terminal</DisplayName>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<default>
|
||||
<qualifier name="Language" value="ar;ar-IQ;az;de;en;es;fr;he;hi;id;it;ja;ko;nl;pl;pt-BR;ro;ru;uk;zh-Hans;zh-Hant" />
|
||||
<qualifier name="Language" value="ar;ar-IQ;az-Latn;de;en-US;eo;es;fa;fr;he;hi;hr;hu;id;it;ja;ko;nl;pl;pt-BR;ro;ru;sl;tr;ug-Arab;uk;zh-Hans;zh-Hant" />
|
||||
</default>
|
||||
@@ -24,5 +24,6 @@ namespace FluentTerminal.RuntimeComponent.Interfaces
|
||||
|
||||
event EventHandler<object> OnOutput;
|
||||
event EventHandler<string> OnPaste;
|
||||
event EventHandler<string> OnSessionRestart;
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ namespace FluentTerminal.RuntimeComponent.WebAllowedObjects
|
||||
_terminalEventListener = terminalEventListener;
|
||||
_terminalEventListener.OnOutput += OnOutput;
|
||||
_terminalEventListener.OnPaste += OnPaste;
|
||||
_terminalEventListener.OnSessionRestart += OnSessionRestart;
|
||||
}
|
||||
|
||||
private void OnPaste(object sender, string e)
|
||||
@@ -29,8 +30,14 @@ namespace FluentTerminal.RuntimeComponent.WebAllowedObjects
|
||||
Task.Factory.StartNew(() => Output?.Invoke(this, e));
|
||||
}
|
||||
|
||||
private void OnSessionRestart(object sender, string e)
|
||||
{
|
||||
Task.Factory.StartNew(() => SessionRestart?.Invoke(this, e));
|
||||
}
|
||||
|
||||
public event EventHandler<object> Output;
|
||||
public event EventHandler<string> Paste;
|
||||
public event EventHandler<string> SessionRestart;
|
||||
|
||||
public void InputReceived(string message)
|
||||
{
|
||||
|
||||
@@ -53,6 +53,9 @@ namespace FluentTerminal.SystemTray
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
// Allow CPU to jump between TerminalSessions' ReadingLoop Tasks
|
||||
await Task.Delay(1).ConfigureAwait(false);
|
||||
|
||||
bool paused;
|
||||
|
||||
lock (_lock)
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Store|x64'">
|
||||
<OutputPath>bin\x64\Store\</OutputPath>
|
||||
<DefineConstants>TRACE;X64</DefineConstants>
|
||||
<DefineConstants>TRACE;X64;STORE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
@@ -203,7 +203,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Autofac">
|
||||
<Version>5.1.2</Version>
|
||||
<Version>5.2.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="GlobalHotKey">
|
||||
<Version>1.1.0</Version>
|
||||
|
||||
@@ -134,6 +134,9 @@ namespace FluentTerminal.SystemTray.Services
|
||||
case MessageIdentifiers.QuitApplicationRequest:
|
||||
HandleQuitApplicationRequest();
|
||||
return;
|
||||
case MessageIdentifiers.ReadTextFileRequest:
|
||||
await HandleReadTextFileRequestAsync(args).ConfigureAwait(false);
|
||||
return;
|
||||
default:
|
||||
Logger.Instance.Error("Received unknown message type: {messageType}", messageType);
|
||||
return;
|
||||
@@ -214,6 +217,31 @@ namespace FluentTerminal.SystemTray.Services
|
||||
deferral.Complete();
|
||||
}
|
||||
|
||||
private async Task HandleReadTextFileRequestAsync(AppServiceRequestReceivedEventArgs args)
|
||||
{
|
||||
var deferreal = args.GetDeferral();
|
||||
var deferral = args.GetDeferral();
|
||||
var messageContent = (string)args.Request.Message[MessageKeys.Content];
|
||||
var request = JsonConvert.DeserializeObject<ReadTextFileRequest>(messageContent);
|
||||
var response = new StringValueResponse();
|
||||
|
||||
try
|
||||
{
|
||||
var content = Utilities.ReadFile(request.Path);
|
||||
response.Success = true;
|
||||
response.Value = content;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
response.Success = false;
|
||||
response.Error = e.Message;
|
||||
}
|
||||
|
||||
await args.Request.SendResponseAsync(CreateMessage(response));
|
||||
|
||||
deferral.Complete();
|
||||
}
|
||||
|
||||
private async Task HandleGetSshConfigFolderRequestAsync(AppServiceRequestReceivedEventArgs args)
|
||||
{
|
||||
var deferral = args.GetDeferral();
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace FluentTerminal.SystemTray.Services.ConPty
|
||||
|
||||
public void Start(CreateTerminalRequest request, TerminalsManager terminalsManager)
|
||||
{
|
||||
_enableBuffer = request.Profile.UseBuffer;
|
||||
_enableBuffer = false; // request.Profile.UseBuffer;
|
||||
|
||||
_reader?.Dispose();
|
||||
_reader = null;
|
||||
@@ -91,6 +91,11 @@ namespace FluentTerminal.SystemTray.Services.ConPty
|
||||
_reader?.SetPaused(value);
|
||||
}
|
||||
|
||||
~ConPtySession()
|
||||
{
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
#region IDisposable Support
|
||||
|
||||
private bool _disposed;
|
||||
@@ -113,6 +118,7 @@ namespace FluentTerminal.SystemTray.Services.ConPty
|
||||
public void Dispose()
|
||||
{
|
||||
_terminal.Exited -= _terminal_Exited;
|
||||
_terminal.OutputReady -= _terminal_OutputReady;
|
||||
Dispose(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,10 +42,19 @@ namespace FluentTerminal.SystemTray.Services.ConPty
|
||||
ResizePseudoConsole(Handle, new COORD { X = (short)width, Y = (short)height });
|
||||
}
|
||||
|
||||
private bool alreadyDisposed = false;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (alreadyDisposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ClosePseudoConsole(Handle);
|
||||
GC.SuppressFinalize(this);
|
||||
|
||||
alreadyDisposed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,9 +175,12 @@ namespace FluentTerminal.SystemTray.Services.ConPty
|
||||
|
||||
if (disposeManaged)
|
||||
{
|
||||
ConsoleOutStream.Dispose();
|
||||
// Dispose pseudo console before _consoleInputWriter to avoid
|
||||
// hanging on call of ClosePseudoConsole
|
||||
_pseudoConsole?.Dispose();
|
||||
_consoleInputWriter?.Dispose();
|
||||
_process?.Dispose();
|
||||
_pseudoConsole?.Dispose();
|
||||
_outputPipe?.Dispose();
|
||||
_inputPipe?.Dispose();
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace FluentTerminal.SystemTray.Services.WinPty
|
||||
|
||||
public void Start(CreateTerminalRequest request, TerminalsManager terminalsManager)
|
||||
{
|
||||
_enableBuffer = request.Profile.UseBuffer;
|
||||
_enableBuffer = false; // request.Profile.UseBuffer;
|
||||
|
||||
Id = request.Id;
|
||||
_terminalsManager = terminalsManager;
|
||||
|
||||
@@ -39,6 +39,7 @@ namespace FluentTerminal.SystemTray
|
||||
|
||||
private void Exit(object sender, EventArgs e)
|
||||
{
|
||||
_notifyIcon.Dispose(); // cleans up the tray icon
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
|
||||
@@ -536,6 +536,11 @@ namespace FluentTerminal.SystemTray
|
||||
}
|
||||
}
|
||||
|
||||
internal static string ReadFile(string path)
|
||||
{
|
||||
return File.ReadAllText(path);
|
||||
}
|
||||
|
||||
private static bool? MuteProcess(int id, bool mute, bool force = false)
|
||||
{
|
||||
bool? isAudioSessionMuted = VolumeControl.GetAudioSessionMute(id);
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
A Terminal Emulator based on UWP and web technologies.
|
||||
|
||||
|
||||
<a href='//www.microsoft.com/store/apps/9p2krlmfxf9t?cid=storebadge&ocid=badge'><img src='store-badge.png' alt='Get it from Microsoft' width="284px" height="104px" /></a>
|
||||
|
||||
## Features
|
||||
|
||||
- Terminal for PowerShell, CMD, WSL or custom shells
|
||||
@@ -62,14 +65,15 @@ Sign up to [POEditor](https://poeditor.com/join/project/TfKNIt826z) to help with
|
||||
### Prerequisite
|
||||
- You need to update to Fall Creators Update or later.
|
||||
|
||||
### Microsoft Store
|
||||
- Search for Fluent Terminal in the Microsoft Store App or click [here](https://www.microsoft.com/store/apps/9p2krlmfxf9t)
|
||||
|
||||
### Chocolatey package manager installation
|
||||
|
||||
- Install [Chocolatey](https://chocolatey.org/)
|
||||
- From an elevated/admin shell, execute `choco install fluent-terminal`
|
||||
|
||||
### Scoop package manager installation
|
||||
- [Enable sideloading apps](https://www.windowscentral.com/how-enable-windows-10-sideload-apps-outside-store)
|
||||
- Alternatively, [enable developer mode](https://docs.microsoft.com/en-US/windows/uwp/get-started/enable-your-device-for-development) if you plan to do UWP app development. **For most users that do not intend to do UWP app development, developer mode will not be necessary.**
|
||||
- Install Scoop
|
||||
- Install 7zip and git (to add buckets): `scoop install 7zip git`
|
||||
- From an elevated/admin shell, execute
|
||||
|
||||
+11
-4
@@ -23,13 +23,15 @@ function DownloadLanguageFile($language, $directory)
|
||||
Invoke-WebRequest -Uri $response.result.url -OutFile "FluentTerminal.App/Strings/$($directory)/Resources.resw"
|
||||
}
|
||||
|
||||
DownloadLanguageFile "en"
|
||||
DownloadLanguageFile "zh-CN" "zh-Hant"
|
||||
DownloadLanguageFile "en" "en-US"
|
||||
DownloadLanguageFile "zh-TW" "zh-Hant"
|
||||
DownloadLanguageFile "zh-Hans"
|
||||
DownloadLanguageFile "de"
|
||||
DownloadLanguageFile "es"
|
||||
DownloadLanguageFile "fr"
|
||||
DownloadLanguageFile "he"
|
||||
DownloadLanguageFile "hi"
|
||||
DownloadLanguageFile "hr"
|
||||
DownloadLanguageFile "pt-BR"
|
||||
DownloadLanguageFile "ru"
|
||||
DownloadLanguageFile "ro"
|
||||
@@ -40,7 +42,12 @@ DownloadLanguageFile "ja"
|
||||
DownloadLanguageFile "ar-iq"
|
||||
DownloadLanguageFile "uk"
|
||||
DownloadLanguageFile "ko"
|
||||
DownloadLanguageFile "az"
|
||||
DownloadLanguageFile "az" "az-Latn"
|
||||
DownloadLanguageFile "ar"
|
||||
DownloadLanguageFile "id"
|
||||
DownloadLanguageFile "zh-Hans"
|
||||
DownloadLanguageFile "fa"
|
||||
DownloadLanguageFile "tr"
|
||||
DownloadLanguageFile "hu"
|
||||
DownloadLanguageFile "sl"
|
||||
DownloadLanguageFile "ug" "ug-Arab"
|
||||
DownloadLanguageFile "eo"
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
Reference in new issue
Block a user