K2GAX

              Penguins going North (from Antarctica to Redmond:)

              + systemd
              + snapd
              + powershell 7
              + packed network protocols
              + .NET Core 3.1.1
              + Visual Studio Code

# CentOS-8

ISO

  wget -c "http://centos.koyanet.lv/centos/8.1.1911/isos/x86_64" \
    "/CentOS-8.1.1911-x86_64-boot.iso"
      
CentOS 8 Netinstall Guide

  + Enable NIC. Closest mirror is selected automatically

  + ..
  
Reboot, update system with

  # yum update

Install SSHD (already up and running)

  # yum -y install openssh-server
  # systemctl enanle sshd
  # systemctl start  sshd
  # systemctl status sshd


# INSTALLING POWERSHELL 7 ON CENTOS 8

  http://buildvirtual.net/installing-powershell-on-centos-7/
  
  $ sudo su
  # curl https://packages.microsoft.com/config/rhel/8/prod.repo > \
    /etc/yum.repos.d/microsoft.repo
  
  # yum install -y powershell-preview
  CentOS-8 - AppStream             1.1 MB/s | 6.4 MB     00:05
  CentOS-8 - Base                  1.1 MB/s | 5.0 MB     00:04
  CentOS-8 - Extras                8.0 kB/s | 2.1 kB     00:00
  packages-microsoft-com-prod      1.1 MB/s |  29 MB     00:25
  ..
  wait ~min
  ..

  # mv /usr/bin/pwsh-preview /usr/bin/pwsh

  $ pwsh
  PowerShell 7.0.0-rc.1


# .NET SDK AND VISUAL STUDIO CODE
=================================

  # yum -y install dotnet-sdk-3.1
  # rpm --import https://packages.microsoft.com/keys/microsoft.asc
  # sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
  # yum check-update
  # yum install code

C# support

  https://code.visualstudio.com/docs/languages/csharp
  
You can install it from within VS Code by searching for 'C#' in the Extensions view (Ctrl+Shift+X) 

DotNet Tutorials

  https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/run
  https://channel9.msdn.com/Blogs/dotnet/Get-started-VSCode-Csharp-NET-Core-Windows
  
  
# DESKTOP
=========

                  Minimal and Desktop don't belong 
                  in the same sentence.
                  
                  https://forums.centos.org/viewtopic.php?t=47088

Short:

  # yum -y groupinstall "Server with GUI"
  # reboot # *1
  # systemctl set-default graphical
  # yum -y groupinstall "Development Tools"
  # yum -y install kernel-devel kernel-headers
  # sh /run/media/opilane/VBox<..TAB>/VBoxLinuxAdditions.run
  
*1) IMPORTANT: In the login Window, there is a small settings button like '*' that lets you choose between GNOME and GNOME classic*2. Choose GNOME for GNOME 3. If this is set correctly, you will have the environment variable DESKTOP_SESSION set to "gnome".

*2) https://forums.centos.org/viewtopic.php?t=47796

Detailed:

Group "X window system" dropped (coz of Wayland).

  # yum groups list

  Available Environment Groups:
     Minimal Install
     Compute Node
     Infrastructure Server
     File and Print Server
     Basic Web Server
     Virtualization Host
     Server with GUI
     GNOME Desktop
     KDE Plasma Workspaces
     Development and Creative Workstation
  Available Groups:
     Compatibility Libraries
     Console Internet Tools
     Development Tools
     Graphical Administration Tools
     Legacy UNIX Compatibility
     Scientific Support
     Security Tools
     Smart Card Support
     System Administration Tools
     System Management
  Done

Obsolete:

  yum groupremove "X Window System"
  yum groupinstall "X Window System"
  yum install gnome-classic-session gnome-terminal \
    nautilus-open-terminal control-center liberation-mono-fonts
  unlink /etc/systemd/system/default.target \
    /etc/systemd/system/default.target

The /etc/inittab file describes which processes are started at bootup and during normal operation. This file is used to start X windows system at boot by setting default run level to 5.* (Text mode is 3)

  ..
  id:5:initdefault:
  ..

*) https://www.cyberciti.biz/faq
     /centos-rhel-fedora-linux-disable-remove-x-windows-org/
     
  cat etc/inittab

  # inittab is no longer used when using systemd.
  #
  # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
  #
  # Ctrl-Alt-Delete is handled by
  #
  #   /usr/lib/systemd/system/ctrl-alt-del.target
  #
  # systemd uses 'targets' instead of runlevels. 
  # By default, there are two main targets:
  #
  # multi-user.target: analogous to runlevel 3
  # graphical.target: analogous to runlevel 5
  #
  # To view current default target, run:
  # systemctl get-default
  #
  # To set a default target, run:
  # systemctl set-default TARGET.target
  
So,

  # yum groupinstall "Server with GUI" (GNOME GUI*)
  Install  272 Packages (+774 Dependent packages)
  Total download size: 733 M
  Installed size: 2.2 G
  # yum groupinstall "GNOME Desktop"
  Install  293 Packages (+810 Dependent packages)
  Total download size: 772 M
  Installed size: 2.4 G
  
  # systemctl set-default graphical.target
  
*) https://www.itzgeek.com/how-tos/linux
     /centos-how-tos/how-to-install-gnome-gui-on-rhel-8.html

On Centos 8 / RHEL8 following message is displayed during startx

  # GNOME Shell starts by default but you'd like to use classic mode, set like follows and go startx

  $ vi ~/.xinitrc
  # create new

  export XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME
  export GNOME_SHELL_SESSION_MODE=classic
  exec /usr/bin/gnome-session --session=gnome-classic


# VIRTUALBOX GUEST ADDITIONS
============================

  # yum groupinstall "Development Tools"
  Install  25 Packages (+26 Dependent packages)
  Total download size: 89 M
  Installed size: 223 M
  # yum install elfutils-libelf-devel kernel-devel kernel-headers
  # sh /run/media/opilane/VBox_GAs_6.1.2/VBoxLinuxAdditions.run
  
Tip: Confirm that kernel-headers installed are matching your currently running kernel*:

  # ls -l /usr/src/kernels/$(uname -r)
  
*) Found here:

  https://linuxconfig.org
    /how-to-install-virtualbox-guest-additions-on-centos-7-linux


# YUM GROUPS
============

  Google: yum group list

  https://www.tecmint.com
    /install-group-of-packages-using-yum-on-centos-and-rhel/

List available groups from all yum repos:

  # yum grouplist

Total number of groups:

  # yum groups summary

Install/Remove/Info:

  # yum groups install "Development Tools"
  # yum groups remove "Development Tools"  
  # yum groups info "Development Tools"

Mark a group as installed:

  # yum groups mark install "Development Tools"
  
Message, while running yum:

  There is no installed groups file.
  Maybe run: yum groups mark convert (see man yum)
  
Individual packages:

  # rpm -qa
  # yum list installed


# LEMP
======

LEMP stack (Linux, Nginx, MariaDB, PHP)

  https://www.tecmint.com/install-nginx-mariadb-php-rhel-centos-fedora/


# BUILD MODERN NANO
===================

Read this:

  https://git.savannah.gnu.org/cgit/nano.git/tree/README.GIT

  - autoconf    (version >= 2.69)
  - automake    (version >= 1.14)
  - autopoint   (version >= 0.18.3)
  - gcc         (version >= 5.0)
  - gettext     (version >= 0.18.3)
  - git         (version >= 2.7.4)
  - groff       (version >= 1.12)
  - make        (any version)
  - pkg-config  (version >= 0.22)
  - texinfo     (version >= 4.0)

banano.sh
  
  #!/bin/bash

  autoconf --version | head -n 1
  automake --version | head -n 1
  autopoint --version | head -n 1
  gcc --version | head -n 1
  gettext --version | head -n 1
  git --version | head -n 1
  groff --version | head -n 1
  make --version | head -n 1
  pkg-config --version | head -n 1
  sudo yum -y install dnf-plugins-core
  sudo yum config-manager --set-enabled PowerTools
  sudo yum -y install texinfo
  makeinfo --version | head -n 1
  git clone git://git.savannah.gnu.org/nano.git nano
  cd nano
  ./autogen.sh
  ./configure
  make
  sudo yum -y remove nano
  sudo make install
  sudo ln -s /usr/local/bin/nano /usr/bin/nano
  
EOF

Script responds with:

  autoconf (GNU Autoconf) 2.69
  automake (GNU automake) 1.16.1
  /usr/bin/autopoint (GNU gettext-tools) 0.19.8.1
  gcc (GCC) 8.3.1 20190507 (Red Hat 8.3.1-4)
  gettext (GNU gettext-runtime) 0.19.8.1
  git version 2.18.2
  GNU groff version 1.22.3
  GNU Make 4.2.1
  1.4.2
  texi2any (GNU texinfo) 6.5
  ..


# RUNLEVEL TUTORIAL
===================

  https://www.itzgeek.com/how-tos/linux/centos-how-tos
    /how-to-change-current-default-runlevel-in-centos-8-rhel-8.html

Since CentOS 7 / RHEL 7, system run levels are replaced with targets and are managed by systemd. Systemd targets are represented by target units and their configuration files end with .target extension.

This systemd target unit file contains other systemd units through a chain of dependencies. For example, the graphical.target which provides graphical console starts GNOME service (gdm.service) and activates the multi-user.target unit.

Available Targets / Runlevels

CentOS 8 / RHEL 8 comes with a number of predefined targets that are more or less similar to the standard set of runlevels found in CentOS 6 / RHEL 6.

  Runlevel  Target Units                          Description
  0         runlevel0.target / poweroff.target    Power off the system.
  1         runlevel1.target / rescue.target      Single User mode
  2,3,4     runlevel2.target / multi-user.target  multi-user mode.
  5         runlevel5.target / graphical.target   Graphical mode.
  6         runlevel6.target / reboot.target      Reboot the system.


Change Default Runlevel

The default runlevel can be set either by using the systemctl command or making a symbolic link of runlevel targets to the default.target file.

  1. Using systemctl Command

  2. Making Symbolic link of runlevel targets
  
  
Using systemctl Command
.......................

Let’s check the current run level by running the following command.

  # systemctl get-default

Output:

  graphical.target

The above output confirms that the system’s current default runlevel is graphical.target (runlevel 5).

To change the default runlevel to runlevel 3 (nothing but a multi-user.target), use the below command.

  # systemctl set-default multi-user.target

Reboot and check it out.

You can turn off runlevel 5 (graphical.target) and switch to the runlevel 3 (multi-user.target) in the current session without rebooting the system (looks weird then hangs:):

  # systemctl isolate <name.target> 
  
command in the session.

  # systemctl isolate graphical.target

or

  # systemctl isolate multi-user.target


Making Symbolic Link of target
..............................

Check the current runlevel.

  systemctl get-default

Output:

  multi-user.target

The above output confirms that the system’s current default runlevel is multi-user.target (runlevel 3).

Before making the symbolic link, let’s list out the runlevel files in the systemd directory.

  # ls /lib/systemd/system/runlevel*target -l
  lrwxrwxrwx. 1 root root 15 Feb  4 11:01 /lib/systemd/system/runlevel0.target -> poweroff.target
  lrwxrwxrwx. 1 root root 13 Feb  4 11:02 /lib/systemd/system/runlevel1.target -> rescue.target
  lrwxrwxrwx. 1 root root 17 Feb  4 11:01 /lib/systemd/system/runlevel2.target -> multi-user.target
  lrwxrwxrwx. 1 root root 17 Feb  4 11:01 /lib/systemd/system/runlevel3.target -> multi-user.target
  lrwxrwxrwx. 1 root root 17 Feb  4 11:01 /lib/systemd/system/runlevel4.target -> multi-user.target
  lrwxrwxrwx. 1 root root 16 Feb  4 11:01 /lib/systemd/system/runlevel5.target -> graphical.target
  lrwxrwxrwx. 1 root root 13 Feb  4 11:01 /lib/systemd/system/runlevel6.target -> reboot.target

At this time, the default runlevel is multi-user.target (runlevel 3). Issue the following command to make a symbolic link of runlevel5.target to the default.target file.

  ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target

or

  ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

Reboot the server and check it out.

Verify that the default runlevel is runlevel 5 (graphical.target) post the reboot.

  systemctl get-default

Output:

  graphical.target

You can also switch to the runlevel 5 (graphical.target) get the graphical console in the current session without rebooting the system


# KEYLOGGER
===========

  Google: linux keylogger github
  https://github.com/nikosbatsaras/Keylogger

This is a simple linux keylogger written in C. To run it, execute the following command:

  sudo ./keylogger output_file

Here, the output file is the one that will store all the keystrokes.

  
# KOSTROMIN'S TURBO VISION (TUI)
================================

  https://www.codeproject.com/Articles/750873
    /Turbo-Vision-resurrected-for-Csharp-and-with-XAML

Build from source

  $ git clone https://github.com/elw00d/consoleframework
  $ cd consoleframework
  $ sudo yum install ncurses-compat-libs.x86_64
  $ dotnet build
  $ mkdir -p ExamplesStandalone/ManyControls/bin/Debug/netcoreapp3.0/
  $ unzip native/libtermkey-0.18-x86_64.zip \
      -d ExamplesStandalone/ManyControls/bin/Debug/netcoreapp3.0/
  $ dotnet run --project ExamplesStandalone/ManyControls

^d to exit framework..

  $ tree .
  .
  ├── Binding
  │   ├── Adapters
  │   │   └── IBindingAdapter.cs
  │   ├── bin
  │   │   └── Debug
  │   │       ├── Elwood.Binding.0.0.3.nupkg
  │   │       ├── netcoreapp3.0
  │   │       │   ├── Binding.deps.json
  │   │       │   ├── Binding.dll
  │   │       │   └── Binding.pdb
  │   │       ├── netstandard2.0
  │   │       │   ├── Binding.deps.json
  │   │       │   ├── Binding.dll
  │   │       │   └── Binding.pdb
  │   │       └── netstandard2.1
  │   │           ├── Binding.deps.json
  │   │           ├── Binding.dll
  │   │           └── Binding.pdb
  │   ├── BindingBase.cs
  │   ├── Binding.csproj
  │   ├── BindingMode.cs
  │   ├── BindingResult.cs
  │   ├── BindingSettingsBase.cs
  │   ├── Converters
  │   │   ├── ConversionResult.cs
  │   │   ├── IBindingConverter.cs
  │   │   ├── ReversedConverter.cs
  │   │   └── StringToIntegerConverter.cs
  │   ├── obj
  │   │   ├── Binding.csproj.nuget.cache
  │   │   ├── Binding.csproj.nuget.dgspec.json
  │   │   ├── Binding.csproj.nuget.g.props
  │   │   ├── Binding.csproj.nuget.g.targets
  │   │   ├── Debug
  │   │   │   ├── Elwood.Binding.0.0.3.nuspec
  │   │   │   ├── netcoreapp3.0
  │   │   │   │   ├── Binding.AssemblyInfo.cs
  │   │   │   │   ├── Binding.AssemblyInfoInputs.cache
  │   │   │   │   ├── Binding.assets.cache
  │   │   │   │   ├── Binding.csprojAssemblyReference.cache
  │   │   │   │   ├── Binding.csproj.FileListAbsolute.txt
  │   │   │   │   ├── Binding.dll
  │   │   │   │   └── Binding.pdb
  │   │   │   ├── netstandard2.0
  │   │   │   │   ├── Binding.AssemblyInfo.cs
  │   │   │   │   ├── Binding.AssemblyInfoInputs.cache
  │   │   │   │   ├── Binding.assets.cache
  │   │   │   │   ├── Binding.csprojAssemblyReference.cache
  │   │   │   │   ├── Binding.csproj.FileListAbsolute.txt
  │   │   │   │   ├── Binding.dll
  │   │   │   │   └── Binding.pdb
  │   │   │   └── netstandard2.1
  │   │   │       ├── Binding.AssemblyInfo.cs
  │   │   │       ├── Binding.AssemblyInfoInputs.cache
  │   │   │       ├── Binding.assets.cache
  │   │   │       ├── Binding.csprojAssemblyReference.cache
  │   │   │       ├── Binding.csproj.FileListAbsolute.txt
  │   │   │       ├── Binding.dll
  │   │   │       └── Binding.pdb
  │   │   └── project.assets.json
  │   ├── Observables
  │   │   ├── IObservableList.cs
  │   │   ├── ObservableList.cs
  │   │   └── ObservableListOfT.cs
  │   ├── Properties
  │   │   └── AssemblyInfo.cs
  │   └── Validators
  │       ├── IBindingValidator.cs
  │       ├── RequiredValidator.cs
  │       └── ValidationResult.cs
  ├── ConsoleFramework
  │   ├── bin
  │   │   └── Debug
  │   │       ├── Elwood.ConsoleFramework.0.0.3.nupkg
  │   │       ├── netcoreapp3.0
  │   │       │   ├── Binding.dll
  │   │       │   ├── Binding.pdb
  │   │       │   ├── ConsoleFramework.deps.json
  │   │       │   ├── ConsoleFramework.dll
  │   │       │   ├── ConsoleFramework.pdb
  │   │       │   ├── Xaml.dll
  │   │       │   └── Xaml.pdb
  │   │       ├── netstandard2.0
  │   │       │   ├── Binding.dll
  │   │       │   ├── Binding.pdb
  │   │       │   ├── ConsoleFramework.deps.json
  │   │       │   ├── ConsoleFramework.dll
  │   │       │   ├── ConsoleFramework.pdb
  │   │       │   ├── Xaml.dll
  │   │       │   └── Xaml.pdb
  │   │       └── netstandard2.1
  │   │           ├── Binding.dll
  │   │           ├── Binding.pdb
  │   │           ├── ConsoleFramework.deps.json
  │   │           ├── ConsoleFramework.dll
  │   │           ├── ConsoleFramework.pdb
  │   │           ├── Xaml.dll
  │   │           └── Xaml.pdb
  │   ├── ConsoleApplication.cs
  │   ├── ConsoleFramework.csproj
  │   ├── ConsoleFramework.dll.config
  │   ├── Controls
  │   │   ├── ButtonBase.cs
  │   │   ├── Button.cs
  │   │   ├── CheckBox.cs
  │   │   ├── ComboBox.cs
  │   │   ├── ContextMenu.cs
  │   │   ├── Control.cs
  │   │   ├── Grid.cs
  │   │   ├── GroupBox.cs
  │   │   ├── ListBox.cs
  │   │   ├── Menu.cs
  │   │   ├── MessageBox.cs
  │   │   ├── Panel.cs
  │   │   ├── ProgressBar.cs
  │   │   ├── RadioButton.cs
  │   │   ├── ScrollBar.cs
  │   │   ├── ScrollViewer.cs
  │   │   ├── TabControl.cs
  │   │   ├── TextBlock.cs
  │   │   ├── TextBox.cs
  │   │   ├── TextEditor.cs
  │   │   ├── TreeView.cs
  │   │   ├── UIElementCollection.cs
  │   │   ├── Window.cs
  │   │   └── WindowsHost.cs
  │   ├── Core
  │   │   ├── Colors.cs
  │   │   ├── Point.cs
  │   │   ├── Rect.cs
  │   │   ├── Size.cs
  │   │   ├── ThicknessConverter.cs
  │   │   ├── Thickness.cs
  │   │   ├── UnicodeTable.cs
  │   │   ├── Vector.cs
  │   │   └── VisualTreeHelper.cs
  │   ├── Events
  │   │   ├── CancelEventArgs.cs
  │   │   ├── EventManager.cs
  │   │   ├── FocusManager.cs
  │   │   ├── ICommand.cs
  │   │   ├── ICommandSource.cs
  │   │   ├── KeyboardFocusChangedEventArgs.cs
  │   │   ├── KeyConverter.cs
  │   │   ├── KeyEventArgs.cs
  │   │   ├── KeyGestureConverter.cs
  │   │   ├── KeyGesture.cs
  │   │   ├── ModifierKeysConverter.cs
  │   │   ├── MouseEventArgs.cs
  │   │   ├── RelayCommand.cs
  │   │   ├── RoutedEventArgs.cs
  │   │   └── RoutedEvent.cs
  │   ├── Native
  │   │   ├── Libc.cs
  │   │   ├── LibTermKey.cs
  │   │   ├── NCurses.cs
  │   │   └── Win32.cs
  │   ├── obj
  │   │   ├── ConsoleFramework.csproj.nuget.cache
  │   │   ├── ConsoleFramework.csproj.nuget.dgspec.json
  │   │   ├── ConsoleFramework.csproj.nuget.g.props
  │   │   ├── ConsoleFramework.csproj.nuget.g.targets
  │   │   ├── Debug
  │   │   │   ├── Elwood.ConsoleFramework.0.0.3.nuspec
  │   │   │   ├── netcoreapp3.0
  │   │   │   │   ├── ConsoleFramework.AssemblyInfo.cs
  │   │   │   │   ├── ConsoleFramework.AssemblyInfoInputs.cache
  │   │   │   │   ├── ConsoleFramework.assets.cache
  │   │   │   │   ├── ConsoleFramework.csprojAssemblyReference.cache
  │   │   │   │   ├── ConsoleFramework.csproj.CopyComplete
  │   │   │   │   ├── ConsoleFramework.csproj.FileListAbsolute.txt
  │   │   │   │   ├── ConsoleFramework.dll
  │   │   │   │   └── ConsoleFramework.pdb
  │   │   │   ├── netstandard2.0
  │   │   │   │   ├── ConsoleFramework.AssemblyInfo.cs
  │   │   │   │   ├── ConsoleFramework.AssemblyInfoInputs.cache
  │   │   │   │   ├── ConsoleFramework.assets.cache
  │   │   │   │   ├── ConsoleFramework.csprojAssemblyReference.cache
  │   │   │   │   ├── ConsoleFramework.csproj.CopyComplete
  │   │   │   │   ├── ConsoleFramework.csproj.FileListAbsolute.txt
  │   │   │   │   ├── ConsoleFramework.dll
  │   │   │   │   └── ConsoleFramework.pdb
  │   │   │   └── netstandard2.1
  │   │   │       ├── ConsoleFramework.AssemblyInfo.cs
  │   │   │       ├── ConsoleFramework.AssemblyInfoInputs.cache
  │   │   │       ├── ConsoleFramework.assets.cache
  │   │   │       ├── ConsoleFramework.csprojAssemblyReference.cache
  │   │   │       ├── ConsoleFramework.csproj.CopyComplete
  │   │   │       ├── ConsoleFramework.csproj.FileListAbsolute.txt
  │   │   │       ├── ConsoleFramework.dll
  │   │   │       └── ConsoleFramework.pdb
  │   │   └── project.assets.json
  │   ├── Properties
  │   │   └── AssemblyInfo.cs
  │   ├── Rendering
  │   │   ├── PhysicalCanvas.cs
  │   │   ├── Renderer.cs
  │   │   └── RenderingBuffer.cs
  │   └── Xaml
  │       ├── BindingMarkupExtension.cs
  │       ├── ConvertMarkupExtension.cs
  │       └── NotBooleanConverter.cs
  ├── ConsoleFramework.sln
  ├── docs
  │   ├── en
  │   │   ├── LayoutSystem.md
  │   │   ├── xaml-binding.md
  │   │   └── xaml.md
  │   └── ru
  │       ├── binding.txt
  │       ├── Focus.txt
  │       ├── LayoutSystem.txt
  │       ├── roadmap.txt
  │       ├── xaml-binding.md
  │       └── xaml.md
  ├── etc
  │   ├── ConsoleTestCpp
  │   │   ├── ConsoleTest.cbp
  │   │   ├── ConsoleTest.depend
  │   │   ├── ConsoleTest.layout
  │   │   └── main.cpp
  │   ├── LibtermkeyTest
  │   │   ├── LibtermkeyTest
  │   │   │   ├── AssemblyInfo.cs
  │   │   │   ├── LibTermKey.cs
  │   │   │   ├── LibtermkeyTest.csproj
  │   │   │   └── Main.cs
  │   │   └── LibtermkeyTest.sln
  │   ├── mono-ncurses-problem
  │   │   └── TestApp
  │   │       ├── TestApp
  │   │       │   ├── AssemblyInfo.cs
  │   │       │   ├── Main.cs
  │   │       │   └── TestApp.csproj
  │   │       ├── TestApp.sln
  │   │       └── TestApp.userprefs
  │   ├── NCursesNetCoreTest
  │   │   ├── Main.cs
  │   │   └── TestApp.csproj
  │   └── NCursesTestApp
  │       ├── main.cpp
  │       ├── NCursesTestApp.cbp
  │       └── NCursesTestApp.depend
  ├── Examples
  │   ├── app.config
  │   ├── AsyncUiUpdate
  │   │   ├── main.xml
  │   │   └── Program.cs
  │   ├── CheckBoxes
  │   │   ├── main.xml
  │   │   └── Program.cs
  │   ├── Commands
  │   │   ├── main.xml
  │   │   ├── Program.cs
  │   │   └── windows-host.xml
  │   ├── Examples.csproj
  │   ├── GridTest.xml
  │   ├── Layout.xml
  │   ├── MainMenu
  │   │   ├── main.xml
  │   │   ├── Program.cs
  │   │   └── windows-host.xml
  │   ├── MainWindow.xml
  │   ├── Program.cs
  │   ├── Properties
  │   │   └── AssemblyInfo.cs
  │   ├── RadioButtons
  │   │   ├── main.xml
  │   │   └── Program.cs
  │   ├── TabControl
  │   │   ├── main.xml
  │   │   └── Program.cs
  │   └── TreeView
  │       ├── main.xml
  │       ├── Program.cs
  │       └── windows-host.xml
  ├── ExamplesStandalone
  │   ├── ManyControls
  │   │   ├── bin
  │   │   │   └── Debug
  │   │   │       └── netcoreapp3.0
  │   │   │           ├── Binding.dll
  │   │   │           ├── Binding.pdb
  │   │   │           ├── ConsoleFramework.dll
  │   │   │           ├── ConsoleFramework.pdb
  │   │   │           ├── libtermkey.so -> libtermkey.so.1.12.0
  │   │   │           ├── libtermkey.so.1 -> libtermkey.so.1.12.0
  │   │   │           ├── libtermkey.so.1.12.0
  │   │   │           ├── ManyControls
  │   │   │           ├── ManyControls.deps.json
  │   │   │           ├── ManyControls.dll
  │   │   │           ├── ManyControls.pdb
  │   │   │           ├── ManyControls.runtimeconfig.dev.json
  │   │   │           ├── ManyControls.runtimeconfig.json
  │   │   │           ├── Xaml.dll
  │   │   │           └── Xaml.pdb
  │   │   ├── GridTest.xml
  │   │   ├── Layout.xml
  │   │   ├── MainWindow.xml
  │   │   ├── ManyControls.csproj
  │   │   ├── obj
  │   │   │   ├── Debug
  │   │   │   │   └── netcoreapp3.0
  │   │   │   │       ├── ManyControls
  │   │   │   │       ├── ManyControls.AssemblyInfo.cs
  │   │   │   │       ├── ManyControls.AssemblyInfoInputs.cache
  │   │   │   │       ├── ManyControls.assets.cache
  │   │   │   │       ├── ManyControls.csprojAssemblyReference.cache
  │   │   │   │       ├── ManyControls.csproj.CopyComplete
  │   │   │   │       ├── ManyControls.csproj.FileListAbsolute.txt
  │   │   │   │       ├── ManyControls.dll
  │   │   │   │       └── ManyControls.pdb
  │   │   │   ├── ManyControls.csproj.nuget.cache
  │   │   │   ├── ManyControls.csproj.nuget.dgspec.json
  │   │   │   ├── ManyControls.csproj.nuget.g.props
  │   │   │   ├── ManyControls.csproj.nuget.g.targets
  │   │   │   └── project.assets.json
  │   │   └── Program.cs
  │   └── TextEditor
  │       ├── bin
  │       │   └── Debug
  │       │       └── netcoreapp3.0
  │       │           ├── Binding.dll
  │       │           ├── Binding.pdb
  │       │           ├── ConsoleFramework.dll
  │       │           ├── ConsoleFramework.pdb
  │       │           ├── TextEditor
  │       │           ├── TextEditor.deps.json
  │       │           ├── TextEditor.dll
  │       │           ├── TextEditor.pdb
  │       │           ├── TextEditor.runtimeconfig.dev.json
  │       │           ├── TextEditor.runtimeconfig.json
  │       │           ├── Xaml.dll
  │       │           └── Xaml.pdb
  │       ├── main.xml
  │       ├── obj
  │       │   ├── Debug
  │       │   │   └── netcoreapp3.0
  │       │   │       ├── TextEditor
  │       │   │       ├── TextEditor.AssemblyInfo.cs
  │       │   │       ├── TextEditor.AssemblyInfoInputs.cache
  │       │   │       ├── TextEditor.assets.cache
  │       │   │       ├── TextEditor.csprojAssemblyReference.cache
  │       │   │       ├── TextEditor.csproj.CopyComplete
  │       │   │       ├── TextEditor.csproj.FileListAbsolute.txt
  │       │   │       ├── TextEditor.dll
  │       │   │       └── TextEditor.pdb
  │       │   ├── project.assets.json
  │       │   ├── TextEditor.csproj.nuget.cache
  │       │   ├── TextEditor.csproj.nuget.dgspec.json
  │       │   ├── TextEditor.csproj.nuget.g.props
  │       │   └── TextEditor.csproj.nuget.g.targets
  │       ├── Program.cs
  │       └── TextEditor.csproj
  ├── LICENSE
  ├── native
  │   ├── libtermkey-0.18.tar.gz
  │   ├── libtermkey-0.18-x86_64.zip
  │   ├── libtermkey-0.18-x86-bin.zip
  │   ├── osx-10.8-all-bin.zip
  │   └── README
  ├── readme.md
  ├── Tests
  │   ├── bin
  │   │   └── Debug
  │   │       └── netcoreapp3.0
  │   │           ├── Binding.dll
  │   │           ├── Binding.pdb
  │   │           ├── ConsoleFramework.dll
  │   │           ├── ConsoleFramework.pdb
  │   │           ├── cs
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── de
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── es
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── fr
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── it
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── ja
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── ko
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── Microsoft.DotNet.PlatformAbstractions.dll
  │   │           ├── Microsoft.Extensions.DependencyModel.dll
  │   │           ├── Microsoft.TestPlatform.CommunicationUtilities.dll
  │   │           ├── Microsoft.TestPlatform.CoreUtilities.dll
  │   │           ├── Microsoft.TestPlatform.CrossPlatEngine.dll
  │   │           ├── Microsoft.TestPlatform.PlatformAbstractions.dll
  │   │           ├── Microsoft.VisualStudio.TestPlatform.Common.dll
  │   │           ├── Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
  │   │           ├── Newtonsoft.Json.dll
  │   │           ├── pl
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── pt-BR
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── ru
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── System.Xml.XPath.XmlDocument.dll
  │   │           ├── testhost.dll
  │   │           ├── Tests.deps.json
  │   │           ├── Tests.dll
  │   │           ├── Tests.pdb
  │   │           ├── Tests.runtimeconfig.dev.json
  │   │           ├── Tests.runtimeconfig.json
  │   │           ├── tr
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           ├── Xaml.dll
  │   │           ├── Xaml.pdb
  │   │           ├── xunit.abstractions.dll
  │   │           ├── xunit.assert.dll
  │   │           ├── xunit.core.dll
  │   │           ├── xunit.execution.dotnet.dll
  │   │           ├── xunit.runner.json
  │   │           ├── xunit.runner.reporters.netstandard15.dll
  │   │           ├── xunit.runner.utility.netstandard15.dll
  │   │           ├── xunit.runner.visualstudio.dotnetcore.testadapter.dll
  │   │           ├── zh-Hans
  │   │           │   ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │           │   ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │           │   ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │           │   └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   │           └── zh-Hant
  │   │               ├── Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  │   │               ├── Microsoft.TestPlatform.CoreUtilities.resources.dll
  │   │               ├── Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  │   │               ├── Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  │   │               └── Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  │   ├── Binding
  │   │   ├── AdapterTest.cs
  │   │   ├── CollectionRebindTest.cs
  │   │   ├── CollectionsTest.cs
  │   │   ├── ExplicitConverterTest.cs
  │   │   ├── SimplePropertiesTest.cs
  │   │   └── ValidationTest.cs
  │   ├── Controls
  │   │   └── TextEditorTests.cs
  │   ├── HitTestingTest.cs
  │   ├── KeyGesturesTests.cs
  │   ├── LayoutClipTests.cs
  │   ├── LayoutTests.cs
  │   ├── obj
  │   │   ├── Debug
  │   │   │   └── netcoreapp3.0
  │   │   │       ├── Tests.AssemblyInfo.cs
  │   │   │       ├── Tests.AssemblyInfoInputs.cache
  │   │   │       ├── Tests.assets.cache
  │   │   │       ├── Tests.csprojAssemblyReference.cache
  │   │   │       ├── Tests.csproj.CopyComplete
  │   │   │       ├── Tests.csproj.FileListAbsolute.txt
  │   │   │       ├── Tests.dll
  │   │   │       ├── Tests.pdb
  │   │   │       └── Tests.Program.cs
  │   │   ├── project.assets.json
  │   │   ├── Tests.csproj.nuget.cache
  │   │   ├── Tests.csproj.nuget.dgspec.json
  │   │   ├── Tests.csproj.nuget.g.props
  │   │   └── Tests.csproj.nuget.g.targets
  │   ├── Tests.csproj
  │   ├── Xaml
  │   │   ├── EnumsTest
  │   │   │   ├── EnumsTest.cs
  │   │   │   └── ObjectToCreate.xml
  │   │   ├── MarkupExtensionsTest.cs
  │   │   ├── TypeExtensionTest
  │   │   │   ├── object.xml
  │   │   │   └── Test.cs
  │   │   ├── XamlDataContextTest.cs
  │   │   ├── XamlObject1.xml
  │   │   └── XamlTest.cs
  │   └── xunit.runner.json
  ├── Web
  │   ├── JSIL
  │   │   ├── JSIL.dll
  │   │   └── JSIL.Meta.dll
  │   └── TestApp
  │       ├── roadmap.txt
  │       ├── TestApp
  │       │   ├── 1.html
  │       │   ├── app.config
  │       │   ├── Assert.cs
  │       │   ├── ConsoleAdapter.cs
  │       │   ├── ConsoleAdapter.js
  │       │   ├── EventManager2.cs
  │       │   ├── go2.bat
  │       │   ├── go.bat
  │       │   ├── Program22.cs
  │       │   ├── Program.cs
  │       │   ├── Properties
  │       │   │   └── AssemblyInfo.cs
  │       │   ├── TestApp.csproj
  │       │   ├── TestApp.csproj.user
  │       │   └── Tests
  │       │       ├── Binding
  │       │       │   ├── AdapterTest.cs
  │       │       │   ├── CollectionRebindTest.cs
  │       │       │   ├── CollectionsTest.cs
  │       │       │   ├── ExplicitConverterTest.cs
  │       │       │   ├── SimplePropertiesTest.cs
  │       │       │   └── ValidationTest.cs
  │       │       ├── Program.cs
  │       │       └── Xaml
  │       │           ├── EnumsTest
  │       │           │   ├── EnumsTest.cs
  │       │           │   └── ObjectToCreate.xml
  │       │           ├── XamlObject1.xml
  │       │           └── XamlTest.cs
  │       └── TestApp.sln
  └── Xaml
      ├── bin
      │   └── Debug
      │       ├── Elwood.Xaml.0.0.3.nupkg
      │       └── netstandard2.0
      │           ├── Xaml.deps.json
      │           ├── Xaml.dll
      │           └── Xaml.pdb
      ├── ContentPropertyAttribute.cs
      ├── DataContextPropertyAttribute.cs
      ├── Factories.cs
      ├── ITypeConverter.cs
      ├── MarkupExtensionAttribute.cs
      ├── MarkupExtensionsParser.cs
      ├── obj
      │   ├── Debug
      │   │   ├── Elwood.Xaml.0.0.3.nuspec
      │   │   └── netstandard2.0
      │   │       ├── Xaml.AssemblyInfo.cs
      │   │       ├── Xaml.AssemblyInfoInputs.cache
      │   │       ├── Xaml.assets.cache
      │   │       ├── Xaml.csprojAssemblyReference.cache
      │   │       ├── Xaml.csproj.FileListAbsolute.txt
      │   │       ├── Xaml.dll
      │   │       └── Xaml.pdb
      │   ├── project.assets.json
      │   ├── Xaml.csproj.nuget.cache
      │   ├── Xaml.csproj.nuget.dgspec.json
      │   ├── Xaml.csproj.nuget.g.props
      │   └── Xaml.csproj.nuget.g.targets
      ├── Properties
      │   └── AssemblyInfo.cs
      ├── RefMarkupExtension.cs
      ├── TypeConverterAttribute.cs
      ├── TypeMarkupExtension.cs
      ├── Xaml.csproj
      ├── XamlParser.cs
      └── xaml.xsd

  113 directories, 479 files


# LINKS
=======

  1. https://linoxide.com/linux-how-to
       /install-gnome-shell-extensions-gui-cli/
