Showing preview only (2,971K chars total). Download the full file or copy to clipboard to get everything.
Repository: felixse/FluentTerminal
Branch: master
Commit: ba83ec485eea
Files: 406
Total size: 2.8 MB
Directory structure:
gitextract_0v3c3gm7/
├── .gitattributes
├── .github/
│ └── workflows/
│ └── main.yml
├── .gitignore
├── Explorer Context Menu Integration/
│ ├── Install.bat
│ ├── Install_with_icon.bat
│ ├── README.md
│ └── Uninstall.bat
├── FluentTerminal.App/
│ ├── Actions/
│ │ └── FocusAction.cs
│ ├── Adapters/
│ │ ├── AppServiceConnectionAdapter.cs
│ │ ├── ApplicationViewAdapter.cs
│ │ └── MessageDialogAdapter.cs
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── Behaviors/
│ │ └── MiddleClickBehavior.cs
│ ├── CommandLineArguments/
│ │ ├── NewVerb.cs
│ │ ├── RunVerb.cs
│ │ ├── SettingsVerb.cs
│ │ └── Target.cs
│ ├── Converters/
│ │ ├── BackgroundToApplicationThemeConverter.cs
│ │ ├── BooleanNegationConverter.cs
│ │ ├── ColorResourceKeyFallbackConverter.cs
│ │ ├── EnumValueToVisibiltyConverter.cs
│ │ ├── FalseToVisibleConverter.cs
│ │ ├── I18NConverter.cs
│ │ ├── IconConverter.cs
│ │ ├── IntToExtendedVirtualKeyConverter.cs
│ │ ├── IntToVisibilityConverter.cs
│ │ ├── MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs
│ │ ├── MenuViewModelToFlyoutMenuConverter.cs
│ │ ├── NegateConverter.cs
│ │ ├── NullToCollapsedConverter.cs
│ │ ├── StringToColorConverter.cs
│ │ ├── TabColorFallbackConverter.cs
│ │ ├── TabThemeSelectedConverter.cs
│ │ ├── TerminalViewModelToViewConverter.cs
│ │ ├── TextMiddleEllipsisConverter.cs
│ │ ├── ToolTipValueToPixelConverter.cs
│ │ └── TrueToVisibleConverter.cs
│ ├── Dialogs/
│ │ ├── AboutDialog.xaml
│ │ ├── AboutDialog.xaml.cs
│ │ ├── CreateKeyBindingDialog.xaml
│ │ ├── CreateKeyBindingDialog.xaml.cs
│ │ ├── CustomCommandDialog.xaml
│ │ ├── CustomCommandDialog.xaml.cs
│ │ ├── InputDialog.xaml
│ │ ├── InputDialog.xaml.cs
│ │ ├── SshInfoDialog.xaml
│ │ └── SshInfoDialog.xaml.cs
│ ├── FluentTerminal.App.csproj
│ ├── Package.appxmanifest
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ └── Default.rd.xml
│ ├── Services/
│ │ ├── ApplicationLanguageService.cs
│ │ ├── ClipboardService.cs
│ │ ├── CommandHistoryService.cs
│ │ ├── FileSystemService.cs
│ │ ├── ImageFileSystemService.cs
│ │ ├── StartupTaskService.cs
│ │ └── SystemFontService.cs
│ ├── Strings/
│ │ ├── ar/
│ │ │ └── Resources.resw
│ │ ├── ar-iq/
│ │ │ └── Resources.resw
│ │ ├── az-Latn/
│ │ │ └── Resources.resw
│ │ ├── bg/
│ │ │ └── Resources.resw
│ │ ├── bs/
│ │ │ └── Resources.resw
│ │ ├── de/
│ │ │ └── Resources.resw
│ │ ├── en-US/
│ │ │ └── Resources.resw
│ │ ├── eo/
│ │ │ └── Resources.resw
│ │ ├── es/
│ │ │ └── Resources.resw
│ │ ├── fa/
│ │ │ └── Resources.resw
│ │ ├── fr/
│ │ │ └── Resources.resw
│ │ ├── he/
│ │ │ └── Resources.resw
│ │ ├── hi/
│ │ │ └── Resources.resw
│ │ ├── hr/
│ │ │ └── Resources.resw
│ │ ├── hu/
│ │ │ └── Resources.resw
│ │ ├── id/
│ │ │ └── Resources.resw
│ │ ├── it/
│ │ │ └── Resources.resw
│ │ ├── ja/
│ │ │ └── Resources.resw
│ │ ├── ko/
│ │ │ └── Resources.resw
│ │ ├── nl/
│ │ │ └── Resources.resw
│ │ ├── pl/
│ │ │ └── Resources.resw
│ │ ├── pt/
│ │ │ └── Resources.resw
│ │ ├── pt-BR/
│ │ │ └── Resources.resw
│ │ ├── ro/
│ │ │ └── Resources.resw
│ │ ├── ru/
│ │ │ └── Resources.resw
│ │ ├── sl/
│ │ │ └── Resources.resw
│ │ ├── sq/
│ │ │ └── Resources.resw
│ │ ├── sr-Latn/
│ │ │ └── Resources.resw
│ │ ├── sr-cyrl/
│ │ │ └── Resources.resw
│ │ ├── sv/
│ │ │ └── Resources.resw
│ │ ├── tr/
│ │ │ └── Resources.resw
│ │ ├── ug-Arab/
│ │ │ └── Resources.resw
│ │ ├── uk/
│ │ │ └── Resources.resw
│ │ ├── uz-Latn/
│ │ │ └── Resources.resw
│ │ ├── vi/
│ │ │ └── Resources.resw
│ │ ├── zh-Hans/
│ │ │ └── Resources.resw
│ │ └── zh-Hant/
│ │ └── Resources.resw
│ ├── Styles/
│ │ └── Custom.xaml
│ ├── Utilities/
│ │ ├── ColorExtensions.cs
│ │ ├── ContrastHelper.cs
│ │ ├── DelayedAction.cs
│ │ ├── DispatcherExtensions.cs
│ │ ├── InteractiveSurface.cs
│ │ └── JumpListHelper.cs
│ ├── ViewModels/
│ │ ├── CommandItemViewModel.cs
│ │ ├── CommandProfileProviderViewModel.cs
│ │ ├── DelayedHistorySaver.cs
│ │ ├── EnvironmentVariableViewModel.cs
│ │ ├── ISessionSuccessTracker.cs
│ │ ├── ITerminalView.cs
│ │ ├── Infrastructure/
│ │ │ └── IErrorHandler.cs
│ │ ├── MainViewModel.cs
│ │ ├── Menu/
│ │ │ ├── ExpandableMenuItemViewModel.cs
│ │ │ ├── Mdl2Icon.cs
│ │ │ ├── MenuItemKeyBindingViewModel.cs
│ │ │ ├── MenuItemViewModel.cs
│ │ │ ├── MenuItemViewModelBase.cs
│ │ │ ├── MenuViewModel.cs
│ │ │ ├── RadioMenuItemViewModel.cs
│ │ │ ├── SeparatorMenuItemViewModel.cs
│ │ │ └── ToggleMenuItemViewModel.cs
│ │ ├── OverlayViewModel.cs
│ │ ├── ProfileViewModelBase.cs
│ │ ├── Profiles/
│ │ │ ├── CommonProfileProviderViewModel.cs
│ │ │ ├── ProfileProviderViewModelBase.cs
│ │ │ ├── SshConnectViewModel.cs
│ │ │ └── SshConnectionInfoValidationResult.cs
│ │ ├── Settings/
│ │ │ ├── AboutPageViewModel.cs
│ │ │ ├── GeneralPageViewModel.cs
│ │ │ ├── KeyBindingViewModel.cs
│ │ │ ├── KeyBindingsPageViewModel.cs
│ │ │ ├── KeyBindingsViewModel.cs
│ │ │ ├── MousePageViewModel.cs
│ │ │ ├── ProfilesPageViewModel.cs
│ │ │ ├── SshProfilesPageViewModel.cs
│ │ │ ├── TerminalPageViewModel.cs
│ │ │ └── ThemesPageViewModel.cs
│ │ ├── SettingsViewModel.cs
│ │ ├── ShellProfileViewModel.cs
│ │ ├── SshProfileViewModel.cs
│ │ ├── TabThemeViewModel.cs
│ │ ├── TerminalViewModel.cs
│ │ ├── ThemeViewModel.cs
│ │ └── Utilities/
│ │ ├── TaskUtilities.cs
│ │ └── WebViewSpecialCharEncoder.cs
│ └── Views/
│ ├── BooleanTemplateSelector.cs
│ ├── EnvironmentVariablesView.xaml
│ ├── EnvironmentVariablesView.xaml.cs
│ ├── KeyBindingsView.xaml
│ ├── KeyBindingsView.xaml.cs
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── MenuExtension.cs
│ ├── NoValueTemplateSelector.cs
│ ├── OverlayView.xaml
│ ├── OverlayView.xaml.cs
│ ├── SettingsPage.xaml
│ ├── SettingsPage.xaml.cs
│ ├── SettingsPages/
│ │ ├── GeneralSettings.xaml
│ │ ├── GeneralSettings.xaml.cs
│ │ ├── KeyBindingSettings.xaml
│ │ ├── KeyBindingSettings.xaml.cs
│ │ ├── MouseSettings.xaml
│ │ ├── MouseSettings.xaml.cs
│ │ ├── ShellProfileSettings.xaml
│ │ ├── ShellProfileSettings.xaml.cs
│ │ ├── SshProfileSettings.xaml
│ │ ├── SshProfileSettings.xaml.cs
│ │ ├── TerminalSettings.xaml
│ │ ├── TerminalSettings.xaml.cs
│ │ ├── ThemeSettings.xaml
│ │ └── ThemeSettings.xaml.cs
│ ├── TabBar.xaml
│ ├── TabBar.xaml.cs
│ ├── TabBarBackgroundBindingHelper.cs
│ ├── TabThemeTemplateSelector.cs
│ ├── TemplateSelectors.xaml
│ ├── TemplateSelectors.xaml.cs
│ ├── TerminalColorPicker.xaml
│ ├── TerminalColorPicker.xaml.cs
│ ├── TerminalKeybindTemplateSelector.cs
│ ├── TerminalThemeTemplateSelector.cs
│ ├── TerminalView.xaml
│ ├── TerminalView.xaml.cs
│ ├── XtermTerminalView.xaml
│ └── XtermTerminalView.xaml.cs
├── FluentTerminal.App.Services/
│ ├── Adapters/
│ │ └── ApplicationDataContainerAdapter.cs
│ ├── ApplicationDataContainers.cs
│ ├── Constants.cs
│ ├── Dialogs/
│ │ ├── IAboutDialog.cs
│ │ ├── ICreateKeyBindingDialog.cs
│ │ ├── ICustomCommandDialog.cs
│ │ ├── IInputDialog.cs
│ │ ├── IMessageDialog.cs
│ │ └── ISshConnectionInfoDialog.cs
│ ├── EventArgs/
│ │ ├── CancelableEventArgs.cs
│ │ ├── NewTabRequestedEventArgs.cs
│ │ └── NewWindowRequestedEventArgs.cs
│ ├── Exceptions/
│ │ ├── ParseThemeException.cs
│ │ ├── ReadTextFileException.cs
│ │ └── SaveTextFileException.cs
│ ├── FluentTerminal.App.Services.csproj
│ ├── IAppServiceConnection.cs
│ ├── IApplicationDataContainer.cs
│ ├── IApplicationLanguageService.cs
│ ├── IApplicationView.cs
│ ├── IClipboardService.cs
│ ├── ICommandHistoryService.cs
│ ├── IDefaultValueProvider.cs
│ ├── IDialogService.cs
│ ├── IFileSystemService.cs
│ ├── IImageFileSystemService.cs
│ ├── IKeyboardCommandService.cs
│ ├── INotificationService.cs
│ ├── ISettingsService.cs
│ ├── IShellProfileMigrationService.cs
│ ├── IStartupTaskService.cs
│ ├── ISystemFontService.cs
│ ├── IThemeParser.cs
│ ├── IThemeParserFactory.cs
│ ├── ITrayProcessCommunicationService.cs
│ ├── IUpdateService.cs
│ ├── Implementation/
│ │ ├── DefaultValueProvider.cs
│ │ ├── DialogService.cs
│ │ ├── FluentTerminalThemeParser.cs
│ │ ├── ITermThemeParser.cs
│ │ ├── KeyboardCommandService.cs
│ │ ├── MoshBackwardCompatibility.cs
│ │ ├── NotificationService.cs
│ │ ├── SettingsService.cs
│ │ ├── ShellProfileMigrationService.cs
│ │ ├── ThemeParserFactory.cs
│ │ ├── TrayProcessCommunicationService.cs
│ │ └── UpdateService.cs
│ ├── Logger.cs
│ ├── Terminal.cs
│ └── Utilities/
│ ├── EnumHelper.cs
│ ├── I18N.cs
│ ├── PreserveDictionaryKeyCaseContractResolver.cs
│ └── TerminalThemeContractResolver.cs
├── FluentTerminal.App.Services.Test/
│ ├── DefaultValueProviderTests.cs
│ ├── DialogServiceTests.cs
│ ├── FluentTerminal.App.Services.Test.csproj
│ ├── FluentTerminalThemeParserTests.cs
│ ├── ITermThemeParserTests.cs
│ ├── KeyboardCommandServiceTests.cs
│ ├── SettingsServiceTests.cs
│ ├── TestData/
│ │ └── AdventureTime.itermcolors
│ ├── ThemeParserFactoryTests.cs
│ └── TrayProcessCommunicationServiceTests.cs
├── FluentTerminal.App.ViewModels/
│ ├── DelayedHistorySaver.cs
│ ├── EnvironmentVariableViewModel.cs
│ ├── FluentTerminal.App.ViewModels.csproj
│ ├── ISessionSuccessTracker.cs
│ ├── ITerminalView.cs
│ ├── Infrastructure/
│ │ └── IErrorHandler.cs
│ ├── MainViewModel.cs
│ ├── Menu/
│ │ ├── ExpandableMenuItemViewModel.cs
│ │ ├── Mdl2Icon.cs
│ │ ├── MenuItemKeyBindingViewModel.cs
│ │ ├── MenuItemViewModel.cs
│ │ ├── MenuItemViewModelBase.cs
│ │ ├── MenuViewModel.cs
│ │ ├── RadioMenuItemViewModel.cs
│ │ ├── SeparatorMenuItemViewModel.cs
│ │ └── ToggleMenuItemViewModel.cs
│ ├── OverlayViewModel.cs
│ ├── ProfileViewModelBase.cs
│ ├── Profiles/
│ │ ├── CommonProfileProviderViewModel.cs
│ │ ├── ProfileProviderViewModelBase.cs
│ │ ├── SshConnectViewModel.cs
│ │ └── SshConnectionInfoValidationResult.cs
│ ├── Settings/
│ │ ├── AboutPageViewModel.cs
│ │ ├── GeneralPageViewModel.cs
│ │ ├── KeyBindingViewModel.cs
│ │ ├── KeyBindingsPageViewModel.cs
│ │ ├── KeyBindingsViewModel.cs
│ │ ├── MousePageViewModel.cs
│ │ ├── ProfilesPageViewModel.cs
│ │ ├── SshProfilesPageViewModel.cs
│ │ ├── TerminalPageViewModel.cs
│ │ └── ThemesPageViewModel.cs
│ ├── SettingsViewModel.cs
│ ├── ShellProfileViewModel.cs
│ ├── SshProfileViewModel.cs
│ ├── TabThemeViewModel.cs
│ ├── TerminalViewModel.cs
│ ├── ThemeViewModel.cs
│ └── Utilities/
│ ├── TaskUtilities.cs
│ └── WebViewSpecialCharEncoder.cs
├── FluentTerminal.Client/
│ ├── .gitignore
│ ├── package.json
│ ├── src/
│ │ ├── index.html
│ │ ├── index.ts
│ │ └── style.css
│ ├── tsconfig.json
│ └── webpack.config.js
├── FluentTerminal.Models/
│ ├── ApplicationSettings.cs
│ ├── Enums/
│ │ ├── BellStyle.cs
│ │ ├── Command.cs
│ │ ├── CursorStyle.cs
│ │ ├── ExtendedVirtualKey.cs
│ │ ├── InactiveTabColorMode.cs
│ │ ├── MouseAction.cs
│ │ ├── NewTerminalLocation.cs
│ │ ├── ScrollBarStyle.cs
│ │ ├── SessionType.cs
│ │ ├── StartupTaskStatus.cs
│ │ ├── TabThemeKey.cs
│ │ └── TabsPosition.cs
│ ├── ExecutedCommand.cs
│ ├── ExportedTerminalTheme.cs
│ ├── File.cs
│ ├── FluentTerminal.Models.csproj
│ ├── IMessage.cs
│ ├── ImageFile.cs
│ ├── KeyBinding.cs
│ ├── MessageIdentifiers.cs
│ ├── MessageKeys.cs
│ ├── Messages/
│ │ ├── ApplicationSettingsChangedMessage.cs
│ │ ├── CommandHistoryChangedMessage.cs
│ │ ├── CurrentThemeChangedMessage.cs
│ │ ├── DefaultShellProfileChangedMessage.cs
│ │ ├── KeyBindingsChangedMessage.cs
│ │ ├── ShellProfileAddedMessage.cs
│ │ ├── ShellProfileChangedMessage.cs
│ │ ├── ShellProfileDeletedMessage.cs
│ │ ├── TerminalOptionsChangedMessage.cs
│ │ ├── ThemeAddedMessage.cs
│ │ └── ThemeDeletedMessage.cs
│ ├── Requests/
│ │ ├── CheckFileExistsRequest.cs
│ │ ├── CreateTerminalRequest.cs
│ │ ├── GetCommandPathRequest.cs
│ │ ├── GetSshConfigFolderRequest.cs
│ │ ├── GetUserNameRequest.cs
│ │ ├── MuteTerminalRequest.cs
│ │ ├── PauseTerminalOutputRequest.cs
│ │ ├── QuitApplicationRequest.cs
│ │ ├── ReadTextFileRequest.cs
│ │ ├── ResizeTerminalRequest.cs
│ │ ├── SaveTextFileRequest.cs
│ │ ├── SetToggleWindowKeyBindingsRequest.cs
│ │ ├── TerminalExitedRequest.cs
│ │ └── UpdateSettingsRequest.cs
│ ├── Responses/
│ │ ├── CommonResponse.cs
│ │ ├── CreateTerminalResponse.cs
│ │ ├── GetSshConfigFolderResponse.cs
│ │ ├── PauseTerminalOutputResponse.cs
│ │ ├── StringValueResponse.cs
│ │ └── TerminalResponse.cs
│ ├── SearchRequest.cs
│ ├── ShellProfile.cs
│ ├── SshProfile.cs
│ ├── StringExtensions.cs
│ ├── TabTheme.cs
│ ├── TerminalColors.cs
│ ├── TerminalExitStatus.cs
│ ├── TerminalOptions.cs
│ ├── TerminalOutput.cs
│ ├── TerminalSize.cs
│ └── TerminalTheme.cs
├── FluentTerminal.Package/
│ ├── FluentTerminal.Package.wapproj
│ ├── Package.appxmanifest
│ ├── priconfig.default.xml
│ └── priconfig.packaging.xml
├── FluentTerminal.RuntimeComponent/
│ ├── Enums/
│ │ └── MouseButton.cs
│ ├── FluentTerminal.RuntimeComponent.csproj
│ ├── Interfaces/
│ │ └── IxtermEventListener.cs
│ ├── Properties/
│ │ └── AssemblyInfo.cs
│ └── WebAllowedObjects/
│ └── TerminalBridge.cs
├── FluentTerminal.SystemTray/
│ ├── App.config
│ ├── BufferedReader.cs
│ ├── FileFinder.cs
│ ├── FluentTerminal.SystemTray.csproj
│ ├── Native/
│ │ ├── ProcessApi.cs
│ │ └── WindowApi.cs
│ ├── ProcessUtils.cs
│ ├── Program.cs
│ ├── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── Services/
│ │ ├── AppCommunicationService.cs
│ │ ├── ConPty/
│ │ │ ├── ConPtySession.cs
│ │ │ ├── Native/
│ │ │ │ ├── ConsoleApi.cs
│ │ │ │ ├── ProcessApi.cs
│ │ │ │ └── PseudoConsoleApi.cs
│ │ │ ├── Processes/
│ │ │ │ ├── Process.cs
│ │ │ │ └── ProcessFactory.cs
│ │ │ ├── PseudoConsole.cs
│ │ │ ├── PseudoConsolePipe.cs
│ │ │ └── Terminal.cs
│ │ ├── ITerminalSession.cs
│ │ ├── TerminalsManager.cs
│ │ ├── ToggleWindowService.cs
│ │ └── WinPty/
│ │ └── WinPtySession.cs
│ ├── SystemTrayApplicationContext.cs
│ ├── Utilities.cs
│ ├── VolumeControl.cs
│ └── app.manifest
├── FluentTerminal.sln
├── LICENSE
├── MOSH_README.md
├── README.md
├── UpdateTranslations.ps1
└── nuget.config
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Git will handle the files in whatever way it thinks is best.
# Overwrites global core.autocrlf git setting
* text=auto
================================================
FILE: .github/workflows/main.yml
================================================
name: CI
on: [push]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@master
- name: Build client
working-directory: ./FluentTerminal.Client
run: |
yarn
yarn build
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.0.2
- name: MSBuild
run: msbuild FluentTerminal.sln -t:build -p:Configuration=Debug -p:Platform=x64 -m -restore
================================================
FILE: .gitignore
================================================
# Project specific
FluentTerminal.App/Win32
FluentTerminal.App/Client/
FluentTerminal.Client/dist
/.sonarqube
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Typescript v1 declaration files
typings/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
!FluentTerminal.App/MoshExecutables/*
================================================
FILE: Explorer Context Menu Integration/Install.bat
================================================
reg add "HKCU\Software\Classes\Directory\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
reg add "HKCU\Software\Classes\Directory\Background\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
reg add "HKCU\Software\Classes\Drive\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
reg add "HKCU\Software\Classes\LibraryFolder\Background\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
================================================
FILE: Explorer Context Menu Integration/Install_with_icon.bat
================================================
copy /y FluentTerminal.ico "%LOCALAPPDATA%\Microsoft\WindowsApps"
reg add "HKCU\Software\Classes\Directory\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
reg add "HKCU\Software\Classes\Directory\shell\Open Fluent Terminal here" /v icon /t REG_SZ /d "%LOCALAPPDATA%\Microsoft\WindowsApps\FluentTerminal.ico" /f
reg add "HKCU\Software\Classes\Directory\Background\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
reg add "HKCU\Software\Classes\Directory\Background\shell\Open Fluent Terminal here" /v icon /t REG_SZ /d "%LOCALAPPDATA%\Microsoft\WindowsApps\FluentTerminal.ico" /f
reg add "HKCU\Software\Classes\Drive\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
reg add "HKCU\Software\Classes\Drive\shell\Open Fluent Terminal here" /v icon /t REG_SZ /d "%LOCALAPPDATA%\Microsoft\WindowsApps\FluentTerminal.ico" /f
reg add "HKCU\Software\Classes\LibraryFolder\Background\shell\Open Fluent Terminal here\command" /d "\"%LOCALAPPDATA%\Microsoft\WindowsApps\flute.exe\" new \"%%V\"" /f
reg add "HKCU\Software\Classes\LibraryFolder\Background\shell\Open Fluent Terminal here" /v icon /t REG_SZ /d "%LOCALAPPDATA%\Microsoft\WindowsApps\FluentTerminal.ico" /f
================================================
FILE: Explorer Context Menu Integration/README.md
================================================
If you want a an icon for the context menu entries, download the .ico file and put in the same directory as the Install_with_icon.bat file then run it.
The same Uninstall.bat works for both Install.bat files.
================================================
FILE: Explorer Context Menu Integration/Uninstall.bat
================================================
reg delete "HKCU\Software\Classes\Directory\shell\Open Fluent Terminal here" /f
reg delete "HKCU\Software\Classes\Directory\Background\shell\Open Fluent Terminal here" /f
reg delete "HKCU\Software\Classes\Drive\shell\Open Fluent Terminal here" /f
reg delete "HKCU\Software\Classes\LibraryFolder\Background\shell\Open Fluent Terminal here" /f
del %LOCALAPPDATA%\Microsoft\WindowsApps\FluentTerminal.ico
================================================
FILE: FluentTerminal.App/Actions/FocusAction.cs
================================================
using Microsoft.Xaml.Interactivity;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FluentTerminal.App.Actions
{
public class FocusAction : DependencyObject, IAction
{
public object Execute(object sender, object parameter)
{
var control = TargetObject ?? sender as Control;
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); }
set { SetValue(TargetObjectProperty, value); }
}
public static readonly DependencyProperty TargetObjectProperty =
DependencyProperty.Register(nameof(TargetObject), typeof(Control), typeof(FocusAction), new PropertyMetadata(null));
}
}
================================================
FILE: FluentTerminal.App/Adapters/AppServiceConnectionAdapter.cs
================================================
using FluentTerminal.App.Services;
using System;
using System.Threading.Tasks;
using Windows.ApplicationModel.AppService;
using Windows.Foundation.Collections;
namespace FluentTerminal.App.Adapters
{
public class AppServiceConnectionAdapter : IAppServiceConnection
{
private readonly AppServiceConnection _appServiceConnection;
public event EventHandler<ValueSet> MessageReceived;
public AppServiceConnectionAdapter(AppServiceConnection appServiceConnection)
{
_appServiceConnection = appServiceConnection;
_appServiceConnection.RequestReceived += OnRequestReceived;
}
private void OnRequestReceived(AppServiceConnection sender, AppServiceRequestReceivedEventArgs args)
{
MessageReceived?.Invoke(this, args.Request.Message);
}
public async Task<ValueSet> SendMessageAsync(ValueSet message)
{
var response = await _appServiceConnection.SendMessageAsync(message);
if (response.Status == AppServiceResponseStatus.Success)
{
return response.Message;
}
return null;
}
}
}
================================================
FILE: FluentTerminal.App/Adapters/ApplicationViewAdapter.cs
================================================
using FluentTerminal.App.Services;
using FluentTerminal.App.Services.EventArgs;
using System;
using System.Threading.Tasks;
using Windows.ApplicationModel.Core;
using Windows.Foundation.Metadata;
using Windows.UI.Core;
using Windows.UI.Core.Preview;
using Windows.UI.ViewManagement;
using FluentTerminal.App.Utilities;
namespace FluentTerminal.App.Adapters
{
public class ApplicationViewAdapter : IApplicationView
{
private readonly ApplicationView _applicationView;
private readonly CoreDispatcher _dispatcher;
private bool _closed;
public event CloseRequestedHandler CloseRequested;
public event EventHandler Closed;
public ApplicationViewAdapter()
{
_applicationView = ApplicationView.GetForCurrentView();
_applicationView.Consolidated += _applicationView_Consolidated;
_dispatcher = CoreApplication.GetCurrentView().Dispatcher;
SystemNavigationManagerPreview.GetForCurrentView().CloseRequested += OnCloseRequested;
Logger.Instance.Debug("Created ApplicationViewAdapter for ApplicationView with Id: {Id}", _applicationView.Id);
}
private void _applicationView_Consolidated(ApplicationView sender, ApplicationViewConsolidatedEventArgs args)
{
_applicationView.Consolidated -= _applicationView_Consolidated;
Closed?.Invoke(this, EventArgs.Empty);
}
public int Id => _applicationView.Id;
public string Title
{
get => _applicationView.Title;
set => _applicationView.Title = value ?? string.Empty;
}
public bool IsApiContractPresent(string api, ushort version)
{
return ApiInformation.IsApiContractPresent(api, version);
}
public Task ExecuteOnUiThreadAsync(Action action, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal,
bool enforceNewSchedule = false) => _dispatcher.ExecuteAsync(action, priority, enforceNewSchedule);
public Task<T> ExecuteOnUiThreadAsync<T>(Func<T> func, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal,
bool enforceNewSchedule = false) => _dispatcher.ExecuteAsync(func, priority, enforceNewSchedule);
public async Task<bool> TryCloseAsync()
{
if (_closed)
{
Logger.Instance.Debug("ApplicationViewAdapter.TryCloseAsync was called, but was already closed. ApplicationView.Id: {Id}", _applicationView.Id);
return true;
}
Logger.Instance.Debug("TryCloseAsync ApplicationView with Id: {Id}", _applicationView.Id);
_closed = await _applicationView.TryConsolidateAsync();
return _closed;
}
public bool ToggleFullScreen()
{
if (_applicationView.IsFullScreenMode)
{
_applicationView.ExitFullScreenMode();
return true;
}
return _applicationView.TryEnterFullScreenMode();
}
private async void OnCloseRequested(object sender, SystemNavigationCloseRequestedPreviewEventArgs e)
{
var deferral = e.GetDeferral();
var args = new CancelableEventArgs();
if (CloseRequested is { } closeRequestedHandler)
{
// ConfigureAwait(true) because SystemNavigationManagerPreview.GetForCurrentView().CloseRequested requires the calling (UI) thread
await closeRequestedHandler(this, args).ConfigureAwait(true);
}
e.Handled = args.Cancelled;
if (!e.Handled)
{
SystemNavigationManagerPreview.GetForCurrentView().CloseRequested -= OnCloseRequested;
}
deferral.Complete();
}
}
}
================================================
FILE: FluentTerminal.App/Adapters/MessageDialogAdapter.cs
================================================
using FluentTerminal.App.Services;
using FluentTerminal.App.Services.Dialogs;
using FluentTerminal.App.Services.Utilities;
using System;
using System.Threading.Tasks;
using Windows.UI.Popups;
namespace FluentTerminal.App.Adapters
{
public class MessageDialogAdapter : IMessageDialog
{
private readonly MessageDialog _messageDialog;
public MessageDialogAdapter()
{
_messageDialog = new MessageDialog(string.Empty);
}
public string Title
{
get => _messageDialog.Title;
set => _messageDialog.Title = value;
}
public string Content
{
get => _messageDialog.Content;
set => _messageDialog.Content = value;
}
public void AddButton(DialogButton button)
{
var command = new UICommand
{
Label = I18N.Translate(button.ToString()),
Id = button
};
_messageDialog.Commands.Add(command);
}
public Task<DialogButton> ShowAsync()
{
return _messageDialog.ShowAsync().AsTask().ContinueWith(t => (DialogButton) t.Result.Id,
TaskContinuationOptions.OnlyOnRanToCompletion);
}
}
}
================================================
FILE: FluentTerminal.App/App.xaml
================================================
<Application
x:Class="FluentTerminal.App.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="using:FluentTerminal.App.Converters">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<ResourceDictionary Source="Styles\Custom.xaml" />
</ResourceDictionary.MergedDictionaries>
<LinearGradientBrush x:Key="MissingColorSelectionBrush" StartPoint="0,0" EndPoint="1,1">
<GradientStop Offset="0" Color="Black" />
<GradientStop Offset="1.0" Color="White" />
</LinearGradientBrush>
<converters:IntToVisibilityConverter
x:Key="OneToVisibleConverter"
Else="Collapsed"
If="1"
Then="Visible" />
<converters:IntToVisibilityConverter
x:Key="OneToCollapsedConverter"
Else="Visible"
If="1"
Then="Collapsed" />
<converters:NegateConverter x:Key="NegateConverter" />
<converters:FalseToVisibleConverter x:Key="FalseToVisibleConverter" />
<converters:TrueToVisibleConverter x:Key="TrueToVisibleConverter" />
<converters:TabColorFallbackConverter x:Key="TabColorFallbackConverter" />
<converters:TextMiddleEllipsisConverter x:Key="TextMiddleEllipsisConverter" />
<converters:IntToVisibilityConverter
x:Key="ZeroToCollapsedConverter"
Else="Visible"
If="0"
Then="Collapsed" />
<converters:IntToExtendedVirtualKeyConverter x:Key="IntToExtendedVirtualKeyConverter" />
<converters:BackgroundToApplicationThemeConverter x:Key="BackgroundToApplicationThemeConverter" />
<converters:StringToColorConverter x:Key="StringToColorConverter" />
<converters:EnumValueToVisibiltyConverter x:Key="EnumValueToVisibiltyConverter" />
<converters:TabThemeSelectedConverter x:Key="TabThemeSelectedConverter" />
<converters:ColorResourceKeyFallbackConverter x:Key="ColorResourceKeyFallbackConverter" />
<converters:I18NConverter x:Key="I18NConverter" />
<converters:NullToCollapsedConverter x:Key="NullToCollapsedConverter" />
<converters:MenuViewModelToFlyoutMenuConverter x:Key="MenuViewModelToFlyoutMenuConverter" />
</ResourceDictionary>
</Application.Resources>
</Application>
================================================
FILE: FluentTerminal.App/App.xaml.cs
================================================
using Autofac;
using CommandLine;
using FluentTerminal.App.Adapters;
using FluentTerminal.App.CommandLineArguments;
using FluentTerminal.App.Dialogs;
using FluentTerminal.App.Services;
using FluentTerminal.App.Services.Adapters;
using FluentTerminal.App.Services.Dialogs;
using FluentTerminal.App.Services.EventArgs;
using FluentTerminal.App.Services.Implementation;
using FluentTerminal.App.ViewModels;
using FluentTerminal.App.Views;
using FluentTerminal.Models;
using FluentTerminal.Models.Enums;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.ApplicationModel.AppService;
using Windows.ApplicationModel.Background;
using Windows.ApplicationModel.Core;
using Windows.Storage;
using Windows.UI.Popups;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using FluentTerminal.App.Utilities;
using IContainer = Autofac.IContainer;
using FluentTerminal.App.Services.Utilities;
using FluentTerminal.App.ViewModels.Profiles;
using FluentTerminal.Models.Messages;
using Microsoft.Toolkit.Mvvm.Messaging;
namespace FluentTerminal.App
{
// ReSharper disable once RedundantExtendsListEntry
public sealed partial class App : Application
{
private readonly TaskCompletionSource<int> _trayReady = new TaskCompletionSource<int>();
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;
private readonly IContainer _container;
private readonly List<MainViewModel> _mainViewModels;
private SettingsViewModel _settingsViewModel;
private int? _settingsWindowId;
private IAppServiceConnection _appServiceConnection;
private BackgroundTaskDeferral _appServiceDeferral;
private Parser _commandLineParser;
private int? _activeWindowId;
public App()
{
_mainViewModels = new List<MainViewModel>();
InitializeComponent();
UnhandledException += OnUnhandledException;
TaskScheduler.UnobservedTaskException += (sender, e) =>
Logger.Instance.Error(e.Exception, "Unobserved Task Exception");
var applicationDataContainers = new ApplicationDataContainers
{
LocalSettings = new ApplicationDataContainerAdapter(ApplicationData.Current.LocalSettings),
RoamingSettings = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings),
KeyBindings = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.KeyBindingsContainerName, ApplicationDataCreateDisposition.Always)),
ShellProfiles = new ApplicationDataContainerAdapter(ApplicationData.Current.LocalSettings.CreateContainer(Constants.ShellProfilesContainerName, ApplicationDataCreateDisposition.Always)),
Themes = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.ThemesContainerName, ApplicationDataCreateDisposition.Always)),
SshProfiles = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.SshProfilesContainerName, ApplicationDataCreateDisposition.Always)),
HistoryContainer = new ApplicationDataContainerAdapter(ApplicationData.Current.RoamingSettings.CreateContainer(Constants.ExecutedCommandsContainerName, ApplicationDataCreateDisposition.Always))
};
var builder = new ContainerBuilder();
builder.RegisterInstance(applicationDataContainers);
builder.RegisterType<SettingsService>().As<ISettingsService>().SingleInstance();
builder.RegisterType<CommandHistoryService>().As<ICommandHistoryService>().SingleInstance();
builder.RegisterType<DefaultValueProvider>().As<IDefaultValueProvider>().SingleInstance();
builder.RegisterType<TrayProcessCommunicationService>().As<ITrayProcessCommunicationService>().SingleInstance();
builder.RegisterType<DialogService>().As<IDialogService>().SingleInstance();
builder.RegisterType<KeyboardCommandService>().As<IKeyboardCommandService>().InstancePerDependency();
builder.RegisterType<NotificationService>().As<INotificationService>().InstancePerDependency();
builder.RegisterType<UpdateService>().As<IUpdateService>().InstancePerDependency();
builder.RegisterType<MainViewModel>().InstancePerDependency();
builder.RegisterType<SettingsViewModel>().InstancePerDependency();
builder.RegisterType<ThemeParserFactory>().As<IThemeParserFactory>().SingleInstance();
builder.RegisterType<ITermThemeParser>().As<IThemeParser>().SingleInstance();
builder.RegisterType<FluentTerminalThemeParser>().As<IThemeParser>().SingleInstance();
builder.RegisterType<ClipboardService>().As<IClipboardService>().SingleInstance();
builder.RegisterType<FileSystemService>().As<IFileSystemService>().SingleInstance();
builder.RegisterType<ImageFileSystemService>().As<IImageFileSystemService>().SingleInstance();
builder.RegisterType<SystemFontService>().As<ISystemFontService>().SingleInstance();
builder.RegisterType<CreateKeyBindingDialog>().As<ICreateKeyBindingDialog>().InstancePerDependency();
builder.RegisterType<InputDialog>().As<IInputDialog>().InstancePerDependency();
builder.RegisterType<AboutDialog>().As<IAboutDialog>().InstancePerDependency();
builder.RegisterType<MessageDialogAdapter>().As<IMessageDialog>().InstancePerDependency();
builder.RegisterType<SshInfoDialog>().As<ISshConnectionInfoDialog>().InstancePerDependency();
builder.RegisterType<CustomCommandDialog>().As<ICustomCommandDialog>().InstancePerDependency();
builder.RegisterType<ApplicationViewAdapter>().As<IApplicationView>().InstancePerDependency();
builder.RegisterType<StartupTaskService>().As<IStartupTaskService>().SingleInstance();
builder.RegisterType<ApplicationLanguageService>().As<IApplicationLanguageService>().SingleInstance();
builder.RegisterType<ShellProfileMigrationService>().As<IShellProfileMigrationService>().SingleInstance();
_container = builder.Build();
WeakReferenceMessenger.Default.Register<App, ApplicationSettingsChangedMessage>(this, (r, m) => r.OnApplicationSettingsChanged(m));
_settingsService = _container.Resolve<ISettingsService>();
_notificationService = _container.Resolve<INotificationService>();
var shellProfileMigrationService = _container.Resolve<IShellProfileMigrationService>();
foreach (var profile in _settingsService.GetShellProfiles())
{
shellProfileMigrationService.Migrate(profile);
_settingsService.SaveShellProfile(profile);
}
foreach (var profile in _settingsService.GetSshProfiles())
{
shellProfileMigrationService.Migrate(profile);
_settingsService.SaveSshProfile(profile);
}
_trayProcessCommunicationService = _container.Resolve<ITrayProcessCommunicationService>();
_dialogService = _container.Resolve<IDialogService>();
_applicationSettings = _settingsService.GetApplicationSettings();
JsonConvert.DefaultSettings = () =>
{
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
};
settings.Converters.Add(new StringEnumConverter(typeof(CamelCaseNamingStrategy)));
return settings;
};
_commandLineParser = new Parser(settings =>
{
settings.CaseSensitive = false;
settings.CaseInsensitiveEnumValues = true;
});
}
private void OnUnhandledException(object sender, Windows.UI.Xaml.UnhandledExceptionEventArgs e)
{
Logger.Instance.Error(e.Exception, "Unhandled Exception");
}
private static IEnumerable<string> SplitArguments(string arguments)
{
var chars = arguments.ToCharArray();
var inQuote = false;
for (var i = 0; i < chars.Length; i++)
{
if (chars[i] == '"')
{
inQuote = !inQuote;
}
if (!inQuote && chars[i] == ' ')
{
chars[i] = '\n';
}
}
foreach (var value in new string(chars).Split('\n'))
{
yield return value.Trim('"');
}
}
protected override async void OnActivated(IActivatedEventArgs args)
{
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,
UseConPty = _settingsService.GetApplicationSettings().UseConPty
};
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"))
{
await ShowOrCreateWindowAsync(protocolActivated.ViewSwitcher);
return;
}
MainViewModel mainViewModel = null;
// IApplicationView to use for creating view models
IApplicationView applicationView;
if (_alreadyLaunched)
{
applicationView =
(_mainViewModels.FirstOrDefault(o => o.ApplicationView.Id == _activeWindowId) ??
_mainViewModels.Last()).ApplicationView;
}
else
{
// App wasn't launched before double clicking a shortcut, so we have to create a window
// in order to be able to communicate with user.
mainViewModel = _container.Resolve<MainViewModel>();
await CreateMainViewAsync(typeof(MainPage), mainViewModel, true);
applicationView = mainViewModel.ApplicationView;
}
bool isSsh;
try
{
isSsh = SshConnectViewModel.CheckScheme(protocolActivated.Uri);
}
catch (Exception ex)
{
await new MessageDialog(
$"{I18N.TranslateWithFallback("InvalidLink", "Invalid link.")} {ex.Message}",
"Invalid Link")
.ShowAsync();
mainViewModel?.ApplicationView.TryCloseAsync();
return;
}
if (isSsh)
{
SshConnectViewModel vm;
try
{
vm = SshConnectViewModel.ParseUri(protocolActivated.Uri, _settingsService, applicationView,
_trayProcessCommunicationService, _container.Resolve<IFileSystemService>(),
_container.Resolve<ApplicationDataContainers>().HistoryContainer);
}
catch (Exception ex)
{
await new MessageDialog(
$"{I18N.TranslateWithFallback("InvalidLink", "Invalid link.")} {ex.Message}",
"Invalid Link")
.ShowAsync();
mainViewModel?.ApplicationView.TryCloseAsync();
return;
}
if (_applicationSettings.AutoFallbackToWindowsUsernameInLinks && string.IsNullOrEmpty(vm.Username))
{
vm.Username = await _trayProcessCommunicationService.GetUserNameAsync();
}
var error = await vm.AcceptChangesAsync(true);
var profile = (SshProfile)vm.Model;
if (!string.IsNullOrEmpty(error))
{
// Link is valid, but incomplete (i.e. username missing), so we need to show dialog.
profile = await _dialogService.ShowSshConnectionInfoDialogAsync(profile);
if (profile == null)
{
// User clicked "Cancel" in the dialog.
mainViewModel?.ApplicationView.TryCloseAsync();
return;
}
}
if (mainViewModel == null)
await CreateTerminalAsync(profile, _applicationSettings.NewTerminalLocation, protocolActivated.ViewSwitcher);
else
await mainViewModel.AddTabAsync(profile);
return;
}
if (CommandProfileProviderViewModel.CheckScheme(protocolActivated.Uri))
{
CommandProfileProviderViewModel vm;
try
{
vm = CommandProfileProviderViewModel.ParseUri(protocolActivated.Uri, _settingsService,
applicationView, _trayProcessCommunicationService,
_container.Resolve<ICommandHistoryService>());
}
catch (Exception ex)
{
await new MessageDialog(
$"{I18N.TranslateWithFallback("InvalidLink", "Invalid link.")} {ex.Message}",
"Invalid Link")
.ShowAsync();
mainViewModel?.ApplicationView.TryCloseAsync();
return;
}
var error = await vm.AcceptChangesAsync(true);
var profile = vm.Model;
if (!string.IsNullOrEmpty(error))
{
// Link is valid, but incomplete, so we need to show dialog.
profile = await _dialogService.ShowCustomCommandDialogAsync(profile);
if (profile == null)
{
// User clicked "Cancel" in the dialog.
mainViewModel?.ApplicationView.TryCloseAsync();
return;
}
}
if (mainViewModel == null)
{
await CreateTerminalAsync(profile, _applicationSettings.NewTerminalLocation, protocolActivated.ViewSwitcher);
}
else
{
await mainViewModel.AddTabAsync(profile);
}
return;
}
await new MessageDialog(
$"{I18N.TranslateWithFallback("InvalidLink", "Invalid link.")} {protocolActivated.Uri}",
"Invalid Link")
.ShowAsync();
// ReSharper disable once AssignmentIsFullyDiscarded
_ = mainViewModel?.ApplicationView.TryCloseAsync();
return;
}
else if (args is CommandLineActivatedEventArgs commandLineActivated)
{
var arguments = commandLineActivated.Operation.Arguments;
if (string.IsNullOrWhiteSpace(arguments))
{
arguments = "new";
}
_commandLineParser
.ParseArguments(SplitArguments(arguments), typeof(NewVerb), typeof(RunVerb), typeof(SettingsVerb))
.WithParsed(async verb => await ParseCommandLineArgumentsAsync(verb, commandLineActivated));
}
}
private static async Task InitializeLoggerAsync()
{
var logDirectory = await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync("Logs", CreationCollisionOption.OpenIfExists);
var logFile = Path.Combine(logDirectory.Path, "fluentterminal.app.log");
var configFile = await logDirectory.CreateFileAsync("config.json", CreationCollisionOption.OpenIfExists);
var configContent = await FileIO.ReadTextAsync(configFile);
if (string.IsNullOrWhiteSpace(configContent))
{
configContent = JsonConvert.SerializeObject(new Logger.Configuration());
await FileIO.WriteTextAsync(configFile, configContent);
}
var config = JsonConvert.DeserializeObject<Logger.Configuration>(configContent) ?? new Logger.Configuration();
Logger.Instance.Initialize(logFile, config);
}
protected override void OnBackgroundActivated(BackgroundActivatedEventArgs args)
{
base.OnBackgroundActivated(args);
if (args.TaskInstance.TriggerDetails is AppServiceTriggerDetails details)
{
if (details.CallerPackageFamilyName == Package.Current.Id.FamilyName)
{
_appServiceDeferral = args.TaskInstance.GetDeferral();
args.TaskInstance.Canceled += OnTaskCanceled;
_appServiceConnection = new AppServiceConnectionAdapter(details.AppServiceConnection);
_trayReady.TrySetResult(0);
}
}
}
private void OnTaskCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
{
_appServiceDeferral?.Complete();
_appServiceDeferral = null;
_appServiceConnection = null;
// ReSharper disable once ArrangeStaticMemberQualifier
Application.Current.Exit();
}
private async Task CreateMainViewAsync(Type pageType, INotifyPropertyChanged viewModel, bool extendViewIntoTitleBar)
{
ApplicationViewSwitcher.DisableSystemViewActivationPolicy();
await StartSystemTray();
if (!(Window.Current.Content is Frame rootFrame))
{
rootFrame = new Frame();
Window.Current.Content = rootFrame;
}
if (rootFrame.Content == null)
{
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = extendViewIntoTitleBar;
if (viewModel is MainViewModel mainViewModel)
{
mainViewModel.Closed += OnMainViewModelClosed;
mainViewModel.NewWindowRequested += OnNewWindowRequested;
mainViewModel.ShowSettingsRequested += OnShowSettingsRequested;
mainViewModel.ActivatedMv += OnMainViewActivated;
mainViewModel.TabTearedOff += OnTabTearOff;
_mainViewModels.Add(mainViewModel);
}
rootFrame.Navigate(pageType, viewModel);
}
_alreadyLaunched = true;
Window.Current.Activate();
}
private async Task<MainViewModel> CreateNewTerminalWindowAsync()
{
var viewModel = await CreateSecondaryViewAsync<MainViewModel>(typeof(MainPage), true);
viewModel.Closed += OnMainViewModelClosed;
viewModel.NewWindowRequested += OnNewWindowRequested;
viewModel.ShowSettingsRequested += OnShowSettingsRequested;
viewModel.ActivatedMv += OnMainViewActivated;
viewModel.TabTearedOff += OnTabTearOff;
_mainViewModels.Add(viewModel);
return viewModel;
}
private async Task<TViewModel> CreateSecondaryViewAsync<TViewModel>(Type pageType, bool extendViewIntoTitleBar)
{
var windowId = 0;
TViewModel viewModel = default;
var newView = CoreApplication.CreateNewView();
// ConfigureAwait(true) because ApplicationViewSwitcher.TryShowAsStandaloneAsync requires the same thread as CoreApplication.CreateNewView
await newView.Dispatcher.ExecuteAsync(() =>
{
viewModel = _container.Resolve<TViewModel>();
newView.TitleBar.ExtendViewIntoTitleBar = extendViewIntoTitleBar;
var frame = new Frame();
frame.Navigate(pageType, viewModel);
Window.Current.Content = frame;
Window.Current.Activate();
windowId = ApplicationView.GetForCurrentView().Id;
}).ConfigureAwait(true);
if (viewModel is SettingsViewModel settingsViewModel)
{
_settingsViewModel = settingsViewModel;
_settingsViewModel.Closed += OnSettingsClosed;
_settingsWindowId = windowId;
}
await ApplicationViewSwitcher.TryShowAsStandaloneAsync(windowId);
return viewModel;
}
private void OnApplicationSettingsChanged(ApplicationSettingsChangedMessage message)
{
_applicationSettings = message.ApplicationSettings;
_trayProcessCommunicationService.UpdateSettings(message.ApplicationSettings);
}
private void OnMainViewModelClosed(object sender, EventArgs e)
{
if (sender is MainViewModel viewModel)
{
Logger.Instance.Debug("MainViewModel with ApplicationView Id: {@id} closed.", viewModel.ApplicationView.Id);
viewModel.Closed -= OnMainViewModelClosed;
viewModel.NewWindowRequested -= OnNewWindowRequested;
viewModel.ShowSettingsRequested -= OnShowSettingsRequested;
viewModel.ActivatedMv -= OnMainViewActivated;
viewModel.TabTearedOff -= OnTabTearOff;
if (_activeWindowId == viewModel.ApplicationView.Id)
{
_activeWindowId = 0;
}
_mainViewModels.Remove(viewModel);
try
{
// try/catch because the method cannot be called on the last window
Window.Current.Close();
}
catch
{
// ignored
}
}
}
private void OnMainViewActivated(object sender, EventArgs e)
{
if (sender is MainViewModel viewModel)
{
Logger.Instance.Debug("MainViewModel with ApplicationView Id: {@id} activated.", viewModel.ApplicationView.Id);
_activeWindowId = viewModel.ApplicationView.Id;
}
}
private async void OnTabTearOff(object sender, TerminalViewModel model)
{
Logger.Instance.Debug("App.xaml.cs on tab tear off");
var newViewModel = await CreateNewTerminalWindowAsync();
await newViewModel.AddTabAsync(await model.SerializeAsync(), 0);
}
private async void OnNewWindowRequested(object sender, NewWindowRequestedEventArgs e)
{
var viewModel = await CreateNewTerminalWindowAsync().ConfigureAwait(false);
await viewModel.AddTabAsync(e.Profile).ConfigureAwait(false);
}
private void OnSettingsClosed(object sender, EventArgs e)
{
// ReSharper disable once AssignmentIsFullyDiscarded
_ = JumpListHelper.UpdateAsync(_settingsService);
_settingsViewModel.Closed -= OnSettingsClosed;
_settingsViewModel = null;
_settingsWindowId = null;
}
private void OnShowSettingsRequested(object sender, EventArgs e)
{
// ReSharper disable once AssignmentIsFullyDiscarded
_ = ShowSettingsAsync();
}
private Task ShowAsStandaloneAsync(MainViewModel viewModel, ActivationViewSwitcher viewSwitcher = null)
{
var viewId = viewModel.ApplicationView.Id;
if (viewSwitcher != null)
{
return viewModel.ApplicationView.ExecuteOnUiThreadAsync(async () => await viewSwitcher.ShowAsStandaloneAsync(viewId));
}
return ApplicationViewSwitcher.TryShowAsStandaloneAsync(viewId).AsTask();
}
private async Task CreateTerminalAsync(ShellProfile profile, NewTerminalLocation location, ActivationViewSwitcher viewSwitcher = null)
{
if (!_alreadyLaunched)
{
var viewModel = _container.Resolve<MainViewModel>();
await viewModel.AddTabAsync(profile);
await CreateMainViewAsync(typeof(MainPage), viewModel, true);
}
else if (location == NewTerminalLocation.Tab && _mainViewModels.Count > 0)
{
var item = _mainViewModels.FirstOrDefault(o => o.ApplicationView.Id == _activeWindowId) ??
_mainViewModels.Last();
await item.AddTabAsync(profile);
await ShowAsStandaloneAsync(item, viewSwitcher);
}
else
{
var viewModel = await CreateNewTerminalWindowAsync();
await viewModel.AddTabAsync(profile);
await ShowAsStandaloneAsync(viewModel, viewSwitcher);
}
}
private Task ShowSettingsAsync()
{
if (!_alreadyLaunched)
{
return CreateMainViewAsync(typeof(SettingsPage), _container.Resolve<SettingsViewModel>(), true);
}
if (_settingsViewModel == null)
{
return CreateSecondaryViewAsync<SettingsViewModel>(typeof(SettingsPage), true);
}
if (_settingsWindowId.HasValue)
{
return ApplicationViewSwitcher.TryShowAsStandaloneAsync(_settingsWindowId.Value).AsTask();
}
return Task.CompletedTask;
}
private Task StartSystemTray()
{
if (_trayReady.Task.IsCompleted)
{
return Task.CompletedTask;
}
var launch = FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync("AppLaunchedParameterGroup").AsTask();
return Task.WhenAll(launch, _trayReady.Task).ContinueWith(
t => _trayProcessCommunicationService.Initialize(_appServiceConnection),
TaskContinuationOptions.OnlyOnRanToCompletion);
}
}
}
================================================
FILE: FluentTerminal.App/Behaviors/MiddleClickBehavior.cs
================================================
using Microsoft.Xaml.Interactivity;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Input;
namespace FluentTerminal.App.Behaviors
{
public class MiddleClickBehavior : Trigger<UIElement>
{
private bool _middleButtonPressed;
protected override void OnAttached()
{
AssociatedObject.PointerPressed += OnPointerPressed;
AssociatedObject.PointerReleased += OnPointerReleased;
}
protected override void OnDetaching()
{
AssociatedObject.PointerPressed -= OnPointerPressed;
AssociatedObject.PointerReleased -= OnPointerReleased;
}
private void OnPointerPressed(object sender, PointerRoutedEventArgs e)
{
var point = e.GetCurrentPoint(AssociatedObject);
_middleButtonPressed = point.Properties.IsMiddleButtonPressed;
}
private void OnPointerReleased(object sender, PointerRoutedEventArgs e)
{
var point = e.GetCurrentPoint(AssociatedObject);
var middleButtonStillPressed = point.Properties.IsMiddleButtonPressed;
if (_middleButtonPressed && !middleButtonStillPressed)
{
Interaction.ExecuteActions(AssociatedObject, Actions, null);
}
}
}
}
================================================
FILE: FluentTerminal.App/CommandLineArguments/NewVerb.cs
================================================
using CommandLine;
namespace FluentTerminal.App.CommandLineArguments
{
[Verb("new")]
public class NewVerb
{
[Value(0)]
public string Directory { get; set; }
[Option("profile")]
public string Profile { get; set; }
[Option("target")]
public Target Target { get; set; }
}
}
================================================
FILE: FluentTerminal.App/CommandLineArguments/RunVerb.cs
================================================
using CommandLine;
namespace FluentTerminal.App.CommandLineArguments
{
[Verb("run")]
public class RunVerb
{
[Value(0)]
public string Command { get; set; }
[Option("directory")]
public string Directory { get; set; }
[Option("theme")]
public string Theme { get; set; }
[Option("smart-buffer")]
public bool? SmartBuffer { get; set; }
[Option("target")]
public Target Target { get; set; }
}
}
================================================
FILE: FluentTerminal.App/CommandLineArguments/SettingsVerb.cs
================================================
using CommandLine;
namespace FluentTerminal.App.CommandLineArguments
{
[Verb("settings")]
public class SettingsVerb
{
[Option('i', "import",
HelpText = "Import settings from specified file.")]
public string Import { get; set; }
[Option('e', "export",
HelpText = "Export settings.")]
public bool Export { get; set; }
}
}
================================================
FILE: FluentTerminal.App/CommandLineArguments/Target.cs
================================================
namespace FluentTerminal.App.CommandLineArguments
{
public enum Target
{
Default,
Tab,
Window
}
}
================================================
FILE: FluentTerminal.App/Converters/BackgroundToApplicationThemeConverter.cs
================================================
using FluentTerminal.App.Utilities;
using Microsoft.Toolkit.Uwp.Helpers;
using System;
using Windows.UI;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class BackgroundToApplicationThemeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
Color color;
if (value is string colorString)
{
color = colorString.ToColor();
}
else if (value is Color)
{
color = (Color)value;
}
return ContrastHelper.GetIdealThemeForBackgroundColor(color);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/BooleanNegationConverter.cs
================================================
using System;
using Windows.UI.Xaml.Data;
// ReSharper disable LocalizableElement
namespace FluentTerminal.App.Converters
{
public class BooleanNegationConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (targetType == typeof(bool))
{
if (value is bool isValue)
{
return !isValue;
}
throw new ArgumentException($"{nameof(value)} argument has to be of type bool.", nameof(value));
}
if (targetType == typeof(bool?))
{
if (value == null)
{
return null;
}
if (value is bool isValue)
{
return !isValue;
}
throw new ArgumentException($"{nameof(value)} argument has to be of type bool or Nullable<bool>.", nameof(value));
}
throw new ArgumentException($"{nameof(targetType)} argument has to {typeof(bool)}.",
nameof(targetType));
}
public object ConvertBack(object value, Type targetType, object parameter, string language) =>
Convert(value, targetType, parameter, language);
}
}
================================================
FILE: FluentTerminal.App/Converters/ColorResourceKeyFallbackConverter.cs
================================================
using Microsoft.Toolkit.Uwp.Helpers;
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Media;
namespace FluentTerminal.App.Converters
{
public class ColorResourceKeyFallbackConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value == null)
{
return Application.Current.Resources[(string)parameter];
}
else if (value is string hex)
{
var color = hex.ToColor();
return new SolidColorBrush(color);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/EnumValueToVisibiltyConverter.cs
================================================
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class EnumValueToVisibiltyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value.GetType().IsEnum && Enum.TryParse(value.GetType(), parameter.ToString(), true, out object result))
{
return Equals(value, result) ? Visibility.Visible : Visibility.Collapsed;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/FalseToVisibleConverter.cs
================================================
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class FalseToVisibleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is Boolean collapsed)
{
return collapsed ? Visibility.Collapsed : Visibility.Visible;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (value is Visibility visibility)
{
return visibility == Visibility.Collapsed;
}
return null;
}
}
}
================================================
FILE: FluentTerminal.App/Converters/I18NConverter.cs
================================================
using FluentTerminal.App.Services.Utilities;
using System;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class I18NConverter : IValueConverter
{
// To avoid empty translations
private static string Translate(string resource)
{
var translation = I18N.Translate(resource);
return string.IsNullOrEmpty(translation) ? $"[ {resource} ]" : translation;
}
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is Enum enumValue && parameter is string enumType)
{
return Translate($"{enumType}.{enumValue}");
}
else if (value is string stringValue)
{
return Translate(stringValue);
}
else if (parameter is string resource)
{
return Translate(resource);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/IconConverter.cs
================================================
using FluentTerminal.App.ViewModels.Menu;
using Microsoft.Toolkit.Uwp.Helpers;
using System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Media;
// ReSharper disable LocalizableElement
namespace FluentTerminal.App.Converters
{
public class IconConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is Mdl2Icon mdl2Icon)
{
var fontIcon = new FontIcon { FontFamily = new FontFamily("Segoe MDL2 Assets"), Glyph = mdl2Icon.Glyph };
if(!string.IsNullOrWhiteSpace(mdl2Icon.Color))
{
fontIcon.Foreground = new SolidColorBrush(mdl2Icon.Color.ToColor());
}
return fontIcon;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language) =>
throw new NotSupportedException();
}
}
================================================
FILE: FluentTerminal.App/Converters/IntToExtendedVirtualKeyConverter.cs
================================================
using FluentTerminal.App.Services.Utilities;
using FluentTerminal.Models.Enums;
using System;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class IntToExtendedVirtualKeyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is int intValue)
{
return EnumHelper.GetEnumDescription((ExtendedVirtualKey)intValue);
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/IntToVisibilityConverter.cs
================================================
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class IntToVisibilityConverter : DependencyObject, IValueConverter
{
public static readonly DependencyProperty ElseProperty =
DependencyProperty.Register(nameof(Else), typeof(Visibility), typeof(IntToVisibilityConverter), new PropertyMetadata(Visibility.Collapsed));
public static readonly DependencyProperty IfProperty =
DependencyProperty.Register(nameof(If), typeof(int), typeof(IntToVisibilityConverter), new PropertyMetadata(0));
public static readonly DependencyProperty ThenProperty =
DependencyProperty.Register(nameof(Then), typeof(Visibility), typeof(IntToVisibilityConverter), new PropertyMetadata(Visibility.Visible));
public Visibility Else
{
get { return (Visibility)GetValue(ElseProperty); }
set { SetValue(ElseProperty, value); }
}
public int If
{
get { return (int)GetValue(IfProperty); }
set { SetValue(IfProperty, value); }
}
public Visibility Then
{
get { return (Visibility)GetValue(ThenProperty); }
set { SetValue(ThenProperty, value); }
}
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is int count)
{
return count == If ? Then : Else;
}
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs
================================================
using System;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
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
namespace FluentTerminal.App.Converters
{
public class MenuItemViewModelBaseToMenuFlayoutItemBaseConverter : IValueConverter
{
#region Static
private static readonly IconConverter IconConverter = new IconConverter();
private static MenuFlyoutItemBase GetItem(MenuItemViewModelBase viewModel)
{
if (viewModel is ExpandableMenuItemViewModel expandable)
{
return GetExpandableItem(expandable);
}
if (viewModel is SeparatorMenuItemViewModel)
{
return GetSeparatorItem();
}
if (viewModel is MenuItemViewModel regular)
{
return GetRegularItem(regular);
}
if (viewModel is ToggleMenuItemViewModel toggle)
{
return GetToggleItem(toggle);
}
if (viewModel is RadioMenuItemViewModel radio)
{
return GetRadioItem(radio);
}
// Won't happen ever, but still...
throw new NotImplementedException(
$"Unexpected {nameof(MenuItemViewModelBase)} type: {viewModel.GetType()}");
}
private static MenuFlyoutSeparator GetSeparatorItem()
{
return new MenuFlyoutSeparator();
}
private static MenuFlyoutItem GetRegularItem(MenuItemViewModel viewModel)
{
var item = new MenuFlyoutItem();
item.SetBinding(MenuFlyoutItem.TextProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),
Mode = BindingMode.OneWay
});
item.SetBinding(ToolTipService.ToolTipProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),
Mode = BindingMode.OneWay
});
item.SetBinding(MenuFlyoutItem.IconProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),
Converter = IconConverter,
Mode = BindingMode.OneWay
});
item.SetBinding(MenuFlyoutItem.CommandProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModel.Command)),
Mode = BindingMode.OneTime
});
if (viewModel.KeyBinding != null)
{
if (viewModel.KeyBinding.IsExtendedVirtualKey)
{
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;
}
private static MenuFlyoutSubItem GetExpandableItem(ExpandableMenuItemViewModel viewModel)
{
var item = new MenuFlyoutSubItem();
item.SetBinding(MenuFlyoutSubItem.TextProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),
Mode = BindingMode.OneWay
});
item.SetBinding(ToolTipService.ToolTipProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),
Mode = BindingMode.OneWay
});
item.SetBinding(MenuFlyoutSubItem.IconProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),
Converter = IconConverter,
Mode = BindingMode.OneWay
});
item.SetBinding(MenuExtension.SubItemsProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(ExpandableMenuItemViewModel.SubItems)),
Mode = BindingMode.OneWay
});
return item;
}
private static ToggleMenuFlyoutItem GetToggleItem(ToggleMenuItemViewModel viewModel)
{
var item = new ToggleMenuFlyoutItem();
item.SetBinding(MenuFlyoutItem.TextProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),
Mode = BindingMode.OneWay
});
item.SetBinding(ToolTipService.ToolTipProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),
Mode = BindingMode.OneWay
});
item.SetBinding(MenuFlyoutItem.IconProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),
Converter = IconConverter,
Mode = BindingMode.OneWay
});
item.SetBinding(ToggleMenuFlyoutItem.IsCheckedProperty, new Binding
{
Source = viewModel.BindingSource,
Path = new PropertyPath(viewModel.BindingPath),
Mode = BindingMode.TwoWay
});
return item;
}
private static RadioMenuFlyoutItem GetRadioItem(RadioMenuItemViewModel viewModel)
{
var item = new RadioMenuFlyoutItem();
item.SetBinding(MenuFlyoutItem.TextProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Text)),
Mode = BindingMode.OneWay
});
item.SetBinding(ToolTipService.ToolTipProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Description)),
Mode = BindingMode.OneWay
});
item.SetBinding(MenuFlyoutItem.IconProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(MenuItemViewModelBase.Icon)),
Converter = IconConverter,
Mode = BindingMode.OneWay
});
item.SetBinding(RadioMenuFlyoutItem.GroupNameProperty, new Binding
{
Source = viewModel,
Path = new PropertyPath(nameof(RadioMenuItemViewModel.GroupName)),
Mode = BindingMode.OneWay
});
item.SetBinding(RadioMenuFlyoutItem.IsCheckedProperty, new Binding
{
Source = viewModel.BindingSource,
Path = new PropertyPath(viewModel.BindingPath),
Mode = BindingMode.TwoWay
});
return item;
}
#endregion Static
#region IValueConverter
// ReSharper disable once AssignNullToNotNullAttribute
public object Convert(object value, Type targetType = null, object parameter = null, string language = null)
{
if (value == null)
{
return null;
}
return value is MenuItemViewModelBase menuItemViewModel
? GetItem(menuItemViewModel)
: throw new ArgumentException(
$"Invalid {nameof(value)} argument type: {value.GetType()}. {typeof(MenuItemViewModelBase)} expected.",
nameof(value));
}
public object ConvertBack(object value, Type targetType, object parameter, string language) =>
throw new NotSupportedException();
#endregion IValueConverter
}
}
================================================
FILE: FluentTerminal.App/Converters/MenuViewModelToFlyoutMenuConverter.cs
================================================
using System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
using FluentTerminal.App.ViewModels.Menu;
using Windows.UI.Xaml.Controls.Primitives;
namespace FluentTerminal.App.Converters
{
public class MenuViewModelToFlyoutMenuConverter : IValueConverter
{
private static readonly MenuItemViewModelBaseToMenuFlayoutItemBaseConverter ItemConverter =
new MenuItemViewModelBaseToMenuFlayoutItemBaseConverter();
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is null)
{
return null;
}
if (!(value is MenuViewModel menuViewModel))
{
throw new ArgumentException(
$"Invalid {nameof(value)} argument type: {value.GetType()}. {typeof(MenuViewModel)} expected.");
}
var menuFlyout = new MenuFlyout
{
Placement = FlyoutPlacementMode.Bottom
};
foreach (var menuItemViewModelBase in menuViewModel.Items)
{
menuFlyout.Items?.Add((MenuFlyoutItemBase) ItemConverter.Convert(menuItemViewModelBase));
}
return menuFlyout;
}
public object ConvertBack(object value, Type targetType, object parameter, string language) =>
throw new NotSupportedException();
}
}
================================================
FILE: FluentTerminal.App/Converters/NegateConverter.cs
================================================
using System;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class NegateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is bool boolean)
{
return !boolean;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/NullToCollapsedConverter.cs
================================================
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class NullToCollapsedConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return value == null ? Visibility.Collapsed : Visibility.Visible;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/StringToColorConverter.cs
================================================
using FluentTerminal.App.Utilities;
using System;
using Windows.UI;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class StringToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is string colorString)
{
return colorString.FromString();
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (value is Color color && bool.TryParse((string)parameter, out bool allowTransparency))
{
return color.ToColorString(allowTransparency);
}
return null;
}
}
}
================================================
FILE: FluentTerminal.App/Converters/TabColorFallbackConverter.cs
================================================
using FluentTerminal.App.ViewModels;
using FluentTerminal.Models.Enums;
using Microsoft.Toolkit.Uwp.Helpers;
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Media;
namespace FluentTerminal.App.Converters
{
public class TabColorFallbackConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is TabThemeViewModel viewModel && Enum.TryParse<TabThemeKey>((string)parameter, true, out TabThemeKey tabThemeKey))
{
var theme = viewModel.Theme;
switch (tabThemeKey)
{
case TabThemeKey.Background:
return GetBrush(tabThemeKey, theme.Color, theme.BackgroundOpacity);
case TabThemeKey.BackgroundPointerOver:
return GetBrush(tabThemeKey, theme.Color, theme.BackgroundPointerOverOpacity);
case TabThemeKey.BackgroundPressed:
return GetBrush(tabThemeKey, theme.Color, theme.BackgroundPressedOpacity);
case TabThemeKey.BackgroundSelected:
return GetBrush(tabThemeKey, theme.Color, theme.BackgroundSelectedOpacity);
case TabThemeKey.BackgroundSelectedPointerOver:
return GetBrush(tabThemeKey, theme.Color, theme.BackgroundSelectedPointerOverOpacity);
case TabThemeKey.BackgroundSelectedPressed:
return GetBrush(tabThemeKey, theme.Color, theme.BackgroundSelectedPressedOpacity);
}
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
private Brush GetBrush(TabThemeKey tabThemeKey, string color, double opacity)
{
if (double.IsNaN(opacity))
{
return (Brush)Application.Current.Resources[GetFallbackRessourceKey(tabThemeKey)];
}
else
{
return CreateBrush(color, opacity);
}
}
private Brush CreateBrush(string hex, double opacity)
{
var color = hex.ToColor();
return new SolidColorBrush(color)
{
Opacity = opacity
};
}
private string GetFallbackRessourceKey(TabThemeKey tabThemeKey)
{
switch (tabThemeKey)
{
case TabThemeKey.Background:
return "SystemControlTransparentBrush";
case TabThemeKey.BackgroundPointerOver:
return "SystemControlHighlightListLowBrush";
case TabThemeKey.BackgroundPressed:
return "SystemControlHighlightListMediumBrush";
case TabThemeKey.BackgroundSelected:
return "SystemControlHighlightListAccentLowBrush";
case TabThemeKey.BackgroundSelectedPointerOver:
return "SystemControlHighlightListAccentMediumBrush";
case TabThemeKey.BackgroundSelectedPressed:
return "SystemControlHighlightListAccentHighBrush";
}
return null;
}
}
}
================================================
FILE: FluentTerminal.App/Converters/TabThemeSelectedConverter.cs
================================================
using FluentTerminal.App.ViewModels;
using System;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class TabThemeSelectedConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is TerminalViewModel terminal && parameter is string idString && int.TryParse(idString, out var id))
{
return terminal.TabTheme.Theme.Id == id;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/TerminalViewModelToViewConverter.cs
================================================
using FluentTerminal.App.ViewModels;
using FluentTerminal.App.Views;
using System;
using System.Collections.Generic;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
internal class TerminalViewModelToViewConverter : IValueConverter
{
private readonly Dictionary<TerminalViewModel, TerminalView> _viewDictionary;
public TerminalViewModelToViewConverter()
{
_viewDictionary = new Dictionary<TerminalViewModel, TerminalView>();
}
public void RemoveTerminal(TerminalViewModel viewModel)
{
if (_viewDictionary.TryGetValue(viewModel, out TerminalView terminalView))
{
viewModel.DisposalPrepare();
terminalView.DisposalPrepare();
}
_viewDictionary.Remove(viewModel);
GC.Collect();
}
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is TerminalViewModel terminal)
{
if (_viewDictionary.TryGetValue(terminal, out TerminalView view))
{
return view;
}
var newView = new TerminalView(terminal);
_viewDictionary.Add(terminal, newView);
return newView;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/TextMiddleEllipsisConverter.cs
================================================
using System;
using Windows.Foundation;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
class TextMiddleEllipsisConverter : IValueConverter
{
private TextBlock _textBlock = null;
private double MeasureWidth(string text)
{
if (_textBlock == null)
{
_textBlock = new TextBlock
{
Text = text,
Margin = new Thickness(12, 8, 6, 0),
Style = (Style)Application.Current.Resources["CaptionTextBlockStyle"]
};
}
else
{
_textBlock.Text = text;
}
_textBlock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
return _textBlock.DesiredSize.Width;
}
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is String text)
{
const int MaxWidth = 136;
string result = text;
var width = MeasureWidth(text);
if (width > MaxWidth)
{
double oversize = width - MaxWidth;
double charSize = width / text.Length;
int charsToCut = (int)(oversize / charSize) + 3;
int cutStart = text.Length / 2 - charsToCut / 2;
int cutEnd = text.Length / 2 + (charsToCut - charsToCut / 2);
result = text.Substring(0, cutStart) + ".." + text.Substring(cutEnd);
width = MeasureWidth(result);
while (width > MaxWidth && cutStart > 0 && cutEnd < text.Length)
{
result = text.Substring(0, --cutStart) + ".." + text.Substring(++cutEnd);
width = MeasureWidth(result);
}
}
return result;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/ToolTipValueToPixelConverter.cs
================================================
using System;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class ToolTipValueToPixelConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
return string.Format("{0} px", value);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}
================================================
FILE: FluentTerminal.App/Converters/TrueToVisibleConverter.cs
================================================
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace FluentTerminal.App.Converters
{
public class TrueToVisibleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
if (value is Boolean visible)
{
return visible ? Visibility.Visible : Visibility.Collapsed;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (value is Visibility visibility)
{
return visibility == Visibility.Visible;
}
return null;
}
}
}
================================================
FILE: FluentTerminal.App/Dialogs/AboutDialog.xaml
================================================
<ContentDialog
x:Class="FluentTerminal.App.Dialogs.AboutDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Uid="AboutDialog"
Title="About"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
CloseButtonClick="ContentDialog_CloseButtonClick"
CloseButtonText="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=Close}"
DefaultButton="Close"
mc:Ignorable="d">
<StackPanel>
<Grid Margin="0,6,0,8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="8" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Viewbox
Grid.Column="0"
Width="50"
Height="50"
HorizontalAlignment="Left"
VerticalAlignment="Top">
<Image Source="/Images/AppIcons/StoreLogo.scale-400.png" Stretch="None" />
</Viewbox>
<StackPanel Grid.Column="2">
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="Fluent Terminal" />
<TextBlock>
<Run x:Name="CurrentVersion" />
<Run>-</Run>
<Hyperlink x:Name="ReleaseNotesHyperlink">
<Run x:Uid="ReleaseNotes" Text="Release notes" />
</Hyperlink>
</TextBlock>
</StackPanel>
</Grid>
<TextBlock>
<Hyperlink NavigateUri="https://github.com/felixse/FluentTerminal">
<Run Text="GitHub" />
</Hyperlink>
</TextBlock>
<TextBlock>
<Hyperlink NavigateUri="https://github.com/felixse/FluentTerminal/blob/master/LICENSE">
<Run x:Uid="License" />
</Hyperlink>
</TextBlock>
<TextBlock x:Name="CreatedBy" Margin="0,24,0,0" />
</StackPanel>
</ContentDialog>
================================================
FILE: FluentTerminal.App/Dialogs/AboutDialog.xaml.cs
================================================
using FluentTerminal.App.Services;
using FluentTerminal.App.Services.Dialogs;
using FluentTerminal.App.Utilities;
using System;
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Documents;
namespace FluentTerminal.App.Dialogs
{
public sealed partial class AboutDialog : ContentDialog, IAboutDialog
{
public AboutDialog(ISettingsService settingsService, IUpdateService updateService)
{
this.InitializeComponent();
var currentTheme = settingsService.GetCurrentTheme();
RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);
CreatedBy.Inlines.Add(new Run { Text = "Created by " });
CreatedBy.Inlines.Add(new Italic { Inlines = { new Run { Text = "felixse " } } });
CreatedBy.Inlines.Add(new Run { Text = "and " });
CreatedBy.Inlines.Add(new Hyperlink { Inlines = { new Run { Text = "contributors" } }, NavigateUri = new Uri("https://github.com/felixse/FluentTerminal/graphs/contributors") });
CurrentVersion.Text = updateService.GetCurrentVersion().ToString();
ReleaseNotesHyperlink.NavigateUri = new Uri("https://github.com/felixse/FluentTerminal/releases/tag/" + CurrentVersion.Text);
}
public new Task ShowAsync()
{
return base.ShowAsync().AsTask();
}
private void ContentDialog_CloseButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
Hide();
}
}
}
================================================
FILE: FluentTerminal.App/Dialogs/CreateKeyBindingDialog.xaml
================================================
<ContentDialog
x:Class="FluentTerminal.App.Dialogs.CreateKeyBindingDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="300"
d:DesignWidth="400"
PrimaryButtonText="OK"
SecondaryButtonText="Cancel"
mc:Ignorable="d">
<StackPanel>
<TextBlock Margin="0,0,0,24" x:Uid="KeybindingDialogTitle" Text="Enter your keybinding now" />
<StackPanel x:Name="Root" Orientation="Horizontal">
<Grid
Width="48"
Height="32"
Margin="0,0,6,0"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Visibility="{x:Bind Ctrl, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Ctrl" />
</Grid>
<Grid
Width="48"
Height="32"
Margin="0,0,6,0"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Visibility="{x:Bind Meta, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
<FontIcon
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="/Assets/settingsicons.ttf#settingsicons"
Glyph="f" />
</Grid>
<Grid
Width="48"
Height="32"
Margin="0,0,6,0"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Visibility="{x:Bind Alt, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Alt" />
</Grid>
<Grid
Width="48"
Height="32"
Margin="0,0,6,0"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Visibility="{x:Bind Shift, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Shift" />
</Grid>
<Grid
Width="48"
Height="32"
Margin="0,0,6,0"
Background="{ThemeResource SystemControlBackgroundBaseLowBrush}"
Visibility="{x:Bind Key, Mode=OneWay, Converter={StaticResource ZeroToCollapsedConverter}}">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{x:Bind Key, Mode=OneWay, Converter={StaticResource IntToExtendedVirtualKeyConverter}}" />
</Grid>
<HyperlinkButton
x:Name="ResetButton"
Margin="24,0,0,0"
Command="{x:Bind ResetCommand}"
x:Uid="ResetBtn"
Content="Reset"
PreviewKeyDown="OnResetButtonPreviewKeyDown" />
</StackPanel>
</StackPanel>
</ContentDialog>
================================================
FILE: FluentTerminal.App/Dialogs/CreateKeyBindingDialog.xaml.cs
================================================
using FluentTerminal.App.Services.Dialogs;
using FluentTerminal.App.Services.Utilities;
using FluentTerminal.Models;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Windows.Input;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace FluentTerminal.App.Dialogs
{
// ReSharper disable once RedundantExtendsListEntry
public sealed partial class CreateKeyBindingDialog : ContentDialog, ICreateKeyBindingDialog, INotifyPropertyChanged
{
private bool _ctrl;
private bool _shift;
private bool _alt;
private bool _meta;
private int _key;
public bool Ctrl
{
get => _ctrl;
set => SetProperty(ref _ctrl, value);
}
public bool Shift
{
get => _shift;
set => SetProperty(ref _shift, value);
}
public bool Alt
{
get => _alt;
set => SetProperty(ref _alt, value);
}
public bool Meta
{
get => _meta;
set => SetProperty(ref _meta, value);
}
public int Key
{
get => _key;
set
{
SetProperty(ref _key, value);
}
}
public CreateKeyBindingDialog()
{
InitializeComponent();
ResetCommand = new RelayCommand(Reset);
PreviewKeyDown += RegisterKeyBindingDialog_PreviewKeyDown;
Reset();
this.PrimaryButtonText = I18N.Translate("OK");
this.SecondaryButtonText = I18N.Translate("Cancel");
}
public ICommand ResetCommand { get; }
public event PropertyChangedEventHandler PropertyChanged;
public Task<KeyBinding> CreateKeyBinding()
{
return ShowAsync().AsTask()
.ContinueWith(
t => t.Result == ContentDialogResult.Primary
? new KeyBinding {Alt = Alt, Ctrl = Ctrl, Key = Key, Meta = Meta, Shift = Shift}
: null, TaskContinuationOptions.OnlyOnRanToCompletion);
}
private void OnResetButtonPreviewKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
{
e.Handled = true;
}
private void RegisterKeyBindingDialog_PreviewKeyDown(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e)
{
switch (e.Key)
{
case VirtualKey.Control:
Ctrl = true;
break;
case VirtualKey.Shift:
Shift = true;
break;
case VirtualKey.Menu:
Alt = true;
break;
case VirtualKey.LeftWindows:
case VirtualKey.RightWindows:
Meta = true;
break;
default:
Key = (int)e.Key;
break;
}
ResetButton.Visibility = Visibility.Visible;
e.Handled = true;
}
private void Reset()
{
Alt = false;
Ctrl = false;
Meta = false;
Shift = false;
Key = 0;
ResetButton.Visibility = Visibility.Collapsed;
}
private void SetProperty<T>(ref T field, T value, [CallerMemberName]string propertyName = "")
{
if (field?.Equals(value) ?? value == null)
{
return;
}
field = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
================================================
FILE: FluentTerminal.App/Dialogs/CustomCommandDialog.xaml
================================================
<ContentDialog
x:Class="FluentTerminal.App.Dialogs.CustomCommandDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:enums="using:FluentTerminal.Models.Enums"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="using:FluentTerminal.App.ViewModels"
xmlns:views="using:FluentTerminal.App.Views"
x:Uid="QuickCommandDialog"
Title="Quick Launch"
d:DataContext="{d:DesignInstance viewModels:CommandProfileProviderViewModel,
IsDesignTimeCreatable=False}"
DefaultButton="Primary"
PrimaryButtonClick="OnPrimaryButtonClick"
PrimaryButtonText="Button1"
SecondaryButtonClick="OnSecondaryButtonClick"
SecondaryButtonText="Button2"
mc:Ignorable="d">
<ContentDialog.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<views:TemplateSelectors />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</ContentDialog.Resources>
<StackPanel Width="500" Orientation="Vertical">
<AutoSuggestBox
x:Name="CommandTextBox"
x:Uid="CommandTextBox"
Margin="4,8,4,0"
AutoMaximizeSuggestionArea="True"
ItemsSource="{x:Bind ViewModel.Commands, Mode=OneWay}"
KeyDown="CommandTextBox_OnKeyDown"
KeyUp="CommandTextBox_OnKeyUp"
PlaceholderText="Enter a command (e.g. 'ssh username@host')"
PreviewKeyUp="CommandTextBox_OnPreviewKeyUp"
QueryIcon="Find"
QuerySubmitted="CommandTextBox_OnQuerySubmitted"
SuggestionChosen="CommandTextBox_OnSuggestionChosen"
Text="{x:Bind ViewModel.Command, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
TextChanged="CommandTextBox_OnTextChanged">
<AutoSuggestBox.ItemTemplate>
<DataTemplate x:DataType="viewModels:CommandItemViewModel">
<Grid HorizontalAlignment="Stretch">
<ContentControl HorizontalAlignment="Stretch" Content="{x:Bind RichTextBlock, Mode=OneWay}" />
<!-- I've had to create a transparent overlay over RichTextBox in order to make mouse selection work. Weird but true. -->
<Grid
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Transparent" />
</Grid>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
<AutoSuggestBox.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</AutoSuggestBox.ItemContainerStyle>
</AutoSuggestBox>
<controls:Expander
x:Uid="AdvancedExpander"
Margin="4,12,4,0"
Padding="8"
HorizontalContentAlignment="Stretch"
Header="Advanced"
IsExpanded="False">
<Grid Margin="5,20,5,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<!-- Row -->
<TextBlock
x:Uid="SshInfoDialog_TabColor"
Grid.Row="0"
Grid.Column="0"
Margin="0,8,8,0"
VerticalAlignment="Center"
Text="Tab color:" />
<ComboBox
Grid.Row="0"
Grid.Column="1"
Margin="0,8,0,0"
HorizontalAlignment="Stretch"
ItemTemplateSelector="{StaticResource TabThemeTemplateSelector}"
ItemsSource="{x:Bind ViewModel.TabThemes, Mode=OneWay}"
SelectedItem="{x:Bind ViewModel.SelectedTabTheme, Mode=TwoWay}" />
<!-- Row -->
<TextBlock
x:Uid="Theme"
Grid.Row="1"
Grid.Column="0"
Margin="0,8,8,0"
VerticalAlignment="Center"
Text="Theme:" />
<ComboBox
Grid.Row="1"
Grid.Column="1"
Margin="0,8,0,0"
HorizontalAlignment="Stretch"
ItemTemplateSelector="{StaticResource TerminalThemeTemplateSelector}"
ItemsSource="{x:Bind ViewModel.TerminalThemes, Mode=OneWay}"
SelectedItem="{x:Bind ViewModel.SelectedTerminalTheme, Mode=TwoWay}" />
<!-- Row -->
<CheckBox
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="0,8,0,0"
Content="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}"
IsChecked="{x:Bind ViewModel.UseConPty, Mode=TwoWay}" />
</Grid>
</controls:Expander>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button
x:Uid="SaveShortcutButton"
Grid.Row="0"
Grid.Column="1"
Margin="0,10,4,0"
HorizontalAlignment="Stretch"
Command="{x:Bind SaveLinkCommand}"
Content="Save Shortcut" />
</Grid>
</StackPanel>
</ContentDialog>
================================================
FILE: FluentTerminal.App/Dialogs/CustomCommandDialog.xaml.cs
================================================
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Windows.Storage.Pickers;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using FluentTerminal.App.Services;
using FluentTerminal.App.Services.Dialogs;
using FluentTerminal.App.Services.Utilities;
using FluentTerminal.App.Utilities;
using FluentTerminal.App.ViewModels.Profiles;
using FluentTerminal.Models;
using System.Linq;
using Windows.Foundation;
using Windows.System;
using Windows.UI.Xaml.Input;
using FluentTerminal.App.ViewModels;
using System.Windows.Input;
using Microsoft.Toolkit.Mvvm.Input;
// The Content Dialog item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
namespace FluentTerminal.App.Dialogs
{
// ReSharper disable once RedundantExtendsListEntry
public sealed partial class CustomCommandDialog : ContentDialog, ICustomCommandDialog
{
private readonly ISettingsService _settingsService;
private readonly IApplicationView _applicationView;
private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;
private readonly ICommandHistoryService _historyService;
private IAsyncOperation<ContentDialogResult> _showDialogOperation;
private ContentDialogResult _dialogResult = ContentDialogResult.None;
private CommandItemViewModel _lastChosenCommand;
// TODO: The following field is for hacking strange behavior that deletes command text after Tab selection. Consider finding a better fix.
private CommandItemViewModel _tabSelectedCommand;
public CommandProfileProviderViewModel ViewModel { get; private set; }
public ICommand SaveLinkCommand { get; }
public CustomCommandDialog(ISettingsService settingsService, IApplicationView applicationView,
ITrayProcessCommunicationService trayProcessCommunicationService, ICommandHistoryService historyService)
{
_settingsService = settingsService;
_applicationView = applicationView;
_trayProcessCommunicationService = trayProcessCommunicationService;
_historyService = historyService;
InitializeComponent();
SaveLinkCommand = new AsyncRelayCommand(SaveLink);
PrimaryButtonText = I18N.Translate("OK");
SecondaryButtonText = I18N.Translate("Cancel");
var currentTheme = settingsService.GetCurrentTheme();
RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);
}
private void SetupFocus()
{
CommandTextBox.Focus(FocusState.Programmatic);
}
private async void OnPrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
var deferral = args.GetDeferral();
var error = await ViewModel.AcceptChangesAsync();
if (string.IsNullOrEmpty(error))
{
_dialogResult = ContentDialogResult.Primary;
}
else
{
args.Cancel = true;
await new MessageDialog(error, I18N.Translate("InvalidInput")).ShowAsync();
SetupFocus();
}
deferral.Complete();
}
private void OnSecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
_dialogResult = ContentDialogResult.Secondary;
}
private async Task SaveLink()
{
var link = await ViewModel.GetUrlAsync();
if (!link.Item1)
{
await new MessageDialog(link.Item2, I18N.Translate("InvalidInput")).ShowAsync();
return;
}
var content = ProfileProviderViewModelBase.GetShortcutFileContent(link.Item2);
var savePicker = new FileSavePicker { SuggestedStartLocation = PickerLocationId.Desktop };
savePicker.FileTypeChoices.Add("Shortcut", new List<string> { ".url" });
var file = await savePicker.PickSaveFileAsync();
if (file == null)
{
return;
}
try
{
await _trayProcessCommunicationService.SaveTextFileAsync(file.Path, content);
}
catch (Exception ex)
{
await new MessageDialog(ex.Message, I18N.Translate("Error")).ShowAsync();
}
}
private void CommandTextBox_OnTextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
{
if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
{
ViewModel.SetFilter(sender.Text.Trim());
}
// TODO: Else branch added for Tab-selection hack mentioned above.
else if (_tabSelectedCommand != null)
{
ViewModel.Command = _tabSelectedCommand.ExecutedCommand.Value;
CommandSelected(_tabSelectedCommand);
_tabSelectedCommand = null;
}
}
private void CommandTextBox_OnSuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
{
_lastChosenCommand = args.SelectedItem as CommandItemViewModel;
}
private void CommandTextBox_OnQuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
_lastChosenCommand = null;
if (args.ChosenSuggestion is CommandItemViewModel commandItem)
{
CommandSelected(commandItem);
}
}
private void CommandSelected(CommandItemViewModel commandItem)
{
var executedCommand = ViewModel.Commands.FirstOrDefault(c =>
c.ExecutedCommand.Value.Equals(commandItem.ExecutedCommand.Value,
StringComparison.OrdinalIgnoreCase))?.ExecutedCommand;
if (executedCommand != null)
{
ViewModel.SetProfile(executedCommand.ShellProfile.Clone());
}
}
private void CommandTextBox_OnPreviewKeyUp(object sender, KeyRoutedEventArgs e)
{
switch (e.Key)
{
case VirtualKey.Delete:
if (_lastChosenCommand?.ExecutedCommand is { } command)
{
if (!ViewModel.IsProfileCommand(command))
{
ViewModel.RemoveCommand(command);
}
e.Handled = true;
}
else
{
e.Handled = false;
}
return;
default:
e.Handled = false;
return;
}
}
private async void CommandTextBox_OnKeyUp(object sender, KeyRoutedEventArgs e)
{
switch (e.Key)
{
case VirtualKey.Down:
case VirtualKey.Up:
if (!CommandTextBox.IsSuggestionListOpen)
{
CommandTextBox.IsSuggestionListOpen = true;
}
return;
case VirtualKey.Enter:
if (string.IsNullOrWhiteSpace(CommandTextBox.Text) && !CommandTextBox.IsSuggestionListOpen)
{
CommandTextBox.IsSuggestionListOpen = true;
}
else
{
var error = await ViewModel.AcceptChangesAsync();
if (string.IsNullOrEmpty(error))
{
_dialogResult = ContentDialogResult.Primary;
_showDialogOperation.Cancel();
}
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;
}
}
private void CommandTextBox_OnKeyDown(object sender, KeyRoutedEventArgs e)
{
_tabSelectedCommand = null;
if (e.Key == VirtualKey.Tab)
{
_tabSelectedCommand = _lastChosenCommand;
if (_lastChosenCommand != null)
{
ViewModel.Command = _lastChosenCommand.ExecutedCommand.Value;
CommandSelected(_lastChosenCommand);
}
}
e.Handled = false;
}
public Task<ShellProfile> GetCustomCommandAsync(ShellProfile input = null)
{
ViewModel = new CommandProfileProviderViewModel(_settingsService, _applicationView,
_trayProcessCommunicationService, _historyService, input);
SetupFocus();
_showDialogOperation = ShowAsync();
return _showDialogOperation.AsTask().ContinueWith(t =>
(t.Status == TaskStatus.Canceled || t.Status == TaskStatus.RanToCompletion) &&
_dialogResult == ContentDialogResult.Primary
? ViewModel.Model
: null);
}
}
}
================================================
FILE: FluentTerminal.App/Dialogs/InputDialog.xaml
================================================
<ContentDialog
x:Class="FluentTerminal.App.Dialogs.InputDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
CloseButtonText="Cancel"
PrimaryButtonText="OK"
KeyDown="Dialog_KeyUp"
mc:Ignorable="d">
<TextBox VerticalAlignment="Center" Text="{x:Bind Input, Mode=TwoWay}" />
</ContentDialog>
================================================
FILE: FluentTerminal.App/Dialogs/InputDialog.xaml.cs
================================================
using FluentTerminal.App.Services.Dialogs;
using System.Threading.Tasks;
using Windows.UI.Xaml.Controls;
using System;
using Windows.UI.Xaml.Input;
using Windows.System;
using FluentTerminal.App.Services.Utilities;
using FluentTerminal.App.Services;
using FluentTerminal.App.Utilities;
namespace FluentTerminal.App.Dialogs
{
// ReSharper disable once RedundantExtendsListEntry
public sealed partial class InputDialog : ContentDialog, IInputDialog
{
// ReSharper disable once RedundantDefaultMemberInitializer
private bool _enterPressed = false;
public string Input { get; private set; }
public InputDialog(ISettingsService settingsService)
{
this.InitializeComponent();
this.PrimaryButtonText = I18N.Translate("OK");
this.CloseButtonText = I18N.Translate("Cancel");
var currentTheme = settingsService.GetCurrentTheme();
RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);
}
public Task<string> GetInput()
{
return ShowAsync().AsTask()
.ContinueWith(t => t.Result == ContentDialogResult.Primary || _enterPressed ? Input : null,
TaskContinuationOptions.OnlyOnRanToCompletion);
}
public void SetTitle(string title)
{
Title = title;
}
void Dialog_KeyUp(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Enter)
{
_enterPressed = true;
Hide();
}
}
}
}
================================================
FILE: FluentTerminal.App/Dialogs/SshInfoDialog.xaml
================================================
<ContentDialog
x:Class="FluentTerminal.App.Dialogs.SshInfoDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:enums="using:FluentTerminal.Models.Enums"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:profiles="using:FluentTerminal.App.ViewModels.Profiles"
xmlns:views="using:FluentTerminal.App.Views"
x:Uid="SshInfoDialog"
Title="SSH Info"
d:DataContext="{d:DesignInstance profiles:SshConnectViewModel,
IsDesignTimeCreatable=False}"
DefaultButton="Primary"
PrimaryButtonClick="OnPrimaryButtonClick"
mc:Ignorable="d">
<ContentDialog.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<views:TemplateSelectors />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</ContentDialog.Resources>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<StackPanel Width="500" Orientation="Vertical">
<Grid Margin="4,8,4,0" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<!-- Row -->
<TextBox
x:Name="UserTextBox"
x:Uid="UserTextBox"
Grid.Row="0"
Grid.Column="0"
Width="140"
PlaceholderText="user"
Text="{x:Bind ViewModel.Username, Mode=TwoWay}" />
<TextBlock
Grid.Row="0"
Grid.Column="1"
FontSize="22"
Text="@" />
<TextBox
x:Name="HostTextBox"
x:Uid="HostTextBox"
Grid.Row="0"
Grid.Column="2"
PlaceholderText="host"
Text="{x:Bind ViewModel.Host, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock
Grid.Row="0"
Grid.Column="3"
Margin="2,0,0,0"
FontSize="22"
Text=":" />
<TextBox
x:Uid="PortTextBox"
Grid.Row="0"
Grid.Column="4"
HorizontalAlignment="Stretch"
BeforeTextChanging="Port_OnBeforeTextChanging"
PlaceholderText="port"
Text="{x:Bind ViewModel.SshPort, Mode=TwoWay}" />
<!-- Row -->
<TextBox
x:Uid="IdentityFileTextBox"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="3"
Margin="0,8,0,0"
IsReadOnly="False"
PlaceholderText="Identity file path"
Text="{x:Bind ViewModel.IdentityFile, Mode=TwoWay}" />
<Button
x:Uid="BrowseButton"
Grid.Row="1"
Grid.Column="4"
Margin="0,8,0,0"
HorizontalAlignment="Stretch"
Command="{x:Bind BrowseIdentityFileCommand}"
Content="Browse" />
<!-- Row -->
<CheckBox
x:Uid="UseMoshCheckBox"
Grid.Row="2"
Grid.Column="0"
Grid.ColumnSpan="5"
Margin="0,8,0,0"
Content="Use Mosh"
IsChecked="{x:Bind ViewModel.UseMosh, Mode=TwoWay}" />
</Grid>
<controls:Expander
x:Uid="AdvancedExpander"
Margin="4,10,4,0"
Padding="0,10,0,10"
HorizontalContentAlignment="Stretch"
Header="Advanced"
IsExpanded="False">
<Grid Margin="5,20,5,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="8" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<!-- Row -->
<TextBlock
x:Uid="MoshPorts"
Grid.Row="0"
Grid.Column="0"
Margin="0,8,8,0"
VerticalAlignment="Center"
Text="Mosh ports:"
Visibility="{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Margin="0,8,0,0"
VerticalAlignment="Center"
BeforeTextChanging="Port_OnBeforeTextChanging"
Text="{x:Bind ViewModel.MoshPortFrom, Mode=TwoWay}"
Visibility="{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}" />
<TextBlock
Grid.Row="0"
Grid.Column="2"
Margin="2,8,0,0"
VerticalAlignment="Center"
Text=":"
Visibility="{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}" />
<TextBox
Grid.Row="0"
Grid.Column="3"
Margin="0,8,0,0"
VerticalAlignment="Center"
BeforeTextChanging="Port_OnBeforeTextChanging"
Text="{x:Bind ViewModel.MoshPortTo, Mode=TwoWay}"
Visibility="{x:Bind ViewModel.UseMosh, Mode=OneWay, Converter={StaticResource TrueToVisibleConverter}}" />
<!-- Row -->
<TextBlock
x:Uid="SshInfoDialog_TabColor"
Grid.Row="1"
Grid.Column="0"
Margin="0,8,8,0"
VerticalAlignment="Center"
Text="Tab color:" />
<ComboBox
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="3"
Margin="0,8,0,0"
HorizontalAlignment="Stretch"
ItemTemplateSelector="{StaticResource TabThemeTemplateSelector}"
ItemsSource="{x:Bind ViewModel.TabThemes, Mode=OneWay}"
SelectedItem="{x:Bind ViewModel.SelectedTabTheme, Mode=TwoWay}" />
<!-- Row -->
<TextBlock
x:Uid="Theme"
Grid.Row="2"
Grid.Column="0"
Margin="0,8,8,0"
VerticalAlignment="Center"
Text="Theme:" />
<ComboBox
Grid.Row="2"
Grid.Column="1"
Grid.ColumnSpan="3"
Margin="0,8,0,0"
HorizontalAlignment="Stretch"
ItemTemplateSelector="{StaticResource TerminalThemeTemplateSelector}"
ItemsSource="{x:Bind ViewModel.TerminalThemes, Mode=OneWay}"
SelectedItem="{x:Bind ViewModel.SelectedTerminalTheme, Mode=TwoWay}" />
<!-- Row -->
<CheckBox
Grid.Row="3"
Grid.Column="0"
Grid.ColumnSpan="4"
Margin="0,8,0,0"
Content="{x:Bind Converter={StaticResource I18NConverter}, ConverterParameter=UseConPty}"
IsChecked="{x:Bind ViewModel.UseConPty, Mode=TwoWay}" />
</Grid>
</controls:Expander>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button
x:Uid="SaveShortcutButton"
Grid.Row="0"
Grid.Column="1"
Margin="0,10,4,0"
HorizontalAlignment="Stretch"
Command="{x:Bind SaveLinkCommand}"
Content="Save Shortcut" />
</Grid>
</StackPanel>
</ScrollViewer>
</ContentDialog>
================================================
FILE: FluentTerminal.App/Dialogs/SshInfoDialog.xaml.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Windows.Storage.Pickers;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using FluentTerminal.App.Services.Dialogs;
using FluentTerminal.App.Utilities;
using FluentTerminal.App.Services;
using FluentTerminal.App.Services.Utilities;
using FluentTerminal.App.ViewModels.Profiles;
using FluentTerminal.Models;
using System.Windows.Input;
using Microsoft.Toolkit.Mvvm.Input;
namespace FluentTerminal.App.Dialogs
{
// ReSharper disable once RedundantExtendsListEntry
public sealed partial class SshInfoDialog : ContentDialog, ISshConnectionInfoDialog
{
private readonly ISettingsService _settingsService;
private readonly IApplicationView _applicationView;
private readonly IFileSystemService _fileSystemService;
private readonly ITrayProcessCommunicationService _trayProcessCommunicationService;
public SshConnectViewModel ViewModel { get; private set; }
public ICommand BrowseIdentityFileCommand { get; }
public ICommand SaveLinkCommand { get; }
public SshInfoDialog(ISettingsService settingsService, IApplicationView applicationView,
IFileSystemService fileSystemService, ITrayProcessCommunicationService trayProcessCommunicationService)
{
_settingsService = settingsService;
_applicationView = applicationView;
_fileSystemService = fileSystemService;
_trayProcessCommunicationService = trayProcessCommunicationService;
InitializeComponent();
BrowseIdentityFileCommand = new AsyncRelayCommand(BrowseIdentityFile);
SaveLinkCommand = new AsyncRelayCommand(SaveLink);
PrimaryButtonText = I18N.Translate("OK");
SecondaryButtonText = I18N.Translate("Cancel");
var currentTheme = settingsService.GetCurrentTheme();
RequestedTheme = ContrastHelper.GetIdealThemeForBackgroundColor(currentTheme.Colors.Background);
}
private void SetupFocus()
{
if (string.IsNullOrEmpty(ViewModel.Username))
{
UserTextBox.Focus(FocusState.Programmatic);
}
else if (string.IsNullOrEmpty(ViewModel.Host))
{
HostTextBox.Focus(FocusState.Programmatic);
}
else
{
Focus(FocusState.Programmatic);
}
}
private async Task BrowseIdentityFile()
{
var openPicker = new FileOpenPicker { SuggestedStartLocation = PickerLocationId.DocumentsLibrary };
openPicker.FileTypeFilter.Add("*");
var file = await openPicker.PickSingleFileAsync();
if (file != null)
{
ViewModel.SetValidatedIdentityFile(file.Path);
}
}
private async Task SaveLink()
{
var link = await ViewModel.GetUrlAsync();
if (!link.Item1)
{
await new MessageDialog(link.Item2, I18N.Translate("InvalidInput")).ShowAsync();
return;
}
var content = ProfileProviderViewModelBase.GetShortcutFileContent(link.Item2);
var savePicker = new FileSavePicker
{
SuggestedStartLocation = PickerLocationId.Desktop,
SuggestedFileName = string.IsNullOrEmpty(ViewModel.Username)
? $"{ViewModel.Host}.url"
: $"{ViewModel.Username}@{ViewModel.Host}.url"
};
savePicker.FileTypeChoices.Add("Shortcut", new List<string> {".url"});
var file = await savePicker.PickSaveFileAsync();
if (file == null)
{
return;
}
try
{
await _trayProcessCommunicationService.SaveTextFileAsync(file.Path, content);
}
catch (Exception ex)
{
await new MessageDialog(ex.Message, I18N.Translate("Error")).ShowAsync();
}
}
private async void OnPrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
var deferral = args.GetDeferral();
var error = await ViewModel.AcceptChangesAsync();
if (!string.IsNullOrEmpty(error))
{
args.Cancel = true;
await new MessageDialog(error, I18N.Translate("InvalidInput")).ShowAsync();
SetupFocus();
}
deferral.Complete();
}
private void Port_OnBeforeTextChanging(TextBox sender, TextBoxBeforeTextChangingEventArgs args) =>
args.Cancel = string.IsNullOrEmpty(args.NewText) || args.NewText.Any(c => !char.IsDigit(c));
public async Task<SshProfile> GetSshConnectionInfoAsync(SshProfile input = null)
{
ViewModel = new SshConnectViewModel(_settingsService, _applicationView, _trayProcessCommunicationService,
_fileSystemService, input);
if (string.IsNullOrEmpty(ViewModel.Username))
{
ViewModel.Username = await _trayProcessCommunicationService.GetUserNameAsync();
}
SetupFocus();
return await ShowAsync() == ContentDialogResult.Primary ? (SshProfile) ViewModel.Model : null;
}
}
}
================================================
FILE: FluentTerminal.App/FluentTerminal.App.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<UseAppLocalCoreFramework>true</UseAppLocalCoreFramework>
</PropertyGroup>
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProjectGuid>{41020100-3414-4E0A-9A8E-92D3C4179DF8}</ProjectGuid>
<OutputType>AppContainerExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FluentTerminal.App</RootNamespace>
<AssemblyName>FluentTerminal.App</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.19041.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<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>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>ARM</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
<OutputPath>bin\ARM\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>ARM</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
<UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<Compile Include="Actions\FocusAction.cs" />
<Compile Include="Adapters\ApplicationViewAdapter.cs" />
<Compile Include="Adapters\AppServiceConnectionAdapter.cs" />
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="Behaviors\MiddleClickBehavior.cs" />
<Compile Include="CommandLineArguments\NewVerb.cs" />
<Compile Include="CommandLineArguments\RunVerb.cs" />
<Compile Include="CommandLineArguments\SettingsVerb.cs" />
<Compile Include="CommandLineArguments\Target.cs" />
<Compile Include="Converters\MenuViewModelToFlyoutMenuConverter.cs" />
<Compile Include="Converters\BackgroundToApplicationThemeConverter.cs" />
<Compile Include="Converters\BooleanNegationConverter.cs" />
<Compile Include="Converters\ColorResourceKeyFallbackConverter.cs" />
<Compile Include="Converters\I18NConverter.cs" />
<Compile Include="Converters\IconConverter.cs" />
<Compile Include="Converters\MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs" />
<Compile Include="Converters\NullToCollapsedConverter.cs" />
<Compile Include="Converters\TabColorFallbackConverter.cs" />
<Compile Include="Converters\EnumValueToVisibiltyConverter.cs" />
<Compile Include="Converters\FalseToVisibleConverter.cs" />
<Compile Include="Converters\IntToExtendedVirtualKeyConverter.cs" />
<Compile Include="Converters\IntToVisibilityConverter.cs" />
<Compile Include="Converters\NegateConverter.cs" />
<Compile Include="Converters\StringToColorConverter.cs" />
<Compile Include="Converters\TabThemeSelectedConverter.cs" />
<Compile Include="Converters\TerminalViewModelToViewConverter.cs" />
<Compile Include="Converters\TextMiddleEllipsisConverter.cs" />
<Compile Include="Converters\ToolTipValueToPixelConverter.cs" />
<Compile Include="Converters\TrueToVisibleConverter.cs" />
<Compile Include="Adapters\MessageDialogAdapter.cs" />
<Compile Include="Dialogs\AboutDialog.xaml.cs">
<DependentUpon>AboutDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Services\CommandHistoryService.cs" />
<Compile Include="Utilities\DelayedAction.cs" />
<Compile Include="Utilities\DispatcherExtensions.cs" />
<Compile Include="Utilities\InteractiveSurface.cs" />
<Compile Include="ViewModels\CommandItemViewModel.cs" />
<Compile Include="Dialogs\CustomCommandDialog.xaml.cs">
<DependentUpon>CustomCommandDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Dialogs\InputDialog.xaml.cs">
<DependentUpon>InputDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Dialogs\SshInfoDialog.xaml.cs">
<DependentUpon>SshInfoDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Services\ApplicationLanguageService.cs" />
<Compile Include="Services\ClipboardService.cs" />
<Compile Include="Services\FileSystemService.cs" />
<Compile Include="Services\ImageFileSystemService.cs" />
<Compile Include="Services\StartupTaskService.cs" />
<Compile Include="Services\SystemFontService.cs" />
<Compile Include="Utilities\ColorExtensions.cs" />
<Compile Include="Utilities\ContrastHelper.cs" />
<Compile Include="Utilities\JumpListHelper.cs" />
<Compile Include="ViewModels\CommandProfileProviderViewModel.cs" />
<Compile Include="ViewModels\DelayedHistorySaver.cs" />
<Compile Include="ViewModels\EnvironmentVariableViewModel.cs" />
<Compile Include="ViewModels\Infrastructure\IErrorHandler.cs" />
<Compile Include="ViewModels\ISessionSuccessTracker.cs" />
<Compile Include="ViewModels\ITerminalView.cs" />
<Compile Include="ViewModels\MainViewModel.cs" />
<Compile Include="ViewModels\Menu\ExpandableMenuItemViewModel.cs" />
<Compile Include="ViewModels\Menu\Mdl2Icon.cs" />
<Compile Include="ViewModels\Menu\MenuItemKeyBindingViewModel.cs" />
<Compile Include="ViewModels\Menu\MenuItemViewModel.cs" />
<Compile Include="ViewModels\Menu\MenuItemViewModelBase.cs" />
<Compile Include="ViewModels\Menu\MenuViewModel.cs" />
<Compile Include="ViewModels\Menu\RadioMenuItemViewModel.cs" />
<Compile Include="ViewModels\Menu\SeparatorMenuItemViewModel.cs" />
<Compile Include="ViewModels\Menu\ToggleMenuItemViewModel.cs" />
<Compile Include="ViewModels\OverlayViewModel.cs" />
<Compile Include="ViewModels\Profiles\CommonProfileProviderViewModel.cs" />
<Compile Include="ViewModels\Profiles\ProfileProviderViewModelBase.cs" />
<Compile Include="ViewModels\Profiles\SshConnectionInfoValidationResult.cs" />
<Compile Include="ViewModels\Profiles\SshConnectViewModel.cs" />
<Compile Include="ViewModels\ProfileViewModelBase.cs" />
<Compile Include="ViewModels\SettingsViewModel.cs" />
<Compile Include="ViewModels\Settings\AboutPageViewModel.cs" />
<Compile Include="ViewModels\Settings\GeneralPageViewModel.cs" />
<Compile Include="ViewModels\Settings\KeyBindingsPageViewModel.cs" />
<Compile Include="ViewModels\Settings\KeyBindingsViewModel.cs" />
<Compile Include="ViewModels\Settings\KeyBindingViewModel.cs" />
<Compile Include="ViewModels\Settings\MousePageViewModel.cs" />
<Compile Include="ViewModels\Settings\ProfilesPageViewModel.cs" />
<Compile Include="ViewModels\Settings\SshProfilesPageViewModel.cs" />
<Compile Include="ViewModels\Settings\TerminalPageViewModel.cs" />
<Compile Include="ViewModels\Settings\ThemesPageViewModel.cs" />
<Compile Include="ViewModels\ShellProfileViewModel.cs" />
<Compile Include="ViewModels\SshProfileViewModel.cs" />
<Compile Include="ViewModels\TabThemeViewModel.cs" />
<Compile Include="ViewModels\TerminalViewModel.cs" />
<Compile Include="ViewModels\ThemeViewModel.cs" />
<Compile Include="ViewModels\Utilities\TaskUtilities.cs" />
<Compile Include="ViewModels\Utilities\WebViewSpecialCharEncoder.cs" />
<Compile Include="Views\BooleanTemplateSelector.cs" />
<Compile Include="Views\EnvironmentVariablesView.xaml.cs">
<DependentUpon>EnvironmentVariablesView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\KeyBindingsView.xaml.cs">
<DependentUpon>KeyBindingsView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\MainPage.xaml.cs">
<DependentUpon>MainPage.xaml</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Dialogs\CreateKeyBindingDialog.xaml.cs">
<DependentUpon>CreateKeyBindingDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Views\MenuExtension.cs" />
<Compile Include="Views\OverlayView.xaml.cs">
<DependentUpon>OverlayView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPage.xaml.cs">
<DependentUpon>SettingsPage.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPages\MouseSettings.xaml.cs">
<DependentUpon>MouseSettings.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPages\SshProfileSettings.xaml.cs">
<DependentUpon>SshProfileSettings.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPages\ThemeSettings.xaml.cs">
<DependentUpon>ThemeSettings.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPages\TerminalSettings.xaml.cs">
<DependentUpon>TerminalSettings.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPages\GeneralSettings.xaml.cs">
<DependentUpon>GeneralSettings.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPages\KeyBindingSettings.xaml.cs">
<DependentUpon>KeyBindingSettings.xaml</DependentUpon>
</Compile>
<Compile Include="Views\SettingsPages\ShellProfileSettings.xaml.cs">
<DependentUpon>ShellProfileSettings.xaml</DependentUpon>
</Compile>
<Compile Include="Views\TabBar.xaml.cs">
<DependentUpon>TabBar.xaml</DependentUpon>
</Compile>
<Compile Include="Views\TabBarBackgroundBindingHelper.cs" />
<Compile Include="Views\TemplateSelectors.xaml.cs">
<DependentUpon>TemplateSelectors.xaml</DependentUpon>
</Compile>
<Compile Include="Views\TerminalKeybindTemplateSelector.cs" />
<Compile Include="Views\TabThemeTemplateSelector.cs" />
<Compile Include="Views\TerminalColorPicker.xaml.cs">
<DependentUpon>TerminalColorPicker.xaml</DependentUpon>
</Compile>
<Compile Include="Views\NoValueTemplateSelector.cs" />
<Compile Include="Views\TerminalThemeTemplateSelector.cs" />
<Compile Include="Views\TerminalView.xaml.cs">
<DependentUpon>TerminalView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\XtermTerminalView.xaml.cs">
<DependentUpon>XtermTerminalView.xaml</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<AppxManifest Include="Package.appxmanifest">
<SubType>Designer</SubType>
</AppxManifest>
<Content Include="Assets\LockScreenLogo.scale-200.png" />
<Content Include="Assets\settingsicons.ttf" />
<Content Include="Assets\SplashScreen.scale-200.png" />
<Content Include="Assets\Square150x150Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Assets\StoreLogo.png" />
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
<Content Include="Client\bundle.js" />
<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-US\Resources.resw" />
</ItemGroup>
<ItemGroup>
<Content Include="Properties\Default.rd.xml" />
<PRIResource Include="Strings\it\Resources.resw" />
<PRIResource Include="Strings\nl\Resources.resw" />
<PRIResource Include="Strings\pl\Resources.resw" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="Dialogs\AboutDialog.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Dialogs\CustomCommandDialog.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Dialogs\InputDialog.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Dialogs\SshInfoDialog.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\EnvironmentVariablesView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\KeyBindingsView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\MainPage.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Styles\Custom.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Page>
<Page Include="Dialogs\CreateKeyBindingDialog.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\OverlayView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPages\MouseSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPages\SshProfileSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPages\ThemeSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPages\TerminalSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPages\GeneralSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPages\KeyBindingSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\SettingsPages\ShellProfileSettings.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\TabBar.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\TerminalColorPicker.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\TerminalView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\TemplateSelectors.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\XtermTerminalView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac">
<Version>6.3.0</Version>
</PackageReference>
<PackageReference Include="CommandLineParser">
<Version>2.8.0</Version>
</PackageReference>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
<Version>6.2.13</Version>
</PackageReference>
<PackageReference Include="Microsoft.Toolkit.Mvvm">
<Version>7.1.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.Toolkit.Uwp.UI">
<Version>7.1.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.Toolkit.Uwp.UI.Controls">
<Version>7.1.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.UI.Xaml">
<Version>2.8.0-prerelease.210927001</Version>
</PackageReference>
<PackageReference Include="Microsoft.Xaml.Behaviors.Uwp.Managed">
<Version>2.0.1</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json">
<Version>13.0.1</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.26.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FluentTerminal.App.Services\FluentTerminal.App.Services.csproj">
<Project>{a1ad7385-f92e-46ac-a349-43dc99b1e72d}</Project>
<Name>FluentTerminal.App.Services</Name>
</ProjectReference>
<ProjectReference Include="..\FluentTerminal.Models\FluentTerminal.Models.csproj">
<Project>{5EA40453-A0AA-449E-8406-D6EA51D7E70E}</Project>
<Name>FluentTerminal.Models</Name>
</ProjectReference>
<ProjectReference Include="..\FluentTerminal.RuntimeComponent\FluentTerminal.RuntimeComponent.csproj">
<Project>{BAAE6239-343F-454C-977F-F81F91715961}</Project>
<Name>FluentTerminal.RuntimeComponent</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\ro\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\hi\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\pt-BR\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\ar-iq\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\he\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\ja\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\ko\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\uk\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\ar\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\id\Resources.resw" />
</ItemGroup>
<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>
<PRIResource Include="Strings\sv\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\uz-Latn\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\bs\Resources.resw" />
</ItemGroup>
<ItemGroup>
<SDKReference Include="WindowsDesktop, Version=10.0.19041.0">
<Name>Windows Desktop Extensions for the UWP</Name>
</SDKReference>
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\bg\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\pt\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\sq\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\sr-Latn\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\sr-cyrl\Resources.resw" />
</ItemGroup>
<ItemGroup>
<PRIResource Include="Strings\vi\Resources.resw" />
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' ">
<VisualStudioVersion>14.0</VisualStudioVersion>
</PropertyGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>xcopy /y "$(SolutionDir)FluentTerminal.Client\dist" "$(ProjectDir)Client\"</PreBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
================================================
FILE: FluentTerminal.App/Package.appxmanifest
================================================
<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" IgnorableNamespaces="uap mp desktop rescap">
<Identity Name="53621FSApps.FluentTerminal" Publisher="CN=BDC72197-B634-438A-B863-16DCB7D90C85" Version="0.5.3.0" />
<mp:PhoneIdentity PhoneProductId="f7225014-f405-4342-ad2e-ebf6ac60ea2c" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
<Properties>
<DisplayName>Fluent Terminal</DisplayName>
<PublisherDisplayName>FS Apps</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate" />
</Resources>
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="FluentTerminal.App.App">
<uap:VisualElements DisplayName="Fluent Terminal" Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png" Description="Fluent Terminal" BackgroundColor="transparent">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"/>
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
</Package>
================================================
FILE: FluentTerminal.App/Properties/AssemblyInfo.cs
================================================
using System.Resources;
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("FluentTerminal.App")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FluentTerminal.App")]
[assembly: AssemblyCopyright("Copyright © 2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: NeutralResourcesLanguage("en-US")]
================================================
FILE: FluentTerminal.App/Properties/Default.rd.xml
================================================
<!--
Diese Datei enthält von .NET Native verwendete Laufzeitdirektiven. Die hier gezeigten Standardwerte sind für die meisten
Entwickler geeignet. Sie können diese Parameter aber ändern, um das Verhalten des .NET Native-
Optimierers anzupassen.
Laufzeitdirektiven sind hier dokumentiert: https://go.microsoft.com/fwlink/?LinkID=391919
Vollständige Aktivierung der Reflektion von "App1.MyClass" und allen zugehörigen öffentlichen/privaten Membern:
<Type Name="App1.MyClass" Dynamic="Required All" />
Aktivierung der dynamischen Erstellung der spezifischen Instanziierung von "AppClass<T>" über "System.Int32":
<TypeInstantiation Name="App1.AppClass" Arguments="System.Int32" Activate="Required Public" />
Verwendung der Namespacedirektive zum Anwenden der Reflektionsrichtlinie auf alle Typen in einem bestimmten Namespace:
<Namespace Name="DataClasses.ViewModels" Serialize="All" />
-->
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<!--
Ein Assemblyelement mit Name="*Application*" gilt für alle Assemblys im
Anwendungspaket. Die Sternchen sind keine Platzhalter.
-->
<Assembly Name="*Application*" Dynamic="Required All" />
<!-- Fügen Sie hier Ihre anwendungsspezifischen Laufzeitdirektiven ein. -->
</Application>
</Directives>
================================================
FILE: FluentTerminal.App/Services/ApplicationLanguageService.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using Windows.Globalization;
namespace FluentTerminal.App.Services
{
public class ApplicationLanguageService : IApplicationLanguageService
{
private readonly Dictionary<string, string> _languages = new Dictionary<string, string>
{
[""] = "System default",
["ar"] = "العربية",
["ar-IQ"] = "اللهجة العراقية",
["az-Latn"] = "azərbaycan dili",
["bg"] = "български",
["bs"] = "bosanski",
["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"] = "日本語",
["ko"] = "한국어",
["nl"] = "Nederlands",
["pl"] = "Polski",
["pt"] = "Português",
["pt-BR"] = "Português-Brasil",
["ro"] = "Română",
["ru"] = "Pусский",
["sl"] = "Slovenščina",
["sr-Latn"] = "srpski",
["sr-cyrl"] = "српски",
["sv"] = "svenska",
["sq"] = "shqip",
["tr"] = "Türkçe",
["ug-Arab"] = "ئۇيغۇر تىلى",
["uk"] = "Українська",
["uz-Latn"] = "O'zbek tili",
["vi"] = "tiếng việt",
["zh-Hans"] = "简体中文",
["zh-Hant"] = "繁體中文"
};
public IEnumerable<string> Languages => _languages.Values;
public void SetLanguage(string language)
{
if (!_languages.ContainsValue(language))
{
throw new ArgumentException($"Language not supported: {language}", nameof(language));
}
ApplicationLanguages.PrimaryLanguageOverride = _languages.FirstOrDefault(x => x.Value == language).Key;
}
public string GetCurrentLanguage()
{
if (!_languages.ContainsKey(ApplicationLanguages.PrimaryLanguageOverride))
{
ApplicationLanguages.PrimaryLanguageOverride = "en";
}
return _languages[ApplicationLanguages.PrimaryLanguageOverride];
}
}
}
================================================
FILE: FluentTerminal.App/Services/ClipboardService.cs
================================================
using System;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Windows.ApplicationModel.DataTransfer;
namespace FluentTerminal.App.Services
{
public class ClipboardService : IClipboardService
{
/// <summary>
/// Right trim whitespaces for each line.
/// </summary>
private static readonly Regex RTrimMultiLinesPattern = new Regex(@"([^\S\r\n]+)([\r\n])", RegexOptions.Compiled);
private readonly ISettingsService _settingsService;
public ClipboardService(ISettingsService settingsService)
{
_settingsService = settingsService;
}
public Task<string> GetTextAsync()
{
var content = Clipboard.GetContent();
if (content.Contains(StandardDataFormats.Text))
{
return content.GetTextAsync().AsTask();
}
// Otherwise return a new task that just sends an empty string.
return Task.FromResult(string.Empty);
}
public void SetText(string text)
{
if (_settingsService.GetApplicationSettings().RTrimCopiedLines)
{
text = RTrimMultiLinesPattern.Replace(text, "$2");
}
var dataPackage = new DataPackage();
dataPackage.SetText(text);
Clipboard.SetContent(dataPackage);
}
}
}
================================================
FILE: FluentTerminal.App/Services/CommandHistoryService.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using FluentTerminal.App.Services.Implementation;
using FluentTerminal.Models;
using FluentTerminal.Models.Messages;
using Microsoft.Toolkit.Mvvm.Messaging;
using Newtonsoft.Json;
namespace FluentTerminal.App.Services
{
public class CommandHistoryService : ICommandHistoryService
{
#region Constants
// Maximal number of commands to save to history
private const int MaxHistory = 1_000;
private static readonly DateTime NeverUsedTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
#endregion Constants
#region Static
private static string GetHash(string value)
{
if (string.IsNullOrEmpty(value))
{
return value;
}
value = value.ToLowerInvariant();
byte[] hashed;
using (var md5 = MD5.Create())
{
hashed = md5.ComputeHash(Encoding.UTF32.GetBytes(value));
}
var builder = new StringBuilder();
foreach (var b in hashed)
{
builder.Append(b.ToString("X2"));
}
return $"hist_{builder}_{value.Length:##########}";
}
#endregion Static
#region Fields
private readonly IApplicationDataContainer _historyContainer;
private readonly ISettingsService _settingsService;
private List<ExecutedCommand> _history;
#endregion Fields
#region Constructor
public CommandHistoryService(ApplicationDataContainers containers, ISettingsService settingsService)
{
_settingsService = settingsService;
_historyContainer = containers.HistoryContainer;
}
#endregion Constructor
#region Methods
private List<ExecutedCommand> GetRawHistory(Func<List<ShellProfile>> profilesProvider = null)
{
if (_history == null)
{
_history = LoadHistory();
CleanupHistory(profilesProvider);
}
return _history;
}
private List<ExecutedCommand> LoadHistory()
{
List<ExecutedCommand> history = null;
try
{
history = _historyContainer.GetAll()
.Select(c => JsonConvert.DeserializeObject<ExecutedCommand>((string) c)).ToList();
}
catch
{
// ignored
}
if (history == null)
{
// If there's an issue with getting history, we simply clear history as if the app haven't been used at all.
// Not too useful fix, but it shouldn't happen ever anyway.
_historyContainer.Clear();
return new List<ExecutedCommand>();
}
FixMoshBackwardCompatibility(history);
return history;
}
private void FixMoshBackwardCompatibility(List<ExecutedCommand> commands)
{
for (var i = 0; i < commands.Count; i++)
{
var command = commands[i];
if (command.ShellProfile == null) continue;
var newProfile = MoshBackwardCompatibility.FixProfile(command.ShellProfile);
if (ReferenceEquals(command.ShellProfile, newProfile)) continue;
if (!command.ProfileId.HasValue)
{
newProfile.Name = $"{newProfile.Location} {newProfile.Arguments}".Trim();
}
var newCommand = new ExecutedCommand
{
Value = newProfile.Name,
ProfileId = command.ProfileId,
LastExecution = command.LastExecution,
ExecutionCount = command.ExecutionCount,
ShellProfile = newProfile
};
commands.Insert(i, newCommand);
commands.RemoveAt(i + 1);
Delete(command);
Save(newCommand);
}
}
private void Save(ExecutedCommand executedCommand)
{
_historyContainer.WriteValueAsJson(GetHash(executedCommand.Value), executedCommand);
WeakReferenceMessenger.Default.Send(new CommandHistoryChangedMessage());
}
/// <summary>
/// Removes all profiles from history if they are deleted in the settings page meanwhile.
/// </summary>
private void CleanupHistory(Func<List<ShellProfile>> profilesProvider = null)
{
if (_history == null)
{
// Not loaded yet, so we won't clear. This won't happen though.
return;
}
if (!_history.Any())
{
return;
}
var profiles = profilesProvider?.Invoke() ?? _settingsService.GetAllProfiles().ToList();
for (var i = 0; i < _history.Count; i++)
{
var command = _history[i];
if (command.ProfileId.HasValue && !profiles.Any(p => p.Id.Equals(command.ProfileId.Value)))
{
_history.Remove(command);
Delete(command);
i--;
continue;
}
if (command.ShellProfile == null)
{
var profile = profiles.FirstOrDefault(p =>
string.Equals(p.Name, command.Value, StringComparison.OrdinalIgnoreCase));
if (profile == null)
{
_history.Remove(command);
Delete(command);
i--;
}
else
{
command.ProfileId = profile.Id;
Save(command);
}
}
}
}
private IEnumerable<ExecutedCommand> GetHistory(bool byNumberOfUsages, bool includeProfiles,
Func<List<ShellProfile>> profilesProvider = null)
{
var allProfiles =
new Lazy<List<ShellProfile>>(profilesProvider ?? (() => _settingsService.GetAllProfiles().ToList()));
var history = GetRawHistory(() => allProfiles.Value);
if (!history.Any())
{
yield break;
}
var ordered = byNumberOfUsages
? history.OrderByDescending(c => c.ExecutionCount).ThenByDescending(c => c.LastExecution).ToList()
: history.OrderByDescending(c => c.LastExecution).ThenByDescending(c => c.ExecutionCount).ToList();
foreach (var command in ordered)
{
if (command.ProfileId.HasValue)
{
var profile = allProfiles.Value.FirstOrDefault(p => p.Id.Equals(command.ProfileId.Value));
if (profile == null)
{
history.Remove(command);
Delete(command);
}
else
{
allProfiles.Value.Remove(profile);
var newCommand = command.Clone();
newCommand.ShellProfile = profile;
yield return newCommand;
}
}
else
{
yield return command.Clone();
}
}
if (!includeProfiles)
{
yield break;
}
foreach (var unusedProfile in allProfiles.Value)
{
yield return new ExecutedCommand
{
Value = unusedProfile.Name,
ProfileId = unusedProfile.Id,
ExecutionCount = 0,
LastExecution = NeverUsedTime,
ShellProfile = unusedProfile
};
}
}
/// <inheritdoc cref="ICommandHistoryService.GetHistoryRecentFirst"/>
public List<ExecutedCommand> GetHistoryRecentFirst(bool includeProfiles = false, int top = int.MaxValue,
Func<List<ShellProfile>> profileProvider = null) =>
GetHistory(false, includeProfiles, profileProvider).Take(top).ToList();
/// <inheritdoc cref="ICommandHistoryService.GetHistoryMostUsedFirst"/>
public List<ExecutedCommand> GetHistoryMostUsedFirst(bool includeProfiles = false, int top = int.MaxValue,
Func<List<ShellProfile>> profileProvider = null) =>
GetHistory(true, includeProfiles, profileProvider).Take(top).ToList();
public void MarkUsed(ShellProfile profile)
{
var history = GetRawHistory();
var existing = history.FirstOrDefault(c =>
c.ProfileId?.Equals(profile.Id) ??
string.Equals(profile.Name, c.Value, StringComparison.OrdinalIgnoreCase));
if (existing == null)
{
if (string.IsNullOrEmpty(profile.Name))
{
profile.Name = $"{profile.Location} {profile.Arguments}".Trim();
}
existing = new ExecutedCommand {Value = profile.Name};
if (_settingsService.GetAllProfiles().Any(p => p.Id.Equals(profile.Id)))
{
existing.ProfileId = profile.Id;
}
else
{
existing.ShellProfile = profile;
}
var overflow = history.Count - MaxHistory + 1;
if (overflow > 0)
{
// We already have max number of commands in history, so we need to delete some
// Let's first try with cleanup
CleanupHistory();
overflow = history.Count - MaxHistory + 1;
if (overflow > 0)
{
// We will remove the oldest commands
var toRemove = history.OrderBy(c => c.LastExecution).ThenBy(c => c.ExecutionCount)
.Take(overflow).ToList();
foreach (var command in toRemove)
{
history.Remove(command);
Delete(command);
}
}
}
history.Add(existing);
}
else if (existing.ShellProfile != null)
{
existing.ShellProfile = profile;
}
existing.LastExecution = DateTime.UtcNow;
existing.ExecutionCount++;
Save(existing);
}
public void Clear()
{
_history?.Clear();
_historyContainer.Clear();
WeakReferenceMessenger.Default.Send(new CommandHistoryChangedMessage());
}
public void Delete(ExecutedCommand executedCommand)
{
_history?.RemoveAll(c => string.Equals(c.Value, executedCommand.Value, StringComparison.OrdinalIgnoreCase));
_historyContainer.Delete(GetHash(executedCommand.Value));
WeakReferenceMessenger.Default.Send(new CommandHistoryChangedMessage());
}
#endregion Methods
}
}
================================================
FILE: FluentTerminal.App/Services/FileSystemService.cs
================================================
using FluentTerminal.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.Storage.Pickers;
using File = FluentTerminal.Models.File;
namespace FluentTerminal.App.Services
{
public class FileSystemService : IFileSystemService
{
public Task<string> BrowseForDirectoryAsync()
{
var picker = new FolderPicker{ SuggestedStartLocation = PickerLocationId.ComputerFolder };
picker.FileTypeFilter.Add(".whatever"); // else a ComException is thrown
return picker.PickSingleFolderAsync().AsTask()
.ContinueWith(t => t.Result?.Path, TaskContinuationOptions.OnlyOnRanToCompletion);
}
public async Task<File> OpenFileAsync(IEnumerable<string> fileTypes)
{
var picker = new FileOpenPicker
{
SuggestedStartLocation = PickerLocationId.ComputerFolder
};
foreach (var fileType in fileTypes)
{
picker.FileTypeFilter.Add(fileType);
}
var file = await picker.PickSingleFileAsync();
if (file != null)
{
var stream = await file.OpenStreamForReadAsync().ConfigureAwait(true);
return new File(file.DisplayName, file.FileType, file.Path, stream);
}
return null;
}
public async Task<ImageFile> SaveImageInRoamingAsync(ImageFile imageFile)
{
var file = await StorageFile.GetFileFromPathAsync(imageFile.Path);
var backgroundThemeFolder = await ApplicationData.Current.RoamingFolder.CreateFolderAsync("BackgroundTheme", CreationCollisionOption.OpenIfExists);
var storageFile = await file.CopyAsync(backgroundThemeFolder, file.DisplayName, NameCollisionOption.GenerateUniqueName);
return new ImageFile(
storageFile.DisplayName,
storageFile.FileType,
storageFile.Path);
}
public async Task SaveTextFileAsync(string name, string fileTypeDescription, string fileType, string content)
{
var picker = new FileSavePicker
{
SuggestedStartLocation = PickerLocationId.ComputerFolder,
SuggestedFileName = name
};
picker.FileTypeChoices.Add(fileTypeDescription, new List<string> { fileType });
var file = await picker.PickSaveFileAsync();
if (file != null)
{
await FileIO.WriteTextAsync(file, content);
}
}
}
}
================================================
FILE: FluentTerminal.App/Services/ImageFileSystemService.cs
================================================
using FluentTerminal.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Windows.Storage;
using Windows.Storage.Pickers;
namespace FluentTerminal.App.Services
{
public class ImageFileSystemService : IImageFileSystemService
{
public async Task RemoveTemporaryBackgroundThemeImageAsync()
{
var folder = await ApplicationData.Current.LocalCacheFolder.TryGetItemAsync("BackgroundThemeTmp");
if (folder == null)
{
return;
}
var backgroundThemeTmpFolder =
await ApplicationData.Current.LocalCacheFolder.GetFolderAsync("BackgroundThemeTmp");
if (backgroundThemeTmpFolder != null)
{
await backgroundThemeTmpFolder.DeleteAsync();
}
}
public async Task<ImageFile> ImportTemporaryImageFileAsync(IEnumerable<string> fileTypes)
{
var picker = new FileOpenPicker
{
SuggestedStartLocation = PickerLocationId.PicturesLibrary
};
foreach (var fileType in fileTypes)
{
picker.FileTypeFilter.Add(fileType);
}
var file = await picker.PickSingleFileAsync();
if (file == null)
{
return null;
}
var backgroundThemeTmpFolder =
await ApplicationData.Current.LocalCacheFolder.CreateFolderAsync("BackgroundThemeTmp",
CreationCollisionOption.OpenIfExists);
if (backgroundThemeTmpFolder == null)
{
return null;
}
var item = await backgroundThemeTmpFolder.TryGetItemAsync(file.Name);
if (item == null)
{
var storageFile = await file.CopyAsync(backgroundThemeTmpFolder, file.Name);
return new ImageFile(storageFile.DisplayName, storageFile.FileType,
$@"{backgroundThemeTmpFolder.Path}\{storageFile.Name}");
}
return new ImageFile(file.DisplayName, file.FileType, $@"{backgroundThemeTmpFolder.Path}\{item.Name}");
}
public async Task RemoveImportedImageAsync(string fileName)
{
var backgroundThemeFolder =
await ApplicationData.Current.RoamingFolder.CreateFolderAsync("BackgroundTheme",
CreationCollisionOption.OpenIfExists);
if (backgroundThemeFolder == null)
{
return;
}
var item = await backgroundThemeFolder.TryGetItemAsync(fileName);
if (item == null)
{
return;
}
var file = await backgroundThemeFolder.GetFileAsync(fileName);
if (file != null)
{
await file.DeleteAsync(StorageDeleteOption.PermanentDelete);
}
}
public string EncodeImage(ImageFile imageFile)
{
if(imageFile == null)
{
return string.Empty;
}
if (!System.IO.File.Exists(imageFile.Path))
{
return string.Empty;
}
return Convert.ToBase64String(System.IO.File.ReadAllBytes(imageFile.Path));
}
public async Task<ImageFile> ImportThemeImageAsync(ImageFile backgroundImage, string encodedImage)
{
var bitmapData = Convert.FromBase64String(encodedImage);
var streamBitmap = new MemoryStream(bitmapData);
var localFolder =
await ApplicationData.Current.RoamingFolder.CreateFolderAsync("BackgroundTheme",
CreationCollisionOption.OpenIfExists);
var storageFile = await localFolder.CreateFileAsync($"{backgroundImage.Name}{backgroundImage.FileType}",
CreationCollisionOption.GenerateUniqueName);
using (var stream = await storageFile.OpenStreamForWriteAsync())
{
stream.Seek(0, SeekOrigin.Begin);
streamBitmap.WriteTo(stream);
}
return new ImageFile(storageFile.DisplayName, storageFile.FileType, storageFile.Path);
}
}
}
================================================
FILE: FluentTerminal.App/Services/StartupTaskService.cs
================================================
using FluentTerminal.Models.Enums;
using System;
using System.Threading.Tasks;
using Windows.ApplicationModel;
namespace FluentTerminal.App.Services
{
public class StartupTaskService : IStartupTaskService
{
private const string StartupTaskName = "FluentTerminalStartupTask";
public Task<StartupTaskStatus> GetStatusAsync()
{
return StartupTask.GetAsync(StartupTaskName).AsTask().ContinueWith(t => ToStartupTaskStatus(t.Result.State),
TaskContinuationOptions.OnlyOnRanToCompletion);
}
public async Task<StartupTaskStatus> EnableStartupTaskAsync()
{
var startupTask = await StartupTask.GetAsync(StartupTaskName);
var newState = await startupTask.RequestEnableAsync();
return ToStartupTaskStatus(newState);
}
public Task DisableStartupTaskAsync()
{
return StartupTask.GetAsync(StartupTaskName).AsTask().ContinueWith(t => t.Result.Disable(),
TaskContinuationOptions.OnlyOnRanToCompletion);
}
private StartupTaskStatus ToStartupTaskStatus(StartupTaskState state)
{
return state switch
{
StartupTaskState.Disabled => StartupTaskStatus.Disabled,
StartupTaskState.DisabledByUser => StartupTaskStatus.DisabledByUser,
StartupTaskState.Enabled => StartupTaskStatus.Enabled,
StartupTaskState.DisabledByPolicy => StartupTaskStatus.DisabledByPolicy,
StartupTaskState.EnabledByPolicy => StartupTaskStatus.EnabledByPolicy,
_ => throw new ArgumentOutOfRangeException(nameof(state), state, null)
};
}
}
}
================================================
FILE: FluentTerminal.App/Services/SystemFontService.cs
================================================
using Microsoft.Graphics.Canvas.Text;
using System.Collections.Generic;
namespace FluentTerminal.App.Services
{
public class SystemFontService : ISystemFontService
{
public IEnumerable<string> GetSystemFontFamilies()
{
return CanvasTextFormat.GetSystemFontFamilies();
}
}
}
================================================
FILE: FluentTerminal.App/Strings/ar/Resources.resw
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute
gitextract_0v3c3gm7/ ├── .gitattributes ├── .github/ │ └── workflows/ │ └── main.yml ├── .gitignore ├── Explorer Context Menu Integration/ │ ├── Install.bat │ ├── Install_with_icon.bat │ ├── README.md │ └── Uninstall.bat ├── FluentTerminal.App/ │ ├── Actions/ │ │ └── FocusAction.cs │ ├── Adapters/ │ │ ├── AppServiceConnectionAdapter.cs │ │ ├── ApplicationViewAdapter.cs │ │ └── MessageDialogAdapter.cs │ ├── App.xaml │ ├── App.xaml.cs │ ├── Behaviors/ │ │ └── MiddleClickBehavior.cs │ ├── CommandLineArguments/ │ │ ├── NewVerb.cs │ │ ├── RunVerb.cs │ │ ├── SettingsVerb.cs │ │ └── Target.cs │ ├── Converters/ │ │ ├── BackgroundToApplicationThemeConverter.cs │ │ ├── BooleanNegationConverter.cs │ │ ├── ColorResourceKeyFallbackConverter.cs │ │ ├── EnumValueToVisibiltyConverter.cs │ │ ├── FalseToVisibleConverter.cs │ │ ├── I18NConverter.cs │ │ ├── IconConverter.cs │ │ ├── IntToExtendedVirtualKeyConverter.cs │ │ ├── IntToVisibilityConverter.cs │ │ ├── MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs │ │ ├── MenuViewModelToFlyoutMenuConverter.cs │ │ ├── NegateConverter.cs │ │ ├── NullToCollapsedConverter.cs │ │ ├── StringToColorConverter.cs │ │ ├── TabColorFallbackConverter.cs │ │ ├── TabThemeSelectedConverter.cs │ │ ├── TerminalViewModelToViewConverter.cs │ │ ├── TextMiddleEllipsisConverter.cs │ │ ├── ToolTipValueToPixelConverter.cs │ │ └── TrueToVisibleConverter.cs │ ├── Dialogs/ │ │ ├── AboutDialog.xaml │ │ ├── AboutDialog.xaml.cs │ │ ├── CreateKeyBindingDialog.xaml │ │ ├── CreateKeyBindingDialog.xaml.cs │ │ ├── CustomCommandDialog.xaml │ │ ├── CustomCommandDialog.xaml.cs │ │ ├── InputDialog.xaml │ │ ├── InputDialog.xaml.cs │ │ ├── SshInfoDialog.xaml │ │ └── SshInfoDialog.xaml.cs │ ├── FluentTerminal.App.csproj │ ├── Package.appxmanifest │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ ├── Services/ │ │ ├── ApplicationLanguageService.cs │ │ ├── ClipboardService.cs │ │ ├── CommandHistoryService.cs │ │ ├── FileSystemService.cs │ │ ├── ImageFileSystemService.cs │ │ ├── StartupTaskService.cs │ │ └── SystemFontService.cs │ ├── Strings/ │ │ ├── ar/ │ │ │ └── Resources.resw │ │ ├── ar-iq/ │ │ │ └── Resources.resw │ │ ├── az-Latn/ │ │ │ └── Resources.resw │ │ ├── bg/ │ │ │ └── Resources.resw │ │ ├── bs/ │ │ │ └── Resources.resw │ │ ├── de/ │ │ │ └── Resources.resw │ │ ├── en-US/ │ │ │ └── Resources.resw │ │ ├── eo/ │ │ │ └── Resources.resw │ │ ├── es/ │ │ │ └── Resources.resw │ │ ├── fa/ │ │ │ └── Resources.resw │ │ ├── fr/ │ │ │ └── Resources.resw │ │ ├── he/ │ │ │ └── Resources.resw │ │ ├── hi/ │ │ │ └── Resources.resw │ │ ├── hr/ │ │ │ └── Resources.resw │ │ ├── hu/ │ │ │ └── Resources.resw │ │ ├── id/ │ │ │ └── Resources.resw │ │ ├── it/ │ │ │ └── Resources.resw │ │ ├── ja/ │ │ │ └── Resources.resw │ │ ├── ko/ │ │ │ └── Resources.resw │ │ ├── nl/ │ │ │ └── Resources.resw │ │ ├── pl/ │ │ │ └── Resources.resw │ │ ├── pt/ │ │ │ └── Resources.resw │ │ ├── pt-BR/ │ │ │ └── Resources.resw │ │ ├── ro/ │ │ │ └── Resources.resw │ │ ├── ru/ │ │ │ └── Resources.resw │ │ ├── sl/ │ │ │ └── Resources.resw │ │ ├── sq/ │ │ │ └── Resources.resw │ │ ├── sr-Latn/ │ │ │ └── Resources.resw │ │ ├── sr-cyrl/ │ │ │ └── Resources.resw │ │ ├── sv/ │ │ │ └── Resources.resw │ │ ├── tr/ │ │ │ └── Resources.resw │ │ ├── ug-Arab/ │ │ │ └── Resources.resw │ │ ├── uk/ │ │ │ └── Resources.resw │ │ ├── uz-Latn/ │ │ │ └── Resources.resw │ │ ├── vi/ │ │ │ └── Resources.resw │ │ ├── zh-Hans/ │ │ │ └── Resources.resw │ │ └── zh-Hant/ │ │ └── Resources.resw │ ├── Styles/ │ │ └── Custom.xaml │ ├── Utilities/ │ │ ├── ColorExtensions.cs │ │ ├── ContrastHelper.cs │ │ ├── DelayedAction.cs │ │ ├── DispatcherExtensions.cs │ │ ├── InteractiveSurface.cs │ │ └── JumpListHelper.cs │ ├── ViewModels/ │ │ ├── CommandItemViewModel.cs │ │ ├── CommandProfileProviderViewModel.cs │ │ ├── DelayedHistorySaver.cs │ │ ├── EnvironmentVariableViewModel.cs │ │ ├── ISessionSuccessTracker.cs │ │ ├── ITerminalView.cs │ │ ├── Infrastructure/ │ │ │ └── IErrorHandler.cs │ │ ├── MainViewModel.cs │ │ ├── Menu/ │ │ │ ├── ExpandableMenuItemViewModel.cs │ │ │ ├── Mdl2Icon.cs │ │ │ ├── MenuItemKeyBindingViewModel.cs │ │ │ ├── MenuItemViewModel.cs │ │ │ ├── MenuItemViewModelBase.cs │ │ │ ├── MenuViewModel.cs │ │ │ ├── RadioMenuItemViewModel.cs │ │ │ ├── SeparatorMenuItemViewModel.cs │ │ │ └── ToggleMenuItemViewModel.cs │ │ ├── OverlayViewModel.cs │ │ ├── ProfileViewModelBase.cs │ │ ├── Profiles/ │ │ │ ├── CommonProfileProviderViewModel.cs │ │ │ ├── ProfileProviderViewModelBase.cs │ │ │ ├── SshConnectViewModel.cs │ │ │ └── SshConnectionInfoValidationResult.cs │ │ ├── Settings/ │ │ │ ├── AboutPageViewModel.cs │ │ │ ├── GeneralPageViewModel.cs │ │ │ ├── KeyBindingViewModel.cs │ │ │ ├── KeyBindingsPageViewModel.cs │ │ │ ├── KeyBindingsViewModel.cs │ │ │ ├── MousePageViewModel.cs │ │ │ ├── ProfilesPageViewModel.cs │ │ │ ├── SshProfilesPageViewModel.cs │ │ │ ├── TerminalPageViewModel.cs │ │ │ └── ThemesPageViewModel.cs │ │ ├── SettingsViewModel.cs │ │ ├── ShellProfileViewModel.cs │ │ ├── SshProfileViewModel.cs │ │ ├── TabThemeViewModel.cs │ │ ├── TerminalViewModel.cs │ │ ├── ThemeViewModel.cs │ │ └── Utilities/ │ │ ├── TaskUtilities.cs │ │ └── WebViewSpecialCharEncoder.cs │ └── Views/ │ ├── BooleanTemplateSelector.cs │ ├── EnvironmentVariablesView.xaml │ ├── EnvironmentVariablesView.xaml.cs │ ├── KeyBindingsView.xaml │ ├── KeyBindingsView.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── MenuExtension.cs │ ├── NoValueTemplateSelector.cs │ ├── OverlayView.xaml │ ├── OverlayView.xaml.cs │ ├── SettingsPage.xaml │ ├── SettingsPage.xaml.cs │ ├── SettingsPages/ │ │ ├── GeneralSettings.xaml │ │ ├── GeneralSettings.xaml.cs │ │ ├── KeyBindingSettings.xaml │ │ ├── KeyBindingSettings.xaml.cs │ │ ├── MouseSettings.xaml │ │ ├── MouseSettings.xaml.cs │ │ ├── ShellProfileSettings.xaml │ │ ├── ShellProfileSettings.xaml.cs │ │ ├── SshProfileSettings.xaml │ │ ├── SshProfileSettings.xaml.cs │ │ ├── TerminalSettings.xaml │ │ ├── TerminalSettings.xaml.cs │ │ ├── ThemeSettings.xaml │ │ └── ThemeSettings.xaml.cs │ ├── TabBar.xaml │ ├── TabBar.xaml.cs │ ├── TabBarBackgroundBindingHelper.cs │ ├── TabThemeTemplateSelector.cs │ ├── TemplateSelectors.xaml │ ├── TemplateSelectors.xaml.cs │ ├── TerminalColorPicker.xaml │ ├── TerminalColorPicker.xaml.cs │ ├── TerminalKeybindTemplateSelector.cs │ ├── TerminalThemeTemplateSelector.cs │ ├── TerminalView.xaml │ ├── TerminalView.xaml.cs │ ├── XtermTerminalView.xaml │ └── XtermTerminalView.xaml.cs ├── FluentTerminal.App.Services/ │ ├── Adapters/ │ │ └── ApplicationDataContainerAdapter.cs │ ├── ApplicationDataContainers.cs │ ├── Constants.cs │ ├── Dialogs/ │ │ ├── IAboutDialog.cs │ │ ├── ICreateKeyBindingDialog.cs │ │ ├── ICustomCommandDialog.cs │ │ ├── IInputDialog.cs │ │ ├── IMessageDialog.cs │ │ └── ISshConnectionInfoDialog.cs │ ├── EventArgs/ │ │ ├── CancelableEventArgs.cs │ │ ├── NewTabRequestedEventArgs.cs │ │ └── NewWindowRequestedEventArgs.cs │ ├── Exceptions/ │ │ ├── ParseThemeException.cs │ │ ├── ReadTextFileException.cs │ │ └── SaveTextFileException.cs │ ├── FluentTerminal.App.Services.csproj │ ├── IAppServiceConnection.cs │ ├── IApplicationDataContainer.cs │ ├── IApplicationLanguageService.cs │ ├── IApplicationView.cs │ ├── IClipboardService.cs │ ├── ICommandHistoryService.cs │ ├── IDefaultValueProvider.cs │ ├── IDialogService.cs │ ├── IFileSystemService.cs │ ├── IImageFileSystemService.cs │ ├── IKeyboardCommandService.cs │ ├── INotificationService.cs │ ├── ISettingsService.cs │ ├── IShellProfileMigrationService.cs │ ├── IStartupTaskService.cs │ ├── ISystemFontService.cs │ ├── IThemeParser.cs │ ├── IThemeParserFactory.cs │ ├── ITrayProcessCommunicationService.cs │ ├── IUpdateService.cs │ ├── Implementation/ │ │ ├── DefaultValueProvider.cs │ │ ├── DialogService.cs │ │ ├── FluentTerminalThemeParser.cs │ │ ├── ITermThemeParser.cs │ │ ├── KeyboardCommandService.cs │ │ ├── MoshBackwardCompatibility.cs │ │ ├── NotificationService.cs │ │ ├── SettingsService.cs │ │ ├── ShellProfileMigrationService.cs │ │ ├── ThemeParserFactory.cs │ │ ├── TrayProcessCommunicationService.cs │ │ └── UpdateService.cs │ ├── Logger.cs │ ├── Terminal.cs │ └── Utilities/ │ ├── EnumHelper.cs │ ├── I18N.cs │ ├── PreserveDictionaryKeyCaseContractResolver.cs │ └── TerminalThemeContractResolver.cs ├── FluentTerminal.App.Services.Test/ │ ├── DefaultValueProviderTests.cs │ ├── DialogServiceTests.cs │ ├── FluentTerminal.App.Services.Test.csproj │ ├── FluentTerminalThemeParserTests.cs │ ├── ITermThemeParserTests.cs │ ├── KeyboardCommandServiceTests.cs │ ├── SettingsServiceTests.cs │ ├── TestData/ │ │ └── AdventureTime.itermcolors │ ├── ThemeParserFactoryTests.cs │ └── TrayProcessCommunicationServiceTests.cs ├── FluentTerminal.App.ViewModels/ │ ├── DelayedHistorySaver.cs │ ├── EnvironmentVariableViewModel.cs │ ├── FluentTerminal.App.ViewModels.csproj │ ├── ISessionSuccessTracker.cs │ ├── ITerminalView.cs │ ├── Infrastructure/ │ │ └── IErrorHandler.cs │ ├── MainViewModel.cs │ ├── Menu/ │ │ ├── ExpandableMenuItemViewModel.cs │ │ ├── Mdl2Icon.cs │ │ ├── MenuItemKeyBindingViewModel.cs │ │ ├── MenuItemViewModel.cs │ │ ├── MenuItemViewModelBase.cs │ │ ├── MenuViewModel.cs │ │ ├── RadioMenuItemViewModel.cs │ │ ├── SeparatorMenuItemViewModel.cs │ │ └── ToggleMenuItemViewModel.cs │ ├── OverlayViewModel.cs │ ├── ProfileViewModelBase.cs │ ├── Profiles/ │ │ ├── CommonProfileProviderViewModel.cs │ │ ├── ProfileProviderViewModelBase.cs │ │ ├── SshConnectViewModel.cs │ │ └── SshConnectionInfoValidationResult.cs │ ├── Settings/ │ │ ├── AboutPageViewModel.cs │ │ ├── GeneralPageViewModel.cs │ │ ├── KeyBindingViewModel.cs │ │ ├── KeyBindingsPageViewModel.cs │ │ ├── KeyBindingsViewModel.cs │ │ ├── MousePageViewModel.cs │ │ ├── ProfilesPageViewModel.cs │ │ ├── SshProfilesPageViewModel.cs │ │ ├── TerminalPageViewModel.cs │ │ └── ThemesPageViewModel.cs │ ├── SettingsViewModel.cs │ ├── ShellProfileViewModel.cs │ ├── SshProfileViewModel.cs │ ├── TabThemeViewModel.cs │ ├── TerminalViewModel.cs │ ├── ThemeViewModel.cs │ └── Utilities/ │ ├── TaskUtilities.cs │ └── WebViewSpecialCharEncoder.cs ├── FluentTerminal.Client/ │ ├── .gitignore │ ├── package.json │ ├── src/ │ │ ├── index.html │ │ ├── index.ts │ │ └── style.css │ ├── tsconfig.json │ └── webpack.config.js ├── FluentTerminal.Models/ │ ├── ApplicationSettings.cs │ ├── Enums/ │ │ ├── BellStyle.cs │ │ ├── Command.cs │ │ ├── CursorStyle.cs │ │ ├── ExtendedVirtualKey.cs │ │ ├── InactiveTabColorMode.cs │ │ ├── MouseAction.cs │ │ ├── NewTerminalLocation.cs │ │ ├── ScrollBarStyle.cs │ │ ├── SessionType.cs │ │ ├── StartupTaskStatus.cs │ │ ├── TabThemeKey.cs │ │ └── TabsPosition.cs │ ├── ExecutedCommand.cs │ ├── ExportedTerminalTheme.cs │ ├── File.cs │ ├── FluentTerminal.Models.csproj │ ├── IMessage.cs │ ├── ImageFile.cs │ ├── KeyBinding.cs │ ├── MessageIdentifiers.cs │ ├── MessageKeys.cs │ ├── Messages/ │ │ ├── ApplicationSettingsChangedMessage.cs │ │ ├── CommandHistoryChangedMessage.cs │ │ ├── CurrentThemeChangedMessage.cs │ │ ├── DefaultShellProfileChangedMessage.cs │ │ ├── KeyBindingsChangedMessage.cs │ │ ├── ShellProfileAddedMessage.cs │ │ ├── ShellProfileChangedMessage.cs │ │ ├── ShellProfileDeletedMessage.cs │ │ ├── TerminalOptionsChangedMessage.cs │ │ ├── ThemeAddedMessage.cs │ │ └── ThemeDeletedMessage.cs │ ├── Requests/ │ │ ├── CheckFileExistsRequest.cs │ │ ├── CreateTerminalRequest.cs │ │ ├── GetCommandPathRequest.cs │ │ ├── GetSshConfigFolderRequest.cs │ │ ├── GetUserNameRequest.cs │ │ ├── MuteTerminalRequest.cs │ │ ├── PauseTerminalOutputRequest.cs │ │ ├── QuitApplicationRequest.cs │ │ ├── ReadTextFileRequest.cs │ │ ├── ResizeTerminalRequest.cs │ │ ├── SaveTextFileRequest.cs │ │ ├── SetToggleWindowKeyBindingsRequest.cs │ │ ├── TerminalExitedRequest.cs │ │ └── UpdateSettingsRequest.cs │ ├── Responses/ │ │ ├── CommonResponse.cs │ │ ├── CreateTerminalResponse.cs │ │ ├── GetSshConfigFolderResponse.cs │ │ ├── PauseTerminalOutputResponse.cs │ │ ├── StringValueResponse.cs │ │ └── TerminalResponse.cs │ ├── SearchRequest.cs │ ├── ShellProfile.cs │ ├── SshProfile.cs │ ├── StringExtensions.cs │ ├── TabTheme.cs │ ├── TerminalColors.cs │ ├── TerminalExitStatus.cs │ ├── TerminalOptions.cs │ ├── TerminalOutput.cs │ ├── TerminalSize.cs │ └── TerminalTheme.cs ├── FluentTerminal.Package/ │ ├── FluentTerminal.Package.wapproj │ ├── Package.appxmanifest │ ├── priconfig.default.xml │ └── priconfig.packaging.xml ├── FluentTerminal.RuntimeComponent/ │ ├── Enums/ │ │ └── MouseButton.cs │ ├── FluentTerminal.RuntimeComponent.csproj │ ├── Interfaces/ │ │ └── IxtermEventListener.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ └── WebAllowedObjects/ │ └── TerminalBridge.cs ├── FluentTerminal.SystemTray/ │ ├── App.config │ ├── BufferedReader.cs │ ├── FileFinder.cs │ ├── FluentTerminal.SystemTray.csproj │ ├── Native/ │ │ ├── ProcessApi.cs │ │ └── WindowApi.cs │ ├── ProcessUtils.cs │ ├── Program.cs │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── Services/ │ │ ├── AppCommunicationService.cs │ │ ├── ConPty/ │ │ │ ├── ConPtySession.cs │ │ │ ├── Native/ │ │ │ │ ├── ConsoleApi.cs │ │ │ │ ├── ProcessApi.cs │ │ │ │ └── PseudoConsoleApi.cs │ │ │ ├── Processes/ │ │ │ │ ├── Process.cs │ │ │ │ └── ProcessFactory.cs │ │ │ ├── PseudoConsole.cs │ │ │ ├── PseudoConsolePipe.cs │ │ │ └── Terminal.cs │ │ ├── ITerminalSession.cs │ │ ├── TerminalsManager.cs │ │ ├── ToggleWindowService.cs │ │ └── WinPty/ │ │ └── WinPtySession.cs │ ├── SystemTrayApplicationContext.cs │ ├── Utilities.cs │ ├── VolumeControl.cs │ └── app.manifest ├── FluentTerminal.sln ├── LICENSE ├── MOSH_README.md ├── README.md ├── UpdateTranslations.ps1 └── nuget.config
SYMBOL INDEX (1786 symbols across 304 files)
FILE: FluentTerminal.App.Services.Test/DefaultValueProviderTests.cs
class DefaultValueProviderTests (line 10) | public class DefaultValueProviderTests
method GetDefaultApplicationSettings_Default_DoesNotReturnNull (line 14) | [Fact]
method GetDefaultKeyBindings_AllCommands_ReturnsANonEmptyList (line 24) | [Theory]
method GetDefaultShellProfileId_Default_DoesNotReturnEmptyGuid (line 35) | [Fact]
method GetDefaultShellProfileId_Default_IdIsOneOfThePreInstalledShellProfiles (line 45) | [Fact]
method GetDefaultTerminalOptions_Default_DoesNotReturnNull (line 56) | [Fact]
method GetDefaultThemeId_Default_DoesNotReturnEmptyGuid (line 66) | [Fact]
method GetDefaultThemeId_Default_IdIsOneOfThePreInstalledThemes (line 76) | [Fact]
method GetPreinstalledShellProfiles_Default_ReturnsANonEmptyList (line 87) | [Fact]
method GetPreinstalledShellProfiles_Default_HaveUniqueIds (line 97) | [Fact]
method GetPreinstalledShellProfiles_Default_HavePreInstalledSetToTrue (line 107) | [Fact]
method GetPreinstalledShellProfiles_Default_HaveNonEmptyLocations (line 117) | [Fact]
method GetPreInstalledThemes_Default_ReturnsANonEmptyList (line 127) | [Fact]
method GetPreinstalledThemes_Default_HaveUniqueIds (line 137) | [Fact]
method GetPreinstalledThemes_Default_HavePreInstalledSetToTrue (line 147) | [Fact]
FILE: FluentTerminal.App.Services.Test/DialogServiceTests.cs
class DialogServiceTests (line 13) | public class DialogServiceTests
method DialogServiceTests (line 17) | public DialogServiceTests()
method ShowCreateKeyBindingDialog_Default_UsesCreateKeyBindingDialog (line 22) | [Fact]
method ShowMessageDialogAsnyc_TitleIsEmpty_ThrowsArgumentNullException (line 33) | [Fact]
method ShowMessageDialogAsnyc_ContentIsEmpty_ThrowsArgumentNullException (line 46) | [Fact]
method ShowMessageDialogAsnyc_NoButtonsPassed_ThrowsArgumentException (line 59) | [Fact]
method ShowMessageDialogAsnyc_Default_UsesMessageDialog (line 71) | [Fact]
method ShowInputDialogAsync_UsesIInputDialogSetTitle (line 85) | [Fact]
FILE: FluentTerminal.App.Services.Test/FluentTerminalThemeParserTests.cs
class FluentTerminalThemeParserTests (line 14) | public class FluentTerminalThemeParserTests
method FluentTerminalThemeParserTests (line 18) | public FluentTerminalThemeParserTests()
method Parse_ValidFileStream_ReturnsTheme (line 23) | [Fact]
method Parse_InvalidFileStream_ThrowsException (line 39) | [Fact]
method Parse_InvalidFileName_ThrowsArgumentNullException (line 52) | [Theory]
method Parse_FileStreamIsNull_ThrowsArgumentNullException (line 68) | [Fact]
FILE: FluentTerminal.App.Services.Test/ITermThemeParserTests.cs
class ITermThemeParserTests (line 13) | public class ITermThemeParserTests
method ITermThemeParserTests (line 17) | public ITermThemeParserTests()
method Parse_InvalidFileName_ThrowsArgumentNullException (line 22) | [Theory]
method Parse_FileStreamIsNull_ThrowsArgumentNullException (line 36) | [Fact]
method Parse_InvalidFileStream_ThrowsException (line 48) | [Fact]
method Parse_ValidThemeFile_ParsesCorrectly (line 61) | [Fact]
FILE: FluentTerminal.App.Services.Test/KeyboardCommandServiceTests.cs
class KeyboardCommandServiceTests (line 11) | public class KeyboardCommandServiceTests
method KeyboardCommandServiceTests (line 15) | public KeyboardCommandServiceTests()
method RegisterCommandHandler_HandlerIsNull_ThrowsArgumentNullException (line 20) | [Fact]
method RegisterCommandHandler_CommandAlreadyRegisted_ThrowsInvalidOperationException (line 32) | [Fact]
method DeregisterCommandHandler_CommandIsNull_ThrowsArgumentNullException (line 45) | [Fact]
method DeregisterCommandHandler_CommandRegistered_HandlerGetsRemoved (line 55) | [Fact]
method DeregisterCommandHandler_CommandNotRegistered_ShouldNotThrow (line 69) | [Fact]
method SendCommand_CommandIsRegistered_HandlerGetsInvoked (line 80) | [Fact]
method SendCommand_CommandIsNotRegisted_KeyNotFoundExceptionIsThrown (line 93) | [Fact]
method SendCommand_CommandIsToggleWindow_ShouldNotThrow (line 104) | [Fact]
FILE: FluentTerminal.App.Services.Test/SettingsServiceTests.cs
class SettingsServiceTests (line 18) | public class SettingsServiceTests
method SettingsServiceTests (line 22) | public SettingsServiceTests()
method Constructor_Default_WritesAllPreinstalledThemesInThemeContainer (line 27) | [Fact]
method Constructor_Default_WritesAllPreinstalledShellProfilesInShellProfilesContainer (line 53) | [Fact]
method GetCurrentThemeId_ValueExistsInRoamingSettings_ReturnsCurrentThemeId (line 79) | [Fact]
method GetCurrentThemeId_ValueDoesNotExistInRoamingSettings_ReturnsDefaultThemeIdFromDefaultValueProvider (line 103) | [Fact]
method SaveCurrentThemeId_Default_SetsValueOnRoamingSettings (line 130) | [Fact]
method SaveCurrentThemeId_Default_InvokesCurrentThemeChangedEvent (line 152) | [Fact]
method SaveTheme_Default_WritesToThemesContainer (line 177) | [Fact]
method SaveTheme_ThemeIsCurrentTheme_InvokesCurrentThemeChangedEvent (line 199) | [Fact]
method DeleteTheme_Default_CallsDeleteOnThemesContainer (line 227) | [Fact]
method GetThemes_Default_CallsGetAllOnThemesContainer (line 249) | [Fact]
method GetTheme_ValidThemeId_ReturnsThemeFromThemesContainer (line 273) | [Fact]
method GetTheme_UnknownThemeId_ReturnsNull (line 297) | [Fact]
method GetTerminalOptions_Default_ReturnsTerminalOptionsFromRoamingSettings (line 321) | [Fact]
method SaveTerminalOptions_Default_WritesToRoamingSettings (line 345) | [Fact]
method SaveTerminalOptions_Default_InvokesTerminalOptionsChangedEvent (line 367) | [Fact]
method GetApplicationSettings_Default_ReturnsApplicationSettingsFromRoamingSettings (line 392) | [Fact]
method SaveApplicationSettings_Default_WritesToRoamingSettings (line 416) | [Fact]
method SaveApplicationSettings_Default_InvokesApplicationSettingsChangedEvent (line 438) | [Fact]
method GetKeyBindings_KeyBindingsInKeyBindingsContainer_ReturnsKeyBindingsFromKeyBindingsContainer (line 462) | [Fact]
method GetKeyBindings_KeyBindingsNotInKeyBindingsContainer_ReturnsKeyBindingsFromDefaultValueProvider (line 491) | [Fact]
method SaveKeyBindings_Default_WritesToKeyBindingsContainer (line 516) | [Fact]
method SaveKeyBindings_Default_InvokesKeyBindingsChangedEvent (line 539) | [Fact]
method ResetKeyBindings_Default_WritesToKeyBindingsContainerFromDefaultValueProvider (line 565) | [Fact]
method ResetKeyBindings_Default_InvokesKeyBindingsChangedEvent (line 590) | [Fact]
method GetDefaultShellProfileId_ValueExistsInRoamingSettings_ReturnsDefaultShellProfileId (line 614) | [Fact]
method GetDefaultShellProfileId_ValueDoesNotExistInRoamingSettings_ReturnsDefaultShellProfileIdFromDefaultValueProvider (line 638) | [Fact]
method GetShellProfiles_Default_CallsGetAllOnShellProfilesContainer (line 665) | [Fact]
method SaveShellProfile_Default_WritesToShellProfilesContainer (line 689) | [Fact]
method DeleteShellProfile_Default_CallsDeleteOnShellProfilesContainer (line 711) | [Fact]
method GetDefaultShellProfile_ProfileNotFound_DefaultShellProfileIdGetsResetToDefault (line 733) | [Fact]
method GetCurrentTheme_ThemeNotFound_CurrentThemeIdGetsResetToDefault (line 762) | [Fact]
FILE: FluentTerminal.App.Services.Test/ThemeParserFactoryTests.cs
class ThemeParserFactoryTests (line 9) | public class ThemeParserFactoryTests
method ThemeParserFactoryTests (line 13) | public ThemeParserFactoryTests()
method GetParser_SupportedFileType_ReturnsParser (line 18) | [Fact]
method GetParser_UnsupportedFileType_ReturnsNull (line 31) | [Fact]
FILE: FluentTerminal.App.Services.Test/TrayProcessCommunicationServiceTests.cs
class TrayProcessCommunicationServiceTests (line 18) | public class TrayProcessCommunicationServiceTests
method TrayProcessCommunicationServiceTests (line 22) | public TrayProcessCommunicationServiceTests()
method CreateTerminal_Default_ReturnsResponseFromAppServiceConnection (line 27) | [Fact]
method ResizeTerminal_Default_SendsResizeTerminalRequest (line 56) | [Fact]
method Write_Default_SendsWriteDataRequest (line 76) | [Fact]
method CloseTerminal_Default_SendsTerminalExitedRequest (line 96) | [Fact]
method OnMessageReceived_TerminalExitedRequest_InvokesTerminalExitedEvent (line 115) | [Fact]
method OnMessageReceived_DisplayTerminalOutputRequest_InvokesCorrectOutputHandler (line 148) | [Fact]
FILE: FluentTerminal.App.Services/Adapters/ApplicationDataContainerAdapter.cs
class ApplicationDataContainerAdapter (line 10) | public class ApplicationDataContainerAdapter : IApplicationDataContainer
method ApplicationDataContainerAdapter (line 14) | public ApplicationDataContainerAdapter(ApplicationDataContainer applic...
method Delete (line 19) | public void Delete(string key)
method Clear (line 24) | public void Clear()
method GetAll (line 29) | public IEnumerable<object> GetAll()
method ReadValueFromJson (line 34) | public T ReadValueFromJson<T>(string name, T fallbackValue)
method SetValue (line 48) | public void SetValue(string key, object value)
method TryGetValue (line 53) | public bool TryGetValue(string key, out object value)
method WriteValueAsJson (line 58) | public void WriteValueAsJson<T>(string name, T value)
FILE: FluentTerminal.App.Services/ApplicationDataContainers.cs
class ApplicationDataContainers (line 3) | public class ApplicationDataContainers
FILE: FluentTerminal.App.Services/Constants.cs
class Constants (line 3) | public static class Constants
FILE: FluentTerminal.App.Services/Dialogs/IAboutDialog.cs
type IAboutDialog (line 5) | public interface IAboutDialog
method ShowAsync (line 7) | Task ShowAsync();
FILE: FluentTerminal.App.Services/Dialogs/ICreateKeyBindingDialog.cs
type ICreateKeyBindingDialog (line 6) | public interface ICreateKeyBindingDialog
method CreateKeyBinding (line 8) | Task<KeyBinding> CreateKeyBinding();
FILE: FluentTerminal.App.Services/Dialogs/ICustomCommandDialog.cs
type ICustomCommandDialog (line 6) | public interface ICustomCommandDialog
method GetCustomCommandAsync (line 8) | Task<ShellProfile> GetCustomCommandAsync(ShellProfile input = null);
FILE: FluentTerminal.App.Services/Dialogs/IInputDialog.cs
type IInputDialog (line 5) | public interface IInputDialog
method SetTitle (line 7) | void SetTitle(string title);
method GetInput (line 8) | Task<string> GetInput();
FILE: FluentTerminal.App.Services/Dialogs/IMessageDialog.cs
type IMessageDialog (line 5) | public interface IMessageDialog
method AddButton (line 10) | void AddButton(DialogButton button);
method ShowAsync (line 12) | Task<DialogButton> ShowAsync();
FILE: FluentTerminal.App.Services/Dialogs/ISshConnectionInfoDialog.cs
type ISshConnectionInfoDialog (line 6) | public interface ISshConnectionInfoDialog
method GetSshConnectionInfoAsync (line 8) | Task<SshProfile> GetSshConnectionInfoAsync(SshProfile input = null);
FILE: FluentTerminal.App.Services/EventArgs/CancelableEventArgs.cs
class CancelableEventArgs (line 3) | public class CancelableEventArgs : System.EventArgs
FILE: FluentTerminal.App.Services/EventArgs/NewTabRequestedEventArgs.cs
class NewTabRequestedEventArgs (line 5) | public class NewTabRequestedEventArgs : System.EventArgs
FILE: FluentTerminal.App.Services/EventArgs/NewWindowRequestedEventArgs.cs
class NewWindowRequestedEventArgs (line 6) | public class NewWindowRequestedEventArgs : System.EventArgs
method NewWindowRequestedEventArgs (line 10) | public NewWindowRequestedEventArgs(ShellProfile profile) =>
FILE: FluentTerminal.App.Services/Exceptions/ParseThemeException.cs
class ParseThemeException (line 5) | public class ParseThemeException : Exception
method ParseThemeException (line 7) | public ParseThemeException() : base()
method ParseThemeException (line 11) | public ParseThemeException(string message) : base(message)
method ParseThemeException (line 15) | public ParseThemeException(string message, Exception innerException) :...
method ParseThemeException (line 19) | protected ParseThemeException(System.Runtime.Serialization.Serializati...
FILE: FluentTerminal.App.Services/Exceptions/ReadTextFileException.cs
class ReadTextFileException (line 5) | public class ReadTextFileException : Exception
method ReadTextFileException (line 7) | public ReadTextFileException() : base()
method ReadTextFileException (line 11) | public ReadTextFileException(string message) : base(message)
method ReadTextFileException (line 15) | public ReadTextFileException(string message, Exception innerException)...
method ReadTextFileException (line 19) | protected ReadTextFileException(System.Runtime.Serialization.Serializa...
FILE: FluentTerminal.App.Services/Exceptions/SaveTextFileException.cs
class SaveTextFileException (line 5) | public class SaveTextFileException : Exception
method SaveTextFileException (line 7) | public SaveTextFileException() : base()
method SaveTextFileException (line 11) | public SaveTextFileException(string message) : base(message)
method SaveTextFileException (line 15) | public SaveTextFileException(string message, Exception innerException)...
method SaveTextFileException (line 19) | protected SaveTextFileException(System.Runtime.Serialization.Serializa...
FILE: FluentTerminal.App.Services/IAppServiceConnection.cs
type IAppServiceConnection (line 7) | public interface IAppServiceConnection
method SendMessageAsync (line 11) | Task<ValueSet> SendMessageAsync(ValueSet message);
FILE: FluentTerminal.App.Services/IApplicationDataContainer.cs
type IApplicationDataContainer (line 5) | public interface IApplicationDataContainer
method ReadValueFromJson (line 7) | T ReadValueFromJson<T>(string name, T fallbackValue);
method WriteValueAsJson (line 9) | void WriteValueAsJson<T>(string name, T value);
method TryGetValue (line 11) | bool TryGetValue(string key, out object value);
method SetValue (line 13) | void SetValue(string key, object value);
method Delete (line 15) | void Delete(string key);
method Clear (line 17) | void Clear();
method GetAll (line 19) | IEnumerable<object> GetAll();
FILE: FluentTerminal.App.Services/IApplicationLanguageService.cs
type IApplicationLanguageService (line 5) | public interface IApplicationLanguageService
method SetLanguage (line 9) | void SetLanguage(string language);
method GetCurrentLanguage (line 11) | string GetCurrentLanguage();
FILE: FluentTerminal.App.Services/IApplicationView.cs
type IApplicationView (line 10) | public interface IApplicationView
method ExecuteOnUiThreadAsync (line 18) | Task ExecuteOnUiThreadAsync(Action action, CoreDispatcherPriority prio...
method ExecuteOnUiThreadAsync (line 21) | Task<T> ExecuteOnUiThreadAsync<T>(Func<T> func, CoreDispatcherPriority...
method TryCloseAsync (line 24) | Task<bool> TryCloseAsync();
method ToggleFullScreen (line 26) | bool ToggleFullScreen();
method IsApiContractPresent (line 27) | bool IsApiContractPresent(string api, ushort version);
FILE: FluentTerminal.App.Services/IClipboardService.cs
type IClipboardService (line 5) | public interface IClipboardService
method GetTextAsync (line 7) | Task<string> GetTextAsync();
method SetText (line 9) | void SetText(string text);
FILE: FluentTerminal.App.Services/ICommandHistoryService.cs
type ICommandHistoryService (line 7) | public interface ICommandHistoryService
method GetHistoryRecentFirst (line 18) | List<ExecutedCommand> GetHistoryRecentFirst(bool includeProfiles = fal...
method GetHistoryMostUsedFirst (line 30) | List<ExecutedCommand> GetHistoryMostUsedFirst(bool includeProfiles = f...
method MarkUsed (line 33) | void MarkUsed(ShellProfile profile);
method Delete (line 35) | void Delete(ExecutedCommand executedCommand);
FILE: FluentTerminal.App.Services/IDefaultValueProvider.cs
type IDefaultValueProvider (line 8) | public interface IDefaultValueProvider
method GetDefaultApplicationSettings (line 10) | ApplicationSettings GetDefaultApplicationSettings();
method GetDefaultKeyBindings (line 12) | ICollection<KeyBinding> GetDefaultKeyBindings(Command command);
method GetDefaultShellProfileId (line 14) | Guid GetDefaultShellProfileId();
method GetDefaultTabThemes (line 16) | IEnumerable<TabTheme> GetDefaultTabThemes();
method GetDefaultTerminalOptions (line 18) | TerminalOptions GetDefaultTerminalOptions();
method GetDefaultThemeId (line 20) | Guid GetDefaultThemeId();
method GetPreinstalledShellProfiles (line 22) | IEnumerable<ShellProfile> GetPreinstalledShellProfiles();
method GetPreInstalledThemes (line 24) | IEnumerable<TerminalTheme> GetPreInstalledThemes();
FILE: FluentTerminal.App.Services/IDialogService.cs
type DialogButton (line 6) | public enum DialogButton
type IDialogService (line 13) | public interface IDialogService
method ShowMessageDialogAsync (line 15) | Task<DialogButton> ShowMessageDialogAsync(string title, string content...
method ShowCreateKeyBindingDialog (line 17) | Task<KeyBinding> ShowCreateKeyBindingDialog();
method ShowInputDialogAsync (line 19) | Task<string> ShowInputDialogAsync(string title);
method ShowSshConnectionInfoDialogAsync (line 21) | Task<SshProfile> ShowSshConnectionInfoDialogAsync(SshProfile input = n...
method ShowCustomCommandDialogAsync (line 23) | Task<ShellProfile> ShowCustomCommandDialogAsync(ShellProfile input = n...
method ShowAboutDialogAsync (line 25) | Task ShowAboutDialogAsync();
FILE: FluentTerminal.App.Services/IFileSystemService.cs
type IFileSystemService (line 7) | public interface IFileSystemService
method OpenFileAsync (line 9) | Task<File> OpenFileAsync(IEnumerable<string> fileTypes);
method BrowseForDirectoryAsync (line 11) | Task<string> BrowseForDirectoryAsync();
method SaveTextFileAsync (line 13) | Task SaveTextFileAsync(string name, string fileTypeDescription, string...
method SaveImageInRoamingAsync (line 15) | Task<ImageFile> SaveImageInRoamingAsync(ImageFile imageFile);
FILE: FluentTerminal.App.Services/IImageFileSystemService.cs
type IImageFileSystemService (line 7) | public interface IImageFileSystemService
method ImportTemporaryImageFileAsync (line 9) | Task<ImageFile> ImportTemporaryImageFileAsync(IEnumerable<string> file...
method RemoveTemporaryBackgroundThemeImageAsync (line 11) | Task RemoveTemporaryBackgroundThemeImageAsync();
method RemoveImportedImageAsync (line 13) | Task RemoveImportedImageAsync(string fileName);
method EncodeImage (line 15) | string EncodeImage(ImageFile imageFile);
method ImportThemeImageAsync (line 17) | Task<ImageFile> ImportThemeImageAsync(ImageFile backgroundImage, strin...
FILE: FluentTerminal.App.Services/IKeyboardCommandService.cs
type IKeyboardCommandService (line 5) | public interface IKeyboardCommandService
method RegisterCommandHandler (line 7) | void RegisterCommandHandler(string command, Action handler);
method SendCommand (line 9) | void SendCommand(string command);
method DeregisterCommandHandler (line 10) | void DeregisterCommandHandler(string command);
method ClearCommandHandlers (line 11) | void ClearCommandHandlers();
FILE: FluentTerminal.App.Services/INotificationService.cs
type INotificationService (line 3) | public interface INotificationService
method ShowNotification (line 5) | void ShowNotification(string title, string content, string url = null);
FILE: FluentTerminal.App.Services/ISettingsService.cs
type ISettingsService (line 7) | public interface ISettingsService
method DeleteShellProfile (line 9) | void DeleteShellProfile(Guid id);
method DeleteSshProfile (line 10) | void DeleteSshProfile(Guid id);
method DeleteTheme (line 11) | void DeleteTheme(Guid id);
method GetApplicationSettings (line 12) | ApplicationSettings GetApplicationSettings();
method GetCurrentTheme (line 13) | TerminalTheme GetCurrentTheme();
method GetCurrentThemeId (line 14) | Guid GetCurrentThemeId();
method GetDefaultShellProfile (line 15) | ShellProfile GetDefaultShellProfile();
method GetDefaultShellProfileId (line 16) | Guid GetDefaultShellProfileId();
method GetCommandKeyBindings (line 17) | IDictionary<string, ICollection<KeyBinding>> GetCommandKeyBindings();
method GetShellProfiles (line 18) | IEnumerable<ShellProfile> GetShellProfiles();
method GetSshProfiles (line 19) | IEnumerable<SshProfile> GetSshProfiles();
method GetAllProfiles (line 23) | IEnumerable<ShellProfile> GetAllProfiles();
method GetTabThemes (line 24) | IEnumerable<TabTheme> GetTabThemes();
method GetTerminalOptions (line 25) | TerminalOptions GetTerminalOptions();
method GetTheme (line 26) | TerminalTheme GetTheme(Guid id);
method GetThemes (line 27) | IEnumerable<TerminalTheme> GetThemes();
method ResetKeyBindings (line 28) | void ResetKeyBindings();
method SaveApplicationSettings (line 29) | void SaveApplicationSettings(ApplicationSettings applicationSettings);
method NotifyApplicationSettingsChanged (line 30) | void NotifyApplicationSettingsChanged(ApplicationSettings applicationS...
method SaveCurrentThemeId (line 31) | void SaveCurrentThemeId(Guid id);
method SaveDefaultShellProfileId (line 32) | void SaveDefaultShellProfileId(Guid id);
method SaveKeyBindings (line 33) | void SaveKeyBindings(string command, ICollection<KeyBinding> keyBindin...
method SaveShellProfile (line 34) | void SaveShellProfile(ShellProfile shellProfile, bool newShell = false);
method SaveSshProfile (line 35) | void SaveSshProfile(SshProfile sshProfile, bool newShell = false);
method SaveTerminalOptions (line 36) | void SaveTerminalOptions(TerminalOptions terminalOptions);
method SaveTheme (line 37) | void SaveTheme(TerminalTheme theme, bool newTheme = false);
method GetShellProfile (line 38) | ShellProfile GetShellProfile(Guid id);
method GetSshProfile (line 39) | SshProfile GetSshProfile(Guid id);
method ExportSettings (line 40) | string ExportSettings();
method ImportSettings (line 41) | void ImportSettings(string serializedSettings);
FILE: FluentTerminal.App.Services/IShellProfileMigrationService.cs
type IShellProfileMigrationService (line 5) | public interface IShellProfileMigrationService
method Migrate (line 7) | void Migrate(ShellProfile profile);
FILE: FluentTerminal.App.Services/IStartupTaskService.cs
type IStartupTaskService (line 6) | public interface IStartupTaskService
method DisableStartupTaskAsync (line 8) | Task DisableStartupTaskAsync();
method EnableStartupTaskAsync (line 9) | Task<StartupTaskStatus> EnableStartupTaskAsync();
method GetStatusAsync (line 10) | Task<StartupTaskStatus> GetStatusAsync();
FILE: FluentTerminal.App.Services/ISystemFontService.cs
type ISystemFontService (line 5) | public interface ISystemFontService
method GetSystemFontFamilies (line 7) | IEnumerable<string> GetSystemFontFamilies();
FILE: FluentTerminal.App.Services/IThemeParser.cs
type IThemeParser (line 8) | public interface IThemeParser
method Parse (line 12) | Task<TerminalTheme> Parse(string fileName, Stream fileContent);
method Import (line 14) | Task<ExportedTerminalTheme> Import(string fileName, Stream fileContent);
FILE: FluentTerminal.App.Services/IThemeParserFactory.cs
type IThemeParserFactory (line 5) | public interface IThemeParserFactory
method GetParser (line 9) | IThemeParser GetParser(string fileType);
FILE: FluentTerminal.App.Services/ITrayProcessCommunicationService.cs
type ITrayProcessCommunicationService (line 9) | public interface ITrayProcessCommunicationService
method Initialize (line 13) | void Initialize(IAppServiceConnection appServiceConnection);
method CreateTerminalAsync (line 15) | Task<CreateTerminalResponse> CreateTerminalAsync(byte id, TerminalSize...
method PauseTerminalOutputAsync (line 18) | Task<PauseTerminalOutputResponse> PauseTerminalOutputAsync(byte id, bo...
method ResizeTerminalAsync (line 20) | Task ResizeTerminalAsync(byte id, TerminalSize size);
method UpdateToggleWindowKeyBindingsAsync (line 22) | Task UpdateToggleWindowKeyBindingsAsync();
method WriteAsync (line 24) | Task WriteAsync(byte terminalId, byte[] data);
method SubscribeForTerminalOutput (line 26) | void SubscribeForTerminalOutput(byte terminalId, Action<byte[]> callba...
method UnsubscribeFromTerminalOutput (line 28) | void UnsubscribeFromTerminalOutput(byte terminalId);
method CloseTerminalAsync (line 30) | Task CloseTerminalAsync(byte terminalId);
method GetNextTerminalId (line 32) | byte GetNextTerminalId();
method GetUserNameAsync (line 34) | Task<string> GetUserNameAsync();
method SaveTextFileAsync (line 36) | Task SaveTextFileAsync(string path, string content);
method ReadTextFileAsync (line 38) | Task<string> ReadTextFileAsync(string path);
method GetSshConfigDirAsync (line 40) | Task<string> GetSshConfigDirAsync();
method GetFilesFromSshConfigDirAsync (line 42) | Task<string[]> GetFilesFromSshConfigDirAsync();
method CheckFileExistsAsync (line 44) | Task<bool> CheckFileExistsAsync(string path);
method MuteTerminalAsync (line 46) | Task MuteTerminalAsync(bool mute);
method UpdateSettings (line 48) | void UpdateSettings(ApplicationSettings settings);
method GetCommandPathAsync (line 50) | Task<string> GetCommandPathAsync(string command);
method QuitApplicationAsync (line 52) | Task QuitApplicationAsync();
FILE: FluentTerminal.App.Services/IUpdateService.cs
type IUpdateService (line 6) | public interface IUpdateService
method CheckForUpdateAsync (line 8) | Task CheckForUpdateAsync(bool notifyNoUpdate = false);
method GetCurrentVersion (line 9) | Version GetCurrentVersion();
method GetLatestVersionAsync (line 10) | Task<Version> GetLatestVersionAsync();
FILE: FluentTerminal.App.Services/Implementation/DefaultValueProvider.cs
class DefaultValueProvider (line 10) | public class DefaultValueProvider : IDefaultValueProvider
method GetDefaultApplicationSettings (line 12) | public ApplicationSettings GetDefaultApplicationSettings()
method GetDefaultKeyBindings (line 49) | public ICollection<KeyBinding> GetDefaultKeyBindings(Command command)
method GetDefaultShellProfileId (line 370) | public Guid GetDefaultShellProfileId()
method GetDefaultTabThemes (line 375) | public IEnumerable<TabTheme> GetDefaultTabThemes()
method GetDefaultTerminalOptions (line 429) | public TerminalOptions GetDefaultTerminalOptions()
method GetDefaultThemeId (line 448) | public Guid GetDefaultThemeId()
method GetPreinstalledShellProfiles (line 453) | public IEnumerable<ShellProfile> GetPreinstalledShellProfiles()
method GetPreInstalledThemes (line 544) | public IEnumerable<TerminalTheme> GetPreInstalledThemes()
FILE: FluentTerminal.App.Services/Implementation/DialogService.cs
class DialogService (line 8) | public class DialogService : IDialogService
method DialogService (line 17) | public DialogService(Func<IMessageDialog> messageDialogFactory, Func<I...
method ShowCreateKeyBindingDialog (line 30) | public Task<KeyBinding> ShowCreateKeyBindingDialog()
method ShowMessageDialogAsync (line 37) | public Task<DialogButton> ShowMessageDialogAsync(string title, string ...
method ShowInputDialogAsync (line 66) | public Task<string> ShowInputDialogAsync(string title)
method ShowSshConnectionInfoDialogAsync (line 74) | public Task<SshProfile> ShowSshConnectionInfoDialogAsync(SshProfile in...
method ShowCustomCommandDialogAsync (line 77) | public Task<ShellProfile> ShowCustomCommandDialogAsync(ShellProfile in...
method ShowAboutDialogAsync (line 80) | public Task ShowAboutDialogAsync()
FILE: FluentTerminal.App.Services/Implementation/FluentTerminalThemeParser.cs
class FluentTerminalThemeParser (line 10) | public class FluentTerminalThemeParser : IThemeParser
method Import (line 14) | public Task<ExportedTerminalTheme> Import(string fileName, Stream file...
method Parse (line 19) | public Task<TerminalTheme> Parse(string fileName, Stream fileContent)
method DeserializeThemeAsync (line 24) | private async Task<T> DeserializeThemeAsync<T>(string fileName, Stream...
FILE: FluentTerminal.App.Services/Implementation/ITermThemeParser.cs
class ITermThemeParser (line 14) | public class ITermThemeParser : IThemeParser
class ITermThemeKeys (line 20) | private static class ITermThemeKeys
class ITermThemeColorKeys (line 48) | private static class ITermThemeColorKeys
method Parse (line 55) | public Task<TerminalTheme> Parse(string fileName, Stream fileContent)
method GetColors (line 78) | private TerminalColors GetColors(DictionaryNode themeDictionary)
method GetColorString (line 108) | private string GetColorString(PNode colorNode, byte alpha = Byte.MaxVa...
method GetByteValue (line 126) | private byte GetByteValue(RealNode node)
method ToDoubleString (line 133) | private static string ToDoubleString(byte alpha)
method Import (line 138) | public Task<ExportedTerminalTheme> Import(string fileName, Stream file...
FILE: FluentTerminal.App.Services/Implementation/KeyboardCommandService.cs
class KeyboardCommandService (line 7) | public class KeyboardCommandService : IKeyboardCommandService
method RegisterCommandHandler (line 11) | public void RegisterCommandHandler(string command, Action handler)
method DeregisterCommandHandler (line 21) | public void DeregisterCommandHandler(string command)
method SendCommand (line 29) | public void SendCommand(string command)
method ClearCommandHandlers (line 46) | public void ClearCommandHandlers()
FILE: FluentTerminal.App.Services/Implementation/MoshBackwardCompatibility.cs
class MoshBackwardCompatibility (line 9) | public static class MoshBackwardCompatibility
method IsMoshProfile (line 18) | private static bool IsMoshProfile(ShellProfile profile) =>
method FixProfile (line 38) | public static ShellProfile FixProfile(ShellProfile profile)
FILE: FluentTerminal.App.Services/Implementation/NotificationService.cs
class NotificationService (line 7) | public class NotificationService : INotificationService
method ShowNotification (line 9) | public void ShowNotification(string title, string content, string url ...
FILE: FluentTerminal.App.Services/Implementation/SettingsService.cs
class SettingsService (line 14) | public class SettingsService : ISettingsService
method SettingsService (line 28) | public SettingsService(IDefaultValueProvider defaultValueProvider, App...
method ExportSettings (line 57) | public string ExportSettings()
method GetDefaultSettings (line 88) | private Dictionary<string, string> GetDefaultSettings()
method ImportSettings (line 97) | public void ImportSettings(string serializedSettings)
method DeleteShellProfile (line 169) | public void DeleteShellProfile(Guid id)
method DeleteSshProfile (line 175) | public void DeleteSshProfile(Guid id)
method DeleteTheme (line 183) | public void DeleteTheme(Guid id)
method GetApplicationSettings (line 199) | public ApplicationSettings GetApplicationSettings()
method GetCurrentTheme (line 204) | public TerminalTheme GetCurrentTheme()
method GetCurrentThemeId (line 217) | public Guid GetCurrentThemeId()
method GetDefaultShellProfile (line 226) | public ShellProfile GetDefaultShellProfile()
method GetShellProfile (line 239) | public ShellProfile GetShellProfile(Guid id)
method GetSshProfile (line 243) | public SshProfile GetSshProfile(Guid id)
method GetDefaultShellProfileId (line 248) | public Guid GetDefaultShellProfileId()
method GetCommandKeyBindings (line 257) | public IDictionary<string, ICollection<KeyBinding>> GetCommandKeyBindi...
method GetShellProfiles (line 268) | public IEnumerable<ShellProfile> GetShellProfiles()
method GetSshProfiles (line 274) | public IEnumerable<SshProfile> GetSshProfiles()
method GetAllProfiles (line 280) | public IEnumerable<ShellProfile> GetAllProfiles()
method MoshBackwardCompatibilityFixProfile (line 285) | private ShellProfile MoshBackwardCompatibilityFixProfile(ShellProfile ...
method GetTabThemes (line 309) | public IEnumerable<TabTheme> GetTabThemes()
method GetTerminalOptions (line 314) | public TerminalOptions GetTerminalOptions()
method GetTheme (line 319) | public TerminalTheme GetTheme(Guid id)
method GetThemes (line 324) | public IEnumerable<TerminalTheme> GetThemes()
method ResetKeyBindings (line 329) | public void ResetKeyBindings()
method SaveApplicationSettings (line 339) | public void SaveApplicationSettings(ApplicationSettings applicationSet...
method NotifyApplicationSettingsChanged (line 345) | public void NotifyApplicationSettingsChanged(ApplicationSettings appli...
method SaveCurrentThemeId (line 350) | public void SaveCurrentThemeId(Guid id)
method SaveDefaultShellProfileId (line 357) | public void SaveDefaultShellProfileId(Guid id)
method SaveKeyBindings (line 364) | public void SaveKeyBindings(string command, ICollection<KeyBinding> ke...
method SaveShellProfile (line 375) | public void SaveShellProfile(ShellProfile shellProfile, bool newShell ...
method SaveSshProfile (line 392) | public void SaveSshProfile(SshProfile sshProfile, bool newShell = false)
method SaveTerminalOptions (line 409) | public void SaveTerminalOptions(TerminalOptions terminalOptions)
method SaveTheme (line 415) | public void SaveTheme(TerminalTheme theme, bool newTheme = false)
FILE: FluentTerminal.App.Services/Implementation/ShellProfileMigrationService.cs
class ShellProfileMigrationService (line 7) | public class ShellProfileMigrationService : IShellProfileMigrationService
method Migrate (line 18) | public void Migrate(ShellProfile profile)
method ApplyMigrationStep (line 26) | private void ApplyMigrationStep(ShellProfile profile, int targetVersion)
FILE: FluentTerminal.App.Services/Implementation/ThemeParserFactory.cs
class ThemeParserFactory (line 6) | public class ThemeParserFactory : IThemeParserFactory
method ThemeParserFactory (line 12) | public ThemeParserFactory(IEnumerable<IThemeParser> parsers)
method GetParser (line 18) | public IThemeParser GetParser(string fileType)
FILE: FluentTerminal.App.Services/Implementation/TrayProcessCommunicationService.cs
class TrayProcessCommunicationService (line 15) | public class TrayProcessCommunicationService : ITrayProcessCommunication...
method CreateMessage (line 24) | private static ValueSet CreateMessage(IMessage content)
method TrayProcessCommunicationService (line 44) | public TrayProcessCommunicationService(ISettingsService settingsService)
method GetNextTerminalId (line 50) | public byte GetNextTerminalId()
method GetUserNameAsync (line 55) | public async Task<string> GetUserNameAsync()
method SaveTextFileAsync (line 73) | public async Task SaveTextFileAsync(string path, string content)
method ReadTextFileAsync (line 87) | public async Task<string> ReadTextFileAsync(string path)
method GetSshConfigDirAsync (line 99) | public async Task<string> GetSshConfigDirAsync()
method GetFilesFromSshConfigDirAsync (line 118) | public async Task<string[]> GetFilesFromSshConfigDirAsync()
method CheckFileExistsAsync (line 134) | public async Task<bool> CheckFileExistsAsync(string path)
method MuteTerminalAsync (line 142) | public Task MuteTerminalAsync(bool mute)
method UpdateSettings (line 147) | public void UpdateSettings(ApplicationSettings settings)
method CreateTerminalAsync (line 152) | public async Task<CreateTerminalResponse> CreateTerminalAsync(byte id,...
method PauseTerminalOutputAsync (line 172) | public Task<PauseTerminalOutputResponse> PauseTerminalOutputAsync(byte...
method Initialize (line 178) | public void Initialize(IAppServiceConnection appServiceConnection)
method OnMessageReceived (line 184) | private void OnMessageReceived(object sender, IDictionary<string, obje...
method ResizeTerminalAsync (line 215) | public Task ResizeTerminalAsync(byte id, TerminalSize size)
method SubscribeForTerminalOutput (line 221) | public void SubscribeForTerminalOutput(byte terminalId, Action<byte[]>...
method UnsubscribeFromTerminalOutput (line 226) | public void UnsubscribeFromTerminalOutput(byte id)
method UpdateToggleWindowKeyBindingsAsync (line 234) | public Task UpdateToggleWindowKeyBindingsAsync()
method WriteAsync (line 242) | public Task WriteAsync(byte id, byte[] data)
method CloseTerminalAsync (line 254) | public Task CloseTerminalAsync(byte terminalId)
method GetCommandPathAsync (line 263) | public async Task<string> GetCommandPathAsync(string command)
method QuitApplicationAsync (line 299) | public Task QuitApplicationAsync()
method GetResponseAsync (line 304) | private async Task<T> GetResponseAsync<T>(IMessage request)
FILE: FluentTerminal.App.Services/Implementation/UpdateService.cs
class UpdateService (line 9) | public class UpdateService : IUpdateService
method UpdateService (line 15) | public UpdateService(INotificationService notificationService)
method CheckForUpdateAsync (line 20) | public async Task CheckForUpdateAsync(bool notifyNoUpdate = false)
method GetCurrentVersion (line 34) | public Version GetCurrentVersion()
method GetLatestVersionAsync (line 40) | public async Task<Version> GetLatestVersionAsync()
FILE: FluentTerminal.App.Services/Logger.cs
class Logger (line 7) | public sealed class Logger
type LogLevel (line 9) | public enum LogLevel
class Configuration (line 19) | public class Configuration
method Logger (line 26) | private Logger()
method Initialize (line 31) | public void Initialize(string filePath, Configuration configuration)
method Debug (line 43) | public void Debug(string text, params object[] propertyValues)
method Information (line 48) | public void Information(string text, params object[] propertyValues)
method Warning (line 53) | public void Warning(string text, params object[] propertyValues)
method Error (line 58) | public void Error(string text, params object[] propertyValues)
method Error (line 63) | public void Error(Exception exception, string text, params object[] pr...
FILE: FluentTerminal.App.Services/Terminal.cs
class Terminal (line 10) | public class Terminal
method Terminal (line 19) | public Terminal(ITrayProcessCommunicationService trayProcessCommunicat...
method Reconnect (line 27) | public void Reconnect()
method OnTerminalExited (line 33) | private void OnTerminalExited(object sender, TerminalExitStatus status)
method CloseAsync (line 85) | public Task CloseAsync()
method GetSelectedText (line 101) | public Task<string> GetSelectedText()
method ProcessKeyboardCommand (line 109) | public void ProcessKeyboardCommand(string command)
method RegisterSelectedTextCallback (line 117) | public void RegisterSelectedTextCallback(Func<Task<string>> selectedTe...
method SetSizeAsync (line 125) | public async Task SetSizeAsync(TerminalSize size)
method SetTitle (line 134) | public void SetTitle(string title)
method StartShellProcessAsync (line 146) | public async Task<TerminalResponse> StartShellProcessAsync(ShellProfil...
method Write (line 175) | public Task Write(byte[] data)
method ReportLauchFailed (line 183) | public void ReportLauchFailed()
FILE: FluentTerminal.App.Services/Utilities/EnumHelper.cs
class EnumHelper (line 6) | public static class EnumHelper
method GetEnumDescription (line 8) | public static string GetEnumDescription(Enum value)
FILE: FluentTerminal.App.Services/Utilities/I18N.cs
class I18N (line 9) | public static class I18N
method Translate (line 13) | public static string Translate(string resource)
method TranslateWithFallback (line 18) | public static string TranslateWithFallback(string resource, string fal...
FILE: FluentTerminal.App.Services/Utilities/PreserveDictionaryKeyCaseContractResolver.cs
class PreserveDictionaryKeyCaseContractResolver (line 7) | public class PreserveDictionaryKeyCaseContractResolver : DefaultContract...
method CreateDictionaryContract (line 12) | protected override JsonDictionaryContract CreateDictionaryContract(Typ...
FILE: FluentTerminal.App.Services/Utilities/TerminalThemeContractResolver.cs
class TerminalThemeContractResolver (line 8) | public class TerminalThemeContractResolver : PreserveDictionaryKeyCaseCo...
method CreateProperty (line 10) | protected override JsonProperty CreateProperty(MemberInfo member, Memb...
FILE: FluentTerminal.App.ViewModels/DelayedHistorySaver.cs
class DelayedHistorySaver (line 7) | internal class DelayedHistorySaver : ISessionSuccessTracker
method DelayedHistorySaver (line 22) | internal DelayedHistorySaver(Action saveAction)
method SetSuccessfulSessionStart (line 27) | public void SetSuccessfulSessionStart()
method SetOutputReceived (line 45) | public void SetOutputReceived()
method SetInvalid (line 63) | public void SetInvalid()
method InitiateSave (line 80) | private void InitiateSave()
FILE: FluentTerminal.App.ViewModels/EnvironmentVariableViewModel.cs
class EnvironmentVariableViewModel (line 6) | public class EnvironmentVariableViewModel : ObservableObject
FILE: FluentTerminal.App.ViewModels/ISessionSuccessTracker.cs
type ISessionSuccessTracker (line 3) | public interface ISessionSuccessTracker
method SetSuccessfulSessionStart (line 5) | void SetSuccessfulSessionStart();
method SetOutputReceived (line 7) | void SetOutputReceived();
method SetInvalid (line 9) | void SetInvalid();
FILE: FluentTerminal.App.ViewModels/ITerminalView.cs
type ITerminalView (line 7) | public interface ITerminalView : IDisposable
method ChangeFontSize (line 9) | Task ChangeFontSize(int fontSize);
method ChangeThemeAsync (line 10) | Task ChangeThemeAsync(TerminalTheme theme);
method ChangeKeyBindingsAsync (line 11) | Task ChangeKeyBindingsAsync();
method ChangeOptionsAsync (line 12) | Task ChangeOptionsAsync(TerminalOptions options);
method InitializeAsync (line 13) | Task InitializeAsync(TerminalViewModel viewModel);
method ReconnectAsync (line 14) | Task ReconnectAsync();
method DisposalPrepare (line 15) | void DisposalPrepare();
method FindNextAsync (line 16) | Task FindNextAsync(SearchRequest request);
method FindPreviousAsync (line 17) | Task FindPreviousAsync(SearchRequest request);
method FocusTerminalAsync (line 18) | Task FocusTerminalAsync();
method SerializeXtermStateAsync (line 19) | Task<string> SerializeXtermStateAsync();
method Paste (line 20) | void Paste(string text);
FILE: FluentTerminal.App.ViewModels/Infrastructure/IErrorHandler.cs
type IErrorHandler (line 5) | public interface IErrorHandler
method HandleError (line 7) | void HandleError(Exception ex);
FILE: FluentTerminal.App.ViewModels/MainViewModel.cs
class MainViewModel (line 23) | public class MainViewModel : ObservableObject,
method MainViewModel (line 47) | public MainViewModel(ISettingsService settingsService, ITrayProcessCom...
method UpdateDefaultShellProfile (line 140) | private void UpdateDefaultShellProfile()
method LoadKeyBindings (line 156) | private void LoadKeyBindings() => _keyBindings = _settingsService.GetC...
method OnClosed (line 158) | private void OnClosed(object sender, EventArgs e)
method OnTerminalsCollectionChanged (line 175) | private void OnTerminalsCollectionChanged(object sender, NotifyCollect...
method TearOffTab (line 191) | public void TearOffTab(TerminalViewModel model)
method FocusWindow (line 196) | public void FocusWindow()
method AddDefaultProfileAsync (line 274) | public Task AddDefaultProfileAsync(NewTerminalLocation location)
method AddSshProfileAsync (line 281) | private async Task AddSshProfileAsync(NewTerminalLocation location)
method AddQuickLaunchProfileAsync (line 288) | private async Task AddQuickLaunchProfileAsync(NewTerminalLocation loca...
method AddProfileByGuidAsync (line 295) | public Task AddProfileByGuidAsync(Guid profileId) =>
method AddProfileByGuidAsync (line 298) | private async Task AddProfileByGuidAsync(Guid profileId, NewTerminalLo...
method AddTabAsync (line 306) | public Task AddTabAsync(string terminalState, int position)
method AddProfileAsync (line 311) | private Task AddProfileAsync(ShellProfile profile) =>
method AddProfileAsync (line 314) | private Task AddProfileAsync(ShellProfile profile, NewTerminalLocation...
method AddTabAsync (line 331) | public Task AddTabAsync(ShellProfile profile) => AddTabAsync(profile, ...
method AddTabAsync (line 333) | private Task AddTabAsync(ShellProfile profile, string terminalState, i...
method Terminal_PropertyChanged (line 356) | private void Terminal_PropertyChanged(object sender, PropertyChangedEv...
method SetWindowTitle (line 375) | private Task SetWindowTitle(TerminalViewModel terminalViewModel)
method Terminal_DuplicateTabRequested (line 386) | private async void Terminal_DuplicateTabRequested(object sender, Event...
method Terminal_CloseOtherTabsRequested (line 394) | private async void Terminal_CloseOtherTabsRequested(object sender, Eve...
method Terminal_CloseRightTabsRequested (line 406) | private async void Terminal_CloseRightTabsRequested(object sender, Eve...
method Terminal_CloseLeftTabsRequested (line 420) | private async void Terminal_CloseLeftTabsRequested(object sender, Even...
method CloseAllTerminalsAsync (line 434) | private Task CloseAllTerminalsAsync()
method CloseCurrentTab (line 448) | private void CloseCurrentTab()
method OnCloseRequest (line 453) | private async Task OnCloseRequest(object sender, CancelableEventArgs e)
method OnTerminalClosed (line 475) | private void OnTerminalClosed(object sender, EventArgs e)
method Receive (line 508) | public void Receive(ShellProfileDeletedMessage message)
method Receive (line 517) | public void Receive(ShellProfileChangedMessage message)
method Receive (line 524) | public void Receive(ShellProfileAddedMessage message)
method Receive (line 534) | public void Receive(DefaultShellProfileChangedMessage message)
method Receive (line 539) | public void Receive(ApplicationSettingsChangedMessage message)
method Receive (line 565) | public void Receive(TerminalOptionsChangedMessage message)
method Receive (line 574) | public void Receive(KeyBindingsChangedMessage message)
method Receive (line 581) | public void Receive(CommandHistoryChangedMessage message)
method SelectTabNumber (line 586) | private void SelectTabNumber(int tabNumber)
method SelectNextTab (line 594) | private void SelectNextTab()
method SelectPreviousTab (line 601) | private void SelectPreviousTab()
method ShowSettings (line 608) | public void ShowSettings()
method ToggleFullScreen (line 613) | private void ToggleFullScreen()
method OnWindowKeyDown (line 618) | public void OnWindowKeyDown(int key, bool control, bool alt, bool shif...
method CreateMenuViewModel (line 651) | private void CreateMenuViewModel()
method FillCoreItems (line 719) | private void FillCoreItems(ObservableCollection<MenuItemViewModelBase>...
method GetRecentMenuItems (line 795) | private ObservableCollection<MenuItemViewModel> GetRecentMenuItems() =>
method CommandToMenuItem (line 799) | private MenuItemViewModel CommandToMenuItem(ExecutedCommand command)
method LoadKeyBindingsFromModel (line 809) | private void LoadKeyBindingsFromModel(MenuItemViewModel menuItemViewMo...
FILE: FluentTerminal.App.ViewModels/Menu/ExpandableMenuItemViewModel.cs
class ExpandableMenuItemViewModel (line 7) | public class ExpandableMenuItemViewModel : MenuItemViewModelBase
method ExpandableMenuItemViewModel (line 11) | public ExpandableMenuItemViewModel(string text, IEnumerable<MenuItemVi...
method EquivalentTo (line 28) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App.ViewModels/Menu/Mdl2Icon.cs
class Mdl2Icon (line 3) | public sealed class Mdl2Icon
method Mdl2Icon (line 8) | private Mdl2Icon(string glyph, string color = null)
method Link (line 14) | public static Mdl2Icon Link(string color = null) => new Mdl2Icon("\uE7...
method Copy (line 16) | public static Mdl2Icon Copy(string color = null) => new Mdl2Icon("\uE8...
method Paste (line 18) | public static Mdl2Icon Paste(string color = null) => new Mdl2Icon("\uE...
method Edit (line 20) | public static Mdl2Icon Edit(string color = null) => new Mdl2Icon("\uE7...
method Search (line 22) | public static Mdl2Icon Search(string color = null) => new Mdl2Icon("\u...
method Add (line 24) | public static Mdl2Icon Add(string color = null) => new Mdl2Icon("\uE71...
method Cancel (line 26) | public static Mdl2Icon Cancel(string color = null) => new Mdl2Icon("\u...
method PaginationDotOutline10 (line 28) | public static Mdl2Icon PaginationDotOutline10(string color = null) => ...
method PaginationDotSolid10 (line 30) | public static Mdl2Icon PaginationDotSolid10(string color = null) => ne...
method NewWindow (line 32) | public static Mdl2Icon NewWindow(string color = null) => new Mdl2Icon(...
method History (line 34) | public static Mdl2Icon History(string color = null) => new Mdl2Icon("\...
method Settings (line 36) | public static Mdl2Icon Settings(string color = null) => new Mdl2Icon("...
method Info (line 38) | public static Mdl2Icon Info(string color = null) => new Mdl2Icon("\uE9...
method FavoriteStar (line 40) | public static Mdl2Icon FavoriteStar(string color = null) => new Mdl2Ic...
method Globe (line 42) | public static Mdl2Icon Globe(string color = null) => new Mdl2Icon("\uE...
method Play (line 44) | public static Mdl2Icon Play(string color = null) => new Mdl2Icon("\uE7...
FILE: FluentTerminal.App.ViewModels/Menu/MenuItemKeyBindingViewModel.cs
class MenuItemKeyBindingViewModel (line 11) | public class MenuItemKeyBindingViewModel : ObservableObject
method GetOverrideText (line 88) | public string GetOverrideText()
method MenuItemKeyBindingViewModel (line 102) | public MenuItemKeyBindingViewModel(int key = 0, bool ctrl = false, boo...
method MenuItemKeyBindingViewModel (line 114) | public MenuItemKeyBindingViewModel(KeyBinding keyBinding) : this(keyBi...
method SetKeyModifiers (line 121) | private void SetKeyModifiers()
method EquivalentTo (line 149) | public bool EquivalentTo(MenuItemKeyBindingViewModel other)
FILE: FluentTerminal.App.ViewModels/Menu/MenuItemViewModel.cs
class MenuItemViewModel (line 6) | public class MenuItemViewModel : MenuItemViewModelBase
method MenuItemViewModel (line 24) | public MenuItemViewModel(string text, ICommand command, string descrip...
method EquivalentTo (line 35) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App.ViewModels/Menu/MenuItemViewModelBase.cs
class MenuItemViewModelBase (line 6) | public class MenuItemViewModelBase : ObservableObject
method MenuItemViewModelBase (line 38) | protected MenuItemViewModelBase(string text, string description, Mdl2I...
method EquivalentTo (line 49) | public virtual bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App.ViewModels/Menu/MenuViewModel.cs
class MenuViewModel (line 8) | public class MenuViewModel : ObservableObject
method MenuViewModel (line 12) | public MenuViewModel(IEnumerable<MenuItemViewModelBase> items = null)
method EquivalentTo (line 28) | public bool EquivalentTo(MenuViewModel other)
FILE: FluentTerminal.App.ViewModels/Menu/RadioMenuItemViewModel.cs
class RadioMenuItemViewModel (line 5) | public class RadioMenuItemViewModel : MenuItemViewModelBase
method RadioMenuItemViewModel (line 11) | public RadioMenuItemViewModel(string text, string groupName, object bi...
method EquivalentTo (line 19) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App.ViewModels/Menu/SeparatorMenuItemViewModel.cs
class SeparatorMenuItemViewModel (line 3) | public class SeparatorMenuItemViewModel : MenuItemViewModelBase
method SeparatorMenuItemViewModel (line 5) | public SeparatorMenuItemViewModel()
method EquivalentTo (line 10) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App.ViewModels/Menu/ToggleMenuItemViewModel.cs
class ToggleMenuItemViewModel (line 5) | public class ToggleMenuItemViewModel : MenuItemViewModelBase
method ToggleMenuItemViewModel (line 10) | public ToggleMenuItemViewModel(string text, object bindingSource, stri...
method EquivalentTo (line 17) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App.ViewModels/OverlayViewModel.cs
class OverlayViewModel (line 7) | public class OverlayViewModel : ObservableObject
method OverlayViewModel (line 14) | public OverlayViewModel()
method Show (line 31) | public void Show(string message)
method OnResizeOverlayTimerFinished (line 45) | private void OnResizeOverlayTimerFinished(object sender, object e)
FILE: FluentTerminal.App.ViewModels/ProfileViewModelBase.cs
class ProfileViewModelBase (line 20) | public abstract class ProfileViewModelBase<T> : ObservableObject where T...
method ProfileViewModelBase (line 86) | protected ProfileViewModelBase(ShellProfile shellProfile, ISettingsSer...
method Initialize (line 118) | protected void Initialize(ShellProfile shellProfile)
method HasChanges (line 130) | protected virtual bool HasChanges()
method DeleteAsync (line 139) | private async Task DeleteAsync()
method CanDelete (line 151) | protected abstract bool CanDelete();
method Edit (line 153) | private void Edit()
method CancelEditAsync (line 169) | private async Task CancelEditAsync()
method SaveChangesAsync (line 201) | private async Task SaveChangesAsync()
method AddKeyboardShortcutAsync (line 251) | private Task AddKeyboardShortcutAsync()
FILE: FluentTerminal.App.ViewModels/Profiles/CommonProfileProviderViewModel.cs
class CommonProfileProviderViewModel (line 13) | public class CommonProfileProviderViewModel : ProfileProviderViewModelBase
method CommonProfileProviderViewModel (line 61) | public CommonProfileProviderViewModel(ISettingsService settingsService...
method Initialize (line 77) | private void Initialize(ShellProfile profile)
method LoadFromProfile (line 85) | protected override void LoadFromProfile(ShellProfile profile)
method CopyToProfileAsync (line 92) | protected override async Task CopyToProfileAsync(ShellProfile profile)
method ValidateAsync (line 101) | public override async Task<string> ValidateAsync()
method HasChanges (line 120) | public override bool HasChanges()
method BrowseForCustomShell (line 128) | private async Task BrowseForCustomShell()
method BrowseForWorkingDirectory (line 139) | private async Task BrowseForWorkingDirectory()
FILE: FluentTerminal.App.ViewModels/Profiles/ProfileProviderViewModelBase.cs
class ProfileProviderViewModelBase (line 20) | public abstract class ProfileProviderViewModelBase : ObservableObject,
method ProfileProviderViewModelBase (line 166) | protected ProfileProviderViewModelBase(ISettingsService settingsServic...
method Receive (line 194) | public void Receive(ThemeDeletedMessage message)
method Receive (line 214) | public void Receive(ThemeAddedMessage message)
method Initialize (line 219) | private void Initialize(ShellProfile profile)
method LoadFromProfile (line 227) | protected virtual void LoadFromProfile(ShellProfile profile)
method CopyToProfileAsync (line 232) | protected virtual Task CopyToProfileAsync(ShellProfile profile)
method ValidateAsync (line 241) | public virtual Task<string> ValidateAsync()
method HasChanges (line 250) | public virtual bool HasChanges()
method AcceptChangesAsync (line 267) | public async Task<string> AcceptChangesAsync(bool acceptIfInvalid = fa...
method RejectChangesAsync (line 279) | public Task RejectChangesAsync()
method GetShortcutFileContent (line 300) | public static string GetShortcutFileContent(string url) => string.Form...
method ParseParams (line 302) | public static IEnumerable<Tuple<string, string>> ParseParams(string ur...
method ParseSshOptionFromUri (line 305) | private static Tuple<string, string> ParseSshOptionFromUri(string option)
method GetUrlAsync (line 324) | public virtual Task<Tuple<bool, string>> GetUrlAsync() =>
method GetBaseQueryString (line 327) | public string GetBaseQueryString()
method LoadBaseFromQueryString (line 344) | public void LoadBaseFromQueryString(IList<Tuple<string, string>> query...
FILE: FluentTerminal.App.ViewModels/Profiles/SshConnectViewModel.cs
class SshConnectViewModel (line 20) | public class SshConnectViewModel : ProfileProviderViewModelBase
method GetErrorString (line 24) | public static string GetErrorString(SshConnectionInfoValidationResult ...
method GetErrors (line 27) | public static IEnumerable<string> GetErrors(SshConnectionInfoValidatio...
method SshConnectViewModel (line 124) | public SshConnectViewModel(ISettingsService settingsService, IApplicat...
method Initialize (line 144) | private void Initialize(SshProfile sshProfile)
method BrowseForIdentityFileAsync (line 171) | private async Task BrowseForIdentityFileAsync()
method GetArgumentsString (line 181) | private string GetArgumentsString()
method GetSshArguments (line 195) | private string GetSshArguments()
method LoadFromProfile (line 207) | protected override void LoadFromProfile(ShellProfile profile)
method CopyToProfileAsync (line 214) | protected override async Task CopyToProfileAsync(ShellProfile profile)
method ValidateAsync (line 234) | public override async Task<string> ValidateAsync()
method HasChanges (line 260) | public override bool HasChanges()
method GetSshInfoValidationResultAsync (line 270) | private async Task<SshConnectionInfoValidationResult> GetSshInfoValida...
method CheckIdentityFileExistsAsync (line 313) | private async Task<bool> CheckIdentityFileExistsAsync()
method SetValidatedIdentityFile (line 356) | public void SetValidatedIdentityFile(string identityFile)
method CheckScheme (line 381) | public static bool CheckScheme(Uri uri) =>
method ParseUri (line 385) | public static SshConnectViewModel ParseUri(Uri uri, ISettingsService s...
method GetUrlAsync (line 452) | public override async Task<Tuple<bool, string>> GetUrlAsync()
FILE: FluentTerminal.App.ViewModels/Profiles/SshConnectionInfoValidationResult.cs
type SshConnectionInfoValidationResult (line 5) | [Flags]
FILE: FluentTerminal.App.ViewModels/Settings/AboutPageViewModel.cs
class AboutPageViewModel (line 9) | public class AboutPageViewModel : ObservableObject
method AboutPageViewModel (line 16) | public AboutPageViewModel(IUpdateService updateService, IApplicationVi...
method OnNavigatedTo (line 60) | public Task OnNavigatedTo()
method CheckForUpdateAsync (line 65) | private async Task CheckForUpdateAsync(bool notifyNoUpdate)
FILE: FluentTerminal.App.ViewModels/Settings/GeneralPageViewModel.cs
class GeneralPageViewModel (line 13) | public class GeneralPageViewModel : ObservableObject
method GeneralPageViewModel (line 29) | public GeneralPageViewModel(ISettingsService settingsService, IDialogS...
method OnNavigatedToAsync (line 66) | public async Task OnNavigatedToAsync()
method RestoreDefaultsAsync (line 410) | private async Task RestoreDefaultsAsync()
method SetStartupTaskPropertiesForStatus (line 441) | private void SetStartupTaskPropertiesForStatus(StartupTaskStatus start...
method SetStartupTaskStateAsync (line 478) | private async Task SetStartupTaskStateAsync(bool enabled)
method BrowseLogDirectoryAsync (line 497) | private async Task BrowseLogDirectoryAsync()
FILE: FluentTerminal.App.ViewModels/Settings/KeyBindingViewModel.cs
class KeyBindingViewModel (line 12) | public class KeyBindingViewModel : ObservableObject
method KeyBindingViewModel (line 16) | public KeyBindingViewModel(KeyBinding keyBinding, IDialogService dialo...
method EditAsync (line 103) | public async Task<bool> EditAsync()
method DeleteAsync (line 125) | private async Task DeleteAsync()
FILE: FluentTerminal.App.ViewModels/Settings/KeyBindingsPageViewModel.cs
class KeyBindingsPageViewModel (line 16) | public class KeyBindingsPageViewModel : ObservableObject
method KeyBindingsPageViewModel (line 22) | public KeyBindingsPageViewModel(ISettingsService settingsService, IDia...
method AddAsync (line 37) | private Task AddAsync(string command)
method ClearKeyBindings (line 43) | private void ClearKeyBindings()
method Initialize (line 54) | private void Initialize(IDictionary<string, ICollection<KeyBinding>> k...
method OnEdited (line 71) | private void OnEdited(string command, ICollection<KeyBinding> keyBindi...
method RestoreDefaultsAsync (line 78) | private async Task RestoreDefaultsAsync()
FILE: FluentTerminal.App.ViewModels/Settings/KeyBindingsViewModel.cs
class KeyBindingsViewModel (line 12) | public class KeyBindingsViewModel : ObservableObject
method KeyBindingsViewModel (line 17) | public KeyBindingsViewModel(string command, IDialogService dialogServi...
method ShowAddKeyBindingDialogAsync (line 46) | public async Task ShowAddKeyBindingDialogAsync()
method Clear (line 58) | public void Clear()
method Add (line 64) | public void Add(KeyBinding keyBinding)
method ViewModel_Deleted (line 74) | private void ViewModel_Deleted(object sender, EventArgs e)
method ViewModel_Edited (line 83) | private void ViewModel_Edited(object sender, EventArgs e)
FILE: FluentTerminal.App.ViewModels/Settings/MousePageViewModel.cs
class MousePageViewModel (line 12) | public class MousePageViewModel : ObservableObject
method MousePageViewModel (line 19) | public MousePageViewModel(ISettingsService settingsService, IDialogSer...
method RestoreDefaultsAsync (line 122) | private async Task RestoreDefaultsAsync()
FILE: FluentTerminal.App.ViewModels/Settings/ProfilesPageViewModel.cs
class ProfilesPageViewModel (line 13) | public class ProfilesPageViewModel : ObservableObject
method ProfilesPageViewModel (line 22) | public ProfilesPageViewModel(ISettingsService settingsService, IDialog...
method OnShellProfileSetAsDefault (line 51) | private void OnShellProfileSetAsDefault(object sender, EventArgs e)
method OnShellProfileDeleted (line 64) | private void OnShellProfileDeleted(object sender, EventArgs e)
method CreateShellProfile (line 87) | private void CreateShellProfile()
method Clone (line 101) | private void Clone(ShellProfileViewModel shellProfile)
method AddShellProfile (line 113) | private void AddShellProfile(ShellProfile shellProfile)
FILE: FluentTerminal.App.ViewModels/Settings/SshProfilesPageViewModel.cs
class SshProfilesPageViewModel (line 13) | public class SshProfilesPageViewModel: ObservableObject
method SshProfilesPageViewModel (line 23) | public SshProfilesPageViewModel(ISettingsService settingsService, IDia...
method OnSshProfileDeleted (line 54) | private void OnSshProfileDeleted(object sender, EventArgs e)
method CreateSshProfile (line 71) | public void CreateSshProfile()
method Clone (line 86) | private void Clone(SshProfileViewModel shellProfile)
method AddSshProfile (line 102) | private void AddSshProfile(SshProfile sshProfile)
FILE: FluentTerminal.App.ViewModels/Settings/TerminalPageViewModel.cs
class TerminalPageViewModel (line 15) | public class TerminalPageViewModel : ObservableObject
method RestoreDefaultsAsync (line 231) | private async Task RestoreDefaultsAsync()
method TerminalPageViewModel (line 253) | public TerminalPageViewModel(ISettingsService settingsService, IDialog...
FILE: FluentTerminal.App.ViewModels/Settings/ThemesPageViewModel.cs
class ThemesPageViewModel (line 16) | public class ThemesPageViewModel : ObservableObject,
method ThemesPageViewModel (line 32) | public ThemesPageViewModel(ISettingsService settingsService,
method CloneTheme (line 106) | private void CloneTheme(ThemeViewModel theme)
method CreateTheme (line 118) | private void CreateTheme()
method ImportThemeAsync (line 133) | private async Task ImportThemeAsync()
method AddTheme (line 179) | private void AddTheme(TerminalTheme theme)
method OnThemeActivated (line 191) | private void OnThemeActivated(object sender, EventArgs e)
method OnThemeDeleted (line 204) | private void OnThemeDeleted(object sender, EventArgs e)
method Receive (line 223) | public void Receive(TerminalOptionsChangedMessage message)
method OnSelectedThemeBackgroundChanged (line 228) | private void OnSelectedThemeBackgroundChanged(object sender, string e)
method OnSelectedThemeBackgroundImageChanged (line 233) | private void OnSelectedThemeBackgroundImageChanged(object sender, Imag...
FILE: FluentTerminal.App.ViewModels/SettingsViewModel.cs
class SettingsViewModel (line 8) | public class SettingsViewModel : ObservableObject
method SettingsViewModel (line 10) | public SettingsViewModel(ISettingsService settingsService, IDefaultVal...
method Close (line 36) | public void Close()
FILE: FluentTerminal.App.ViewModels/ShellProfileViewModel.cs
class ShellProfileViewModel (line 16) | public class ShellProfileViewModel : ProfileViewModelBase<CommonProfileP...
method ShellProfileViewModel (line 52) | public ShellProfileViewModel(ShellProfile shellProfile, ISettingsServi...
method RestoreDefaultsAsync (line 71) | private async Task RestoreDefaultsAsync()
method CanDelete (line 99) | protected override bool CanDelete()
method SetDefault (line 104) | private void SetDefault()
FILE: FluentTerminal.App.ViewModels/SshProfileViewModel.cs
class SshProfileViewModel (line 11) | public class SshProfileViewModel : ProfileViewModelBase<SshConnectViewMo...
method SshProfileViewModel (line 15) | public SshProfileViewModel(SshProfile sshProfile, ISettingsService set...
method CanDelete (line 29) | protected override bool CanDelete()
FILE: FluentTerminal.App.ViewModels/TabThemeViewModel.cs
class TabThemeViewModel (line 6) | public class TabThemeViewModel : ObservableObject
method TabThemeViewModel (line 10) | public TabThemeViewModel(TabTheme theme, TerminalViewModel terminal)
FILE: FluentTerminal.App.ViewModels/TerminalViewModel.cs
class TerminalViewModel (line 22) | public class TerminalViewModel : ObservableObject,
class TerminalState (line 36) | private class TerminalState
method SerializeAsync (line 54) | public async Task<string> SerializeAsync()
method Restore (line 77) | public void Restore(string data)
method TerminalViewModel (line 126) | public TerminalViewModel(ISettingsService settingsService, ITrayProces...
method DisposalPrepare (line 203) | public void DisposalPrepare()
method CloseAsync (line 474) | public Task CloseAsync()
method CopyTextAsync (line 481) | public Task CopyTextAsync(string text)
method EditTitleAsync (line 495) | public async Task EditTitleAsync()
method FocusTerminal (line 515) | public void FocusTerminal()
method CloseSearchPanel (line 520) | private void CloseSearchPanel()
method CanExecuteCommand (line 527) | private bool CanExecuteCommand<T>(T a)
method CanExecuteCommand (line 532) | private bool CanExecuteCommand()
method CloseLeftTabs (line 537) | private void CloseLeftTabs()
method CloseRightTabs (line 542) | private void CloseRightTabs()
method CloseOtherTabs (line 547) | private void CloseOtherTabs()
method FindNext (line 552) | private void FindNext()
method SerializeXtermStateAsync (line 559) | private Task<string> SerializeXtermStateAsync()
method FindPrevious (line 564) | private void FindPrevious()
method DuplicateTab (line 569) | private void DuplicateTab()
method ReconnectTabAsync (line 574) | public async Task ReconnectTabAsync()
method Receive (line 580) | public void Receive(ApplicationSettingsChangedMessage message)
method Receive (line 591) | public void Receive(CurrentThemeChangedMessage message)
method Receive (line 606) | public void Receive(TerminalOptionsChangedMessage message)
method Receive (line 612) | public void Receive(KeyBindingsChangedMessage message)
method Terminal_Exited (line 631) | private void Terminal_Exited(object sender, int exitCode)
method Terminal_Closed (line 641) | private void Terminal_Closed(object sender, EventArgs e)
method Terminal_KeyboardCommandReceived (line 652) | private async void Terminal_KeyboardCommandReceived(object sender, str...
method Terminal_OutputReceived (line 724) | private void Terminal_OutputReceived(object sender, byte[] e)
method Terminal_SizeChanged (line 737) | private void Terminal_SizeChanged(object sender, TerminalSize e)
method Terminal_TitleChanged (line 742) | private void Terminal_TitleChanged(object sender, string e)
method TryCloseAsync (line 748) | private async Task TryCloseAsync()
method Copy (line 764) | private async Task Copy()
method Paste (line 770) | private async Task Paste()
method BuidContextMenu (line 784) | private MenuViewModel BuidContextMenu()
method BuildTabContextMenu (line 829) | private MenuViewModel BuildTabContextMenu()
method AddKeyBindings (line 878) | private void AddKeyBindings(MenuItemViewModel menuItem, Command comman...
FILE: FluentTerminal.App.ViewModels/ThemeViewModel.cs
class ThemeViewModel (line 13) | public class ThemeViewModel : ObservableObject
method ThemeViewModel (line 52) | public ThemeViewModel(TerminalTheme theme,
method SaveChangesAsync (line 299) | private async Task SaveChangesAsync()
method CancelEditAsync (line 349) | private async Task CancelEditAsync()
method NotPreInstalled (line 439) | private bool NotPreInstalled()
method DeleteAsync (line 445) | private async Task DeleteAsync()
method DeleteBackgroundImageAsync (line 463) | private async Task DeleteBackgroundImageAsync()
method Edit (line 476) | private void Edit()
method SetActive (line 482) | private void SetActive()
method Export (line 487) | private Task Export()
method SaveBackgroundImageAsync (line 495) | private async Task<ImageFile> SaveBackgroundImageAsync()
method ChooseBackgroundImageAsync (line 516) | private async Task ChooseBackgroundImageAsync()
method DeleteBackgroundImageIfExistsAsync (line 529) | private async Task DeleteBackgroundImageIfExistsAsync()
FILE: FluentTerminal.App.ViewModels/Utilities/TaskUtilities.cs
class TaskUtilities (line 7) | public static class TaskUtilities
method FireAndForgetSafeAsync (line 10) | public static async void FireAndForgetSafeAsync(this Task task, IError...
FILE: FluentTerminal.App.ViewModels/Utilities/WebViewSpecialCharEncoder.cs
class WebViewSpecialCharEncoder (line 3) | public static class WebViewSpecialCharEncoder
method Encode (line 5) | public static string Encode(string value)
method Decode (line 10) | public static string Decode(string value)
FILE: FluentTerminal.App/Actions/FocusAction.cs
class FocusAction (line 7) | public class FocusAction : DependencyObject, IAction
method Execute (line 9) | public object Execute(object sender, object parameter)
method Control_Loaded (line 23) | private void Control_Loaded(object sender, RoutedEventArgs e)
FILE: FluentTerminal.App/Adapters/AppServiceConnectionAdapter.cs
class AppServiceConnectionAdapter (line 9) | public class AppServiceConnectionAdapter : IAppServiceConnection
method AppServiceConnectionAdapter (line 15) | public AppServiceConnectionAdapter(AppServiceConnection appServiceConn...
method OnRequestReceived (line 21) | private void OnRequestReceived(AppServiceConnection sender, AppService...
method SendMessageAsync (line 26) | public async Task<ValueSet> SendMessageAsync(ValueSet message)
FILE: FluentTerminal.App/Adapters/ApplicationViewAdapter.cs
class ApplicationViewAdapter (line 14) | public class ApplicationViewAdapter : IApplicationView
method ApplicationViewAdapter (line 23) | public ApplicationViewAdapter()
method _applicationView_Consolidated (line 33) | private void _applicationView_Consolidated(ApplicationView sender, App...
method IsApiContractPresent (line 47) | public bool IsApiContractPresent(string api, ushort version)
method ExecuteOnUiThreadAsync (line 52) | public Task ExecuteOnUiThreadAsync(Action action, CoreDispatcherPriori...
method ExecuteOnUiThreadAsync (line 55) | public Task<T> ExecuteOnUiThreadAsync<T>(Func<T> func, CoreDispatcherP...
method TryCloseAsync (line 58) | public async Task<bool> TryCloseAsync()
method ToggleFullScreen (line 70) | public bool ToggleFullScreen()
method OnCloseRequested (line 81) | private async void OnCloseRequested(object sender, SystemNavigationClo...
FILE: FluentTerminal.App/Adapters/MessageDialogAdapter.cs
class MessageDialogAdapter (line 10) | public class MessageDialogAdapter : IMessageDialog
method MessageDialogAdapter (line 14) | public MessageDialogAdapter()
method AddButton (line 31) | public void AddButton(DialogButton button)
method ShowAsync (line 41) | public Task<DialogButton> ShowAsync()
FILE: FluentTerminal.App/App.xaml.cs
class App (line 44) | public sealed partial class App : Application
method App (line 63) | public App()
method OnUnhandledException (line 159) | private void OnUnhandledException(object sender, Windows.UI.Xaml.Unhan...
method SplitArguments (line 164) | private static IEnumerable<string> SplitArguments(string arguments)
method OnActivated (line 188) | protected override async void OnActivated(IActivatedEventArgs args)
method ParseCommandLineArgumentsAsync (line 194) | private async Task ParseCommandLineArgumentsAsync(object verb, Command...
method ShowOrCreateWindowAsync (line 313) | private Task ShowOrCreateWindowAsync(ActivationViewSwitcher viewSwitcher)
method OnLaunched (line 323) | protected override async void OnLaunched(LaunchActivatedEventArgs args)
method OnLaunchOrActivate (line 328) | public async Task OnLaunchOrActivate(IActivatedEventArgs args)
method InitializeLoggerAsync (line 548) | private static async Task InitializeLoggerAsync()
method OnBackgroundActivated (line 566) | protected override void OnBackgroundActivated(BackgroundActivatedEvent...
method OnTaskCanceled (line 584) | private void OnTaskCanceled(IBackgroundTaskInstance sender, Background...
method CreateMainViewAsync (line 594) | private async Task CreateMainViewAsync(Type pageType, INotifyPropertyC...
method CreateNewTerminalWindowAsync (line 626) | private async Task<MainViewModel> CreateNewTerminalWindowAsync()
method CreateSecondaryViewAsync (line 639) | private async Task<TViewModel> CreateSecondaryViewAsync<TViewModel>(Ty...
method OnApplicationSettingsChanged (line 670) | private void OnApplicationSettingsChanged(ApplicationSettingsChangedMe...
method OnMainViewModelClosed (line 676) | private void OnMainViewModelClosed(object sender, EventArgs e)
method OnMainViewActivated (line 706) | private void OnMainViewActivated(object sender, EventArgs e)
method OnTabTearOff (line 715) | private async void OnTabTearOff(object sender, TerminalViewModel model)
method OnNewWindowRequested (line 723) | private async void OnNewWindowRequested(object sender, NewWindowReques...
method OnSettingsClosed (line 730) | private void OnSettingsClosed(object sender, EventArgs e)
method OnShowSettingsRequested (line 739) | private void OnShowSettingsRequested(object sender, EventArgs e)
method ShowAsStandaloneAsync (line 745) | private Task ShowAsStandaloneAsync(MainViewModel viewModel, Activation...
method CreateTerminalAsync (line 756) | private async Task CreateTerminalAsync(ShellProfile profile, NewTermin...
method ShowSettingsAsync (line 780) | private Task ShowSettingsAsync()
method StartSystemTray (line 800) | private Task StartSystemTray()
FILE: FluentTerminal.App/Behaviors/MiddleClickBehavior.cs
class MiddleClickBehavior (line 7) | public class MiddleClickBehavior : Trigger<UIElement>
method OnAttached (line 11) | protected override void OnAttached()
method OnDetaching (line 17) | protected override void OnDetaching()
method OnPointerPressed (line 23) | private void OnPointerPressed(object sender, PointerRoutedEventArgs e)
method OnPointerReleased (line 29) | private void OnPointerReleased(object sender, PointerRoutedEventArgs e)
FILE: FluentTerminal.App/CommandLineArguments/NewVerb.cs
class NewVerb (line 5) | [Verb("new")]
FILE: FluentTerminal.App/CommandLineArguments/RunVerb.cs
class RunVerb (line 5) | [Verb("run")]
FILE: FluentTerminal.App/CommandLineArguments/SettingsVerb.cs
class SettingsVerb (line 5) | [Verb("settings")]
FILE: FluentTerminal.App/CommandLineArguments/Target.cs
type Target (line 3) | public enum Target
FILE: FluentTerminal.App/Converters/BackgroundToApplicationThemeConverter.cs
class BackgroundToApplicationThemeConverter (line 9) | public class BackgroundToApplicationThemeConverter : IValueConverter
method Convert (line 11) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 26) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/BooleanNegationConverter.cs
class BooleanNegationConverter (line 7) | public class BooleanNegationConverter : IValueConverter
method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 40) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/ColorResourceKeyFallbackConverter.cs
class ColorResourceKeyFallbackConverter (line 9) | public class ColorResourceKeyFallbackConverter : IValueConverter
method Convert (line 11) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 25) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/EnumValueToVisibiltyConverter.cs
class EnumValueToVisibiltyConverter (line 7) | public class EnumValueToVisibiltyConverter : IValueConverter
method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 18) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/FalseToVisibleConverter.cs
class FalseToVisibleConverter (line 7) | public class FalseToVisibleConverter : IValueConverter
method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 18) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/I18NConverter.cs
class I18NConverter (line 7) | public class I18NConverter : IValueConverter
method Translate (line 10) | private static string Translate(string resource)
method Convert (line 17) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 34) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/IconConverter.cs
class IconConverter (line 11) | public class IconConverter : IValueConverter
method Convert (line 13) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 30) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/IntToExtendedVirtualKeyConverter.cs
class IntToExtendedVirtualKeyConverter (line 8) | public class IntToExtendedVirtualKeyConverter : IValueConverter
method Convert (line 10) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 19) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/IntToVisibilityConverter.cs
class IntToVisibilityConverter (line 7) | public class IntToVisibilityConverter : DependencyObject, IValueConverter
method Convert (line 36) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 45) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs
class MenuItemViewModelBaseToMenuFlayoutItemBaseConverter (line 16) | public class MenuItemViewModelBaseToMenuFlayoutItemBaseConverter : IValu...
method GetItem (line 22) | private static MenuFlyoutItemBase GetItem(MenuItemViewModelBase viewMo...
method GetSeparatorItem (line 54) | private static MenuFlyoutSeparator GetSeparatorItem()
method GetRegularItem (line 59) | private static MenuFlyoutItem GetRegularItem(MenuItemViewModel viewModel)
method GetExpandableItem (line 115) | private static MenuFlyoutSubItem GetExpandableItem(ExpandableMenuItemV...
method GetToggleItem (line 151) | private static ToggleMenuFlyoutItem GetToggleItem(ToggleMenuItemViewMo...
method GetRadioItem (line 187) | private static RadioMenuFlyoutItem GetRadioItem(RadioMenuItemViewModel...
method Convert (line 235) | public object Convert(object value, Type targetType = null, object par...
method ConvertBack (line 249) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/MenuViewModelToFlyoutMenuConverter.cs
class MenuViewModelToFlyoutMenuConverter (line 9) | public class MenuViewModelToFlyoutMenuConverter : IValueConverter
method Convert (line 14) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 40) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/NegateConverter.cs
class NegateConverter (line 6) | public class NegateConverter : IValueConverter
method Convert (line 8) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 17) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/NullToCollapsedConverter.cs
class NullToCollapsedConverter (line 7) | public class NullToCollapsedConverter : IValueConverter
method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 14) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/StringToColorConverter.cs
class StringToColorConverter (line 8) | public class StringToColorConverter : IValueConverter
method Convert (line 10) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 20) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/TabColorFallbackConverter.cs
class TabColorFallbackConverter (line 11) | public class TabColorFallbackConverter : IValueConverter
method Convert (line 13) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 37) | public object ConvertBack(object value, Type targetType, object parame...
method GetBrush (line 42) | private Brush GetBrush(TabThemeKey tabThemeKey, string color, double o...
method CreateBrush (line 54) | private Brush CreateBrush(string hex, double opacity)
method GetFallbackRessourceKey (line 63) | private string GetFallbackRessourceKey(TabThemeKey tabThemeKey)
FILE: FluentTerminal.App/Converters/TabThemeSelectedConverter.cs
class TabThemeSelectedConverter (line 7) | public class TabThemeSelectedConverter : IValueConverter
method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 18) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/TerminalViewModelToViewConverter.cs
class TerminalViewModelToViewConverter (line 9) | internal class TerminalViewModelToViewConverter : IValueConverter
method TerminalViewModelToViewConverter (line 13) | public TerminalViewModelToViewConverter()
method RemoveTerminal (line 18) | public void RemoveTerminal(TerminalViewModel viewModel)
method Convert (line 29) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 45) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/TextMiddleEllipsisConverter.cs
class TextMiddleEllipsisConverter (line 9) | class TextMiddleEllipsisConverter : IValueConverter
method MeasureWidth (line 13) | private double MeasureWidth(string text)
method Convert (line 32) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 60) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/ToolTipValueToPixelConverter.cs
class ToolTipValueToPixelConverter (line 6) | public class ToolTipValueToPixelConverter : IValueConverter
method Convert (line 8) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 13) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Converters/TrueToVisibleConverter.cs
class TrueToVisibleConverter (line 7) | public class TrueToVisibleConverter : IValueConverter
method Convert (line 9) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 18) | public object ConvertBack(object value, Type targetType, object parame...
FILE: FluentTerminal.App/Dialogs/AboutDialog.xaml.cs
class AboutDialog (line 11) | public sealed partial class AboutDialog : ContentDialog, IAboutDialog
method AboutDialog (line 13) | public AboutDialog(ISettingsService settingsService, IUpdateService up...
method ShowAsync (line 28) | public new Task ShowAsync()
method ContentDialog_CloseButtonClick (line 33) | private void ContentDialog_CloseButtonClick(ContentDialog sender, Cont...
FILE: FluentTerminal.App/Dialogs/CreateKeyBindingDialog.xaml.cs
class CreateKeyBindingDialog (line 17) | public sealed partial class CreateKeyBindingDialog : ContentDialog, ICre...
method CreateKeyBindingDialog (line 58) | public CreateKeyBindingDialog()
method CreateKeyBinding (line 73) | public Task<KeyBinding> CreateKeyBinding()
method OnResetButtonPreviewKeyDown (line 82) | private void OnResetButtonPreviewKeyDown(object sender, Windows.UI.Xam...
method RegisterKeyBindingDialog_PreviewKeyDown (line 87) | private void RegisterKeyBindingDialog_PreviewKeyDown(object sender, Wi...
method Reset (line 117) | private void Reset()
method SetProperty (line 128) | private void SetProperty<T>(ref T field, T value, [CallerMemberName]st...
FILE: FluentTerminal.App/Dialogs/CustomCommandDialog.xaml.cs
class CustomCommandDialog (line 27) | public sealed partial class CustomCommandDialog : ContentDialog, ICustom...
method CustomCommandDialog (line 46) | public CustomCommandDialog(ISettingsService settingsService, IApplicat...
method SetupFocus (line 65) | private void SetupFocus()
method OnPrimaryButtonClick (line 70) | private async void OnPrimaryButtonClick(ContentDialog sender, ContentD...
method OnSecondaryButtonClick (line 92) | private void OnSecondaryButtonClick(ContentDialog sender, ContentDialo...
method SaveLink (line 97) | private async Task SaveLink()
method CommandTextBox_OnTextChanged (line 131) | private void CommandTextBox_OnTextChanged(AutoSuggestBox sender, AutoS...
method CommandTextBox_OnSuggestionChosen (line 147) | private void CommandTextBox_OnSuggestionChosen(AutoSuggestBox sender, ...
method CommandTextBox_OnQuerySubmitted (line 152) | private void CommandTextBox_OnQuerySubmitted(AutoSuggestBox sender, Au...
method CommandSelected (line 162) | private void CommandSelected(CommandItemViewModel commandItem)
method CommandTextBox_OnPreviewKeyUp (line 174) | private void CommandTextBox_OnPreviewKeyUp(object sender, KeyRoutedEve...
method CommandTextBox_OnKeyUp (line 204) | private async void CommandTextBox_OnKeyUp(object sender, KeyRoutedEven...
method CommandTextBox_OnKeyDown (line 248) | private void CommandTextBox_OnKeyDown(object sender, KeyRoutedEventArg...
method GetCustomCommandAsync (line 266) | public Task<ShellProfile> GetCustomCommandAsync(ShellProfile input = n...
FILE: FluentTerminal.App/Dialogs/InputDialog.xaml.cs
class InputDialog (line 14) | public sealed partial class InputDialog : ContentDialog, IInputDialog
method InputDialog (line 21) | public InputDialog(ISettingsService settingsService)
method GetInput (line 30) | public Task<string> GetInput()
method SetTitle (line 37) | public void SetTitle(string title)
method Dialog_KeyUp (line 42) | void Dialog_KeyUp(object sender, KeyRoutedEventArgs e)
FILE: FluentTerminal.App/Dialogs/SshInfoDialog.xaml.cs
class SshInfoDialog (line 21) | public sealed partial class SshInfoDialog : ContentDialog, ISshConnectio...
method SshInfoDialog (line 33) | public SshInfoDialog(ISettingsService settingsService, IApplicationVie...
method SetupFocus (line 53) | private void SetupFocus()
method BrowseIdentityFile (line 69) | private async Task BrowseIdentityFile()
method SaveLink (line 82) | private async Task SaveLink()
method OnPrimaryButtonClick (line 122) | private async void OnPrimaryButtonClick(ContentDialog sender, ContentD...
method Port_OnBeforeTextChanging (line 140) | private void Port_OnBeforeTextChanging(TextBox sender, TextBoxBeforeTe...
method GetSshConnectionInfoAsync (line 143) | public async Task<SshProfile> GetSshConnectionInfoAsync(SshProfile inp...
FILE: FluentTerminal.App/Services/ApplicationLanguageService.cs
class ApplicationLanguageService (line 8) | public class ApplicationLanguageService : IApplicationLanguageService
method SetLanguage (line 54) | public void SetLanguage(string language)
method GetCurrentLanguage (line 64) | public string GetCurrentLanguage()
FILE: FluentTerminal.App/Services/ClipboardService.cs
class ClipboardService (line 8) | public class ClipboardService : IClipboardService
method ClipboardService (line 17) | public ClipboardService(ISettingsService settingsService)
method GetTextAsync (line 22) | public Task<string> GetTextAsync()
method SetText (line 33) | public void SetText(string text)
FILE: FluentTerminal.App/Services/CommandHistoryService.cs
class CommandHistoryService (line 14) | public class CommandHistoryService : ICommandHistoryService
method GetHash (line 27) | private static string GetHash(string value)
method CommandHistoryService (line 66) | public CommandHistoryService(ApplicationDataContainers containers, ISe...
method GetRawHistory (line 76) | private List<ExecutedCommand> GetRawHistory(Func<List<ShellProfile>> p...
method LoadHistory (line 88) | private List<ExecutedCommand> LoadHistory()
method FixMoshBackwardCompatibility (line 116) | private void FixMoshBackwardCompatibility(List<ExecutedCommand> commands)
method Save (line 152) | private void Save(ExecutedCommand executedCommand)
method CleanupHistory (line 162) | private void CleanupHistory(Func<List<ShellProfile>> profilesProvider ...
method GetHistory (line 216) | private IEnumerable<ExecutedCommand> GetHistory(bool byNumberOfUsages,...
method GetHistoryRecentFirst (line 281) | public List<ExecutedCommand> GetHistoryRecentFirst(bool includeProfile...
method GetHistoryMostUsedFirst (line 286) | public List<ExecutedCommand> GetHistoryMostUsedFirst(bool includeProfi...
method MarkUsed (line 290) | public void MarkUsed(ShellProfile profile)
method Clear (line 354) | public void Clear()
method Delete (line 363) | public void Delete(ExecutedCommand executedCommand)
FILE: FluentTerminal.App/Services/FileSystemService.cs
class FileSystemService (line 12) | public class FileSystemService : IFileSystemService
method BrowseForDirectoryAsync (line 14) | public Task<string> BrowseForDirectoryAsync()
method OpenFileAsync (line 23) | public async Task<File> OpenFileAsync(IEnumerable<string> fileTypes)
method SaveImageInRoamingAsync (line 45) | public async Task<ImageFile> SaveImageInRoamingAsync(ImageFile imageFile)
method SaveTextFileAsync (line 59) | public async Task SaveTextFileAsync(string name, string fileTypeDescri...
FILE: FluentTerminal.App/Services/ImageFileSystemService.cs
class ImageFileSystemService (line 11) | public class ImageFileSystemService : IImageFileSystemService
method RemoveTemporaryBackgroundThemeImageAsync (line 13) | public async Task RemoveTemporaryBackgroundThemeImageAsync()
method ImportTemporaryImageFileAsync (line 31) | public async Task<ImageFile> ImportTemporaryImageFileAsync(IEnumerable...
method RemoveImportedImageAsync (line 72) | public async Task RemoveImportedImageAsync(string fileName)
method EncodeImage (line 98) | public string EncodeImage(ImageFile imageFile)
method ImportThemeImageAsync (line 113) | public async Task<ImageFile> ImportThemeImageAsync(ImageFile backgroun...
FILE: FluentTerminal.App/Services/StartupTaskService.cs
class StartupTaskService (line 8) | public class StartupTaskService : IStartupTaskService
method GetStatusAsync (line 12) | public Task<StartupTaskStatus> GetStatusAsync()
method EnableStartupTaskAsync (line 18) | public async Task<StartupTaskStatus> EnableStartupTaskAsync()
method DisableStartupTaskAsync (line 25) | public Task DisableStartupTaskAsync()
method ToStartupTaskStatus (line 31) | private StartupTaskStatus ToStartupTaskStatus(StartupTaskState state)
FILE: FluentTerminal.App/Services/SystemFontService.cs
class SystemFontService (line 6) | public class SystemFontService : ISystemFontService
method GetSystemFontFamilies (line 8) | public IEnumerable<string> GetSystemFontFamilies()
FILE: FluentTerminal.App/Utilities/ColorExtensions.cs
class ColorExtensions (line 7) | public static class ColorExtensions
method ToColorString (line 9) | public static string ToColorString(this Color color, bool allowTranspa...
method ToDoubleString (line 21) | private static string ToDoubleString(byte alpha)
method FromString (line 26) | public static Color FromString(this string colorString)
FILE: FluentTerminal.App/Utilities/ContrastHelper.cs
class ContrastHelper (line 8) | public static class ContrastHelper
method GetIdealThemeForBackgroundColor (line 10) | public static ElementTheme GetIdealThemeForBackgroundColor(string color)
method GetIdealThemeForBackgroundColor (line 15) | public static ElementTheme GetIdealThemeForBackgroundColor(Color color)
method SetTitleBarButtonsForTheme (line 27) | public static void SetTitleBarButtonsForTheme(ElementTheme theme)
method GetColor (line 43) | public static Color? GetColor(string name, ElementTheme theme)
FILE: FluentTerminal.App/Utilities/DelayedAction.cs
class DelayedAction (line 8) | public class DelayedAction<T> : IDisposable
method DelayedAction (line 23) | public DelayedAction(Action<T> action, int delayMilliseconds, CoreDisp...
method InvokeAsync (line 30) | public Task InvokeAsync(T parameter)
method Loop (line 55) | private async Task Loop()
method Cancel (line 117) | public void Cancel()
method Dispose (line 138) | public void Dispose() => Cancel();
FILE: FluentTerminal.App/Utilities/DispatcherExtensions.cs
class DispatcherExtensions (line 7) | internal static class DispatcherExtensions
method ExecuteAsync (line 9) | internal static Task ExecuteAsync(this CoreDispatcher dispatcher, Acti...
method ExecuteAsync (line 22) | internal static Task<T> ExecuteAsync<T>(this CoreDispatcher dispatcher...
FILE: FluentTerminal.App/Utilities/InteractiveSurface.cs
class InteractiveSurface (line 7) | class InteractiveSurface : ContentControl
method OnPointerEntered (line 18) | protected override void OnPointerEntered(PointerRoutedEventArgs e)
method OnPointerCanceled (line 24) | protected override void OnPointerCanceled(PointerRoutedEventArgs e)
method OnPointerExited (line 30) | protected override void OnPointerExited(PointerRoutedEventArgs e)
FILE: FluentTerminal.App/Utilities/JumpListHelper.cs
class JumpListHelper (line 8) | public static class JumpListHelper
method UpdateAsync (line 12) | public static async Task UpdateAsync(ISettingsService settingsService)
FILE: FluentTerminal.App/ViewModels/CommandItemViewModel.cs
class CommandItemViewModel (line 11) | public class CommandItemViewModel : ObservableObject
method CommandItemViewModel (line 59) | public CommandItemViewModel(ExecutedCommand command)
method CalculateMatch (line 99) | internal void CalculateMatch(string trimmedFilter, string[] lowercaseF...
method CalculateMatchPrivate (line 121) | private void CalculateMatchPrivate(string[] lowercaseFilterWords)
method Flatten (line 318) | private List<Tuple<int, int, int, int>> Flatten(List<List<Tuple<int, i...
method ShowMatch (line 356) | public void ShowMatch(string trimmedLowercaseFilter, string[] lowercas...
method GetBlock (line 374) | private Block GetBlock()
method ToString (line 403) | public override string ToString()
FILE: FluentTerminal.App/ViewModels/CommandProfileProviderViewModel.cs
class CommandProfileProviderViewModel (line 17) | public class CommandProfileProviderViewModel : ProfileProviderViewModelBase
method ExtractCommandAndArgs (line 23) | private static string ExtractCommandAndArgs(string commandAndArgs, out...
method CommandProfileProviderViewModel (line 107) | public CommandProfileProviderViewModel(ISettingsService settingsServic...
method Initialize (line 136) | private void Initialize(ShellProfile profile)
method LoadFromProfile (line 141) | protected override void LoadFromProfile(ShellProfile profile)
method CopyToProfileAsync (line 148) | protected override async Task CopyToProfileAsync(ShellProfile profile)
method ValidateAsync (line 208) | public override async Task<string> ValidateAsync()
method HasChanges (line 261) | public override bool HasChanges()
method SetProfile (line 266) | public void SetProfile(ShellProfile profile)
method SetFilter (line 273) | public void SetFilter(string filter)
method FilteringLoop (line 291) | private async Task FilteringLoop()
method SetFilterAsync (line 328) | private Task SetFilterAsync(string filter, bool containsPrevious)
method RemoveCommand (line 378) | public void RemoveCommand(ExecutedCommand command)
method IsProfileCommand (line 392) | public bool IsProfileCommand(ExecutedCommand command) => _allProfiles....
method CheckScheme (line 403) | public static bool CheckScheme(Uri uri) => CustomSshUriScheme.Equals(u...
method ParseUri (line 405) | public static CommandProfileProviderViewModel ParseUri(Uri uri, ISetti...
method GetUrlAsync (line 442) | public override async Task<Tuple<bool, string>> GetUrlAsync()
FILE: FluentTerminal.App/ViewModels/DelayedHistorySaver.cs
class DelayedHistorySaver (line 7) | internal class DelayedHistorySaver : ISessionSuccessTracker
method DelayedHistorySaver (line 22) | internal DelayedHistorySaver(Action saveAction)
method SetSuccessfulSessionStart (line 27) | public void SetSuccessfulSessionStart()
method SetOutputReceived (line 45) | public void SetOutputReceived()
method SetInvalid (line 63) | public void SetInvalid()
method InitiateSave (line 80) | private void InitiateSave()
FILE: FluentTerminal.App/ViewModels/EnvironmentVariableViewModel.cs
class EnvironmentVariableViewModel (line 6) | public class EnvironmentVariableViewModel : ObservableObject
FILE: FluentTerminal.App/ViewModels/ISessionSuccessTracker.cs
type ISessionSuccessTracker (line 3) | public interface ISessionSuccessTracker
method SetSuccessfulSessionStart (line 5) | void SetSuccessfulSessionStart();
method SetOutputReceived (line 7) | void SetOutputReceived();
method SetInvalid (line 9) | void SetInvalid();
FILE: FluentTerminal.App/ViewModels/ITerminalView.cs
type ITerminalView (line 7) | public interface ITerminalView : IDisposable
method ChangeFontSize (line 9) | Task ChangeFontSize(int fontSize);
method ChangeThemeAsync (line 10) | Task ChangeThemeAsync(TerminalTheme theme);
method ChangeKeyBindingsAsync (line 11) | Task ChangeKeyBindingsAsync();
method ChangeOptionsAsync (line 12) | Task ChangeOptionsAsync(TerminalOptions options);
method InitializeAsync (line 13) | Task InitializeAsync(TerminalViewModel viewModel);
method ReconnectAsync (line 14) | Task ReconnectAsync();
method DisposalPrepare (line 15) | void DisposalPrepare();
method FindNextAsync (line 16) | Task FindNextAsync(SearchRequest request);
method FindPreviousAsync (line 17) | Task FindPreviousAsync(SearchRequest request);
method FocusTerminalAsync (line 18) | Task FocusTerminalAsync();
method SerializeXtermStateAsync (line 19) | Task<string> SerializeXtermStateAsync();
method Paste (line 20) | void Paste(string text);
FILE: FluentTerminal.App/ViewModels/Infrastructure/IErrorHandler.cs
type IErrorHandler (line 5) | public interface IErrorHandler
method HandleError (line 7) | void HandleError(Exception ex);
FILE: FluentTerminal.App/ViewModels/MainViewModel.cs
class MainViewModel (line 23) | public class MainViewModel : ObservableObject,
method MainViewModel (line 47) | public MainViewModel(ISettingsService settingsService, ITrayProcessCom...
method UpdateDefaultShellProfile (line 140) | private void UpdateDefaultShellProfile()
method LoadKeyBindings (line 156) | private void LoadKeyBindings() => _keyBindings = _settingsService.GetC...
method OnClosed (line 158) | private void OnClosed(object sender, EventArgs e)
method OnTerminalsCollectionChanged (line 175) | private void OnTerminalsCollectionChanged(object sender, NotifyCollect...
method TearOffTab (line 191) | public void TearOffTab(TerminalViewModel model)
method FocusWindow (line 196) | public void FocusWindow()
method AddDefaultProfileAsync (line 274) | public Task AddDefaultProfileAsync(NewTerminalLocation location)
method AddSshProfileAsync (line 281) | private async Task AddSshProfileAsync(NewTerminalLocation location)
method AddQuickLaunchProfileAsync (line 288) | private async Task AddQuickLaunchProfileAsync(NewTerminalLocation loca...
method AddProfileByGuidAsync (line 295) | public Task AddProfileByGuidAsync(Guid profileId) =>
method AddProfileByGuidAsync (line 298) | private async Task AddProfileByGuidAsync(Guid profileId, NewTerminalLo...
method AddTabAsync (line 306) | public Task AddTabAsync(string terminalState, int position)
method AddProfileAsync (line 311) | private Task AddProfileAsync(ShellProfile profile) =>
method AddProfileAsync (line 314) | private Task AddProfileAsync(ShellProfile profile, NewTerminalLocation...
method AddTabAsync (line 331) | public Task AddTabAsync(ShellProfile profile) => AddTabAsync(profile, ...
method AddTabAsync (line 333) | private Task AddTabAsync(ShellProfile profile, string terminalState, i...
method Terminal_PropertyChanged (line 356) | private void Terminal_PropertyChanged(object sender, PropertyChangedEv...
method SetWindowTitle (line 375) | private Task SetWindowTitle(TerminalViewModel terminalViewModel)
method Terminal_DuplicateTabRequested (line 386) | private async void Terminal_DuplicateTabRequested(object sender, Event...
method Terminal_CloseOtherTabsRequested (line 394) | private async void Terminal_CloseOtherTabsRequested(object sender, Eve...
method Terminal_CloseRightTabsRequested (line 406) | private async void Terminal_CloseRightTabsRequested(object sender, Eve...
method Terminal_CloseLeftTabsRequested (line 420) | private async void Terminal_CloseLeftTabsRequested(object sender, Even...
method CloseAllTerminalsAsync (line 434) | private Task CloseAllTerminalsAsync()
method CloseCurrentTab (line 448) | private void CloseCurrentTab()
method OnCloseRequest (line 453) | private async Task OnCloseRequest(object sender, CancelableEventArgs e)
method OnTerminalClosed (line 475) | private void OnTerminalClosed(object sender, EventArgs e)
method Receive (line 508) | public void Receive(ShellProfileDeletedMessage message)
method Receive (line 517) | public void Receive(ShellProfileChangedMessage message)
method Receive (line 524) | public void Receive(ShellProfileAddedMessage message)
method Receive (line 534) | public void Receive(DefaultShellProfileChangedMessage message)
method Receive (line 539) | public void Receive(ApplicationSettingsChangedMessage message)
method Receive (line 565) | public void Receive(TerminalOptionsChangedMessage message)
method Receive (line 574) | public void Receive(KeyBindingsChangedMessage message)
method Receive (line 581) | public void Receive(CommandHistoryChangedMessage message)
method SelectTabNumber (line 586) | private void SelectTabNumber(int tabNumber)
method SelectNextTab (line 594) | private void SelectNextTab()
method SelectPreviousTab (line 601) | private void SelectPreviousTab()
method ShowSettings (line 608) | public void ShowSettings()
method ToggleFullScreen (line 613) | private void ToggleFullScreen()
method OnWindowKeyDown (line 618) | public void OnWindowKeyDown(int key, bool control, bool alt, bool shif...
method CreateMenuViewModel (line 651) | private void CreateMenuViewModel()
method FillCoreItems (line 719) | private void FillCoreItems(ObservableCollection<MenuItemViewModelBase>...
method GetRecentMenuItems (line 795) | private ObservableCollection<MenuItemViewModel> GetRecentMenuItems() =>
method CommandToMenuItem (line 799) | private MenuItemViewModel CommandToMenuItem(ExecutedCommand command)
method LoadKeyBindingsFromModel (line 809) | private void LoadKeyBindingsFromModel(MenuItemViewModel menuItemViewMo...
FILE: FluentTerminal.App/ViewModels/Menu/ExpandableMenuItemViewModel.cs
class ExpandableMenuItemViewModel (line 7) | public class ExpandableMenuItemViewModel : MenuItemViewModelBase
method ExpandableMenuItemViewModel (line 11) | public ExpandableMenuItemViewModel(string text, IEnumerable<MenuItemVi...
method EquivalentTo (line 28) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App/ViewModels/Menu/Mdl2Icon.cs
class Mdl2Icon (line 3) | public sealed class Mdl2Icon
method Mdl2Icon (line 8) | private Mdl2Icon(string glyph, string color = null)
method Link (line 14) | public static Mdl2Icon Link(string color = null) => new Mdl2Icon("\uE7...
method Copy (line 16) | public static Mdl2Icon Copy(string color = null) => new Mdl2Icon("\uE8...
method Paste (line 18) | public static Mdl2Icon Paste(string color = null) => new Mdl2Icon("\uE...
method Edit (line 20) | public static Mdl2Icon Edit(string color = null) => new Mdl2Icon("\uE7...
method Search (line 22) | public static Mdl2Icon Search(string color = null) => new Mdl2Icon("\u...
method Add (line 24) | public static Mdl2Icon Add(string color = null) => new Mdl2Icon("\uE71...
method Cancel (line 26) | public static Mdl2Icon Cancel(string color = null) => new Mdl2Icon("\u...
method PaginationDotOutline10 (line 28) | public static Mdl2Icon PaginationDotOutline10(string color = null) => ...
method PaginationDotSolid10 (line 30) | public static Mdl2Icon PaginationDotSolid10(string color = null) => ne...
method NewWindow (line 32) | public static Mdl2Icon NewWindow(string color = null) => new Mdl2Icon(...
method History (line 34) | public static Mdl2Icon History(string color = null) => new Mdl2Icon("\...
method Settings (line 36) | public static Mdl2Icon Settings(string color = null) => new Mdl2Icon("...
method Info (line 38) | public static Mdl2Icon Info(string color = null) => new Mdl2Icon("\uE9...
method FavoriteStar (line 40) | public static Mdl2Icon FavoriteStar(string color = null) => new Mdl2Ic...
method Globe (line 42) | public static Mdl2Icon Globe(string color = null) => new Mdl2Icon("\uE...
method Play (line 44) | public static Mdl2Icon Play(string color = null) => new Mdl2Icon("\uE7...
FILE: FluentTerminal.App/ViewModels/Menu/MenuItemKeyBindingViewModel.cs
class MenuItemKeyBindingViewModel (line 11) | public class MenuItemKeyBindingViewModel : ObservableObject
method GetOverrideText (line 88) | public string GetOverrideText()
method MenuItemKeyBindingViewModel (line 102) | public MenuItemKeyBindingViewModel(int key = 0, bool ctrl = false, boo...
method MenuItemKeyBindingViewModel (line 114) | public MenuItemKeyBindingViewModel(KeyBinding keyBinding) : this(keyBi...
method SetKeyModifiers (line 121) | private void SetKeyModifiers()
method EquivalentTo (line 149) | public bool EquivalentTo(MenuItemKeyBindingViewModel other)
FILE: FluentTerminal.App/ViewModels/Menu/MenuItemViewModel.cs
class MenuItemViewModel (line 6) | public class MenuItemViewModel : MenuItemViewModelBase
method MenuItemViewModel (line 24) | public MenuItemViewModel(string text, ICommand command, string descrip...
method EquivalentTo (line 35) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App/ViewModels/Menu/MenuItemViewModelBase.cs
class MenuItemViewModelBase (line 6) | public class MenuItemViewModelBase : ObservableObject
method MenuItemViewModelBase (line 38) | protected MenuItemViewModelBase(string text, string description, Mdl2I...
method EquivalentTo (line 49) | public virtual bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App/ViewModels/Menu/MenuViewModel.cs
class MenuViewModel (line 8) | public class MenuViewModel : ObservableObject
method MenuViewModel (line 12) | public MenuViewModel(IEnumerable<MenuItemViewModelBase> items = null)
method EquivalentTo (line 28) | public bool EquivalentTo(MenuViewModel other)
FILE: FluentTerminal.App/ViewModels/Menu/RadioMenuItemViewModel.cs
class RadioMenuItemViewModel (line 5) | public class RadioMenuItemViewModel : MenuItemViewModelBase
method RadioMenuItemViewModel (line 11) | public RadioMenuItemViewModel(string text, string groupName, object bi...
method EquivalentTo (line 19) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App/ViewModels/Menu/SeparatorMenuItemViewModel.cs
class SeparatorMenuItemViewModel (line 3) | public class SeparatorMenuItemViewModel : MenuItemViewModelBase
method SeparatorMenuItemViewModel (line 5) | public SeparatorMenuItemViewModel()
method EquivalentTo (line 10) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App/ViewModels/Menu/ToggleMenuItemViewModel.cs
class ToggleMenuItemViewModel (line 5) | public class ToggleMenuItemViewModel : MenuItemViewModelBase
method ToggleMenuItemViewModel (line 10) | public ToggleMenuItemViewModel(string text, object bindingSource, stri...
method EquivalentTo (line 17) | public override bool EquivalentTo(MenuItemViewModelBase other)
FILE: FluentTerminal.App/ViewModels/OverlayViewModel.cs
class OverlayViewModel (line 7) | public class OverlayViewModel : ObservableObject
method OverlayViewModel (line 14) | public OverlayViewModel()
method Show (line 31) | public void Show(string message)
method OnResizeOverlayTimerFinished (line 45) | private void OnResizeOverlayTimerFinished(object sender, object e)
FILE: FluentTerminal.App/ViewModels/ProfileViewModelBase.cs
class ProfileViewModelBase (line 20) | public abstract class ProfileViewModelBase<T> : ObservableObject where T...
method ProfileViewModelBase (line 86) | protected ProfileViewModelBase(ShellProfile shellProfile, ISettingsSer...
method Initialize (line 118) | protected void Initialize(ShellProfile shellProfile)
method HasChanges (line 130) | protected virtual bool HasChanges()
method DeleteAsync (line 139) | private async Task DeleteAsync()
method CanDelete (line 151) | protected abstract bool CanDelete();
method Edit (line 153) | private void Edit()
method CancelEditAsync (line 169) | private async Task CancelEditAsync()
method SaveChangesAsync (line 201) | private async Task SaveChangesAsync()
method AddKeyboardShortcutAsync (line 251) | private Task AddKeyboardShortcutAsync()
FILE: FluentTerminal.App/ViewModels/Profiles/CommonProfileProviderViewModel.cs
class CommonProfileProviderViewModel (line 13) | public class CommonProfileProviderViewModel : ProfileProviderViewModelBase
method CommonProfileProviderViewModel (line 61) | public CommonProfileProviderViewModel(ISettingsService settingsService...
method Initialize (line 77) | private void Initialize(ShellProfile profile)
method LoadFromProfile (line 85) | protected override void LoadFromProfile(ShellProfile profile)
method CopyToProfileAsync (line 92) | protected override async Task CopyToProfileAsync(ShellProfile profile)
method ValidateAsync (line 101) | public override async Task<string> ValidateAsync()
method HasChanges (line 120) | public override bool HasChanges()
method BrowseForCustomShell (line 128) | private async Task BrowseForCustomShell()
method BrowseForWorkingDirectory (line 139) | private async Task BrowseForWorkingDirectory()
FILE: FluentTerminal.App/ViewModels/Profiles/ProfileProviderViewModelBase.cs
class ProfileProviderViewModelBase (line 20) | public abstract class ProfileProviderViewModelBase : ObservableObject,
method ProfileProviderViewModelBase (line 166) | protected ProfileProviderViewModelBase(ISettingsService settingsServic...
method Receive (line 194) | public void Receive(ThemeDeletedMessage message)
method Receive (line 214) | public void Receive(ThemeAddedMessage message)
method Initialize (line 219) | private void Initialize(ShellProfile profile)
method LoadFromProfile (line 227) | protected virtual void LoadFromProfile(ShellProfile profile)
method CopyToProfileAsync (line 232) | protected virtual Task CopyToProfileAsync(ShellProfile profile)
method ValidateAsync (line 241) | public virtual Task<string> ValidateAsync()
method HasChanges (line 250) | public virtual bool HasChanges()
method AcceptChangesAsync (line 267) | public async Task<string> AcceptChangesAsync(bool acceptIfInvalid = fa...
method RejectChangesAsync (line 279) | public Task RejectChangesAsync()
method GetShortcutFileContent (line 300) | public static string GetShortcutFileContent(string url) => string.Form...
method ParseParams (line 302) | public static IEnumerable<Tuple<string, string>> ParseParams(string ur...
method ParseSshOptionFromUri (line 305) | private static Tuple<string, string> ParseSshOptionFromUri(string option)
method GetUrlAsync (line 324) | public virtual Task<Tuple<bool, string>> GetUrlAsync() =>
method GetBaseQueryString (line 327) | public string GetBaseQueryString()
method LoadBaseFromQueryString (line 344) | public void LoadBaseFromQueryString(IList<Tuple<string, string>> query...
FILE: FluentTerminal.App/ViewModels/Profiles/SshConnectViewModel.cs
class SshConnectViewModel (line 20) | public class SshConnectViewModel : ProfileProviderViewModelBase
method GetErrorString (line 24) | public static string GetErrorString(SshConnectionInfoValidationResult ...
method GetErrors (line 27) | public static IEnumerable<string> GetErrors(SshConnectionInfoValidatio...
method SshConnectViewModel (line 124) | public SshConnectViewModel(ISettingsService settingsService, IApplicat...
method Initialize (line 144) | private void Initialize(SshProfile sshProfile)
method BrowseForIdentityFileAsync (line 171) | private async Task BrowseForIdentityFileAsync()
method GetArgumentsString (line 181) | private string GetArgumentsString()
method GetSshArguments (line 195) | private string GetSshArguments()
method LoadFromProfile (line 207) | protected override void LoadFromProfile(ShellProfile profile)
method CopyToProfileAsync (line 214) | protected override async Task CopyToProfileAsync(ShellProfile profile)
method ValidateAsync (line 234) | public override async Task<string> ValidateAsync()
method HasChanges (line 260) | public override bool HasChanges()
method GetSshInfoValidationResultAsync (line 270) | private async Task<SshConnectionInfoValidationResult> GetSshInfoValida...
method CheckIdentityFileExistsAsync (line 313) | private async Task<bool> CheckIdentityFileExistsAsync()
method SetValidatedIdentityFile (line 356) | public void SetValidatedIdentityFile(string identityFile)
method CheckScheme (line 381) | public static bool CheckScheme(Uri uri) =>
method ParseUri (line 385) | public static SshConnectViewModel ParseUri(Uri uri, ISettingsService s...
method GetUrlAsync (line 452) | public override async Task<Tuple<bool, string>> GetUrlAsync()
FILE: FluentTerminal.App/ViewModels/Profiles/SshConnectionInfoValidationResult.cs
type SshConnectionInfoValidationResult (line 5) | [Flags]
FILE: FluentTerminal.App/ViewModels/Settings/AboutPageViewModel.cs
class AboutPageViewModel (line 9) | public class AboutPageViewModel : ObservableObject
method AboutPageViewModel (line 16) | public AboutPageViewModel(IUpdateService updateService, IApplicationVi...
method OnNavigatedTo (line 60) | public Task OnNavigatedTo()
method CheckForUpdateAsync (line 65) | private async Task CheckForUpdateAsync(bool notifyNoUpdate)
FILE: FluentTerminal.App/ViewModels/Settings/GeneralPageViewModel.cs
class GeneralPageViewModel (line 13) | public class GeneralPageViewModel : ObservableObject
method GeneralPageViewModel (line 29) | public GeneralPageViewModel(ISettingsService settingsService, IDialogS...
method OnNavigatedToAsync (line 66) | public async Task OnNavigatedToAsync()
method RestoreDefaultsAsync (line 410) | private async Task RestoreDefaultsAsync()
method SetStartupTaskPropertiesForStatus (line 441) | private void SetStartupTaskPropertiesForStatus(StartupTaskStatus start...
method SetStartupTaskStateAsync (line 478) | private async Task SetStartupTaskStateAsync(bool enabled)
method BrowseLogDirectoryAsync (line 497) | private async Task BrowseLogDirectoryAsync()
FILE: FluentTerminal.App/ViewModels/Settings/KeyBindingViewModel.cs
class KeyBindingViewModel (line 12) | public class KeyBindingViewModel : ObservableObject
method KeyBindingViewModel (line 16) | public KeyBindingViewModel(KeyBinding keyBinding, IDialogService dialo...
method EditAsync (line 103) | public async Task<bool> EditAsync()
method DeleteAsync (line 125) | private async Task DeleteAsync()
FILE: FluentTerminal.App/ViewModels/Settings/KeyBindingsPageViewModel.cs
class KeyBindingsPageViewModel (line 16) | public class KeyBindingsPageViewModel : ObservableObject
method KeyBindingsPageViewModel (line 22) | public KeyBindingsPageViewModel(ISettingsService settingsService, IDia...
method AddAsync (line 37) | private Task AddAsync(string command)
method ClearKeyBindings (line 43) | private void ClearKeyBindings()
method Initialize (line 54) | private void Initialize(IDictionary<string, ICollection<KeyBinding>> k...
method OnEdited (line 71) | private void OnEdited(string command, ICollection<KeyBinding> keyBindi...
method RestoreDefaultsAsync (line 78) | private async Task RestoreDefaultsAsync()
FILE: FluentTerminal.App/ViewModels/Settings/KeyBindingsViewModel.cs
class KeyBindingsViewModel (line 12) | public class KeyBindingsViewModel : ObservableObject
method KeyBindingsViewModel (line 17) | public KeyBindingsViewModel(string command, IDialogService dialogServi...
method ShowAddKeyBindingDialogAsync (line 46) | public async Task ShowAddKeyBindingDialogAsync()
method Clear (line 58) | public void Clear()
method Add (line 64) | public void Add(KeyBinding keyBinding)
method ViewModel_Deleted (line 74) | private void ViewModel_Deleted(object sender, EventArgs e)
method ViewModel_Edited (line 83) | private void ViewModel_Edited(object sender, EventArgs e)
FILE: FluentTerminal.App/ViewModels/Settings/MousePageViewModel.cs
class MousePageViewModel (line 12) | public class MousePageViewModel : ObservableObject
method MousePageViewModel (line 19) | public MousePageViewModel(ISettingsService settingsService, IDialogSer...
method RestoreDefaultsAsync (line 122) | private async Task RestoreDefaultsAsync()
FILE: FluentTerminal.App/ViewModels/Settings/ProfilesPageViewModel.cs
class ProfilesPageViewModel (line 13) | public class ProfilesPageViewModel : ObservableObject
method ProfilesPageViewModel (line 22) | public ProfilesPageViewModel(ISettingsService settingsService, IDialog...
method OnShellProfileSetAsDefault (line 51) | private void OnShellProfileSetAsDefault(object sender, EventArgs e)
method OnShellProfileDeleted (line 64) | private void OnShellProfileDeleted(object sender, EventArgs e)
method CreateShellProfile (line 87) | private void CreateShellProfile()
method Clone (line 101) | private void Clone(ShellProfileViewModel shellProfile)
method AddShellProfile (line 113) | private void AddShellProfile(ShellProfile shellProfile)
FILE: FluentTerminal.App/ViewModels/Settings/SshProfilesPageViewModel.cs
class SshProfilesPageViewModel (line 13) | public class SshProfilesPageViewModel: ObservableObject
method SshProfilesPageViewModel (line 23) | public SshProfilesPageViewModel(ISettingsService settingsService, IDia...
method OnSshProfileDeleted (line 54) | private void OnSshProfileDeleted(object sender, EventArgs e)
method CreateSshProfile (line 71) | public void CreateSshProfile()
method Clone (line 86) | private void Clone(SshProfileViewModel shellProfile)
method AddSshProfile (line 102) | private void AddSshProfile(SshProfile sshProfile)
FILE: FluentTerminal.App/ViewModels/Settings/TerminalPageViewModel.cs
class TerminalPageViewModel (line 15) | public class TerminalPageViewModel : ObservableObject
method RestoreDefaultsAsync (line 231) | private async Task RestoreDefaultsAsync()
method TerminalPageViewModel (line 253) | public TerminalPageViewModel(ISettingsService settingsService, IDialog...
FILE: FluentTerminal.App/ViewModels/Settings/ThemesPageViewModel.cs
class ThemesPageViewModel (line 16) | public class ThemesPageViewModel : ObservableObject,
method ThemesPageViewModel (line 32) | public ThemesPageViewModel(ISettingsService settingsService,
method CloneTheme (line 106) | private void CloneTheme(ThemeViewModel theme)
method CreateTheme (line 118) | private void CreateTheme()
method ImportThemeAsync (line 133) | private async Task ImportThemeAsync()
method AddTheme (line 179) | private void AddTheme(TerminalTheme theme)
method OnThemeActivated (line 191) | private void OnThemeActivated(object sender, EventArgs e)
method OnThemeDeleted (line 204) | private void OnThemeDeleted(object sender, EventArgs e)
method Receive (line 223) | public void Receive(TerminalOptionsChangedMessage message)
method OnSelectedThemeBackgroundChanged (line 228) | private void OnSelectedThemeBackgroundChanged(object sender, string e)
method OnSelectedThemeBackgroundImageChanged (line 233) | private void OnSelectedThemeBackgroundImageChanged(object sender, Imag...
FILE: FluentTerminal.App/ViewModels/SettingsViewModel.cs
class SettingsViewModel (line 8) | public class SettingsViewModel : ObservableObject
method SettingsViewModel (line 10) | public SettingsViewModel(ISettingsService settingsService, IDefaultVal...
method Close (line 36) | public void Close()
FILE: FluentTerminal.App/ViewModels/ShellProfileViewModel.cs
class ShellProfileViewModel (line 16) | public class ShellProfileViewModel : ProfileViewModelBase<CommonProfileP...
method ShellProfileViewModel (line 52) | public ShellProfileViewModel(ShellProfile shellProfile, ISettingsServi...
method RestoreDefaultsAsync (line 71) | private async Task RestoreDefaultsAsync()
method CanDelete (line 99) | protected override bool CanDelete()
method SetDefault (line 104) | private void SetDefault()
FILE: FluentTerminal.App/ViewModels/SshProfileViewModel.cs
class SshProfileViewModel (line 11) | public class SshProfileViewModel : ProfileViewModelBase<SshConnectViewMo...
method SshProfileViewModel (line 15) | public SshProfileViewModel(SshProfile sshProfile, ISettingsService set...
method CanDelete (line 29) | protected override bool CanDelete()
FILE: FluentTerminal.App/ViewModels/TabThemeViewModel.cs
class TabThemeViewModel (line 6) | public class TabThemeViewModel : ObservableObject
method TabThemeViewModel (line 10) | public TabThemeViewModel(TabTheme theme, TerminalViewModel terminal)
FILE: FluentTerminal.App/ViewModels/TerminalViewModel.cs
class TerminalViewModel (line 22) | public class TerminalViewModel : ObservableObject,
class TerminalState (line 36) | private class TerminalState
method SerializeAsync (line 54) | public async Task<string> SerializeAsync()
method Restore (line 77) | public void Restore(string data)
method TerminalViewModel (line 126) | public TerminalViewModel(ISettingsService settingsService, ITrayProces...
method DisposalPrepare (line 203) | public void DisposalPrepare()
method CloseAsync (line 474) | public Task CloseAsync()
method CopyTextAsync (line 481) | public Task CopyTextAsync(string text)
method EditTitleAsync (line 495) | public async Task EditTitleAsync()
method FocusTerminal (line 515) | public void FocusTerminal()
method CloseSearchPanel (line 520) | private void CloseSearchPanel()
method CanExecuteCommand (line 527) | private bool CanExecuteCommand<T>(T a)
method CanExecuteCommand (line 532) | private bool CanExecuteCommand()
method CloseLeftTabs (line 537) | private void CloseLeftTabs()
method CloseRightTabs (line 542) | private void CloseRightTabs()
method CloseOtherTabs (line 547) | private void CloseOtherTabs()
method FindNext (line 552) | private void FindNext()
method SerializeXtermStateAsync (line 559) | private Task<string> SerializeXtermStateAsync()
method FindPrevious (line 564) | private void FindPrevious()
method DuplicateTab (line 569) | private void DuplicateTab()
method ReconnectTabAsync (line 574) | public async Task ReconnectTabAsync()
method Receive (line 580) | public void Receive(ApplicationSettingsChangedMessage message)
method Receive (line 591) | public void Receive(CurrentThemeChangedMessage message)
method Receive (line 606) | public void Receive(TerminalOptionsChangedMessage message)
method Receive (line 612) | public void Receive(KeyBindingsChangedMessage message)
method Terminal_Exited (line 631) | private void Terminal_Exited(object sender, int exitCode)
method Terminal_Closed (line 641) | private void Terminal_Closed(object sender, EventArgs e)
method Terminal_KeyboardCommandReceived (line 652) | private async void Terminal_KeyboardCommandReceived(object sender, str...
method Terminal_OutputReceived (line 724) | private void Terminal_OutputReceived(object sender, byte[] e)
method Terminal_SizeChanged (line 737) | private void Terminal_SizeChanged(object sender, TerminalSize e)
method Terminal_TitleChanged (line 742) | private void Terminal_TitleChanged(object sender, string e)
method TryCloseAsync (line 748) | private async Task TryCloseAsync()
method Copy (line 764) | private async Task Copy()
method Paste (line 770) | private async Task Paste()
method BuidContextMenu (line 784) | private MenuViewModel BuidContextMenu()
method BuildTabContextMenu (line 829) | private MenuViewModel BuildTabContextMenu()
method AddKeyBindings (line 878) | private void AddKeyBindings(MenuItemViewModel menuItem, Command comman...
FILE: FluentTerminal.App/ViewModels/ThemeViewModel.cs
class ThemeViewModel (line 13) | public class ThemeViewModel : ObservableObject
method ThemeViewModel (line 52) | public ThemeViewModel(TerminalTheme theme,
method SaveChangesAsync (line 299) | private async Task SaveChangesAsync()
method CancelEditAsync (line 349) | private async Task CancelEditAsync()
method NotPreInstalled (line 439) | private bool NotPreInstalled()
method DeleteAsync (line 445) | private async Task DeleteAsync()
method DeleteBackgroundImageAsync (line 463) | private async Task DeleteBackgroundImageAsync()
method Edit (line 476) | private void Edit()
method SetActive (line 482) | private void SetActive()
method Export (line 487) | private Task Export()
method SaveBackgroundImageAsync (line 495) | private async Task<ImageFile> SaveBackgroundImageAsync()
method ChooseBackgroundImageAsync (line 516) | private async Task ChooseBackgroundImageAsync()
method DeleteBackgroundImageIfExistsAsync (line 529) | private async Task DeleteBackgroundImageIfExistsAsync()
FILE: FluentTerminal.App/ViewModels/Utilities/TaskUtilities.cs
class TaskUtilities (line 7) | public static class TaskUtilities
method FireAndForgetSafeAsync (line 10) | public static async void FireAndForgetSafeAsync(this Task task, IError...
FILE: FluentTerminal.App/ViewModels/Utilities/WebViewSpecialCharEncoder.cs
class WebViewSpecialCharEncoder (line 3) | public static class WebViewSpecialCharEncoder
method Encode (line 5) | public static string Encode(string value)
method Decode (line 10) | public static string Decode(string value)
FILE: FluentTerminal.App/Views/BooleanTemplateSelector.cs
class BooleanTemplateSelector (line 6) | public class BooleanTemplateSelector : DataTemplateSelector
method SelectTemplateCore (line 11) | protected override DataTemplate SelectTemplateCore(object item, Depend...
method SelectTemplateCore (line 16) | protected override DataTemplate SelectTemplateCore(object item)
FILE: FluentTerminal.App/Views/EnvironmentVariablesView.xaml.cs
class EnvironmentVariablesView (line 10) | public sealed partial class EnvironmentVariablesView : UserControl
method EnvironmentVariablesView (line 21) | public EnvironmentVariablesView()
method OnAddTapped (line 26) | private void OnAddTapped(object sender, Windows.UI.Xaml.Input.TappedRo...
method OnRemoveTapped (line 31) | private void OnRemoveTapped(object sender, Windows.UI.Xaml.Input.Tappe...
FILE: FluentTerminal.App/Views/KeyBindingsView.xaml.cs
class KeyBindingsView (line 7) | public sealed partial class KeyBindingsView : UserControl
method KeyBindingsView (line 15) | public KeyBindingsView()
FILE: FluentTerminal.App/Views/MainPage.xaml.cs
class MainPage (line 22) | public sealed partial class MainPage : Page, INotifyPropertyChanged
method MainPage (line 51) | public MainPage()
method OnRequestedThemeProperty (line 64) | private void OnRequestedThemeProperty(DependencyObject sender, Depende...
method MainPage_DraggingHappensChanged (line 69) | private async void MainPage_DraggingHappensChanged(object sender, bool e)
method OnNavigatedTo (line 81) | protected override void OnNavigatedTo(NavigationEventArgs e)
method ViewModel_Closed (line 91) | private void ViewModel_Closed(object sender, EventArgs e)
method OnWindowActivated (line 124) | private void OnWindowActivated(object sender, WindowActivatedEventArgs e)
method OnLoaded (line 133) | private void OnLoaded(object sender, RoutedEventArgs e)
method OnLayoutMetricsChanged (line 139) | private void OnLayoutMetricsChanged(CoreApplicationViewTitleBar sender...
method UpdateLayoutMetrics (line 144) | private void UpdateLayoutMetrics()
method TabView_Drop (line 153) | private async void TabView_Drop(object sender, NewTabRequestedEventArg...
method TabBar_TabDraggedOutside (line 161) | private void TabBar_TabDraggedOutside(ListViewBase sender, DragItemsCo...
method TabBar_TabDraggingCompleted (line 170) | private void TabBar_TabDraggingCompleted(object sender, TerminalViewMo...
method TabDropArea_DragEnter (line 204) | private void TabDropArea_DragEnter(object sender, DragEventArgs e)
method TabDropArea_Drop (line 215) | private async void TabDropArea_Drop(object sender, DragEventArgs e)
method TabBar_TabDraggingChanged (line 224) | private void TabBar_TabDraggingChanged(object sender, bool e)
method MainPage_OnKeyDown (line 229) | private void MainPage_OnKeyDown(object sender, KeyRoutedEventArgs e)
FILE: FluentTerminal.App/Views/MenuExtension.cs
class MenuExtension (line 11) | public static class MenuExtension
method GetSubItems (line 16) | public static IEnumerable<MenuItemViewModelBase> GetSubItems(Dependenc...
method SetSubItems (line 19) | public static void SetSubItems(DependencyObject obj, IEnumerable<MenuI...
FILE: FluentTerminal.App/Views/NoValueTemplateSelector.cs
class NoValueTemplateSelector (line 6) | public class NoValueTemplateSelector : DataTemplateSelector
method SelectTemplateCore (line 11) | protected override DataTemplate SelectTemplateCore(object item, Depend...
method SelectTemplateCore (line 16) | protected override DataTemplate SelectTemplateCore(object item)
FILE: FluentTerminal.App/Views/OverlayView.xaml.cs
class OverlayView (line 6) | public sealed partial class OverlayView : UserControl
method OverlayView (line 8) | public OverlayView()
FILE: FluentTerminal.App/Views/SettingsPage.xaml.cs
class SettingsPage (line 19) | public sealed partial class SettingsPage : Page
method SettingsPage (line 27) | public SettingsPage()
method OnColorValuesChanged (line 50) | private void OnColorValuesChanged(UISettings sender, object args)
method SetTitleBarColorsAsync (line 59) | private Task SetTitleBarColorsAsync()
method OnNavigatedTo (line 72) | protected override void OnNavigatedTo(NavigationEventArgs e)
method NavigationView_Loaded (line 80) | private void NavigationView_Loaded(object sender, RoutedEventArgs e)
method NavigationView_SelectionChanged (line 85) | private void NavigationView_SelectionChanged(MUXC.NavigationView sende...
method SettingsPage_CloseRequested (line 131) | private void SettingsPage_CloseRequested(object sender, SystemNavigati...
method TitleBar_LayoutMetricsChanged (line 136) | private void TitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar...
method Page_Loaded (line 141) | private void Page_Loaded(object sender, RoutedEventArgs e)
FILE: FluentTerminal.App/Views/SettingsPages/GeneralSettings.xaml.cs
class GeneralSettings (line 7) | public sealed partial class GeneralSettings : Page
method GeneralSettings (line 11) | public GeneralSettings()
method OnNavigatedTo (line 16) | protected override void OnNavigatedTo(NavigationEventArgs e)
FILE: FluentTerminal.App/Views/SettingsPages/KeyBindingSettings.xaml.cs
class KeyBindingSettings (line 10) | public sealed partial class KeyBindingSettings : Page
method KeyBindingSettings (line 14) | public KeyBindingSettings()
method OnNavigatedTo (line 19) | protected override void OnNavigatedTo(NavigationEventArgs e)
FILE: FluentTerminal.App/Views/SettingsPages/MouseSettings.xaml.cs
class MouseSettings (line 7) | public sealed partial class MouseSettings : Page
method MouseSettings (line 9) | public MouseSettings()
method OnNavigatedTo (line 16) | protected override void OnNavigatedTo(NavigationEventArgs e)
FILE: FluentTerminal.App/Views/SettingsPages/ShellProfileSettings.xaml.cs
class ShellProfileSettings (line 7) | public sealed partial class ShellProfileSettings : Page
method ShellProfileSettings (line 11) | public ShellProfileSettings()
method OnNavigatedTo (line 16) | protected override void OnNavigatedTo(NavigationEventArgs e)
FILE: FluentTerminal.App/Views/SettingsPages/SshProfileSettings.xaml.cs
class SshProfileSettings (line 7) | public sealed partial class SshProfileSettings : Page
method SshProfileSettings (line 11) | public SshProfileSettings()
method OnNavigatedTo (line 16) | protected override void OnNavigatedTo(NavigationEventArgs e)
FILE: FluentTerminal.App/Views/SettingsPages/TerminalSettings.xaml.cs
class TerminalSettings (line 9) | public sealed partial class TerminalSettings : Page
method TerminalSettings (line 11) | public TerminalSettings()
method OnNavigatedTo (line 18) | protected override void OnNavigatedTo(NavigationEventArgs e)
method ScrollBackTextBoxOnKeyDown (line 26) | private void ScrollBackTextBoxOnKeyDown(object sender, KeyRoutedEventA...
FILE: FluentTerminal.App/Views/SettingsPages/ThemeSettings.xaml.cs
class ThemeSettings (line 14) | public sealed partial class ThemeSettings : Page
method ThemeSettings (line 18) | public ThemeSettings()
method OnNavigatedTo (line 24) | protected override void OnNavigatedTo(NavigationEventArgs e)
method OnSelectedThemeChanged (line 40) | private void OnSelectedThemeChanged(object sender, ThemeViewModel e)
method OnSelectedThemeBackgroundImageChanged (line 45) | private void OnSelectedThemeBackgroundImageChanged(object sender, Imag...
method OnSelectedThemeBackgroundColorChanged (line 50) | private void OnSelectedThemeBackgroundColorChanged(object sender, stri...
method SetTheme (line 58) | private void SetTheme(ElementTheme theme)
method SetGridBackground (line 71) | private void SetGridBackground(string color, ImageFile imageFile)
FILE: FluentTerminal.App/Views/TabBar.xaml.cs
class TabBar (line 18) | public sealed partial class TabBar : UserControl
method TabBar (line 31) | public TabBar()
method OnListViewSizeChanged (line 37) | private void OnListViewSizeChanged(object sender, SizeChangedEventArgs e)
method DisposalPrepare (line 42) | public void DisposalPrepare()
method OnListViewSelectionChanged (line 74) | private async void OnListViewSelectionChanged(object sender, Selection...
method OnScrollableWidthChanged (line 93) | private void OnScrollableWidthChanged(DependencyObject sender, Depende...
method OnScrollLeftButtonTapped (line 107) | private void OnScrollLeftButtonTapped(object sender, RoutedEventArgs e)
method OnScrollRightButtonTapped (line 114) | private void OnScrollRightButtonTapped(object sender, RoutedEventArgs e)
method SetScrollButtonsEnabledState (line 121) | private void SetScrollButtonsEnabledState()
method ListView_DragEnter (line 136) | private void ListView_DragEnter(object sender, DragEventArgs e)
method ListView_DragItemsStarting (line 147) | private async void ListView_DragItemsStarting(object sender, DragItems...
method ListView_DragItemsCompleted (line 162) | private void ListView_DragItemsCompleted(ListViewBase sender, DragItem...
method GetWidth (line 185) | private double GetWidth(ListViewItem item)
method CalculateDropPosition (line 190) | private int CalculateDropPosition(DragEventArgs e)
method ListView_Drop (line 218) | private void ListView_Drop(object sender, DragEventArgs e)
FILE: FluentTerminal.App/Views/TabBarBackgroundBindingHelper.cs
class TabBarBackgroundBindingHelper (line 11) | public static class TabBarBackgroundBindingHelper
method GetBackgroundBindingPath (line 16) | public static string GetBackgroundBindingPath(DependencyObject obj)
method SetBackgroundBindingPath (line 21) | public static void SetBackgroundBindingPath(DependencyObject obj, stri...
method BindingPathPropertyChanged (line 26) | private static void BindingPathPropertyChanged(DependencyObject obj, D...
FILE: FluentTerminal.App/Views/TabThemeTemplateSelector.cs
class TabThemeTemplateSelector (line 7) | public class TabThemeTemplateSelector : DataTemplateSelector
method SelectTemplateCore (line 12) | protected override DataTemplate SelectTemplateCore(object item, Depend...
method SelectTemplateCore (line 17) | protected override DataTemplate SelectTemplateCore(object item)
FILE: FluentTerminal.App/Views/TemplateSelectors.xaml.cs
class TemplateSelectors (line 4) | public partial class TemplateSelectors
method TemplateSelectors (line 6) | public TemplateSelectors()
FILE: FluentTerminal.App/Views/TerminalColorPicker.xaml.cs
class TerminalColorPicker (line 9) | public sealed partial class TerminalColorPicker : UserControl
method TerminalColorPicker (line 42) | public TerminalColorPicker()
method ColorPicker_ColorChanged (line 97) | private void ColorPicker_ColorChanged(MUXC.ColorPicker sender, MUXC.Co...
FILE: FluentTerminal.App/Views/TerminalKeybindTemplateSelector.cs
class TerminalKeybindTemplateSelector (line 7) | public class TerminalKeybindTemplateSelector : DataTemplateSelector
method SelectTemplateCore (line 12) | protected override DataTemplate SelectTemplateCore(object item, Depend...
method SelectTemplateCore (line 17) | protected override DataTemplate SelectTemplateCore(object item)
FILE: FluentTerminal.App/Views/TerminalThemeTemplateSelector.cs
class TerminalThemeTemplateSelector (line 8) | public class TerminalThemeTemplateSelector : DataTemplateSelector
method SelectTemplateCore (line 13) | protected override DataTemplate SelectTemplateCore(object item, Depend...
method SelectTemplateCore (line 18) | protected override DataTemplate SelectTemplateCore(object item)
FILE: FluentTerminal.App/Views/TerminalView.xaml.cs
class TerminalView (line 16) | public sealed partial class TerminalView : UserControl,
method TerminalView (line 22) | public TerminalView(TerminalViewModel viewModel)
method DisposalPrepare (line 45) | public void DisposalPrepare()
method OnActivated (line 66) | private void OnActivated(object sender, EventArgs e)
method OnFindNextRequested (line 71) | private void OnFindNextRequested(object sender, SearchRequest e)
method OnFindPreviousRequested (line 76) | private void OnFindPreviousRequested(object sender, SearchRequest e)
method Receive (line 81) | public void Receive(KeyBindingsChangedMessage message)
method Receive (line 86) | public void Receive(TerminalOptionsChangedMessage message)
method OnSearchStarted (line 91) | private void OnSearchStarted(object sender, EventArgs e)
method OnSearchTextBoxKeyUp (line 97) | private void OnSearchTextBoxKeyUp(object sender, Windows.UI.Xaml.Input...
method OnThemeChanged (line 105) | private async void OnThemeChanged(object sender, TerminalTheme e)
method OnFontSizeChanged (line 111) | private async void OnFontSizeChanged(object sender, int e)
method SetGridBackgroundTheme (line 116) | private void SetGridBackgroundTheme(TerminalTheme terminalTheme)
method SearchTextBox_GotFocus (line 140) | private void SearchTextBox_GotFocus(object sender, RoutedEventArgs e)
method SearchTextBox_LostFocus (line 146) | private void SearchTextBox_LostFocus(object sender, RoutedEventArgs e)
FILE: FluentTerminal.App/Views/XtermTerminalView.xaml.cs
class XtermTerminalView (line 26) | public sealed partial class XtermTerminalView : UserControl, IxtermEvent...
method ScheduleResize (line 50) | private void ScheduleResize(TerminalSize size, bool scheduleIfEqual)
method ResizeTask (line 66) | private async Task ResizeTask()
method XtermTerminalView (line 123) | public XtermTerminalView()
method ChangeKeyBindingsAsync (line 148) | public Task ChangeKeyBindingsAsync()
method ChangeOptionsAsync (line 162) | public Task ChangeOptionsAsync(TerminalOptions options)
method ChangeThemeAsync (line 172) | public Task ChangeThemeAsync(TerminalTheme theme)
method ChangeFontSize (line 183) | public Task ChangeFontSize(int fontSize)
method SerializeXtermStateAsync (line 193) | public Task<string> SerializeXtermStateAsync()
method FindNextAsync (line 203) | public Task FindNextAsync(SearchRequest request)
method FindPreviousAsync (line 213) | public Task FindPreviousAsync(SearchRequest request)
method FocusTerminalAsync (line 223) | public Task FocusTerminalAsync()
method ReconnectAsync (line 241) | public async Task ReconnectAsync()
method InitializeAsync (line 263) | public async Task InitializeAsync(TerminalViewModel viewModel)
method DisposalPrepare (line 332) | public void DisposalPrepare()
method OnKeyboardCommand (line 343) | void IxtermEventListener.OnKeyboardCommand(string command)
method OnMouseClick (line 362) | void IxtermEventListener.OnMouseClick(MouseButton mouseButton, int x, ...
method OnSelectionChanged (line 402) | async void IxtermEventListener.OnSelectionChanged(string selection)
method OnTerminalResized (line 416) | void IxtermEventListener.OnTerminalResized(int columns, int rows)
method OnInitialized (line 439) | void IxtermEventListener.OnInitialized()
method OnTitleChanged (line 444) | void IxtermEventListener.OnTitleChanged(string title)
method _webView_NavigationCompleted (line 454) | private void _webView_NavigationCompleted(WebView sender, WebViewNavig...
method _webView_NavigationStarting (line 460) | private void _webView_NavigationStarting(WebView sender, WebViewNaviga...
method _webView_NewWindowRequested (line 466) | private void _webView_NewWindowRequested(WebView sender, WebViewNewWin...
method CreateXtermViewAsync (line 473) | private Task<TerminalSize> CreateXtermViewAsync(TerminalOptions option...
method ExecuteScriptAsync (line 483) | private async Task<string> ExecuteScriptAsync(string script)
method FlattenKeyBindings (line 506) | private IEnumerable<KeyBinding> FlattenKeyBindings(IDictionary<string,...
method ShowContextMenu (line 511) | private void ShowContextMenu(int x, int y, bool terminalHasSelection, ...
method Terminal_Closed (line 519) | private void Terminal_Closed(object sender, EventArgs e)
method Terminal_OutputReceived (line 547) | private void Terminal_OutputReceived(object sender, byte[] e)
method OnError (line 567) | void IxtermEventListener.OnError(string error)
method OnInput (line 572) | public void OnInput(byte[] data)
method Dispose (line 582) | public void Dispose()
method Paste (line 587) | public void Paste(string text) => OnPaste?.Invoke(this, text);
method StartShellProcessAsync (line 589) | private async Task<bool> StartShellProcessAsync(TerminalSize size)
FILE: FluentTerminal.Client/src/index.ts
type ExtendedWindow (line 8) | interface ExtendedWindow extends Window {
function replaceAll (line 38) | function replaceAll(searchString, replaceString, str) {
function DecodeSpecialChars (line 42) | function DecodeSpecialChars(data: string) {
function stringToUint8Array (line 114) | function stringToUint8Array(param: string) {
function uint8ArrayToString (line 124) | function uint8ArrayToString(param: Uint8Array) {
function setScrollBarStyle (line 289) | function setScrollBarStyle(scrollBarStyle) {
function setPadding (line 297) | function setPadding(padding) {
function convertBoldText (line 319) | function convertBoldText(fontWeight: FontWeight) : FontWeight {
FILE: FluentTerminal.Models/ApplicationSettings.cs
class ApplicationSettings (line 5) | public class ApplicationSettings
method Clone (line 30) | public ApplicationSettings Clone() => new ApplicationSettings
FILE: FluentTerminal.Models/Enums/BellStyle.cs
type BellStyle (line 3) | public enum BellStyle
FILE: FluentTerminal.Models/Enums/Command.cs
type Command (line 3) | public enum Command
FILE: FluentTerminal.Models/Enums/CursorStyle.cs
type CursorStyle (line 3) | public enum CursorStyle
FILE: FluentTerminal.Models/Enums/ExtendedVirtualKey.cs
type ExtendedVirtualKey (line 5) | public enum ExtendedVirtualKey
FILE: FluentTerminal.Models/Enums/InactiveTabColorMode.cs
type InactiveTabColorMode (line 3) | public enum InactiveTabColorMode
FILE: FluentTerminal.Models/Enums/MouseAction.cs
type MouseAction (line 3) | public enum MouseAction
FILE: FluentTerminal.Models/Enums/NewTerminalLocation.cs
type NewTerminalLocation (line 3) | public enum NewTerminalLocation
FILE: FluentTerminal.Models/Enums/ScrollBarStyle.cs
type ScrollBarStyle (line 3) | public enum ScrollBarStyle
FILE: FluentTerminal.Models/Enums/SessionType.cs
type SessionType (line 3) | public enum SessionType
FILE: FluentTerminal.Models/Enums/StartupTaskStatus.cs
type StartupTaskStatus (line 4) | public enum StartupTaskStatus
FILE: FluentTerminal.Models/Enums/TabThemeKey.cs
type TabThemeKey (line 3) | public enum TabThemeKey
FILE: FluentTerminal.Models/Enums/TabsPosition.cs
type TabsPosition (line 3) | public enum TabsPosition
FILE: FluentTerminal.Models/ExecutedCommand.cs
class ExecutedCommand (line 5) | public class ExecutedCommand
method Clone (line 17) | public ExecutedCommand Clone() => new ExecutedCommand
FILE: FluentTerminal.Models/ExportedTerminalTheme.cs
class ExportedTerminalTheme (line 5) | public class ExportedTerminalTheme : TerminalTheme
method ExportedTerminalTheme (line 7) | public ExportedTerminalTheme()
method ExportedTerminalTheme (line 11) | public ExportedTerminalTheme(TerminalTheme other, string encodedImage)
method Equals (line 19) | public override bool Equals(object obj)
method GetHashCode (line 26) | public override int GetHashCode()
FILE: FluentTerminal.Models/File.cs
class File (line 5) | public class File
method File (line 7) | public File(string name, string fileType, string path, Stream content)
FILE: FluentTerminal.Models/IMessage.cs
type IMessage (line 3) | public interface IMessage
FILE: FluentTerminal.Models/ImageFile.cs
class ImageFile (line 5) | public class ImageFile
method ImageFile (line 7) | public ImageFile(string name,
method Equals (line 20) | public override bool Equals(object obj)
method GetHashCode (line 28) | public override int GetHashCode()
FILE: FluentTerminal.Models/KeyBinding.cs
class KeyBinding (line 5) | public class KeyBinding
method KeyBinding (line 7) | public KeyBinding()
method KeyBinding (line 12) | public KeyBinding(KeyBinding other)
method Equals (line 29) | public override bool Equals(object obj)
method GetHashCode (line 43) | public override int GetHashCode()
FILE: FluentTerminal.Models/MessageIdentifiers.cs
type MessageIdentifiers (line 3) | public enum MessageIdentifiers : byte
FILE: FluentTerminal.Models/MessageKeys.cs
class MessageKeys (line 3) | public static class MessageKeys
FILE: FluentTerminal.Models/Messages/ApplicationSettingsChangedMessage.cs
class ApplicationSettingsChangedMessage (line 5) | public class ApplicationSettingsChangedMessage
method ApplicationSettingsChangedMessage (line 9) | public ApplicationSettingsChangedMessage(ApplicationSettings applicati...
FILE: FluentTerminal.Models/Messages/CommandHistoryChangedMessage.cs
class CommandHistoryChangedMessage (line 3) | public class CommandHistoryChangedMessage
FILE: FluentTerminal.Models/Messages/CurrentThemeChangedMessage.cs
class CurrentThemeChangedMessage (line 5) | public class CurrentThemeChangedMessage
method CurrentThemeChangedMessage (line 9) | public CurrentThemeChangedMessage(Guid themeId)
FILE: FluentTerminal.Models/Messages/DefaultShellProfileChangedMessage.cs
class DefaultShellProfileChangedMessage (line 5) | public class DefaultShellProfileChangedMessage
method DefaultShellProfileChangedMessage (line 9) | public DefaultShellProfileChangedMessage(Guid newDefaultProfileId) => ...
FILE: FluentTerminal.Models/Messages/KeyBindingsChangedMessage.cs
class KeyBindingsChangedMessage (line 3) | public class KeyBindingsChangedMessage
FILE: FluentTerminal.Models/Messages/ShellProfileAddedMessage.cs
class ShellProfileAddedMessage (line 5) | public class ShellProfileAddedMessage
method ShellProfileAddedMessage (line 9) | public ShellProfileAddedMessage(ShellProfile shellProfile)
FILE: FluentTerminal.Models/Messages/ShellProfileChangedMessage.cs
class ShellProfileChangedMessage (line 5) | public class ShellProfileChangedMessage
method ShellProfileChangedMessage (line 9) | public ShellProfileChangedMessage(ShellProfile shellProfile)
FILE: FluentTerminal.Models/Messages/ShellProfileDeletedMessage.cs
class ShellProfileDeletedMessage (line 5) | public class ShellProfileDeletedMessage
method ShellProfileDeletedMessage (line 9) | public ShellProfileDeletedMessage(Guid profileId)
FILE: FluentTerminal.Models/Messages/TerminalOptionsChangedMessage.cs
class TerminalOptionsChangedMessage (line 5) | public class TerminalOptionsChangedMessage
method TerminalOptionsChangedMessage (line 9) | public TerminalOptionsChangedMessage(TerminalOptions terminalOptions)
FILE: FluentTerminal.Models/Messages/ThemeAddedMessage.cs
class ThemeAddedMessage (line 5) | public class ThemeAddedMessage
method ThemeAddedMessage (line 9) | public ThemeAddedMessage(TerminalTheme theme)
FILE: FluentTerminal.Models/Messages/ThemeDeletedMessage.cs
class ThemeDeletedMessage (line 5) | public class ThemeDeletedMessage
method ThemeDeletedMessage (line 9) | public ThemeDeletedMessage(Guid themeId)
FILE: FluentTerminal.Models/Requests/CheckFileExistsRequest.cs
class CheckFileExistsRequest (line 3) | public class CheckFileExistsRequest : IMessage
FILE: FluentTerminal.Models/Requests/CreateTerminalRequest.cs
class CreateTerminalRequest (line 5) | public class CreateTerminalRequest : IMessage
FILE: FluentTerminal.Models/Requests/GetCommandPathRequest.cs
class GetCommandPathRequest (line 3) | public class GetCommandPathRequest : IMessage
FILE: FluentTerminal.Models/Requests/GetSshConfigFolderRequest.cs
class GetSshConfigFolderRequest (line 3) | public class GetSshConfigFolderRequest : IMessage
FILE: FluentTerminal.Models/Requests/GetUserNameRequest.cs
class GetUserNameRequest (line 3) | public class GetUserNameRequest : IMessage
FILE: FluentTerminal.Models/Requests/MuteTerminalRequest.cs
class MuteTerminalRequest (line 3) | public class MuteTerminalRequest : IMessage
FILE: FluentTerminal.Models/Requests/PauseTerminalOutputRequest.cs
class PauseTerminalOutputRequest (line 3) | public class PauseTerminalOutputRequest : IMessage
FILE: FluentTerminal.Models/Requests/QuitApplicationRequest.cs
class QuitApplicationRequest (line 3) | public class QuitApplicationRequest : IMessage
FILE: FluentTerminal.Models/Requests/ReadTextFileRequest.cs
class ReadTextFileRequest (line 3) | public class ReadTextFileRequest : IMessage
FILE: FluentTerminal.Models/Requests/ResizeTerminalRequest.cs
class ResizeTerminalRequest (line 3) | public class ResizeTerminalRequest : IMessage
FILE: FluentTerminal.Models/Requests/SaveTextFileRequest.cs
class SaveTextFileRequest (line 3) | public class SaveTextFileRequest : IMessage
FILE: FluentTerminal.Models/Requests/SetToggleWindowKeyBindingsRequest.cs
class SetToggleWindowKeyBindingsRequest (line 5) | public class SetToggleWindowKeyBindingsRequest : IMessage
FILE: FluentTerminal.Models/Requests/TerminalExitedRequest.cs
class TerminalExitedRequest (line 3) | public class TerminalExitedRequest : IMessage
method TerminalExitedRequest (line 10) | public TerminalExitedRequest(byte terminalId, int exitCode)
method TerminalExitedRequest (line 16) | public TerminalExitedRequest(byte terminalId)
method TerminalExitedRequest (line 22) | public TerminalExitedRequest()
method TerminalExitedRequest (line 26) | public TerminalExitedRequest(TerminalExitStatus status)
method ToStatus (line 32) | public TerminalExitStatus ToStatus()
FILE: FluentTerminal.Models/Requests/UpdateSettingsRequest.cs
class UpdateSettingsRequest (line 3) | public class UpdateSettingsRequest : IMessage
FILE: FluentTerminal.Models/Responses/CommonResponse.cs
class CommonResponse (line 3) | public class CommonResponse : TerminalResponse
FILE: FluentTerminal.Models/Responses/CreateTerminalResponse.cs
class CreateTerminalResponse (line 3) | public class CreateTerminalResponse : TerminalResponse
FILE: FluentTerminal.Models/Responses/GetSshConfigFolderResponse.cs
class GetSshConfigFolderResponse (line 3) | public class GetSshConfigFolderResponse : IMessage
FILE: FluentTerminal.Models/Responses/PauseTerminalOutputResponse.cs
class PauseTerminalOutputResponse (line 3) | public class PauseTerminalOutputResponse : TerminalResponse
FILE: FluentTerminal.Models/Responses/StringValueResponse.cs
class StringValueResponse (line 3) | public class StringValueResponse : CommonResponse
FILE: FluentTerminal.Models/Responses/TerminalResponse.cs
class TerminalResponse (line 3) | public abstract class TerminalResponse : IMessage
FILE: FluentTerminal.Models/SearchRequest.cs
class SearchRequest (line 3) | public class SearchRequest
FILE: FluentTerminal.Models/ShellProfile.cs
class ShellProfile (line 9) | public class ShellProfile
method ShellProfile (line 17) | public ShellProfile()
method ShellProfile (line 22) | protected ShellProfile(ShellProfile other)
method EqualTo (line 59) | public virtual bool EqualTo(ShellProfile other)
method Clone (line 84) | public virtual ShellProfile Clone() => new ShellProfile(this);
FILE: FluentTerminal.Models/SshProfile.cs
class SshProfile (line 5) | public class SshProfile : ShellProfile
method SshProfile (line 35) | public SshProfile(bool conPtyAvailable)
method SshProfile (line 43) | public SshProfile()
method SshProfile (line 55) | protected SshProfile(SshProfile other) : base(other)
method EqualTo (line 73) | public override bool EqualTo(ShellProfile other)
method Clone (line 94) | public override ShellProfile Clone() => new SshProfile(this);
FILE: FluentTerminal.Models/StringExtensions.cs
class StringExtensions (line 7) | public static class StringExtensions
method NullableEqualTo (line 14) | public static bool NullableEqualTo(this string original, string other,
method SplitWords (line 22) | public static IEnumerable<string> SplitWords(this string text)
FILE: FluentTerminal.Models/TabTheme.cs
class TabTheme (line 3) | public class TabTheme
FILE: FluentTerminal.Models/TerminalColors.cs
class TerminalColors (line 5) | public class TerminalColors
method TerminalColors (line 33) | public TerminalColors()
method TerminalColors (line 37) | public TerminalColors(TerminalColors other)
method Equals (line 64) | public override bool Equals(object obj)
method GetHashCode (line 93) | public override int GetHashCode()
FILE: FluentTerminal.Models/TerminalExitStatus.cs
class TerminalExitStatus (line 3) | public class TerminalExitStatus
method TerminalExitStatus (line 5) | public TerminalExitStatus(byte terminalId, int exitCode)
FILE: FluentTerminal.Models/TerminalOptions.cs
class TerminalOptions (line 5) | public class TerminalOptions
FILE: FluentTerminal.Models/TerminalOutput.cs
class TerminalOutput (line 3) | public class TerminalOutput
FILE: FluentTerminal.Models/TerminalSize.cs
class TerminalSize (line 3) | public class TerminalSize
method EquivalentTo (line 9) | public bool EquivalentTo(TerminalSize other) => ReferenceEquals(this, ...
FILE: FluentTerminal.Models/TerminalTheme.cs
class TerminalTheme (line 5) | public class TerminalTheme
method TerminalTheme (line 7) | public TerminalTheme()
method TerminalTheme (line 11) | public TerminalTheme(TerminalTheme other)
method Equals (line 28) | public override bool Equals(object obj)
method GetHashCode (line 40) | public override int GetHashCode()
FILE: FluentTerminal.RuntimeComponent/Enums/MouseButton.cs
type MouseButton (line 3) | public enum MouseButton
FILE: FluentTerminal.RuntimeComponent/Interfaces/IxtermEventListener.cs
type IxtermEventListener (line 7) | public interface IxtermEventListener
method OnTerminalResized (line 9) | void OnTerminalResized(int columns, int rows);
method OnTitleChanged (line 11) | void OnTitleChanged(string title);
method OnKeyboardCommand (line 13) | void OnKeyboardCommand(string command);
method OnMouseClick (line 15) | void OnMouseClick(MouseButton mouseButton, int x, int y, bool hasSelec...
method OnSelectionChanged (line 17) | void OnSelectionChanged(string selection);
method OnError (line 19) | void OnError(string error);
method OnInput (line 21) | void OnInput([ReadOnlyArray]byte[] data);
method OnInitialized (line 23) | void OnInitialized();
FILE: FluentTerminal.RuntimeComponent/WebAllowedObjects/TerminalBridge.cs
class TerminalBridge (line 10) | [AllowForWeb]
method TerminalBridge (line 15) | public TerminalBridge(IxtermEventListener terminalEventListener)
method OnPaste (line 23) | private void OnPaste(object sender, string e)
method OnOutput (line 28) | private void OnOutput(object sender, object e)
method OnSessionRestart (line 33) | private void OnSessionRestart(object sender, string e)
method InputReceived (line 42) | public void InputReceived(string message)
method BinaryReceived (line 47) | public void BinaryReceived(string binary)
method Initialized (line 52) | public void Initialized()
method DisposalPrepare (line 57) | public void DisposalPrepare()
method NotifySizeChanged (line 64) | public void NotifySizeChanged(int columns, int rows)
method NotifyTitleChanged (line 69) | public void NotifyTitleChanged(string title)
method InvokeCommand (line 74) | public void InvokeCommand(string command)
method NotifyRightClick (line 79) | public void NotifyRightClick(int x, int y, bool hasSelection, string h...
method NotifyMiddleClick (line 84) | public void NotifyMiddleClick(int x, int y, bool hasSelection, string ...
method NotifySelectionChanged (line 89) | public void NotifySelectionChanged(string selection)
method ReportError (line 94) | public void ReportError(string error)
FILE: FluentTerminal.SystemTray/BufferedReader.cs
class BufferedReader (line 7) | internal sealed class BufferedReader : IDisposable
method BufferedReader (line 32) | internal BufferedReader(Stream stream, Action<byte[]> callback, bool e...
method SetPaused (line 42) | internal void SetPaused(bool value)
method Dispose (line 47) | public void Dispose()
method ReadingLoop (line 52) | private async Task ReadingLoop()
method SendAsync (line 183) | private async Task SendAsync()
method SendBuffer (line 228) | private void SendBuffer()
FILE: FluentTerminal.SystemTray/FileFinder.cs
class FileFinder (line 8) | public static class FileFinder
method GetCommandPath (line 10) | public static string GetCommandPath(this string command)
FILE: FluentTerminal.SystemTray/Native/ProcessApi.cs
class ProcessApi (line 6) | public static class ProcessApi
method GetProcessId (line 8) | [DllImport("kernel32.dll")]
method GetExitCodeProcess (line 11) | [DllImport("kernel32.dll", SetLastError = true)]
FILE: FluentTerminal.SystemTray/Native/WindowApi.cs
class WindowApi (line 6) | public static class WindowApi
method GetWindowThreadProcessId (line 17) | [DllImport("user32.dll")]
method ShowWindow (line 20) | [DllImport("user32.dll")]
FILE: FluentTerminal.SystemTray/ProcessUtils.cs
class ProcessUtils (line 8) | public static class ProcessUtils
method KillTree (line 14) | public static void KillTree(int pid)
FILE: FluentTerminal.SystemTray/Program.cs
class Program (line 20) | public static class Program
method Main (line 24) | [STAThread]
method ConfigureLoggingAsync (line 108) | private static async Task ConfigureLoggingAsync()
method OnUnhandledException (line 123) | private static void OnUnhandledException(object sender, UnhandledExcep...
FILE: FluentTerminal.SystemTray/Properties/Resources.Designer.cs
class Resources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method Resources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: FluentTerminal.SystemTray/Properties/Settings.Designer.cs
class Settings (line 14) | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
FILE: FluentTerminal.SystemTray/Services/AppCommunicationService.cs
class AppCommunicationService (line 19) | public class AppCommunicationService
method AppCommunicationService (line 28) | public AppCommunicationService(TerminalsManager terminalsManager, Togg...
method _terminalsManager_TerminalExited (line 49) | private void _terminalsManager_TerminalExited(object sender, TerminalE...
method _terminalsManager_DisplayOutputRequested (line 55) | private void _terminalsManager_DisplayOutputRequested(object sender, T...
method StartAppServiceConnectionAsync (line 68) | public IAsyncOperation<AppServiceConnectionStatus> StartAppServiceConn...
method OnServiceClosed (line 81) | private void OnServiceClosed(AppServiceConnection sender, AppServiceCl...
method OnRequestReceived (line 89) | private async void OnRequestReceived(AppServiceConnection sender, AppS...
method HandleQuitApplicationRequest (line 146) | private void HandleQuitApplicationRequest()
method HandleWriteDataMessage (line 151) | private void HandleWriteDataMessage(AppServiceRequestReceivedEventArgs...
method HandleCreateTerminalRequestAsync (line 158) | private async Task HandleCreateTerminalRequestAsync(AppServiceRequestR...
method HandleResizeTerminalRequest (line 168) | private void HandleResizeTerminalRequest(AppServiceRequestReceivedEven...
method HandleSetToggleWindowKeyBindingsRequest (line 175) | private void HandleSetToggleWindowKeyBindingsRequest(AppServiceRequest...
method HandleTerminalExitedRequest (line 182) | private void HandleTerminalExitedRequest(AppServiceRequestReceivedEven...
method HandleGetUserNameRequestAsync (line 189) | private async Task HandleGetUserNameRequestAsync(AppServiceRequestRece...
method HandleSaveTextFileRequestAsync (line 197) | private async Task HandleSaveTextFileRequestAsync(AppServiceRequestRec...
method HandleReadTextFileRequestAsync (line 220) | private async Task HandleReadTextFileRequestAsync(AppServiceRequestRec...
method HandleGetSshConfigFolderRequestAsync (line 245) | private async Task HandleGetSshConfigFolderRequestAsync(AppServiceRequ...
method HandleMuteTerminalRequest (line 280) | private void HandleMuteTerminalRequest(AppServiceRequestReceivedEventA...
method HandleUpdateSettingsRequest (line 287) | private void HandleUpdateSettingsRequest(AppServiceRequestReceivedEven...
method HandlePauseTerminalOutputRequestAsync (line 294) | private async Task HandlePauseTerminalOutputRequestAsync(AppServiceReq...
method HandleCheckFileExistsRequestAsync (line 306) | private async Task HandleCheckFileExistsRequestAsync(AppServiceRequest...
method GetCommandPathRequestHandlerAsync (line 333) | private async Task GetCommandPathRequestHandlerAsync(AppServiceRequest...
method CreateMessage (line 356) | private ValueSet CreateMessage(IMessage content)
FILE: FluentTerminal.SystemTray/Services/ConPty/ConPtySession.cs
class ConPtySession (line 9) | public class ConPtySession : ITerminalSession
method Close (line 23) | public void Close()
method Resize (line 30) | public void Resize(TerminalSize size)
method Start (line 35) | public void Start(CreateTerminalRequest request, TerminalsManager term...
method _terminal_Exited (line 61) | private void _terminal_Exited(object sender, EventArgs e)
method GetWorkingDirectory (line 66) | private string GetWorkingDirectory(ShellProfile configuration)
method _terminal_OutputReady (line 75) | private void _terminal_OutputReady(object sender, EventArgs e)
method Write (line 84) | public void Write(byte[] data)
method Pause (line 89) | public void Pause(bool value)
method Dispose (line 103) | private void Dispose(bool disposing)
method Dispose (line 118) | public void Dispose()
FILE: FluentTerminal.SystemTray/Services/ConPty/Native/ConsoleApi.cs
class ConsoleApi (line 10) | internal static class ConsoleApi
method AllocConsole (line 21) | [DllImport("kernel32.dll", EntryPoint = "AllocConsole", SetLastError =...
method GetConsoleWindow (line 24) | [DllImport("kernel32.dll", SetLastError = true)]
method SetConsoleMode (line 27) | [DllImport("kernel32.dll", SetLastError = true)]
method GetConsoleMode (line 30) | [DllImport("kernel32.dll", SetLastError = true)]
method CreateFileW (line 33) | [DllImport("kernel32.dll", EntryPoint = "CreateFileW", SetLastError = ...
method SetConsoleCtrlHandler (line 43) | [DllImport("kernel32.dll", SetLastError = true)]
type CtrlTypes (line 47) | internal enum CtrlTypes : uint
FILE: FluentTerminal.SystemTray/Services/ConPty/Native/ProcessApi.cs
class ProcessApi (line 9) | internal static class ProcessApi
type STARTUPINFOEX (line 13) | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
type STARTUPINFO (line 20) | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
type PROCESS_INFORMATION (line 43) | [StructLayout(LayoutKind.Sequential)]
type SECURITY_ATTRIBUTES (line 52) | [StructLayout(LayoutKind.Sequential)]
method InitializeProcThreadAttributeList (line 60) | [DllImport("kernel32.dll", SetLastError = true)]
method UpdateProcThreadAttribute (line 65) | [DllImport("kernel32.dll", SetLastError = true)]
method CreateProcess (line 71) | [DllImport("kernel32.dll")]
method DeleteProcThreadAttributeList (line 79) | [DllImport("kernel32.dll", SetLastError = true)]
method CloseHandle (line 83) | [DllImport("kernel32.dll", SetLastError = true)]
FILE: FluentTerminal.SystemTray/Services/ConPty/Native/PseudoConsoleApi.cs
class PseudoConsoleApi (line 10) | internal static class PseudoConsoleApi
type COORD (line 14) | [StructLayout(LayoutKind.Sequential)]
method CreatePseudoConsole (line 21) | [DllImport("kernel32.dll", SetLastError = true)]
method ResizePseudoConsole (line 24) | [DllImport("kernel32.dll", SetLastError = true)]
method ClosePseudoConsole (line 27) | [DllImport("kernel32.dll", SetLastError = true)]
method CreatePipe (line 30) | [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
FILE: FluentTerminal.SystemTray/Services/ConPty/Processes/Process.cs
class Process (line 12) | internal sealed class Process : IDisposable
method Process (line 14) | public Process(STARTUPINFOEX startupInfo, PROCESS_INFORMATION processI...
method GetExitCode (line 31) | public uint GetExitCode() {
method KillTree (line 42) | public void KillTree() {
method Dispose (line 51) | public void Dispose()
method Dispose (line 58) | public void Dispose(bool disposeManaged)
FILE: FluentTerminal.SystemTray/Services/ConPty/Processes/ProcessFactory.cs
class ProcessFactory (line 15) | internal static class ProcessFactory
method Start (line 20) | internal static Process Start(string command, string directory, string...
method ConfigureProcessThread (line 27) | private static STARTUPINFOEX ConfigureProcessThread(IntPtr hPC, IntPtr...
method RunProcess (line 75) | private static PROCESS_INFORMATION RunProcess(ref STARTUPINFOEX sInfoE...
FILE: FluentTerminal.SystemTray/Services/ConPty/PseudoConsole.cs
class PseudoConsole (line 11) | internal sealed class PseudoConsole : IDisposable
method PseudoConsole (line 17) | private PseudoConsole(IntPtr handle)
method Create (line 27) | internal static PseudoConsole Create(SafeFileHandle inputReadSide, Saf...
method Resize (line 40) | internal void Resize(int width, int height)
method Dispose (line 47) | public void Dispose()
FILE: FluentTerminal.SystemTray/Services/ConPty/PseudoConsolePipe.cs
class PseudoConsolePipe (line 16) | internal sealed class PseudoConsolePipe : IDisposable
method PseudoConsolePipe (line 21) | public PseudoConsolePipe()
method Dispose (line 36) | public void Dispose()
method Dispose (line 42) | void Dispose(bool disposing)
FILE: FluentTerminal.SystemTray/Services/ConPty/Terminal.cs
class Terminal (line 16) | public sealed class Terminal : IDisposable
method Terminal (line 41) | public Terminal()
method EnableVirtualTerminalSequenceProcessing (line 67) | private void EnableVirtualTerminalSequenceProcessing()
method Start (line 89) | public void Start(string command, string directory, string environment...
method Resize (line 111) | public void Resize(int width, int height)
method WriteToPseudoConsole (line 119) | public void WriteToPseudoConsole(byte[] data)
method WaitForExit (line 128) | private static AutoResetEvent WaitForExit(Process process) =>
method GetConsoleScreenBuffer (line 140) | private SafeFileHandle GetConsoleScreenBuffer()
method Dispose (line 161) | public void Dispose()
method Dispose (line 169) | public void Dispose(bool disposeManaged)
FILE: FluentTerminal.SystemTray/Services/ITerminalSession.cs
type ITerminalSession (line 7) | public interface ITerminalSession : IDisposable
method Close (line 14) | void Close();
method Resize (line 15) | void Resize(TerminalSize size);
method Write (line 16) | void Write(byte[] data);
method Start (line 17) | void Start(CreateTerminalRequest request, TerminalsManager terminalsMa...
method Pause (line 18) | void Pause(bool value);
FILE: FluentTerminal.SystemTray/Services/TerminalsManager.cs
type TerminalSessionInfo (line 21) | public struct TerminalSessionInfo
class TerminalsManager (line 28) | public class TerminalsManager
method TerminalsManager (line 42) | public TerminalsManager(ISettingsService settingsService)
method OnApplicationSettingsChanged (line 48) | private void OnApplicationSettingsChanged(ApplicationSettingsChangedMe...
method DisplayTerminalOutput (line 53) | public void DisplayTerminalOutput(byte terminalId, byte[] output)
method GetLogFilePath (line 83) | private string GetLogFilePath(byte terminalId)
method CreateTerminal (line 104) | public CreateTerminalResponse CreateTerminal(CreateTerminalRequest req...
method Write (line 151) | public void Write(byte id, byte[] data)
method ResizeTerminal (line 166) | public void ResizeTerminal(byte id, TerminalSize size)
method CloseTerminal (line 185) | public void CloseTerminal(byte id)
method PauseTermimal (line 194) | public PauseTerminalOutputResponse PauseTermimal(byte id, bool pause)
method GetDefaultEnvironmentVariableString (line 207) | public string GetDefaultEnvironmentVariableString(Dictionary<string, s...
method OnTerminalConnectionClosed (line 232) | private void OnTerminalConnectionClosed(object sender, int exitcode)
FILE: FluentTerminal.SystemTray/Services/ToggleWindowService.cs
class ToggleWindowService (line 16) | public class ToggleWindowService : IDisposable
method ToggleWindowService (line 24) | public ToggleWindowService(Dispatcher dispatcher, HotKeyManager hotKey...
method Dispose (line 36) | public void Dispose()
method SetHotKeys (line 41) | public void SetHotKeys(IEnumerable<KeyBinding> keyBindings)
method Dispose (line 92) | protected virtual void Dispose(bool disposing)
method GetForegroundWindow (line 105) | [DllImport("user32.dll")]
method GetKeyBindingRepresentation (line 108) | private static string GetKeyBindingRepresentation(KeyBinding keyBinding)
method GetActiveProcessFileName (line 131) | private string GetActiveProcessFileName()
method OnKeyPressed (line 146) | private async void OnKeyPressed(object sender, KeyPressedEventArgs e)
FILE: FluentTerminal.SystemTray/SystemTrayApplicationContext.cs
class SystemTrayApplicationContext (line 10) | public class SystemTrayApplicationContext : ApplicationContext
method SystemTrayApplicationContext (line 14) | public SystemTrayApplicationContext()
method Exit (line 40) | private void Exit(object sender, EventArgs e)
method NewWindow (line 46) | private void NewWindow(object sender, EventArgs e)
method OpenAppAsync (line 51) | private async void OpenAppAsync(object sender, EventArgs e)
method ShowSettings (line 57) | private void ShowSettings(object sender, EventArgs e)
method SystemUsesLightTheme (line 65) | private bool SystemUsesLightTheme()
FILE: FluentTerminal.SystemTray/Utilities.cs
class Utilities (line 13) | public static class Utilities
method ExtendVirtualKeyToInputKey (line 15) | public static Key ExtendVirtualKeyToInputKey(ExtendedVirtualKey key)
method ResolveLocation (line 467) | public static string ResolveLocation(string location)
method GetSshPath (line 490) | private static string GetSshPath()
method GetMoshPath (line 510) | private static string GetMoshPath()
method SaveFile (line 531) | internal static void SaveFile(string path, string content)
method ReadFile (line 539) | internal static string ReadFile(string path)
method MuteProcess (line 544) | private static bool? MuteProcess(int id, bool mute, bool force = false)
method MuteConhost (line 555) | private static bool MuteConhost(bool mute)
method Calculate (line 569) | private static void Calculate(Func<bool> eval, TimeSpan timeout)
method SpawnConhostProcess (line 579) | private static void SpawnConhostProcess(bool mute)
method MuteTerminal (line 645) | internal static void MuteTerminal(bool mute)
type ProcessUtils (line 659) | [StructLayout(LayoutKind.Sequential)]
method NtQueryInformationProcess (line 671) | [DllImport("ntdll.dll")]
method ResolveParent (line 674) | public static Process ResolveParent(int processId)
FILE: FluentTerminal.SystemTray/VolumeControl.cs
class VolumeControl (line 6) | public static class VolumeControl
method GetAudioSessionMute (line 8) | public static bool? GetAudioSessionMute(int processId)
method SetAudioSessionMute (line 19) | public static void SetAudioSessionMute(int processId, bool mute)
method GetDefaultAudioEndpointMute (line 30) | public static bool? GetDefaultAudioEndpointMute()
method SetDefaultAudioEndpointMute (line 45) | public static void SetDefaultAudioEndpointMute(bool mute)
method GetDefaultDevice (line 60) | private static IMMDevice GetDefaultDevice()
method GetAudioVolume (line 68) | private static ISimpleAudioVolume GetAudioVolume(int pid)
class MMDeviceEnumerator (line 98) | [ComImport]
type EDataFlow (line 104) | internal enum EDataFlow
type ERole (line 112) | internal enum ERole
type IAudioEndpointVolume (line 120) | [Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfac...
method NoImp1 (line 123) | int NoImp1();
method NoImp2 (line 124) | int NoImp2();
method NoImp3 (line 125) | int NoImp3();
method NoImp4 (line 126) | int NoImp4();
method NoImp5 (line 127) | int NoImp5();
method NoImp6 (line 128) | int NoImp6();
method NoImp7 (line 129) | int NoImp7();
method NoImp8 (line 130) | int NoImp8();
method NoImp9 (line 131) | int NoImp9();
method NoImp10 (line 132) | int NoImp10();
method NoImp11 (line 133) | int NoImp11();
method SetMute (line 135) | [PreserveSig]
method GetMute (line 138) | [PreserveSig]
type IMMDeviceEnumerator (line 142) | [Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfac...
method NoImp1 (line 145) | int NoImp1();
method GetDefaultAudioEndpoint (line 147) | [PreserveSig]
type IMMDevice (line 151) | [Guid("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType(ComInterfac...
method Activate (line 154) | [PreserveSig]
type IAudioSessionManager2 (line 158) | [Guid("77AA99A0-1BD6-484F-8BC7-2C654C9A9B6F"), InterfaceType(ComInterfac...
method NoImp1 (line 161) | int NoImp1();
method NoImp2 (line 162) | int NoImp2();
method GetSessionEnumerator (line 164) | [PreserveSig]
type IAudioSessionEnumerator (line 168) | [Guid("E2F5BB11-0570-40CA-ACDD-3AA01277DEE8"), InterfaceType(ComInterfac...
method GetCount (line 171) | [PreserveSig]
method GetSession (line 174) | [PreserveSig]
type ISimpleAudioVolume (line 178) | [Guid("87CE5498-68D6-44E5-9215-6DA47EF883D8"), InterfaceType(ComInterfac...
method SetMasterVolume (line 181) | [PreserveSig]
method GetMasterVolume (line 184) | [PreserveSig]
method SetMute (line 187) | [PreserveSig]
method GetMute (line 190) | [PreserveSig]
type IAudioSessionControl2 (line 194) | [Guid("bfb7ff88-7239-4fc9-8fa2-07c950be9c6d"), InterfaceType(ComInterfac...
method NoImp0 (line 198) | int NoImp0();
method NoImp1 (line 199) | int NoImp1();
method NoImp2 (line 200) | int NoImp2();
method NoImp3 (line 201) | int NoImp3();
method NoImp4 (line 202) | int NoImp4();
method NoImp5 (line 203) | int NoImp5();
method NoImp6 (line 204) | int NoImp6();
method NoImp7 (line 205) | int NoImp7();
method NoImp8 (line 206) | int NoImp8();
method GetSessionIdentifier (line 209) | [PreserveSig]
method GetSessionInstanceIdentifier (line 212) | [PreserveSig]
method GetProcessId (line 215) | [PreserveSig]
method IsSystemSoundsSession (line 218) | [PreserveSig]
method SetDuckingPreference (line 221) | [PreserveSig]
Condensed preview — 406 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,060K chars).
[
{
"path": ".gitattributes",
"chars": 120,
"preview": "# Git will handle the files in whatever way it thinks is best.\n# Overwrites global core.autocrlf git setting\n* text=auto"
},
{
"path": ".github/workflows/main.yml",
"chars": 435,
"preview": "name: CI\n\non: [push]\n\njobs:\n build:\n\n runs-on: windows-latest\n\n steps:\n - uses: actions/checkout@master\n \n "
},
{
"path": ".gitignore",
"chars": 4982,
"preview": "# Project specific\nFluentTerminal.App/Win32\nFluentTerminal.App/Client/\nFluentTerminal.Client/dist\n/.sonarqube\n\n## Ignore"
},
{
"path": "Explorer Context Menu Integration/Install.bat",
"chars": 634,
"preview": "reg add \"HKCU\\Software\\Classes\\Directory\\shell\\Open Fluent Terminal here\\command\" /d \"\\\"%LOCALAPPDATA%\\Microsoft\\Windows"
},
{
"path": "Explorer Context Menu Integration/Install_with_icon.bat",
"chars": 1355,
"preview": "copy /y FluentTerminal.ico \"%LOCALAPPDATA%\\Microsoft\\WindowsApps\"\r\nreg add \"HKCU\\Software\\Classes\\Directory\\shell\\Open F"
},
{
"path": "Explorer Context Menu Integration/README.md",
"chars": 209,
"preview": "If you want a an icon for the context menu entries, download the .ico file and put in the same directory as the Install_"
},
{
"path": "Explorer Context Menu Integration/Uninstall.bat",
"chars": 402,
"preview": "reg delete \"HKCU\\Software\\Classes\\Directory\\shell\\Open Fluent Terminal here\" /f\nreg delete \"HKCU\\Software\\Classes\\Direct"
},
{
"path": "FluentTerminal.App/Actions/FocusAction.cs",
"chars": 1291,
"preview": "using Microsoft.Xaml.Interactivity;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.Ap"
},
{
"path": "FluentTerminal.App/Adapters/AppServiceConnectionAdapter.cs",
"chars": 1185,
"preview": "using FluentTerminal.App.Services;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.AppServic"
},
{
"path": "FluentTerminal.App/Adapters/ApplicationViewAdapter.cs",
"chars": 3856,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing System;\nusing System.Threading.Ta"
},
{
"path": "FluentTerminal.App/Adapters/MessageDialogAdapter.cs",
"chars": 1272,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Services.Utiliti"
},
{
"path": "FluentTerminal.App/App.xaml",
"chars": 2680,
"preview": "<Application\n x:Class=\"FluentTerminal.App.App\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\""
},
{
"path": "FluentTerminal.App/App.xaml.cs",
"chars": 36161,
"preview": "using Autofac;\r\nusing CommandLine;\r\nusing FluentTerminal.App.Adapters;\r\nusing FluentTerminal.App.CommandLineArguments;\r"
},
{
"path": "FluentTerminal.App/Behaviors/MiddleClickBehavior.cs",
"chars": 1296,
"preview": "using Microsoft.Xaml.Interactivity;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Input;\n\nnamespace FluentTerminal.App.B"
},
{
"path": "FluentTerminal.App/CommandLineArguments/NewVerb.cs",
"chars": 339,
"preview": "using CommandLine;\n\nnamespace FluentTerminal.App.CommandLineArguments\n{\n [Verb(\"new\")]\n public class NewVerb\n "
},
{
"path": "FluentTerminal.App/CommandLineArguments/RunVerb.cs",
"chars": 491,
"preview": "using CommandLine;\n\nnamespace FluentTerminal.App.CommandLineArguments\n{\n [Verb(\"run\")]\n public class RunVerb\n "
},
{
"path": "FluentTerminal.App/CommandLineArguments/SettingsVerb.cs",
"chars": 403,
"preview": "using CommandLine;\n\nnamespace FluentTerminal.App.CommandLineArguments\n{\n [Verb(\"settings\")]\n public class Setting"
},
{
"path": "FluentTerminal.App/CommandLineArguments/Target.cs",
"chars": 135,
"preview": "namespace FluentTerminal.App.CommandLineArguments\n{\n public enum Target\n {\n Default,\n Tab,\n "
},
{
"path": "FluentTerminal.App/Converters/BackgroundToApplicationThemeConverter.cs",
"chars": 872,
"preview": "using FluentTerminal.App.Utilities;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing System;\nusing Windows.UI;\nusing Windows."
},
{
"path": "FluentTerminal.App/Converters/BooleanNegationConverter.cs",
"chars": 1344,
"preview": "using System;\nusing Windows.UI.Xaml.Data;\n// ReSharper disable LocalizableElement\n\nnamespace FluentTerminal.App.Convert"
},
{
"path": "FluentTerminal.App/Converters/ColorResourceKeyFallbackConverter.cs",
"chars": 865,
"preview": "using Microsoft.Toolkit.Uwp.Helpers;\nusing System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\nusing Windows.UI."
},
{
"path": "FluentTerminal.App/Converters/EnumValueToVisibiltyConverter.cs",
"chars": 737,
"preview": "using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n public "
},
{
"path": "FluentTerminal.App/Converters/FalseToVisibleConverter.cs",
"chars": 753,
"preview": "using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n public "
},
{
"path": "FluentTerminal.App/Converters/I18NConverter.cs",
"chars": 1177,
"preview": "using FluentTerminal.App.Services.Utilities;\nusing System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Co"
},
{
"path": "FluentTerminal.App/Converters/IconConverter.cs",
"chars": 1038,
"preview": "using FluentTerminal.App.ViewModels.Menu;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing System;\nusing Windows.UI.Xaml.Cont"
},
{
"path": "FluentTerminal.App/Converters/IntToExtendedVirtualKeyConverter.cs",
"chars": 709,
"preview": "using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models.Enums;\nusing System;\nusing Windows.UI.Xaml.Dat"
},
{
"path": "FluentTerminal.App/Converters/IntToVisibilityConverter.cs",
"chars": 1752,
"preview": "using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n public "
},
{
"path": "FluentTerminal.App/Converters/MenuItemViewModelBaseToMenuFlayoutItemBaseConverter.cs",
"chars": 8701,
"preview": "using System;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\n"
},
{
"path": "FluentTerminal.App/Converters/MenuViewModelToFlyoutMenuConverter.cs",
"chars": 1428,
"preview": "using System;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\nusing FluentTerminal.App.ViewModels.Menu;\nusi"
},
{
"path": "FluentTerminal.App/Converters/NegateConverter.cs",
"chars": 561,
"preview": "using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n public class NegateConverter :"
},
{
"path": "FluentTerminal.App/Converters/NullToCollapsedConverter.cs",
"chars": 547,
"preview": "using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n public "
},
{
"path": "FluentTerminal.App/Converters/StringToColorConverter.cs",
"chars": 814,
"preview": "using FluentTerminal.App.Utilities;\nusing System;\nusing Windows.UI;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTermin"
},
{
"path": "FluentTerminal.App/Converters/TabColorFallbackConverter.cs",
"chars": 3403,
"preview": "using FluentTerminal.App.ViewModels;\nusing FluentTerminal.Models.Enums;\nusing Microsoft.Toolkit.Uwp.Helpers;\nusing Syst"
},
{
"path": "FluentTerminal.App/Converters/TabThemeSelectedConverter.cs",
"chars": 717,
"preview": "using FluentTerminal.App.ViewModels;\nusing System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters"
},
{
"path": "FluentTerminal.App/Converters/TerminalViewModelToViewConverter.cs",
"chars": 1567,
"preview": "using FluentTerminal.App.ViewModels;\nusing FluentTerminal.App.Views;\nusing System;\nusing System.Collections.Generic;\nus"
},
{
"path": "FluentTerminal.App/Converters/TextMiddleEllipsisConverter.cs",
"chars": 2270,
"preview": "using System;\nusing Windows.Foundation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Da"
},
{
"path": "FluentTerminal.App/Converters/ToolTipValueToPixelConverter.cs",
"chars": 501,
"preview": "using System;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n public class ToolTipValueToPix"
},
{
"path": "FluentTerminal.App/Converters/TrueToVisibleConverter.cs",
"chars": 746,
"preview": "using System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Data;\n\nnamespace FluentTerminal.App.Converters\n{\n public "
},
{
"path": "FluentTerminal.App/Dialogs/AboutDialog.xaml",
"chars": 2205,
"preview": "<ContentDialog\n x:Class=\"FluentTerminal.App.Dialogs.AboutDialog\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/"
},
{
"path": "FluentTerminal.App/Dialogs/AboutDialog.xaml.cs",
"chars": 1572,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Utilities;\nusing"
},
{
"path": "FluentTerminal.App/Dialogs/CreateKeyBindingDialog.xaml",
"chars": 3511,
"preview": "<ContentDialog\n x:Class=\"FluentTerminal.App.Dialogs.CreateKeyBindingDialog\"\n xmlns=\"http://schemas.microsoft.com/"
},
{
"path": "FluentTerminal.App/Dialogs/CreateKeyBindingDialog.xaml.cs",
"chars": 3823,
"preview": "using FluentTerminal.App.Services.Dialogs;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nus"
},
{
"path": "FluentTerminal.App/Dialogs/CustomCommandDialog.xaml",
"chars": 6182,
"preview": "<ContentDialog\n x:Class=\"FluentTerminal.App.Dialogs.CustomCommandDialog\"\n xmlns=\"http://schemas.microsoft.com/win"
},
{
"path": "FluentTerminal.App/Dialogs/CustomCommandDialog.xaml.cs",
"chars": 9662,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing Windows.Storage.Pickers;\nusing Wind"
},
{
"path": "FluentTerminal.App/Dialogs/InputDialog.xaml",
"chars": 606,
"preview": "<ContentDialog\n x:Class=\"FluentTerminal.App.Dialogs.InputDialog\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/"
},
{
"path": "FluentTerminal.App/Dialogs/InputDialog.xaml.cs",
"chars": 1632,
"preview": "using FluentTerminal.App.Services.Dialogs;\nusing System.Threading.Tasks;\nusing Windows.UI.Xaml.Controls;\nusing System;\n"
},
{
"path": "FluentTerminal.App/Dialogs/SshInfoDialog.xaml",
"chars": 10098,
"preview": "<ContentDialog\r\n x:Class=\"FluentTerminal.App.Dialogs.SshInfoDialog\"\r\n xmlns=\"http://schemas.microsoft.com/winfx/2"
},
{
"path": "FluentTerminal.App/Dialogs/SshInfoDialog.xaml.cs",
"chars": 5660,
"preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing Windows.Stor"
},
{
"path": "FluentTerminal.App/FluentTerminal.App.csproj",
"chars": 24244,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
},
{
"path": "FluentTerminal.App/Package.appxmanifest",
"chars": 1747,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10"
},
{
"path": "FluentTerminal.App/Properties/AssemblyInfo.cs",
"chars": 1082,
"preview": "using System.Resources;\nusing System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an"
},
{
"path": "FluentTerminal.App/Properties/Default.rd.xml",
"chars": 1349,
"preview": "<!--\n Diese Datei enthält von .NET Native verwendete Laufzeitdirektiven. Die hier gezeigten Standardwerte sind für di"
},
{
"path": "FluentTerminal.App/Services/ApplicationLanguageService.cs",
"chars": 2411,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Globalization;\n\nnamespace FluentTermin"
},
{
"path": "FluentTerminal.App/Services/ClipboardService.cs",
"chars": 1401,
"preview": "using System;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel.DataTr"
},
{
"path": "FluentTerminal.App/Services/CommandHistoryService.cs",
"chars": 11636,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Security.Cryptography;\nusing System.Text"
},
{
"path": "FluentTerminal.App/Services/FileSystemService.cs",
"chars": 2664,
"preview": "using FluentTerminal.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading.Ta"
},
{
"path": "FluentTerminal.App/Services/ImageFileSystemService.cs",
"chars": 4314,
"preview": "using FluentTerminal.Models;\nusing System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Threading.Ta"
},
{
"path": "FluentTerminal.App/Services/StartupTaskService.cs",
"chars": 1733,
"preview": "using FluentTerminal.Models.Enums;\nusing System;\nusing System.Threading.Tasks;\nusing Windows.ApplicationModel;\n\nnamespa"
},
{
"path": "FluentTerminal.App/Services/SystemFontService.cs",
"chars": 324,
"preview": "using Microsoft.Graphics.Canvas.Text;\nusing System.Collections.Generic;\n\nnamespace FluentTerminal.App.Services\n{\n pu"
},
{
"path": "FluentTerminal.App/Strings/ar/Resources.resw",
"chars": 41879,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/ar-iq/Resources.resw",
"chars": 41027,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/az-Latn/Resources.resw",
"chars": 41524,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/bg/Resources.resw",
"chars": 41419,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/bs/Resources.resw",
"chars": 40866,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/de/Resources.resw",
"chars": 42530,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/en-US/Resources.resw",
"chars": 41664,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/eo/Resources.resw",
"chars": 41584,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/es/Resources.resw",
"chars": 41044,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/fa/Resources.resw",
"chars": 41043,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/fr/Resources.resw",
"chars": 43096,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/he/Resources.resw",
"chars": 40501,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/hi/Resources.resw",
"chars": 41371,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/hr/Resources.resw",
"chars": 41529,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/hu/Resources.resw",
"chars": 41621,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/id/Resources.resw",
"chars": 41340,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/it/Resources.resw",
"chars": 42369,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/ja/Resources.resw",
"chars": 38788,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/ko/Resources.resw",
"chars": 38787,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/nl/Resources.resw",
"chars": 41781,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/pl/Resources.resw",
"chars": 41594,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/pt/Resources.resw",
"chars": 40930,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/pt-BR/Resources.resw",
"chars": 41737,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/ro/Resources.resw",
"chars": 41803,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/ru/Resources.resw",
"chars": 41813,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/sl/Resources.resw",
"chars": 41575,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/sq/Resources.resw",
"chars": 41165,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/sr-Latn/Resources.resw",
"chars": 40559,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/sr-cyrl/Resources.resw",
"chars": 40469,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/sv/Resources.resw",
"chars": 40614,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/tr/Resources.resw",
"chars": 41845,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/ug-Arab/Resources.resw",
"chars": 41632,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/uk/Resources.resw",
"chars": 41993,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/uz-Latn/Resources.resw",
"chars": 41741,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/vi/Resources.resw",
"chars": 40489,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/zh-Hans/Resources.resw",
"chars": 37843,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Strings/zh-Hant/Resources.resw",
"chars": 37793,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "FluentTerminal.App/Styles/Custom.xaml",
"chars": 10573,
"preview": "<ResourceDictionary xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft"
},
{
"path": "FluentTerminal.App/Utilities/ColorExtensions.cs",
"chars": 1464,
"preview": "using Microsoft.Toolkit.Uwp.Helpers;\nusing System.Globalization;\nusing Windows.UI;\n\nnamespace FluentTerminal.App.Utilit"
},
{
"path": "FluentTerminal.App/Utilities/ContrastHelper.cs",
"chars": 2850,
"preview": "using Microsoft.Toolkit.Uwp.Helpers;\nusing Windows.UI;\nusing Windows.UI.ViewManagement;\nusing Windows.UI.Xaml;\n\nnamespa"
},
{
"path": "FluentTerminal.App/Utilities/DelayedAction.cs",
"chars": 3867,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\n\nnamespace FluentTerminal.Ap"
},
{
"path": "FluentTerminal.App/Utilities/DispatcherExtensions.cs",
"chars": 1525,
"preview": "using System;\nusing System.Threading.Tasks;\nusing Windows.UI.Core;\n\nnamespace FluentTerminal.App.Utilities\n{\n intern"
},
{
"path": "FluentTerminal.App/Utilities/InteractiveSurface.cs",
"chars": 1026,
"preview": "using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Input;\n\nnamespace FluentTerminal.App.Utili"
},
{
"path": "FluentTerminal.App/Utilities/JumpListHelper.cs",
"chars": 1120,
"preview": "using System;\nusing Windows.UI.StartScreen;\nusing System.Threading.Tasks;\nusing FluentTerminal.App.Services;\n\nnamespace"
},
{
"path": "FluentTerminal.App/ViewModels/CommandItemViewModel.cs",
"chars": 11604,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xam"
},
{
"path": "FluentTerminal.App/ViewModels/CommandProfileProviderViewModel.cs",
"chars": 15074,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.IO;\nusing System.Lin"
},
{
"path": "FluentTerminal.App/ViewModels/DelayedHistorySaver.cs",
"chars": 2306,
"preview": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels\n{\n inte"
},
{
"path": "FluentTerminal.App/ViewModels/EnvironmentVariableViewModel.cs",
"chars": 545,
"preview": "using Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\n\nnamespace FluentTerminal.App.ViewModels\n{\n public class "
},
{
"path": "FluentTerminal.App/ViewModels/ISessionSuccessTracker.cs",
"chars": 205,
"preview": "namespace FluentTerminal.App.ViewModels\n{\n public interface ISessionSuccessTracker\n {\n void SetSuccessfulS"
},
{
"path": "FluentTerminal.App/ViewModels/ITerminalView.cs",
"chars": 717,
"preview": "using System;\nusing FluentTerminal.Models;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.ViewModels\n{\n "
},
{
"path": "FluentTerminal.App/ViewModels/Infrastructure/IErrorHandler.cs",
"chars": 162,
"preview": "using System;\n\nnamespace FluentTerminal.App.ViewModels.Infrastructure\n{\n public interface IErrorHandler\n {\n "
},
{
"path": "FluentTerminal.App/ViewModels/MainViewModel.cs",
"chars": 34391,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing FluentTerminal.App.Services.Utilit"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/ExpandableMenuItemViewModel.cs",
"chars": 1412,
"preview": "using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\n\nnamespace FluentTerminal.Ap"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/Mdl2Icon.cs",
"chars": 1835,
"preview": "namespace FluentTerminal.App.ViewModels.Menu\n{\n public sealed class Mdl2Icon\n {\n public string Color { get"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/MenuItemKeyBindingViewModel.cs",
"chars": 3776,
"preview": "using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing FluentTerminal.Models.Enums;\nusing Micr"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/MenuItemViewModel.cs",
"chars": 1267,
"preview": "using System;\nusing System.Windows.Input;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n public class MenuItemView"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/MenuItemViewModelBase.cs",
"chars": 1442,
"preview": "using FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels.Menu"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/MenuViewModel.cs",
"chars": 1168,
"preview": "using System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing Microsoft.Toolkit.Mvvm"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/RadioMenuItemViewModel.cs",
"chars": 1112,
"preview": "using System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n public class RadioMenuItemViewModel : MenuItemViewMod"
},
{
"path": "FluentTerminal.App/ViewModels/Menu/SeparatorMenuItemViewModel.cs",
"chars": 395,
"preview": "namespace FluentTerminal.App.ViewModels.Menu\n{\n public class SeparatorMenuItemViewModel : MenuItemViewModelBase\n "
},
{
"path": "FluentTerminal.App/ViewModels/Menu/ToggleMenuItemViewModel.cs",
"chars": 929,
"preview": "using System;\n\nnamespace FluentTerminal.App.ViewModels.Menu\n{\n public class ToggleMenuItemViewModel : MenuItemViewMo"
},
{
"path": "FluentTerminal.App/ViewModels/OverlayViewModel.cs",
"chars": 1471,
"preview": "using Microsoft.Toolkit.Mvvm.ComponentModel;\nusing System;\nusing Windows.UI.Xaml;\n\nnamespace FluentTerminal.App.ViewMod"
},
{
"path": "FluentTerminal.App/ViewModels/ProfileViewModelBase.cs",
"chars": 8572,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.T"
},
{
"path": "FluentTerminal.App/ViewModels/Profiles/CommonProfileProviderViewModel.cs",
"chars": 4442,
"preview": "using System.Threading.Tasks;\nusing System.Windows.Input;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.S"
},
{
"path": "FluentTerminal.App/ViewModels/Profiles/ProfileProviderViewModelBase.cs",
"chars": 13004,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing System.T"
},
{
"path": "FluentTerminal.App/ViewModels/Profiles/SshConnectViewModel.cs",
"chars": 17439,
"preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Tex"
},
{
"path": "FluentTerminal.App/ViewModels/Profiles/SshConnectionInfoValidationResult.cs",
"chars": 358,
"preview": "using System;\n\nnamespace FluentTerminal.App.ViewModels.Profiles\n{\n [Flags]\n public enum SshConnectionInfoValidati"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/AboutPageViewModel.cs",
"chars": 2673,
"preview": "using FluentTerminal.App.Services;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Microsoft.Toolkit.Mvvm.Input;\nusi"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/GeneralPageViewModel.cs",
"chars": 19045,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Flue"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/KeyBindingViewModel.cs",
"chars": 3740,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Micr"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/KeyBindingsPageViewModel.cs",
"chars": 3536,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Flue"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/KeyBindingsViewModel.cs",
"chars": 2828,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\nusing Syst"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/MousePageViewModel.cs",
"chars": 5205,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Flue"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/ProfilesPageViewModel.cs",
"chars": 5103,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing System;\nusing System.Collections.ObjectModel;\nusi"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/SshProfilesPageViewModel.cs",
"chars": 4746,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.Models;\nusing System;\nusing System.Collections.ObjectModel;\nusi"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/TerminalPageViewModel.cs",
"chars": 8890,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Uti"
},
{
"path": "FluentTerminal.App/ViewModels/Settings/ThemesPageViewModel.cs",
"chars": 9123,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Syst"
},
{
"path": "FluentTerminal.App/ViewModels/SettingsViewModel.cs",
"chars": 2436,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.ViewModels.Settings;\nusing Microsoft.Toolkit.Mvvm.Component"
},
{
"path": "FluentTerminal.App/ViewModels/ShellProfileViewModel.cs",
"chars": 3296,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Syst"
},
{
"path": "FluentTerminal.App/ViewModels/SshProfileViewModel.cs",
"chars": 1263,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.ViewModels.Profiles;\nusing FluentTerminal.Models;\n\nnamespac"
},
{
"path": "FluentTerminal.App/ViewModels/TabThemeViewModel.cs",
"chars": 745,
"preview": "using FluentTerminal.Models;\nusing Microsoft.Toolkit.Mvvm.ComponentModel;\n\nnamespace FluentTerminal.App.ViewModels\n{\n "
},
{
"path": "FluentTerminal.App/ViewModels/TerminalViewModel.cs",
"chars": 33049,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Flue"
},
{
"path": "FluentTerminal.App/ViewModels/ThemeViewModel.cs",
"chars": 18356,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.Models;\nusing Micr"
},
{
"path": "FluentTerminal.App/ViewModels/Utilities/TaskUtilities.cs",
"chars": 703,
"preview": "using FluentTerminal.App.ViewModels.Infrastructure;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace FluentTermin"
},
{
"path": "FluentTerminal.App/ViewModels/Utilities/WebViewSpecialCharEncoder.cs",
"chars": 452,
"preview": "namespace FluentTerminal.App.ViewModels.Utilities\n{\n public static class WebViewSpecialCharEncoder\n {\n pub"
},
{
"path": "FluentTerminal.App/Views/BooleanTemplateSelector.cs",
"chars": 692,
"preview": "using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n public class BooleanTe"
},
{
"path": "FluentTerminal.App/Views/EnvironmentVariablesView.xaml",
"chars": 2227,
"preview": "<UserControl\n x:Class=\"FluentTerminal.App.Views.EnvironmentVariablesView\"\n xmlns=\"http://schemas.microsoft.com/wi"
},
{
"path": "FluentTerminal.App/Views/EnvironmentVariablesView.xaml.cs",
"chars": 1486,
"preview": "using FluentTerminal.App.ViewModels;\nusing System;\nusing System.Collections.ObjectModel;\nusing System.Linq;\nusing Windo"
},
{
"path": "FluentTerminal.App/Views/KeyBindingsView.xaml",
"chars": 5217,
"preview": "<UserControl\n x:Class=\"FluentTerminal.App.Views.KeyBindingsView\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/"
},
{
"path": "FluentTerminal.App/Views/KeyBindingsView.xaml.cs",
"chars": 1131,
"preview": "using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentT"
},
{
"path": "FluentTerminal.App/Views/MainPage.xaml",
"chars": 5930,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.MainPage\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentat"
},
{
"path": "FluentTerminal.App/Views/MainPage.xaml.cs",
"chars": 9828,
"preview": "using FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels;\nusing System;\nusing System.ComponentModel;\nusi"
},
{
"path": "FluentTerminal.App/Views/MenuExtension.cs",
"chars": 1742,
"preview": "using System.Collections.Generic;\nusing System.Linq;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Fluen"
},
{
"path": "FluentTerminal.App/Views/NoValueTemplateSelector.cs",
"chars": 732,
"preview": "using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n public class NoValueTe"
},
{
"path": "FluentTerminal.App/Views/OverlayView.xaml",
"chars": 1224,
"preview": "<UserControl\n x:Class=\"FluentTerminal.App.Views.OverlayView\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml"
},
{
"path": "FluentTerminal.App/Views/OverlayView.xaml.cs",
"chars": 283,
"preview": "using Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views\n{\n // ReSharper disable once RedundantExtendsLis"
},
{
"path": "FluentTerminal.App/Views/SettingsPage.xaml",
"chars": 5903,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.SettingsPage\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/prese"
},
{
"path": "FluentTerminal.App/Views/SettingsPage.xaml.cs",
"chars": 5344,
"preview": "using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels;\nu"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/GeneralSettings.xaml",
"chars": 11688,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.SettingsPages.GeneralSettings\"\n xmlns=\"http://schemas.microsoft.com/winf"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/GeneralSettings.xaml.cs",
"chars": 731,
"preview": "using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamesp"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/KeyBindingSettings.xaml",
"chars": 2556,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.SettingsPages.KeyBindingSettings\"\n xmlns=\"http://schemas.microsoft.com/w"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/KeyBindingSettings.xaml.cs",
"chars": 1282,
"preview": "using FluentTerminal.App.Services.Utilities;\nusing FluentTerminal.App.ViewModels.Settings;\nusing FluentTerminal.Models."
},
{
"path": "FluentTerminal.App/Views/SettingsPages/MouseSettings.xaml",
"chars": 4758,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.SettingsPages.MouseSettings\"\n xmlns=\"http://schemas.microsoft.com/winfx/"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/MouseSettings.xaml.cs",
"chars": 608,
"preview": "using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamesp"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/ShellProfileSettings.xaml",
"chars": 22926,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.SettingsPages.ShellProfileSettings\"\n xmlns=\"http://schemas.microsoft.com"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/ShellProfileSettings.xaml.cs",
"chars": 622,
"preview": "using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamesp"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/SshProfileSettings.xaml",
"chars": 31672,
"preview": "<Page\r\n x:Class=\"FluentTerminal.App.Views.SettingsPages.SshProfileSettings\"\r\n xmlns=\"http://schemas.microsoft.com"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/SshProfileSettings.xaml.cs",
"chars": 798,
"preview": "using FluentTerminal.App.ViewModels.Settings;\r\nusing Windows.UI.Xaml.Controls;\r\nusing Windows.UI.Xaml.Navigation;\r\n\r\nna"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/TerminalSettings.xaml",
"chars": 7368,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.SettingsPages.TerminalSettings\"\n xmlns=\"http://schemas.microsoft.com/win"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/TerminalSettings.xaml.cs",
"chars": 1174,
"preview": "using FluentTerminal.App.ViewModels.Settings;\nusing Windows.System;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xa"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/ThemeSettings.xaml",
"chars": 23760,
"preview": "<Page\n x:Class=\"FluentTerminal.App.Views.SettingsPages.ThemeSettings\"\n xmlns=\"http://schemas.microsoft.com/winfx/"
},
{
"path": "FluentTerminal.App/Views/SettingsPages/ThemeSettings.xaml.cs",
"chars": 3445,
"preview": "using System;\nusing FluentTerminal.App.Utilities;\nusing FluentTerminal.App.ViewModels;\nusing FluentTerminal.App.ViewMod"
},
{
"path": "FluentTerminal.App/Views/TabBar.xaml",
"chars": 17282,
"preview": "<UserControl\n x:Class=\"FluentTerminal.App.Views.TabBar\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/pres"
},
{
"path": "FluentTerminal.App/Views/TabBar.xaml.cs",
"chars": 8639,
"preview": "using FluentTerminal.App.Services;\nusing FluentTerminal.App.Services.EventArgs;\nusing FluentTerminal.App.Services.Utili"
},
{
"path": "FluentTerminal.App/Views/TabBarBackgroundBindingHelper.cs",
"chars": 1814,
"preview": "using FluentTerminal.Models.Enums;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Data;\n\n"
},
{
"path": "FluentTerminal.App/Views/TabThemeTemplateSelector.cs",
"chars": 750,
"preview": "using FluentTerminal.Models;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerminal.App.Views"
},
{
"path": "FluentTerminal.App/Views/TemplateSelectors.xaml",
"chars": 4360,
"preview": "<ResourceDictionary\n x:Class=\"FluentTerminal.App.Views.TemplateSelectors\"\n xmlns=\"http://schemas.microsoft.com/wi"
},
{
"path": "FluentTerminal.App/Views/TemplateSelectors.xaml.cs",
"chars": 314,
"preview": "namespace FluentTerminal.App.Views\n{\n // Added due https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-bi"
},
{
"path": "FluentTerminal.App/Views/TerminalColorPicker.xaml",
"chars": 1820,
"preview": "<UserControl\n x:Class=\"FluentTerminal.App.Views.TerminalColorPicker\"\n xmlns=\"http://schemas.microsoft.com/winfx/2"
},
{
"path": "FluentTerminal.App/Views/TerminalColorPicker.xaml.cs",
"chars": 3891,
"preview": "using Windows.UI.Xaml;\nusing Windows.UI.Xaml.Media;\nusing Windows.UI.Xaml.Controls;\nusing MUXC = Microsoft.UI.Xaml.Cont"
},
{
"path": "FluentTerminal.App/Views/TerminalKeybindTemplateSelector.cs",
"chars": 815,
"preview": "using FluentTerminal.App.ViewModels.Settings;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentT"
},
{
"path": "FluentTerminal.App/Views/TerminalThemeTemplateSelector.cs",
"chars": 773,
"preview": "using FluentTerminal.Models;\nusing System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\n\nnamespace FluentTerm"
},
{
"path": "FluentTerminal.App/Views/TerminalView.xaml",
"chars": 7024,
"preview": "<UserControl\n x:Class=\"FluentTerminal.App.Views.TerminalView\"\n xmlns=\"http://schemas.microsoft.com/winfx/2006/xam"
},
{
"path": "FluentTerminal.App/Views/TerminalView.xaml.cs",
"chars": 4976,
"preview": "using FluentTerminal.App.ViewModels;\nusing System;\nusing Windows.System;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.C"
},
{
"path": "FluentTerminal.App/Views/XtermTerminalView.xaml",
"chars": 502,
"preview": "<UserControl\n x:Class=\"FluentTerminal.App.Views.XtermTerminalView\"\n xmlns=\"http://schemas.microsoft.com/winfx/200"
},
{
"path": "FluentTerminal.App/Views/XtermTerminalView.xaml.cs",
"chars": 21007,
"preview": "using FluentTerminal.App.Converters;\nusing FluentTerminal.App.Services;\nusing FluentTerminal.App.Utilities;\nusing Fluen"
},
{
"path": "FluentTerminal.App.Services/Adapters/ApplicationDataContainerAdapter.cs",
"chars": 1966,
"preview": "using Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Windows.Storage;\nusing "
},
{
"path": "FluentTerminal.App.Services/ApplicationDataContainers.cs",
"chars": 574,
"preview": "namespace FluentTerminal.App.Services\n{\n public class ApplicationDataContainers\n {\n public IApplicationDat"
},
{
"path": "FluentTerminal.App.Services/Constants.cs",
"chars": 693,
"preview": "namespace FluentTerminal.App.Services\n{\n public static class Constants\n {\n public const string ThemesConta"
},
{
"path": "FluentTerminal.App.Services/Dialogs/IAboutDialog.cs",
"chars": 154,
"preview": "using System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n public interface IAboutDialog\n {\n"
},
{
"path": "FluentTerminal.App.Services/Dialogs/ICreateKeyBindingDialog.cs",
"chars": 212,
"preview": "using FluentTerminal.Models;\nusing System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n public "
},
{
"path": "FluentTerminal.App.Services/Dialogs/ICustomCommandDialog.cs",
"chars": 241,
"preview": "using System.Threading.Tasks;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n public "
},
{
"path": "FluentTerminal.App.Services/Dialogs/IInputDialog.cs",
"chars": 198,
"preview": "using System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n public interface IInputDialog\n {\n"
},
{
"path": "FluentTerminal.App.Services/Dialogs/IMessageDialog.cs",
"chars": 288,
"preview": "using System.Threading.Tasks;\n\nnamespace FluentTerminal.App.Services.Dialogs\n{\n public interface IMessageDialog\n "
},
{
"path": "FluentTerminal.App.Services/Dialogs/ISshConnectionInfoDialog.cs",
"chars": 254,
"preview": "using FluentTerminal.Models;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace FluentTerminal.App.Services.Dialogs\r\n{\r\n pu"
},
{
"path": "FluentTerminal.App.Services/EventArgs/CancelableEventArgs.cs",
"chars": 164,
"preview": "namespace FluentTerminal.App.Services.EventArgs\n{\n public class CancelableEventArgs : System.EventArgs\n {\n "
},
{
"path": "FluentTerminal.App.Services/EventArgs/NewTabRequestedEventArgs.cs",
"chars": 249,
"preview": "using Windows.UI.Xaml;\n\nnamespace FluentTerminal.App.Services.EventArgs\n{\n public class NewTabRequestedEventArgs : S"
},
{
"path": "FluentTerminal.App.Services/EventArgs/NewWindowRequestedEventArgs.cs",
"chars": 369,
"preview": "using System;\nusing FluentTerminal.Models;\n\nnamespace FluentTerminal.App.Services.EventArgs\n{\n public class NewWindo"
},
{
"path": "FluentTerminal.App.Services/Exceptions/ParseThemeException.cs",
"chars": 602,
"preview": "using System;\n\nnamespace FluentTerminal.App.Services.Exceptions\n{\n public class ParseThemeException : Exception\n "
},
{
"path": "FluentTerminal.App.Services/Exceptions/ReadTextFileException.cs",
"chars": 613,
"preview": "using System;\n\nnamespace FluentTerminal.App.Services.Exceptions\n{\n public class ReadTextFileException : Exception\n "
},
{
"path": "FluentTerminal.App.Services/Exceptions/SaveTextFileException.cs",
"chars": 613,
"preview": "using System;\n\nnamespace FluentTerminal.App.Services.Exceptions\n{\n public class SaveTextFileException : Exception\n "
}
]
// ... and 206 more files (download for full content)
About this extraction
This page contains the full source code of the felixse/FluentTerminal GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 406 files (2.8 MB), approximately 744.4k tokens, and a symbol index with 1786 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.