Aptivi - Manual
ProjectsWebsiteBlog
Nitrocid KS v0.1.0 - Rolling Manual
Nitrocid KS v0.1.0 - Rolling Manual
  • Welcome!
  • Version Release Notes
  • 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
          • SFTP Client
          • RSS Client
          • HTTP Client
          • Mail Client
        • Games and Amusements
          • Hangman
          • BackRace
          • Meteor
          • Russian Roulette
          • ShipDuet
          • Snaker
          • Solver
          • SpeedPress
          • Wordle
        • More Editors
          • JSON Editor
          • SQL Editor
        • Common Programs
          • Archive
          • Caffeine
          • Calendar
          • Calculator
          • Contacts
          • Dictionary
          • Git Shell
          • Music Player
          • Notes
          • SSH Connection
          • 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
      • Networking
      • Languages
      • Screensavers
  • 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
    • Inner Workings
      • Kernel Settings
        • Mechanics of Settings App
        • Settings Format
        • Custom Settings
      • Shell Structure
        • Help System
        • Command Parsing
        • Command Information
        • Command Switch Management
        • Command Switch Information
        • Shell History
        • Shell Scripting
        • Shell Presets
        • Extra Shell Features
      • Multilingual Kernel
        • 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
Edit on GitHub
  1. Advanced and Power Users
  2. Inner Workings
  3. Inner Essentials

Kernel Placeholders

Do you want to <placeholder>?

Last updated 1 year ago

Kernel placeholders are text variables for any piece of text that are replaced by different elements found within the kernel. They are parsed in several different areas of the kernel, the most famous example being the MOTD and the MAL messages.

The probing takes place in the PlaceParse.ProbePlaces() function found within the Nitrocid.Misc.Probers.Placeholder namespace. The following types of text use this function to parse the placeholders:

  • MOTD and MAL messages

  • Username prompt and their derivatives for each shell

  • Password prompt and their derivatives for each shell

  • Mail progress style

  • Mail progress style (single)

  • echo command

  • Manual page information style

  • GPG prompt style

  • Custom welcome banner

  • Remote debugger message format

  • RSS feed URL prompt style

  • Manual page contents

  • Download and upload progress for network transfers

  • Progress Clock screensaver's informational text variables

These are the placeholders and what possible values are going to replace them when being parsed:

Placeholder
Value

<user>

Current logged-in username

<ftpuser>

Current logged-in FTP username

<ftpaddr>

Current logged-in FTP server address

<currentftpdirectory>

Current FTP remote directory

<currentftplocaldirectory>

Current FTP local directory

<currentftplocaldirectoryname>

Current FTP local directory name

<sftpuser>

Current logged-in SFTP username

<sftpaddr>

Current logged-in SFTP server address

<currentsftpdirectory>

Current SFTP remote directory

<currentsftplocaldirectory>

Current SFTP local directory

<currentsftplocaldirectoryname>

Current SFTP local directory name

<mailuser>

Current logged-in mail address

<mailaddr>

Current logged-in mail server

<currentmaildirectory>

Current mail directory

<host>

Host name of the kernel

<currentdirectory>

Current directory

<currentdirectoryname>

Current directory name

<shortdate>

Short date

<longdate>

Long date

<shorttime>

Short time

<longtime>

Long time

<date>

Today's date

<time>

The time right now

<timezone>

Local timezone

<summertimezone>

Summer local timezone

<system>

Operating system

<newline>

New line

<dollar>

User administrative indicator

<randomfile>

Random file path

<randomfolder>

Random directory path

<fgreset>

Reset the foreground color

<bgreset>

Reset the background color

<f:color>

Sets the foreground color (where color is either 0-255 or 0-255;0-255;0-255)

<b:color>

Sets the background color (where color is either 0-255 or 0-255;0-255;0-255)

<$var>

Uses the value of a UESH variable (where var is an initialized variable)

<uptime>

Shows the kernel uptime

<rid>

Gets the specific RID for your operating system from .NET

<ridgeneric>

Gets the non-specific RID for your operating system

<termemu>

Terminal emulator used (empty on Windows)

<termtype>

Terminal type used (empty on Windows)

Custom placeholders

You can make your own placeholders, too, with a simple one-line function that allows you to create your custom placeholders for commands and text that use the placeholders feature, with the dynamic content represented in text that you want.

However, you need to register a placeholder before you can use it. Luckily, the registration is easy, unlike all the other components:

Somewhere in your mod code
PlaceParse.RegisterCustomPlaceholder("placeholder", (_) => "MyDynamicText");

Additionally, you can pass the first argument to the function that takes a string argument so that your placeholder behaves according to the argument provided. For example, colors are defined like this:

PlaceParse.RegisterCustomPlaceholder("colorfgtrue", (c) => new Color(c).VTSequenceForegroundTrueColor);

You can verify that your placeholder is registered by calling the below function:

Verification
bool regged = PlaceParse.IsPlaceholderRegistered("<placeholder>");
// regged should be true

If you no longer want a custom placeholder, you can remove it using the UnregisterCustomPlaceholder() function using the same placeholder name.

Please note that you need to surround your placeholder name with the < and the > marks, except for RegisterCustomPlaceholder(), so that the prober can recognize your placeholder. It throws an exception if it's not surrounded.