Aptivi - Manual
ProjectsWebsiteBlog
Nitrocid KS - Manual
Nitrocid KS - Manual
  • Welcome!
  • Versions and Compatibility
    • Supported Versions
    • EOL Versions
    • Version Release Notes
      • v0.0.1.x series
      • v0.0.2.x series
      • v0.0.3.x series
      • v0.0.4.x series
      • v0.0.5.x series
        • v0.0.5.0 Beta Versions
      • v0.0.6.x series
        • v0.0.6.0 Beta Versions
      • v0.0.7.x series
        • v0.0.7.0 Beta Versions
      • v0.0.8.x series
      • v0.0.9.x series
      • v0.0.10.x series
      • v0.0.11.x series
      • v0.0.12.x series
      • v0.0.13.x series
      • v0.0.14.x series
      • v0.0.15.x series
      • v0.0.16.x series
      • v0.0.17.x series
      • v0.0.18.x series
      • v0.0.19.x series
      • v0.0.20.x series
      • v0.0.21.x series
      • v0.0.22.x series
      • v0.0.23.x series
      • v0.0.24.x series
      • v0.1.0.x and 0.1.1.x series
      • v0.1.2.x and v0.1.3.x series
    • Compatibility Notes for KS API Revisions
      • Upgrading to API v1.0 series
      • Upgrading to API v1.1 series
      • Upgrading to API v1.2 series
      • Upgrading to API v1.3 series
      • Upgrading to API v2.0 series
      • Upgrading to API v2.1 series
      • Upgrading to API v3.0 series
        • From 0.0.24.x to 0.1.0 Beta 1
        • From 0.1.0 Beta 1 to 0.1.0 Beta 2
        • From 0.1.0 Beta 2 to 0.1.0 Beta 3
        • From 0.1.0 Beta 3 to 0.1.0 RC
        • From 0.1.0 RC to 0.1.0 Final
      • Upgrading to API v3.1 series
  • Installation and Maintenance
    • Installing the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Upgrading the Kernel
      • Windows
      • macOS
      • Linux
      • Android
    • Dependency Information
  • Fundamentals
    • What is the Kernel?
    • What is Nitrocid KS?
    • Simulated Kernel Features
      • Extra Features
        • More Networking
          • FTP Client
          • SSH Connection
          • SFTP Client
          • RSS Client
          • HTTP Client
          • Mail Client
        • Games and Amusements
          • Hangman
          • BackRace
          • Meteor
          • Pong
          • Russian Roulette
          • ShipDuet
          • Snaker
          • Solver
          • SpeedPress
          • Wordle
        • More Editors
          • JSON Editor
          • SQL Editor
        • Common Programs
          • Archive
          • Caffeine
          • Calendar
          • Calculator
          • Contacts
          • Dictionary
          • Git Shell
          • Notes
          • Stocks
          • Timers
          • To-do List
          • Unit Converter
          • Weather
        • Docking
        • Language Studio
        • Theme Studio
      • Accounts
        • Groups
        • Permissions
      • Editors
        • Text Editor
        • Hex Editor
      • Shells
        • Commands List
        • Addon Commands List
      • Files and Folders
        • Hashing and Encryption
      • The Nitrocid Homepage
      • Networking
      • Localization
      • Screensavers
      • Lockscreen Widgets
      • Audio Cues
  • Advanced and Power Users
    • Building the Kernel
      • Building on Windows
      • Building on macOS
      • Building on Linux
      • Building on Android
    • Kernel Modifications
      • Building your Mod
      • Analyzing your Mod
        • Text - NKS0001
        • ConsoleBase - NKS0002
        • ConsoleBase - NKS0003
        • ConsoleBase - NKS0004
        • ConsoleBase - NKS0005
        • ConsoleBase - NKS0006
        • ConsoleBase - NKS0007
        • ConsoleBase - NKS0008
        • ConsoleBase - NKS0009
        • Files - NKS0010
        • Files - NKS0011
        • Files - NKS0012
        • Files - NKS0013
        • Files - NKS0014
        • Files - NKS0015
        • Files - NKS0016
        • Files - NKS0017
        • Files - NKS0018
        • Files - NKS0019
        • Files - NKS0020
        • Files - NKS0021
        • Files - NKS0022
        • Files - NKS0023
        • Kernel - NKS0024
        • Kernel - NKS0025
        • Kernel - NKS0026
        • Kernel - NKS0027
        • Kernel - NKS0031
        • Kernel - NKS0032
        • Kernel - NKS0033
        • Kernel - NKS0037
        • Kernel - NKS0038
        • Kernel - NKS0039
        • Kernel - NKS0040
        • Kernel - NKS0041
        • Kernel - NKS0042
        • Kernel - NKS0043
        • Kernel - NKS0052
        • Kernel - NKS0053
        • Languages - NKS0044
        • Languages - NKS0045
        • Languages - NKS0046
        • Network - NKS0051
        • Text - NKS0047
        • Text - NKS0048
        • Text - NKS0049
        • Text - NKS0050
        • Text - NKS0054
        • Text - NKS0055
      • Managing your Mod
        • Inter-Mod Communication
        • Inter-Addon Communication
    • Diagnostics
      • Debugging
        • Local Debugging
        • Remote Debugging
      • Testing
      • Other Diagnostics
    • Bootloader
      • Boot Choices
      • Kernel Environments
      • Custom Boot Styles
    • Inner Workings
      • Kernel Settings
        • Mechanics of Settings App
        • Settings Format
        • Custom Settings
      • Shell Structure
        • Help System
        • Command Parsing
        • Command Information
        • Command Switches
        • Shell History
        • Shell Scripting
        • Shell Presets
        • Extra Shell Features
      • Multilingual Kernel
        • Locale Tools
        • Custom Languages
      • Inner Essentials
        • Kernel Drivers
          • Console Drivers
          • Debug Logger Drivers
          • Encoding Drivers
          • Encryption Drivers
          • Filesystem Drivers
          • Hardware Prober Drivers
          • Input Drivers
          • Network Drivers
          • RNG Drivers
          • Regular Expression Drivers
          • Sorting Drivers
        • Kernel Placeholders
        • The Permissions
        • The Users
        • Kernel Threads
        • Kernel Arguments
        • Kernel Journaling
        • Remote Procedure
        • Nitrocid Filesystem
        • Screensaver Internals
        • Splash Internals
        • Kernel Platform
        • Theme Internals
        • Color Internals
        • Privacy Consents
        • System Notifications
        • MAL and MOTD
        • Progress Handlers
        • Assembly Signing
        • Assembly Reflection
        • Random Number Generation
        • Network Tools
        • Date and Time
        • Mod Manual Pages
      • Miscellaneous APIs
  • Project Dependencies
  • Report an issue
  • Source code
  • API Reference
Powered by GitBook
On this page
  • From 0.0.15 to 0.0.16
  • TemplateSet() and ParseCurrentTheme()
  • ListDrivers()
  • NotEnoughArgumentsException class
  • Synth system
  • GetCultureFromLang()
  • Configuration Renovation
  • True color writers
  • ParseMods()
  • SFTPPromptForPassword()
  • From 0.0.16 to 0.0.17
  • InitTimesInZones()
  • ShowTimesInZones()
  • From 0.0.17 to 0.0.18
  • All help functions
Edit on GitHub
  1. Versions and Compatibility
  2. Compatibility Notes for KS API Revisions

Upgrading to API v1.3 series

Follow the compatibility notes when upgrading your mods to API v1.3 series

Last updated 7 months ago

When upgrading your modification from the target of the later version of Nitrocid KS that declares itself to be from the API v1.3, you must make necessary changes to be able to use your mod in a Nitrocid KS version which you use to test your mod. These changes will be listed starting from 0.0.16 to the last version in this API revision.

From 0.0.15 to 0.0.16

This version refined the kernel in various aspects, including the enhancements of the coloring system and the addition of various useful features.

TemplateSet() and ParseCurrentTheme()

Color.vb
Public Sub TemplateSet(ByVal theme As String)
Public Sub ParseCurrentTheme()

One of the useful features added to this version series of Nitrocid KS is the dynamic theme support, which takes any theme information formatted in JSON format and parses it to the theme manager to set the necessary colors according to the color types.

This function was implemented to set the kernel colors from any theme name. However, the major caveat that affected this function was that themes depended on the supporting variables for each theme, which ultimately resulted in the API pollution that we had to clean up. Refining the theme feature caused us to remove this function and replace it with something saner.

If you want to apply your theme from either the pre-defined kernel themes or the custom theme file, use one of the three functions. Their method signatures are shown below.

The second function, ParseCurrentTheme(), was actually checking the kernel colors against all the themes that were defined and, if matched, returned the appropriate theme name. Such function is not available as an alternative in the current version of the kernel and may not arrive soon.

ThemeTools.cs
public static void ApplyThemeFromResources(string theme)
public static void ApplyThemeFromFile(string ThemeFile)
public static void SetColorsTheme(ThemeInfo ThemeInfo)

ListDrivers()

HardwareProbe.vb
Public Sub ListDrivers()

This function listed all the parsed hardware that Inxi.NET parsed. Since 0.0.16, a better alternative to this function, ListHardware(), surfaced, causing this function to be removed from the public API.

ListHardware() offers the same functionality as this function, except that it now takes a specific hardware type or all the types. To upgrade your mod to the latest API, you need to use the below function.

HardwareList.cs
public static void ListHardware(string HardwareType)

NotEnoughArgumentsException class

EventsAndExceptions.vb
Public Class NotEnoughArgumentsException

Due to how the shell worked in API 1.2 or earlier, this exception was implemented to try to tell the user that they didn't provide enough arguments for each command that required arguments to be provided. As the recent shell breakthroughs happened, we've removed the entire exception to replace it with a faster alternative.

It's clunky to throw this exception each time insufficient arguments were provided, so we advice you to cease using this function.

Synth system

BeepSynth.vb
Public Function ProbeSynth(ByVal file As String) As Boolean
EventsAndExceptions.vb
Public Class InvalidSynthException

Beep synth system was implemented to create your PC speaker songs using only the frequencies in hertz and lengths in milliseconds. It was removed because it was later realized that the beep method used wasn't cross-platform according to the .NET 6.0 manual as described in the below link:

As a result, the entire synth system was removed.

This function was deemed not to work on systems that aren't using Windows. If you want to continue using the synth system, compile the mod example that holds the source code of the system from source. If you want your mod to work in Linux, either implement your own wrapper to the beep system for your Linux kernel version, or stop using this function and start implementing visual alerts.

GetCultureFromLang()

Translate.vb
Public Function GetCultureFromLang() As String

This method used to return culture names from the current kernel language. However, it was later found to be using hard-coded culture names because a lot of maintenance affected it regarding names that worked in both Windows and Linux, causing it to be later vanished.

The same functionality made a return, but, this time, we used variables.

CultureManager.cs
public static string CurrentCultStr
public static CultureInfo CurrentCult
public static List<CultureInfo> GetCulturesFromLang(string Language)
public static List<string> GetCultureNamesFromCurrentLang()
public static List<string> GetCultureNamesFromLang(string Language)

Configuration Renovation

We had three types of different configuration renovation that caused API removals during the development period of 0.0.16.

User configuration renovation

UserManagement.vb
Function GetUserEncryptedPassword(ByVal User As String)

This function first appeared at the start of API v1.2 as a private API function to get encrypted user password.

Alias configuration renovation

AliasManager.vb
Public Sub CloseAliasesFile()

It was used as a shortcut to close the old-style alias list file.

Central configuration renovation

Config.vb
Public Function CheckForUpgrade() As Boolean
Public Sub UpdateConfig()
OldConfigUp.vb
Sub UpgradeConfig()

The functions that were found in the Config module were used solely to check the existing kernel configuration file for updates and rebuilds the configuration file to make upgrades between kernel versions go smoother.

The last routine, however, converts the kernel configuration file created by API v1.0 kernels to the usable form.

All of the functions were removed as a result of the deprecation of the converter tool that last shipped with API v2.1 kernels.

Furthermore, as of 0.1.0 Beta 1, the configuration was improved to the point that it witnessed performance improvements.

True color writers

'Normal
Public Sub WriteTrueColor(ByVal text As Object, ByVal Line As Boolean, ByVal ColorRGBFG As RGB, ByVal ColorRGBBG As RGB, ByVal ParamArray vars() As Object)
Public Sub WriteTrueColor(ByVal text As Object, ByVal Line As Boolean, ByVal ColorRGB As RGB, ByVal ParamArray vars() As Object)

'Slow
Public Sub WriteSlowlyTrueColor(ByVal msg As String, ByVal Line As Boolean, ByVal MsEachLetter As Double, ByVal ColorRGB As RGB, ParamArray ByVal vars() As Object)
Public Sub WriteSlowlyTrueColor(ByVal msg As String, ByVal Line As Boolean, ByVal MsEachLetter As Double, ByVal ColorRGBFG As RGB, ByVal ColorRGBBG As RGB, ParamArray ByVal vars() As Object)

'Positional
Public Sub WriteWhereTrueColor(ByVal msg As String, ByVal Left As Integer, ByVal Top As Integer, ByVal ColorRGBFG As RGB, ByVal ColorRGBBG As RGB, ByVal ParamArray vars() As Object)
Public Sub WriteWhereTrueColor(ByVal msg As String, ByVal Left As Integer, ByVal Top As Integer, ByVal ColorRGB As RGB, ByVal ParamArray vars() As Object)

These functions used the ancient RGB class implemented by the kernel itself to specify the true RGB values of any color we want. However, as the Color class came (now in ColorSeq), this caused us to merge these functions to the Color class.

You can still use Write() and their siblings using the Color class.

ParseMods()

ModParser.vb
Sub ParseMods(ByVal StartStop As Boolean)

This function was used as an on/off lever to trigger all mods in one go. It got split to two separate functions, StartMods() and StopMods().

You can still use the two separate functions in the latest kernel version series. But, be careful if you're using these APIs! You could be stopping your own mods! Their method signatures are shown below.

ModManager.cs
public static void StartMods()
public static void StopMods()
public static void StartMod(string ModFilename)
public static void StopMod(string ModFilename)

SFTPPromptForPassword()

SFTPTools.vb
Public Sub SFTPPromptForPassword(ByVal user As String, ByVal Address As String, ByVal Port As Integer)

This function was used to prompt the user for the SFTP password for the specified address. As GetConnectionInfo() got implemented, we've removed this function.

We advice you to cease using this function.

From 0.0.16 to 0.0.17

This version was released as a small update to add minor features and general improvements.

InitTimesInZones()

TimeZones.vb
Public Sub InitTimesInZones()

This function used to populate all the available time zones from your computer to cache it to the public field containing timezones. However, it was later removed for said reason.

We advice you to cease using this function.

ShowTimesInZones()

TimeZones.vb
Public Sub ShowTimesInZones(Optional ByVal zone As String = "all")

This routine was used to show information about all or selected time zone, including the UTC offsets. This function was later split to three separate functions.

To use this function in the latest API revision, use these three functions listed in the below code block.

Beware that you need to have tzdata package installed on your Linux system!

TimeZones.cs
public static bool ShowTimeZone(string Zone)
public static bool ShowTimeZones(string Zone)
public static void ShowAllTimeZones()

From 0.0.17 to 0.0.18

This version added some more features to the kernel, including the custom startup banner support.

All help functions

Public Sub InitHelp()
Sub InitTShell()
Public Sub InitSFTPHelp()
Public Sub InitRDebugHelp()
Public Sub IMAPInitHelp()
Public Sub InitFTPHelp()
Public Sub ZipShell_UpdateHelp()
Public Sub TextEdit_UpdateHelp()

These functions were used to populate help information for all shells. However, their functions have been moved to the help list field initializers, marking these routines as null and void.

These functions were never meant to be available to the public API in the first place. We advice you to cease using this function. The enhanced help system introduced in recent API series adapts to such changes.

v0.0.16.x series
v0.0.17.x series
v0.0.18.x series
LogoConsole.Beep Method (System)docsmsft