Desktop Info Manual
Desktop Info Manual
Desktop Info Manual
by Glenn Delahoy
(C) Copyright 2005-2018
All rights reserved
License Agreement
This software is distributed free of charge. It may be used as many times as you like, for as long as
you like, in a domestic or corporate environment. You may copy and distribute copies of this
program provided that you keep all original documentation including this pdf file with copyright
notice and disclaimer of warranty intact. You may not charge money or fees for the software
product to anyone except to cover distribution costs.
Warranty
This program is provided “as is” without warranties of any kind, either expressed or implied,
including, but not limited to, the implied warranties of merchantability and fitness for a particular
purpose. The entire risk as to the quality and performance of the program is with you. Should the
program prove defective, you assume the cost of all necessary servicing, repair or correction. In no
event will any copyright holder be liable to you for damages, including any general, special,
incidental or consequential damages arising out of the use or inability to use the program (including
but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third
parties or a failure of the program to operate with any other programs).
Technical Support
No guarantees whatsoever are implied that technical support will be provided or that technical
support, when provided, will be accurate. This software is basically unsupported and supplied on an
as-is basis (try the web site above).
32 Bit Application
This program is a 32 bit Windows application. It should run fine in any 64 bit environment with
some restrictions. There will not be a native 64 bit version any time in the foreseeable future.
Windows Platforms
Desktop Info has been tested on the following Windows platforms:
The program basically works on Windows 2000 but some items won't work.
Application Priority
The application is set to ‘below normal priority’ class which means that pretty much everything else
will take priority but it won’t necessarily wait until the cpu is idle. In previous versions it was set to
‘idle priority’ class but this makes it too slow to refresh. However, if some other application is going
flat out 100% cpu, Desktop Info will wait and so the display may not update immediately or
correctly.
Process Access
Some items may be denied access when retrieving data depending on the access rights of the user
running it on Vista, 7, 8, 10 and others. Most of the time this can be overcome by running Desktop
Info with Administrator privileges.
Donate
If you like this program and use it on a regular basis please consider a donation. Go to
www.glenn.delahoy.com/desktopinfo.
Usage
Just run it. You can kill it via the right click context menu or from Task Manager. Open the
desktopinfo.ini file or select Configuration from the right click context menu and adjust each item
in the items section to control visibility, refresh times, colors and other properties. The display
updates itself automatically when you save the ini file.
Configuration File
Desktop Info ships with a sample desktopinfo.ini configuration file. The first time you run the
application, the sample ini file will be copied to the working ini file. You are now free to modify it
as needed using any text editor.
Context Menu
To get the context menu to appear in transparent mode, you have to click on a visible pixel which
may take a few tries. A png banner is useful for this or I like to keep the fixed disk bar chart on
because it's easy to right click. The context menu can be disabled by setting the 'contextmenu' item
in the 'options' section to '0'.
Pages Pages 1 to 9 are available depending on your configuration.
Show Desktop In normal mode this minimises enough applications to make
Desktop Info visible.
Refresh This forces a refresh of the display and all items.
Configuration Opens the current configuration file (desktopinfo.ini) with the
default text editor. When you save changes the configuration is
reloaded.
Language Opens the current language file with the default text editor.
When you save changes the configuration is reloaded.
Manual Opens the manual with the default PDF reader.
Quit Closes the Desktop Info application.
Screen Saver
Desktop Info can be used as a screen saver. Make a copy of DesktopInfo.exe and rename it to
DesktopInfo.scr. Right click on this file and select Install. In the ini file, the "ssfontsize" option
controls the font size when running as a screen saver. The size and position is fixed. You can run the
exe and the screen saver at the same time. Some items that work in normal mode when run as
Administrator may not work in screen saver mode due to reduced privileges.
For example, to create an event log entry whenever a threshold is triggered or an error is raised:
eventlog-level=error warn
Options
The following options may be used in the [options] section:
KEY VALUE
Size and Position
top pixels from the top of the primary monitor
left pixels from the left of the primary monitor
bottom pixels from the bottom of the primary monitor
right pixels from the right of the primary monitor
width Total width in pixels. If not specified, it is half the primary
monitor width.
centerv Center vertically on the screen.
1=centered, 0=not centered
If centerv is specified, top and bottom are ignored.
centerh Center horizontally on the screen.
1=centered, 0=not centered
If centerh is specified, left and right are ignored.
column1width The width of column 1.
-1 is automatic, 0 will effectively eliminate the column allowing
the data column to occupy the whole space.
Form Colors
formcolor Background color
transparency Background transparency.
0 is opaque, 100 is totally transparent.
Font
font-face the name of the font face
font-size the size of the font, default is 8, minimum is 6
font-charset the character set for the font
font-rtl Right To Left support. 1=rtl enabled, 0=left to right
cleartype enables/disables ClearType for the font
ssfontsize The font size in screen saver mode
Banner Graphic
logo png graphic file to display at the top of the Desktop Info display
logo-width stretch the image to this width
0 = maintain the width of the original image
-1 = stretch to the width of the form
logo-height stretch the image to this height
0 = maintain the height of the original image
-1 = stretch to the height of the form
logo-align horizontal positioning relative to the form width
-1 = align left
0 = align centre
1 = align right
Interface
contextmenu Enables/disables the right click context menu.
allowdrag Enables/disables the ability to drag the form. If the /f option is
used the form is always draggable.
Text Strings
noresults text to display when an item returns no results
Log File
log Write application logging information to the specified log file.
log-level info=general information messages
error=application or data errors
warn=thresholds
debug=for tracking down application issues
data=displayed data output
debugonerror=start debug logging when an error is raised
Event Logs
eventlog-level Write entries to the Windows Application event log
info=general information messages
error=application or data errors
warn=thresholds
Language File
language File name containing language override settings. See Language
File section for more information.
Other
inimonitortime How often to check for desktopinfo.ini changes.
Display values are relative to the primary monitor so if you have a multi monitor display, you may
need to specify negative values or positive values outside of the range of your primary monitor for
any of these depending on the monitor arrangement. Here are the rules for the position options:
if left is specified, it is left aligned
if right is specified, it is right aligned
if neither left or right, it is left
if both are specified, it is left
Pages
You can configure up to 9 pages of data to be collecting and available for viewing from the right
click context menu. This is a neat way of grouping information together, providing a summary on
the first page and more detailed info on other pages.
The pages section allows you to configure the page titles. Give each page whatever title you want. A
blank title will disable that page. Page 1 cannot be disabled.
[pages]
1=Main Page
2=Windows / Hardware
3=
4=
5=
6=
7=
8=
9=
Use the 'active' option for each item to configure which page that item will appear on.
For example, to make an item appear on the first page, set "active:1". To make an item appear on
the second page, put "active:2". On the ninth page, put "active:9".
Having a lot of data collections running can impact performance so keep an eye on things as you
add more items.
Items
The items section in the ini file controls the order and state of each info item. Each item consists of
an ID followed by a comma delimited list of key:value options.
See the Item Options section for more information.
Colors
Colors are specified as a six character bgr (reverse rgb) hexadecimal number.
Think of this number as divided into three parts, each part is a two digit number. The first two digits
represent the level of blue, the second represent the level of green, the third two represent the level
of red. Each element has a range of 00-ff (or 0-255 in decimal). ff0000 is blue, 00ff00 is green,
0000ff is red. ffffff is white (all color elements at maximum), 000000 is black (all color elements
are off).
You can set each color element to any value between 00 and ff. Half way between fully off and fully
on would be 80. If all three were set to half way, 808080, you would have a gray (grey) color.
If an item color is not defined it will take on the color of the previous item. In this way you can set
the color for a block of items once for the first item and all successive items will be the same.
If all of this eludes you, type “rgb color picker” into Google and grab the resulting HEX value. Now
just drop the “#” thing and swap the first and third pairs of characters.
Transparency
You can adjust the transparency using the 'transparency' option in the main ini file. A value of 100 is
totally transparent, a value of 0 is opaque. You can also set the background color of a partially
transparent form using the 'formcolor' option.
There is just one caveat to the colors: because Windows requires that I select a color to act as the
transparent color, I chose black. This means if you set any of the items to be black color, they will
become transparent. You should instead use '000001' or some other color that is close enough to
black.
Formatting And Transformation
Formatting Numbers
Any item that displays a number can be formatted in the ‘display’ template property. You specify
the replaceable parameter for the value you want (refer to the item reference) and follow it with the
number format option. The general form of the number format is:
%1[w.pt]
This is the replaceable parameter representing the value you want to display immediately followed
by exactly four characters inside square brackets. The first character ‘w’ is a single digit that defines
the maximum width of the number. The second character is a dot. The third character ‘p’ is a single
digit that defines the precision of the number. That is, the number of places after the decimal point.
The fourth character ‘t’ defines the type of number.
The three general number types are:
d decimal w = minimum width left padded with zeros, p=not used
f float w = minimum width left padded with spaces, p=decimal
places
n float same as 'f', commas inserted for thousands
In this case, decimal means integer, a whole number, float means a number that may not be a whole
number.
So a simple example is:
display:%1[3.0d]
This displays the first value with no decimal place, a minimum 3 characters wide, left padded with
zeros. Eg “005” or “016” or “000” or “83738”
Example:
display:%2[5.0d]
This displays the second value with no decimal place, a minimum 5 characters wide, left padded
with zeros. Eg “00040” or “00597” or “00000”
Example:
display:%3[4.1f]
This displays the third value with 1 decimal place, a minimum 4 characters wide, left padded with
spaces. Eg “12.5” or “ 9.0” or “ 0.1”
Example:
display:%1[7.0n]
This displays the first value with no decimal places, a minimum 7 characters wide, commas inserted
for thousands, left padded with spaces. Eg “123,456” or “ 3,654” or “ 67”
Transforming Numbers
Sometimes it’s useful to change a number from thousands of things to kilothings or megathings or
gigathings. This is usually bytes but it doesn’t have to be. Formatting types are available to help
transform these values.
These also follow the rules for the ‘f’ number type. Width excludes the units in the case of ‘b’ or
‘B’.
Note: There is a difference between binary bytes and decimal bytes. Binary bytes are powers of 2.
So a kilobyte is 1024 bytes. Decimal bytes are powers of 10. So a kilobyte is 1000 bytes. Make sure
you choose the correct transform option for the data. For example, most hard drive manufacturers
quote their drive size in decimal bytes, Windows quotes memory in binary bytes.
See also: https://en.wikipedia.org/wiki/Kilobyte
In the following table, binary transforms use the lower case number type, decimal transforms use
the upper case number type.
kK convert to kilo w = minimum width left padded with spaces, p=decimal
places
mM convert to mega w = minimum width left padded with spaces, p=decimal
places
gG convert to giga w = minimum width left padded with spaces, p=decimal
places
tT convert to tera w = minimum width left padded with spaces, p=decimal
places
bB automatically w = minimum width left padded with spaces, p=decimal
convert places, append unit
Example:
%3[1.0k]
Displays the third value, binary converted to kilothings, no decimal places, a minimum of 1
character wide. eg "4" or "0" or "4567"
Example:
%3[3.1M]
Displays the third value, decimal converted to megathings, 1 decimal place, a minimum of 3
characters wide. eg "4.1" or "12.0" or "1483.6" or "0.5"
Example:
%3[3.1b]
Displays the third value, binary converted automatically, 1 decimal place, a minimum of 3
characters wide, unit appended. eg "6.1Ki" or "6.5Mi" or "1.1Gi"
If that was a decimal transform:
%3[3.1B]
Displays the third value, decimal converted automatically, 1 decimal place, a minimum of 3
characters wide, unit appended. eg "6.1K" or "6.5M" or "1.1G"
You add your own 'thing' after the number. Example:
%3[3.1b]B
Formatting Dates
The following can be used to help format dates:
[ddd] short day name
[dddd] long day name
[mmm] short month name
[mmmm] long month name
[yy] last two digits of the year
[yyyy] four digit year
Example:
%1[ddd]
The first value is the day of the week. It can be displayed as a normal number or formatted to show
the short day name. eg "Mon" "Tue"
Example:
%1[dddd]
The day of the week can be displayed as a long day name. eg "Monday" "Tuesday"
Example:
%1[dddd] %2 %3[mmmm] %4[yyyy]
This will display the first four values of DATETIME. eg "Thursday 6 September 2018"
Example:
%1[ddd] %2 %3[mmm] %4[yy]
Formatting Times
If you want a basic 24 hour display, the regular number format would work:
%5[1.0d]:%6[2.0d]:%7[2.0d]
This will display DATETIME as "9:24:45 AM" or "1:15:01 PM". Notice that the last parameter is
the hour (%5) but in this case is being used to decide how to display the AM or PM.
Example:
%5[1.0a]:%6[2.0d]:%7[2.0d] %5[2.0p]
Formatting Booleans
Boolean values can have 1 of only 2 possible values: 1 or 0, true or false, yes or no, on or off etc. In
WMI land, booleans tend to be displayed as True or False. Sometimes it makes sense to display
these values using normal everyday language. To convert boolean values into words use the
following format:
[b:true:false]
In the place of the word ‘true’, you put whatever word you want. The same with the word ‘false’.
The correct word will be displayed based on the value of the boolean number.
In the following example, Win32_ComputerSystem has two properties relating to daylight savings.
These can be displayed meaningfully thus:
Example:
display:Enabled: %EnableDaylightSavingsTime%[b:Yes:No]\,
In Effect: %DaylightInEffect%[b:Yes:No]
Character Sets
If you wish to display a language that is different to your current Windows locale, you may need to
set the "font-charset" option in your language file so the correct character set is used for display.
Latin based languages normally use the Ansi character set.
For example, to set the character set to display simplified Chinese:
font-charset=134
This is the list of available character sets from which you can choose.
0 ANSI_CHARSET ANSI characters
1 DEFAULT_CHARSET Font is chosen based solely on Name and Size. If the described font is not
available on the system, Windows will substitute another font.
Right-To-Left Support
Desktop Info supports Right-To-Left languages. In addition to the "font-charset" option above, add
the following option to your language file:
font-rtl=1
Language ID (LID)
You need to specify a 'lid' when you want text for an item that does not have a unique id. That is,
where the id appears more than once in the main ini file such as COMMENT, WMI etc. If the id is
unique then that can be used in the language file.
So, to override an item you know to be unique, such as CPUTEMP, just add an entry to the
language file [items] section with that key and the text you want.
CPUTEMP=Température du Cpu
If the item id is not unique, such as COMMENT, add an lid to the item in the main ini file:
COMMENT=active:1,text:Desktop Info,lid:banner
Now add an entry with that key to the language file [items] section:
banner=Infos sur le bureau
You can have multiple instances of any item, for example you might put DATETIME on each page.
In this case you don't need to have a unique language id because the text you define in the language
file for the DATETIME item would apply to all instances of the item.
You should ensure the language file is UTF-8 encoded for multi-byte compatibility.
To enable the new language add the 'language' entry to the [options] of the main ini pointing to your
language file.
language=french.ini
Item Options
Common Options
The following table lists options common to all items. In addition, each item will define it’s own
options detailed in the item reference.
key value
active a value of 0 is off, 1 or more is active on that page number
interval The refresh interval in seconds where 0 means never refresh
after the first time
lid Language id. This provides a unique id for a specific item where
there may be multiple instances of the same id such as
COMMENT or WMI, in order to get the correct entry in the
language files. NOTE: Must be no more than 20 characters.
color A bgr value as described in the Colors section. If not specified,
the item takes the color of the previous item.
style Font style where b = bold, i = italic, u = underline, w = full
width underline
csv Output data to a csv file
csvdatatype 0=raw data, 1=formatted data
threshold1,
threshold2, up to 3 thresholds may be defined for each item
threshold3
text Set your own item title text.
set Save the display output to the given user variable
display Template for the item display
The visibility of each item is controlled by the ‘active’ value. If the active value of an item is set to
‘1’ the item will be active and visible on the first page. If the active value is set to ‘2’ the item will
be active and visible on the second page. If you don’t specify an item at all, it is not active and will
not display. Change the page currently being displayed from the right click context menu.
An example is:
DATETIME=active:1,interval:1,color:ffffff
where the datetime item is active on page 1, refreshed every second and the color is white.
Some items such as NETWORKADAPTER and FIXEDDISK control all instances. For example, if
you switch on FIXEDDISK, all fixed disks are displayed including most usb disks.
Each item has a list of available values you can display. To display a value, put it's replaceable
parameter in the display template option along with any other text you want to include in the
display. Refer to the Item Reference to see what replaceable parameters are available.
Example: the CPU item returns two values: cpu and kernel. To display these use %1 for the first
value and %2 for the second value.
Display:Tot: %1 Krnl: %2
Will display something like:
Tot: 5 Krnl: 2
If you want to use a comma in a text or display property, you must precede it with a backslash.
Incorrect Use Of A Comma
display:Receive:%1 bps, Transmit:%2 bps
Each WMI item will have as many replaceable parameters as there are properties in the result set.
The replaceable parameter is the name of the property enclosed in percent signs.
Thresholds
Any item that displays a numerical value may be configured to change color when that item reaches
or exceeds a given value. It could be an absolute value such as PAGEFAULTS or DISKQUEUE, it
could be a percent such as CPU or PHYSICALRAM or a rate such as NETPACKETSRATE or
DISKIO.
The general form of the threshold option is:
threshold#:num tvalue color
Where:
threshold# one of 'threshold1', 'threshold2' or 'threshold3'
num any of the returned values for the item
tvalue threshold value that will cause the color to change
color the new color of the item
Example: The CPU item has two return values: the cpu percent and the kernel percent. To define a
threshold for the first value:
threshold1:1 90 0000ff
This means use the first return value, trigger at 90 (percent), the new color is red. I could have
assigned this to threshold2 or threshold3, it doesn't matter.
I could define a second threshold to handle the kernel percent:
threshold2:2 50 0066ff
This uses the second return value, trigger at 50 (percent), the new color is orange.
Put both of these on the CPU item:
threshold1:1 90 0000ff,threshold2:2 50 0066ff
For WMI queries you need to know the order of the returned properties to determine the number of
the property you want. WMI Explorer is your friend.
To define a threshold which triggers when the raw value drops below a value, specify a negative
threshold value. For example, the BATTERY item would have a threshold like this:
threshold1:1 -20 0000ff
Where the threshold triggers when the battery charge falls to 20% or less.
Charts
Any numerical value can be charted. You can use either the bar chart or line chart with a linear or
logarithmic scale. To work out what you want to chart, look at the list of returned values in the item
reference.
The general form for the bar chart option is:
chart:bar scale max series [[-]tvalue]
Where:
bar displays the bar chart
scale 'linear' = linear scale
'log' = logarithmic scale
max maximum value of the chart
series the number of a return value to display
tvalue threshold value of the bar chart (optional)
If the threshold is a positive value, the bar will change color as the value increases towards that
value, a 'disk used' gauge for example. If the threshold is a negative value, the whole bar will
change color when the value decreases to that value or below, a battery gauge for example.
The general form for the line chart is:
chart:line scale max series1 color1 [series2 color2]
Where:
line displays the line chart
scale 'linear' = linear scale
'log' = logarithmic scale
max maximum value of the chart
series1 the number of a return value to display
color1 color of series1
series2 the number of a return value to display (optional)
color2 color of series2
Example: A simple battery gauge:
chart:bar linear 100 1
A bar chart, linear scale, maximum value of 100 (percent), using the first return value which is
percent charge remaining.
You can have the bar change to red when it drops to a certain critical value:
chart:bar linear 100 1 -20
The negative threshold tells the bar to change color when the value drops below 20%.
Example: Cpu chart:
chart:line linear 100 1 00ff00 2 0000ff
A line chart, linear scale, a maximum value of 100, the first series uses the first return value (cpu
percent) and has a color of green, the second series uses the second return value (kernel percent)
and has a color of red.
Logarithmic scales apply a log base 2 calculation to the value before charting it. This transforms a
value of 1000 to about 10, a value of 10000 to about 13. This allows you to have sensible charts
ranging from zero to huge numbers such as disk transfer speeds or network speeds. For a network
speed chart with typical speeds of 10MiBps you would have a log chart with a maximum value of
around 26. For a throughput of 1GiBps you would have around 30. For more information, Google is
your friend.
For WMI queries you need to know the order of the returned properties to determine the number of
the property you want. WMI Explorer is your friend.
Data Logging
You can log individual items by adding 'csv:filename'. For example:
csv:c:\cpu.csv
This writes the data to a csv formatted file where the cells are enclosed in quotes and separated by
commas and the first row contains column identifiers.
By default, the data is written in it's raw form. You can write the formatted data by adding
'csvdatatype:1'.
This example writes raw data to a file in the root directory:
PAGEFAULTS=active:1,interval:10,csv:\pagefaults.csv
stores the display of the HOST item in a variable called "hostname". The item must be active.
2. Using the SET item you can store anything you can type in. For example:
SET=active:2,key:MyTestKey1,value:MyTestValue1
USER=active:9,interval:0,set:username
TEXT=active:1,interval:0,text:Host/User,display:
%hostname%/%username%
Here's the same thing done a slightly different way. It does the USER item first and stores that result
then does the HOST item and displays both at once.
USER=active:9,interval:0,set:username
HOST=active:1,interval:0,text:Host/User,display:
%1/%username%
Here's another example. It combines boot time and up time into a single line display. Notice both
the UPTIME interval and the TEXT interval are set so it continues to update.
UPTIME=active:9,interval:1,set:uptime,display:%1d :%2h :
%3m :%4s
In this example we want to read a small text file containing important information that gets updated
by the domain admin. First we monitor the file for changes, read the first line into a user variable
then display that variable. In this case it's the support extension number that changes daily. It could
be asset or other information the domain support people want to push out to computers.
FILE=active:9,interval:60,type:text,text:Contact,file:\
contact.txt,set:supportext
TEXT=active:1,interval:60,text:Support,display:Call
Glenn on ext %supportext%
An interesting thing to note is the TEXT item itself can have the set parameter. This means you can
cascade user variables or build them from other variables. If you can find a use for this I'm
listening.
Item Reference
The following is a complete reference of available items and their options and return values.
Return values are listed as replaceable parameters; use these in the display template property to
display these values. See the formatting section earlier for more information and the sample ini file
for examples. Any item that returns a numerical value can be charted and have thresholds. Use the
item return value numbers for the chart and threshold series.
ALLIPADDRESS
Shows all IP addresses assigned to all interfaces.
Available Options:
multirow 0=comma delimited on a single line
1=one ip address per line
Return Values:
%1 ip address
%2 subnet mask
%3 prefix length
BATTERY
Shows laptop battery status.
Return Values:
%1 estimated charge remaining percent
%2 battery status numeric
%3 battery status message
BOOTTIME
Shows the time of day the host was booted.
Return Values:
%1 day of week
%2 date
%3 month
%4 year
%5 hours
%6 minutes
%7 seconds
COMMENT
Allows you to put any fixed text on the display. Makes a nice banner and section header. You can
also use this to create a blank line to visually separate blocks; just create a COMMENT item with
no text.
Available Options:
text Text to display over both columns
CORETEMP
This item reads the shared memory area of Core Temp. This tool must be running, visible or hidden,
for Desktop Info to interact with it. Desktop Info does not need to be run as administrator using this
approach. Best of all it's much more likely to succeed on any computer than the WMI method.
Get Core Temp at: http://www.alcpu.com/CoreTemp/
Hint: Pay attention during the installation process!
Return Values:
%1 Temperature
CPU
Shows percentage of all cpus in the system. It will always show 0-100% regardless of how many
cpus there are.
Return Values:
%1 cpu
%2 kernel
%3 processor queue length
CPUCOUNT
Shows the number of cpus in the system. This also reflects cores per cpu.
Return Values:
%1 cpu count
CPUTEMP
This item uses the standard WMI method for retrieving cpu temperature. If the hardware
manufacturer has implemented it and you run Desktop Info as Administrator then it may work but
more than likely it will not.
Return Values:
%1 temperature
%2 critical threshold
CPUTYPE
Shows information about the brand and type of cpu.
Return Values:
%1 cpu information
CPUUSAGE
Shows the usage for each cpu or core.
Available Options:
count maximum number of cpus/cores to display
Return Values:
%1 cpu usage
DATADUMP
Writes a csv data file for every active item. The data is the raw or formatted data from the most
recent collection of each item. All csv files are written to the one directory. The file name consists
of either the item lid or id and the date and time of the data collection.
Available Options:
dir the directory to write the csv files
datatype 0=raw, 1=formatted
Return Values:
%1 the number of active items written
%2 date/time of last data dump
DATETIME
The current date and time of the host.
Return Values:
%1 day of week
%2 date
%3 month
%4 year
%5 hours
%6 minutes
%7 seconds
DIRECTX
Shows the Direct X version.
Return Values:
%1 Direct X version
DISPLAYCONTROLLER
Shows the current display controller information.
Return Values:
%1 display controller
DNSSERVER
Shows all DNS servers over all network adapters.
Available Options:
multirow 0=comma delimited on a single line
1=one ip address per line
Return Values:
%1 dns servers
DOMAIN
Shows the current domain.
Return Values:
%1 domain name
DOMAINCONTROLLER
Shows the current domain controller.
Return Values:
%1 domain controller
ENVVAR
Shows the given environment variable. The variable must be set in the parent environment at the
time the Desktop Info process was started.
Available Options:
key the environment variable to return
Return Values:
%1 the value of the environment variable
EVENTLOG
Monitors event logs for changes.
Available Options:
log name of the event log to monitor
Return Values:
%1 last event log entry
The following example will monitor the system event log:
EVENTLOG=active:1,interval:10,log:System
FILE
Monitors files and folders for changes to size, write time or version number.
Available Options:
type monitor type (text, size, time, version)
file file or folder name
Return Values:
%1 the file name being monitored
%2 text: the first line of text in the file
size: the file size
time: the last write and access times
version: version number of the executable
This monitor will work for local and network files and folders. When monitoring a directory make
sure there is no trailing backslash.
This example displays the contents of the given file whenever it changes:
FILE=active:1,interval:10,type:text,file:c:\temp\
semaphore.txt
FILECONTENTS1
Displays the contents of the given text file in the right column. Set the interval if you want to update
it at regular intervals. The display template is not used. User variables may be used in the text of the
file.
Available Options:
file name of file to display
Example:
FILECONTENTS1=active:1,interval:3600,text:Instructions,file
:instructions.txt
FILECONTENTS2
Displays the given text file contents over both columns. Set the interval if you want to update it at
regular intervals. The display template is not used. User variables may be used in the text of the file.
Available Options:
file name of file to display
FILEEXIST
Checks if the given file exists and returns true or false. Use the boolean formatting to make a nice
display.
Available Options:
file file name to check
Return Values:
%1 True or False
Example:
FILEEXIST=active:1,interval:10,file:\
glennisawesome.txt,text:Is Glenn Awesome?,display:
%1[b:Absolutely!:Not!]
This tests for the file "\glennisawesome.txt". If it exists the display will be:
"Is Glenn Awesome? Absolutely!"
FIXEDDISK
Shows all fixed and mounted logical drives. It does not show optical, mapped or network drives.
This is a parent item. It has one child, DISKIO.
Available Options:
count maximum number of drives to show
filter defines which drives will be displayed. case sensitive.
Return Values:
%1 drive
%2 volume
%3 used space
%4 free space
%5 total size
%6 size available
%7 percent used
%8 percent free
Example:
To show only drive C: add "filter:C:".
To show drives C: and E: add "filter:C: E:".
DISKIO
This is a child item of FIXEDDISK. It shows the disk activity of the parent fixed disk.
Available Options:
offset offset the title by a few pixels
Return Values:
%1 reads per sec
%2 writes per sec
%3 queue size
HTTPGET
Makes a HTTP GET request to the given source url and displays whatever it returns. You can give it
any url but it's really only useful for returning a short plain text message such as getting your public
ip or if you have a http server that provides information. There is no default, if you don't specify a
url, it will return an error.
Available Options:
source url to send request
Return Values:
%1 returned value from http request
Example:
HTTPGET=active:1,interval:600,source:http://plain-text-
ip.com/
HOST
Host name of the local machine.
Return Values:
%1 host name
IEVERSION
Shows the Internet Explorer version.
Return Values:
%1 ie version
LOADTIME
The time of day Desktop Info was loaded.
Return Values:
%1 day of week
%2 date
%3 month
%4 year
%5 hours
%6 minutes
%7 seconds
NETCONNECTIONS
Shows the current number of network connections.
Return Values:
%1 number of connections
NETPACKETS
Shows the total network ipv4 packs sent and received. Use the mtu option to convert packets to
bytes.
Available Options:
mtu multiply by this number to get bytes
Return Values:
%1 packets (or bytes) received
%2 packets (or bytes) sent
NETPACKETSRATE
Shows the current ipv4 send and receive rate of network packets. Use the mtu option to convert
packets to bytes.
Available Options:
mtu multiply by this number to get bytes
Return Values:
%1 packets (or bytes) received / sec
%2 packets (or bytes) sent / sec
NETWORKADAPTER
Shows all network adapters. This is a parent item. It's children are IPADDRESS, LEASEEXPIRY,
GATEWAY, DHCPSERVER and WINSSERVER. Each of these child items takes a row on the
display. You can display up to 8 adapters. This item is deprecated; you should use
NETWORKINTERFACES instead.
Available Options:
activeonly show only active network adapters
filter defines which adapters will be displayed
count maximum number of adapters to display
Return Values:
%1 adapter name
The filter option may contain includes denoted by a '+' sign and excludes denoted by a '-' sign.
Example:
NETWORKADAPTER=active:1,interval:30,filter:+PCI+wireless-
virtual
Shows all adapters that contain the keywords "PCI" and "wireless" and will exclude adapters that
contain the keyword "virtual".
NETWORKADAPTER CHILD ITEMS
IPADDRESS
Shows the IP address of the parent network adapter.
Available Options:
offset offset the title by a few pixels
Return Values:
%1 adapter ip
%2 subnet mask
%3 prefix length
%4 mac address
LEASEEXPIRY
Shows the lease expiry of the parent network adapter IP address.
Available Options:
offset offset the title by a few pixels
Return Values:
%1 lease expiry
GATEWAY
Shows the gateway IP of the parent network adapter.
Available Options:
offset offset the title by a few pixels
Return Values:
%1 gateway IP
DHCPSERVER
Shows the dhcp server IP address of the parent network adapter.
Available Options:
offset offset the title by a few pixels
Return Values:
%1 dhcp server
WINSSERVER
Shows the WINS server of the parent network adapter.
Available Options:
offset offset the title by a few pixels
Return Values:
%1 wins server
NETWORKINTERFACES
Displays detailed information for the selected network interfaces. This supersedes the
NETWORKADAPTER item.
Available Options:
operstatus show only interfaces that have the specified operational
status
iftype show only interfaces that are the specified interface type
friendlyfilter filter on the friendly name
descfilter filter on the description
Return Values:
%1 adapter name
%2 friendly name
%3 description
%4 mac address
%5 mtu
%6 interface type
%7 operational status
%8 ipv4 address
%9 ipv4 mask
%10 ipv4 prefix length
%11 ipv6 address
%12 ipv6 mask (not implemented)
%13 ipv6 prefix length
%14 lease expiry
%15 ipv4 dns servers
%16 ipv6 dns servers
%17 * ipv4 gateway
%18 * ipv6 gateway
%19 * ipv4 dhcp server
%20 * ipv6 dhcp server
%21 * ipv4 wins server
%22 * ipv6 wins server
%23 * transmit link speed
%24 * receive link speed
* These values are not available on Windows 2000 and XP.
The operstatus and iftype filters can contain multiple values seperated by a space. For example, to
show ethernet and wireless interfaces, "iftype:6 71". To show only active interfaces, "operstatus:1".
To see a full list of operational status and interface types go here:
https://docs.microsoft.com/en-us/windows/desktop/api/
iptypes/ns-iptypes-_ip_adapter_addresses_lh
The friendlyfilter and descfilter options may contain includes denoted by a '+' sign and excludes
denoted by a '-' sign.
Example:
friendlyfilter:+wireless-virtual
Shows all interfaces that contain the keyword "wireless" and will exclude interfaces that contain the
keyword "virtual".
If there is more than one filter match, they are evaluated left to right and the last one wins. For
example, "friendlyfilter:+wireless-wire" will include all interfaces with "wireless" in the friendly
name and then exclude any interface with "wire" in the friendly name, resulting in no wireless
interfaces.
An interface must match all the given filters in order to be displayed.
OEMINFO
Attempts to read the OEM Information set in either the OEMInfo.ini file or the OEMInformation
registry key in either the 64 bit or 32 bit branch of the registry.
Return Values:
%1 manufacturer
%2 model
OSBUILD
Shows the Windows operating system version and build number.
Return Values:
%1 build number
PAGEFAULTS
Shows both total and hard page faults. The hard page faults is usually the one you're interested in.
This shows page file activity which is what can potentially kill system performance. Maybe even
worth putting a threshold on the second value.
Return Values:
%1 total faults
%2 hard faults
PAGEFILE
Shows Windows page file usage.
Return Values:
%1 used
%2 total
%3 percent used
PHYSICALRAM
Shows physical memory usage.
Return Values:
%1 used ram
%2 total ram
%3 percent used ram
PROCESSCOUNT
Total number of Windows processes.
Return Values:
%1 number of processes
PROCESSMEM
Shows memory and cpu usage for the given process. If there is more than one instance of the
process name, they are all included in the total.
Available Options:
key name of the process to monitor
Return Values:
%1 working set size
%2 page file usage
%3 page fault count
%4 cpu usage
PROXY
Shows network proxy server and enabled status.
Return Values:
%1 proxy server
%2 enabled state
REG
Shows the given value from the registry. Not to be confused with the REGISTRY monitor item, this
item just retrieves the given value at a regular interval. It can only show integers and strings.
Available Options:
value the registry key and value name to be read
wow 32=read from the 32 bit registry
64=read from the 64 bit registry
Return Values:
%1 the value retrieved from the registry
The value option should contain the root key as well as the key and value name:
value:HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version5\
ClientID
REGEXIST
Shows whether the given registry key or value exists. Use the boolean formatting to show a
meaningful display.
Available Options:
value the registy key or key\value to be tested
wow 32=read from the 32 bit registry
64=read from the 64 bit registry
Return Values:
%1 true or false if the key or key\value exists
The value option should contain the root key as well as the key and optional value name:
value:HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version5\
ClientID,display:%1[b:Yes:No]
REGISTRY
Monitors registry keys or values for changes.
Available Options:
tree 0 to monitor the key
1 to monitor the tree starting at key
key the key or key\value to monitor
Return Values:
%1 required value
%2 date/time of change
If you specify a key, %1 is not used. You can also choose to monitor just that key or the entire tree
starting at that key.
The following example will monitor a value in the Run key.
REGISTRY=active:1,tree:0,text:Run Key
Test,key:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\
CurrentVersion\Run\Test
Valid Key
HKEY_LOCAL_MACHINE\SOFTWARE\Apple Computer\, Inc.
SERVICEPACK
Shows the Windows service pack edition.
Return Values:
%1 service pack
TEXT
Displays any fixed key/value text. Useful for any kind of internal identification or other static
information such as a machine's context, use, operator, tech support info. It can also be used to
display a number of user variables on one line.
Available Options:
text Text to display in the left column
display Text to display in the right column
TIMEZONE
Current Windows time zone.
Return Values:
%1 time zone
TOPPROCESSCPU
Shows the process with the highest cpu usage. Desktop Info can only show processes it has
permissions to read. Running as administrator or a member of the administrators group is enough
for most processes but not for some system processes. Desktop Info will attempt to enable
privileges to read system process information.
Return Values:
%1 process name
%2 process id
%3 percent
TOPPROCESSMEM
Shows the process with the highest memory usage.
Return Values:
%1 process name
%2 process id
%3 bytes
TOPPROCESSPF
Shows the process with the highest page faults. This is not page faults per second, it's the total page
faults since the last collection.
Return Values:
%1 process name
%2 process id
%3 page faults
TSSESSIONS
Shows the number of terminal sessions.
Return Values:
%1 number of sessions
UNREADMAIL
Show the number of unread mails.
Return Values:
%1 number of unread mails
UPTIME
Total time Windows has been running.
Return Values:
%1 days
%2 hours
%3 minutes
%4 seconds
USER
Current Windows user account name.
Return Values:
%1 user name
VIRTUALMEMORY
Shows Windows virtual memory usage.
Return Values:
%1 used ram
%2 total ram
%3 percent used ram
WMI
Executes a custom WMI query. Because there is an implied "select * from ", all properties are
returned so you can include as many properties as you like in the output.
Available Options:
namespace WMI namespace such as 'root\wmi' or 'root\cimv2'
query the wmi class and optional where clause but NOT the select
clause (this is implied)
Return Values:
Returned values are indicated by enclosing a wmi property name in % signs.
eg a bios property, SerialNumber, is indicated as %SerialNumber%. This is
replaced by the actual value returned by the wmi query.
Example:
WMI=active:1,namespace:root\cimv2,query:Win32_Bios,display:
%SerialNumber%
A Network example:
WMI=active:1,namespace:root\
cimv2,query:Win32_PerfFormattedData_Tcpip_NetworkInterface
where Name like "%Wireless%",display:%BytesReceivedPersec%
bytes per sec
This one displays multiple values from the wmi query with added text:
WMI=active:1,namespace:root\
cimv2,query:Win32_PerfFormattedData_Tcpip_NetworkInterface
where Name like "%Wireless%",display:Rcvd:
%BytesReceivedPersec% Sent: %BytesSentPersec% bytes per sec
The where clause can also include the 'like' keyword with wildcards:
query:Win32_PerfFormattedData_Tcpip_NetworkInterface where
Name like "%Wireless%"
You can add the NOT key to exclude rows from the result. It goes before the property in question
thus:
query:Win32_PerfFormattedData_Tcpip_NetworkInterface where
not Name like "%Wireless%"
In this example, WMI doesn't have a single query that returns the screen resolution and color depth
so we run two queries and combine the output. The first query returns the color depth and stores it
in a user variable (see below). The second query returns the resolution and displays it along with the
previous user variable.
WMI=active:2,namespace:root\
cimv2,query:Win32_DisplayConfiguration,set:BitsPerPel,displ
ay:%BitsPerPel%
WMI=active:1,namespace:root\
cimv2,query:Win32_DesktopMonitor,display:%ScreenWidth%x
%ScreenHeight%x%BitsPerPel%
You can also append the number formatting as described earlier. You should make sure the selected
format matches the type of value you are trying to format.
WMI Explorer is an easy tool to explore the WMI system. http://www.ks-soft.net/
Useful WMI Queries
Here are some useful WMI queries that you can plug straight into the desktopinfo.ini file.
Windows Workgroup
WMI=active:1,text:Workgroup,namespace:root\
cimv2,query:Win32_ComputerSystem,display:%Domain%
Default Printer
WMI=active:1,text:Default Printer, namespace:root\
cimv2,query:Win32_Printer where default = "True",display:%Name%
(%Status%)
All Printers
WMI=active:1,text:Printers,namespace:root\
cimv2,query:Win32_Printer,display:%Name% (%Status%)
Lanman Service
WMI=active:1,interval:60,text:Lanman Service, namespace:root\cimv2,
query:Win32_Service where name="lanmanserver",display:%state%\,
%status%
Windows Firewall
WMI=active:1,interval:60,Windows Firewall, namespace:root\cimv2,
query:Win32_Service where name="mpssvc",display:%state%\, %status%
Video Controller
WMI=active:1,text:Video Controller, namespace:root\cimv2,
query:Win32_VideoController,display:%Caption%
Network Latency
WMI=active:1,interval:60,text:Network Latency, namespace:root\cimv2,
query:Win32_PingStatus where address='google.com',display:
%ResponseTime%ms (google.com)
Logical Disks
WMI=active:1,interval:10,text:Logical Disks, namespace:root\cimv2,
query:Win32_PerfFormattedData_PerfDisk_LogicalDisk where Name !=
"_Total",display:%name% r:%DiskReadBytesPersec%[3.1k]KiBps\, w:
%DiskWriteBytesPersec%[3.1k]KiBps
Batteries
WMI=active:1,interval:60,text:Batteries,namespace:root\
cimv2,query:Win32_Battery,display:%Description%: r:
%EstimatedChargeRemaining%%
Asset Tag
WMI=active:1,text:Asset Tag, namespace:root\cimv2,
query:Win32_SystemEnclosure,display:%SMBIOSAssetTag%
Server Sessions
WMI=active:1,interval:60,text:Server Sessions, namespace:root\cimv2,
query:Win32_PerfFormattedData_PerfNet_Server,display:Sessions:
%ServerSessions%\, Files: %FilesOpen%
Tcpv4 Connections
WMI=active:1,interval:10,text:Tcpv4 Connections, namespace:root\cimv2,
query:Win32_PerfFormattedData_Tcpip_TCPv4,display:
%ConnectionsEstablished%
Tcpv6 Connections
WMI=active:1,interval:10,text:Tcpv6 Connections, namespace:root\cimv2,
query:Win32_PerfFormattedData_Tcpip_TCPv6, display:
%ConnectionsEstablished%
Shared Resources
WMI=active:1,interval:60,text:Shared Resources, namespace:root\cimv2,
query:Win32_Share where not Name like "%$%",display:%Name% [%Status%]
References
WMI Explorer
http://www.ks-soft.net/
Core Temp
http://www.alcpu.com/CoreTemp/
Understanding Kilobytes
https://en.wikipedia.org/wiki/Kilobyte
Version v0.1.1
2005
Change 1: Fixed the nasty flicker some systems were getting.
Change 2: Fixed the odd characters after the domain name.
Change 3: Less full refreshes means less cpu time.
Change 4: Fixed disk figures for very small drives.
Version v0.2.0
2005
Change 1: Added time zone info.
Change 2: Some optimisations.
Change 3: Added refresh intervals.
Change 4: Added domain controller info.
Change 5: Added event logs.
Version v0.2.1
December 2005
Change 1: Added terminal server session count.
Change 2: Fixed some stuff in event logs.
Version v0.22
December 2005
Change 1: Added DirectX version.
Change 2: Adjusted domain controller. I can't directly test this one.
Change 3: Added network packet stats and rates.
Change 4: Added network connection count.
Change 5: Added double click refresh.
Version v0.3.0
Change 1: Fixed a bunch of memory issues.
Change 2: Fixed Terminal Services sessions and added session list.
Change 3: Added auto font size.
Change 4: Added 'missing ini' default values.
Change 5: Implemented proper ini file monitoring.
Change 6: Added screen info.
Change 7: Fixed display for 256 color remote desktop.
Change 8: Added files monitor options.
Version v0.3.1
June 2006
Change 1: Added Up Time.
Change 2: Added support for cpu times for Windows 2000.
Change 3: Fixed Domain Controller
Change 4: Fixed multiples of same file watch type bug.
Change 5: Fixed memory sizes over 2GB.
Version v0.4.0
July 2006
Change 1: Added top process cpu time.
Change 2: Added top process memory usage.
Change 3: Added file version watch type.
Change 4: Added registry watch types.
Change 5: Added cpu count.
Change 6: Additional checking for terminal sessions.
Version v0.4.1
December 2006
Change 1: Added unread mail.
Change 2: Added formright and formbottom options.
Version v0.4.2
October 2007
Change 1: Increased fixed disks to eight.
Change 2: Added multiple ip addresses.
Change 3: Fixed problem with missing ini file.
Change 4: Split network gateway entries to separate lines.
Change 5: Added percentages to memory and disk displays.
Version v0.5.0
July 2008
Change 1: I think I've nailed the show desktop thing.
Version v0.5.1
Change 1: Fixed problem with some USB drives.
Change 2: Solved refresh problem when removable drives come and go.
Version v0.6.0
November 2008
Change 1: Reworked the file monitoring so it works on local and remote files and folders. You'll need to adjust your ini
file entries as noted above.
Change 2: Reworked the registry monitoring to merge the two types. You'll need to adjust your ini file entries as noted
above.
Change 3: Added the /f command line option to show a visible, moveable form.
Change 4: Added the /a command line option to show all items regardless of the ini file settings.
Change 5: Added right click context menu.
Change 6: The network entries are grouped so all information for each adapter is together.
Change 7: Tested on a variety of Windows platforms. The results are noted above.
Version v0.7.0
January 2009
Change 1: Added Disk IO on fixed logical drives.
Change 2: Added disk queue length.
Change 3: Changed ini file format as noted above. Will continue to read the old format while the Intervals section
exists.
Change 4: Added item colors.
Change 5: Fixed bug in Top Process Cpu
Change 6: Fixed bug in cpu times.
Change 7: Added charts.
Change 8: Added thresholds.
Change 9: Added exception handlers to process enumerators.
Version v0.7.1
Change 1: Fixed an access violation in the disk io routines.
Change 2: Fixed refresh when disks come and go.
Version v0.8.0
Change 1: Added colors to the file and registry monitors.
Change 2: Added option to disable the context menu.
Change 3: Added option to toggle the indents on disks/networks.
Change 4: Modified registry monitor to optionally show values.
Change 5: Registry item names are shown as found in the ini file.
Change 6: Added event log monitor and removed redundant event logs from the items.
Version v0.8.1
Change 1: Improved disk change handling.
Change 2: Fixed file monitor where file/directory does not exist or disappears or reappears.
Change 3: Fixed divide by zero error in fixed disks.
Version v0.9.0
Change 1: Refactored the chart display code to be more useful and added charts to more items. See the charts section
for more information.
Change 2: Refactored form display code. Options have changed accordingly. Auto form width, auto font size and font
color are gone. You should make sure every item has the color set. See the options section for more information.
Change 3: Rewritten all the network adapter stuff. Added change handling. Added filtering. See the options section for
more information.
Change 4: Prevent form from resetting it's position after it is dragged.
Change 5: Rewrote the bar chart.
Change 6: Fixed problem with event log monitor thread not terminating correctly.
Change 7: Added the following items: printer, printerstatus, displaycontroller, bios, motherboard, workgroup. Printers is
work in progress.
Change 8: Added language file.
Change 9: Added screen saver option.
Change 10: Added msnstatus option.
Change 11: Changed method for retrieving service pack.
Version v1.0.0
Change 1: Added page faults and top process page faults.
Change 2: The order of displayed items now follows the order in the ini file.
Change 3: New ini file item format. This will make it easier to read and easier for me to add new options. See the item
section above for more details.
Change 4: Fixed the process name for all known varieties of Windows. If a process name can't be retrieved for any
reason, it will display <n/a> and maybe an error message.
Change 5: Added cpu temperature from wmi. See the miscellaneous section above.
Change 6: Fixed line chart width in screen saver mode.
Change 7: Subdued some redundant refreshes.
Change 8: Some memory usage optimisations.
Change 9: Fixed display controller and bios on Windows 7 and hopefully haven't broken it elsewhere.
Change 10: Added oeminfo. See miscellaneous section above.
Change 11: Added item font style.
Version v1.0.1
June 2010
Change 1: Fixed fatal crash on startup as the result of an access denied problemwhen retrieving OS info in limited
access Windows account.
Version v1.1.0
January 2011
Change 1: Added battery status.
Change 2: Added option to disable ClearType.
Change 3: Added header item. See ini file.
Change 4: Added cpu kernel time.
Change 5: Added inimonitortime to options. This is the number of seconds to check the desktopinfo.ini file for changes.
Change 6: Added osbuild.
Change 7: Fixed a problem with reading process information for some system processes.
Change 8: Removed DISKQUEUE item. It's included on the DISKIO item.
Change 9: Added filter option to FIXEDDISK item.
Version v1.1.1
Change 1: Changed the way the Windows architecture is determined.
Change 2: Fixed the transparency on 16 bit color display.
Version v1.1.2
Change 1: Forgot to switch off debug causing large log file, oops.
Version v1.2.0
October 2013
Change 1: Fixed index out of bounds when battery chart type is 2.
Change 2: Added network PROXY item.
Change 3: Changed HEADER item into more general COMMENT item.
Change 4: COMMENT is ignored when calculating width of column 1 allowing it to display over both columns.
Change 5: Added underline to style option.
Change 6: Changed FORMCOLOR in the main options section to a bgr type value to keep it consistent with other
colors. 000000 means transparent in normal mode or black background in form mode.
Change 7: Converted file monitor into a regular item. Now you can put one or more file monitor items anywhere in the
items list.
Change 8: Converted registry monitor into a regular item. Now you can put one or more registry monitor items
anywhere in the items list.
Change 9: Fixed problem with monitoring registry on 64 bit Windows.
Change 10: Converted event log monitor into a regular item. Now you can put one or more event log monitor items
anywhere in the items list.
Change 11: Added AUDIOCONTROLLER item.
Change 12: Added logging option.
Change 13: Added /ini command line option.
Change 14: Added SERIALNUMBER item.
Change 15: Added multiple IP addresses per nic.
Change 16: Added option to allow/disallow dragging the form.
Change 17: Added offset property to network items.
Change 18: Added multi core cpu item, CPUUSAGE.
Change 19: Added activeonly property to NETWORKADAPTER.
Change 20: Added count property to control maximum number of multi items displayed (CPUUSAGE,
NETWORKADAPTER, FIXEDDISK, PRINTER.
Version v1.3.0
January 2014
Change 1: Fixed critical error where USB drive is ejected but not removed.
Change 2: Added SHORTDISPLAY option to PHYSICALRAM, VIRTUALMEMORY, PAGEFILE and FIXEDDISK
items.
Change 3: Added ENVVAR item.
Change 4: Added DEFAULTPRINTER item.
Change 5: Added SHORTDISPLAY option to the registry monitor.
Change 6: Added LOGONSESSION item.
Change 7: Moved network adapter filter to the item configuration and is much more flexible with include and exclude
options.
Version v1.4.0
February 2014
Change 1: Added ALLIPADDRESS. This is a stand alone item to display all active IP addresses without depending on
the NETWORKADAPTER item.
Change 2: Fixed critical error where a network adapter has more than one ip address sometimes causes an access
violation.
Change 3: Improved response for changing network adapters, fixed disks and screen resolution.
Change 4: Added hidden items. Set active to 2. Right click and select Show Hidden Items. See above.
Change 5: Added OEMPRODUCT item. See above.
Change 6: Added SUBNETMASK item.
Change 7: Added csv option to items. See above.
Change 8: Fixed disk filter got lost during last version.
Change 9: Apparently fixed an obscure wmi bug.
Change 10: Fixed CPUTEMP charts.
Change 11: Added SERVICESTATE.
Change 12: Added TEXT.
Change 13: Added hook to Core Temp temperature reader.
Change 14: Added custom WMI item. See above for details. There's some examples in the ini file. These may duplicate
existing items. I'll leave the old items in for this release and if all goes well they'll be removed next release.
Change 15: Adjusted screen saver display.
Version v1.5.0
March 2014
Change 1: Fixed wmi line chart resetting when switching between hidden and not hidden.
Change 2: Added volume to FIXEDDISK.
Change 3: There was a test item called PROCESSMEM which was hard wired to DesktopInfo.exe. I've modified this so
you can point it to any process name. The result will be the sum of all processes by that name. 'ws' is Working Set, 'pf' is
Page File Usage or Commit Size.
Change 4: Added 'column1width' to global options.
Change 5: Added format option to WMI item.
Change 6: Added centerv and centerh to options.
Change 7: Removed following items as they can now be done with WMI: SERVICESTATE, AUDIOCONTROLLER,
SERIALNUMBER, WORKGROUP. The ini file has been updated as appropriate.
Change 8: I don't know what I was thinking with LOGONSESSION.
Change 9: Added a global exception handler so maybe we won't see any more of those cascading error messages.
Change 10: Added option to adjust background transparency.
Change 11: Cleaned up the display code and fixed a few little annoyances.
Change 12: Fixed IEVERSION to include svcversion updates.
Version v1.5.1
April 2014
Change 1: Fixed charts updating every second even though data is not updated.
Change 2: Fixed regression bug with COMMENT item.
Change 3: Fixed refresh ugliness and missing top lines.
Version v1.6.0
August 2014
Change 1: Major refactor of the internal procedure calls.
Change 2: Reduced the display flickering some more.
Version v1.7.0
August 2018
(Four years, that's not so bad is it?)
There's been a regular stream of inquiries over the years about Desktop Info to warrant looking into resurrecting it. The
last official release was v1.5.1 in April 2014. I made available an unofficial version 1.6.0 in November 2017 which was
a compile I did in August 2014 and never released. I was amazed to see it working on Windows 10. However some
people are having issues so I'm going to make an attempt at resolving those and see where that takes us.
Change 1: Signing with digital code certificate. You can confirm this by right clicking the DesktopInfo.exe, select
Properties and the Digital Signatures tab.
Change 2: Removed secondary form from Windows task switcher.
Change 3: Removed MSN status option.
Change 4: Now correctly reads unicode language files. The language files must be UTF-8 encoded.
Change 5: The language files are now collected in the "language" sub-directory. Make sure you specify the sub-
directory in the desktopinfo.ini file entry. Send me your language files to be included in future releases.
Change 6: Doubled the size of item text so you can have longer comments.
Change 7: FIXEDDISK now correctly reads *only* local fixed and removable drives, not remote, network, mapped or
optical drives. No longer constantly polls driveswhen the FIXEDDISK item is not active.
Change 8: UPTIME is no longer capped at 49 days.
Change 9: Added ShortDisplay to UPTIME.
Change 10: Added UTCTIME. This seems to take a while to run so maybe set a higher interval.
Change 11: Added full width underline style.
Change 12: I made a mistake with the TEXT item. The last field should be 'display' and not 'key'. You should change
your ini file to match.
Change 13: Added user variables. See the section above for details.
Change 14: Added csvdatatype option to items. Data logging no longer outputs the data in it's display form by default.
The default value of 0 outputs the data in it's raw format. A value of 1 will output the data in the format it is displayed.
See data logging section above for more information.
Version v1.8.0
September 2018
This version represents another not insignificant refactor which allows us to do a whole bunch of stuff we couldn't do
previously. You should review the readme.txt, there's lots of new information there. There may be things I've broken
that I haven't discovered yet. Your current ini file will need modifications to bring it up to speed but it might be simpler
to just start again with the new one. Let me know if something breaks that hasn't been mentioned here.
Change 1: The first upshot of the big refactor is the addition of the 'display' template property to every item. This
allows you to control how the data is displayed. See the items section above for details. This also means the
'shortdisplay' property is gone; you set your own display.
Change 2: The second upshot of the big refactor is that many items now offer multiple values for display. You decide
which values you want by using replaceable parameters in the display template. Not all items have fully implemented
this yet, more to come in future releases.
Change 3: The third upshot of the big refactor is a whole new formatting system included with the display template.
You now have much more control over numbers, dates, times, bytes, speeds and booleans. See the Formatting sections
above for much information.
Change 4: The custom WMI item has also undergone a major renovation and is much more useful now. The 'property'
and 'format' options are gone and replaced with the 'display' template option. As with the other items, the WMI display
template option allows you to specify the complete text you want to display including any and all returned wmi property
values and formatting. See the Custom WMI section for details.
Change 5: The WMI item can now display multiple rows. If your wmi query returns more than one row, additional
rows will be added to the display.
Change 6: Added HTTPGET item. This item will make a simple HTTP GET request to the given source url and display
whatever it returns. Useful for displaying your public ip for example. See the Http Get section for more information.
Change 7: Removed SCREEN and OSVERSION items. They are returning innaccurate information so we'll use the
WMI call instead. See the ini file for the replacements.
Change 8: Removed BIOS, OEMPRODUCT, MOTHERBOARD, PRINTER, PRINTERSTATUS,
DEFAULTPRINTER, UTCTIME items. These are all wrappers for WMI calls so now we'll just use WMI directly with
some nice formatting. See the ini file for the replacements.
Change 9: Fixed problem reading registry key with a comma in the name. A comma in a registry key should be
preceded by a backslash. See above for more information.
Change 10: Added FILEEXIST item. Displays whether the given file exists. See the section above for details and the ini
file for an example.
Change 11: Fixed column 1 auto width calculation.
Change 12: Added LOADTIME which is the time of day that Desktop Info was executed.
Change 13: Changed process priority from 'idle' to 'below normal'. I don't expect this to have any impact other than the
display refreshes are a little smoother.
Change 14: Speaking of display refreshes, I've hopefully streamlined it some more to reduce unnecessary redraws.
Change 15: If an item color is not defined it will take on the color of the previous item. In this way you set the color of
the first item in a block and all successive items will be the same.
Change 16: ALLIPADDRESS now puts one entry per line so if you have multiple IP addresses, there will be multiple
lines. Might have found the bug where it crashes when a network interface goes away.
Change 17: Added FILECONTENTS1 and FILECONTENTS2 for displaying the contents of a text file.
Change 18: Removed SUBNETMASK and MACADDRESS sub-items and added them as a second and fourth value
(%2 and %4) to IPADDRESS.
Change 19: Added prefix as a third value to IPADDRESS.
Change 20: Added subnet mask and prefix as second and third values to ALLIPADDRESS.
Change 21: Now correctly resets it's position when the desktop size changes (maybe).
Change 22: Added 'noresults' option to the language files which is displayed when a query returns no rows, eg WMI.
Change 23: More improvement in language support. All 'text' has been moved out of the desktopinfo.ini file and into the
language files. Each key in the language file is either an item id or a language id (lid) in the desktopinfo.ini file. See the
section above for more information. Consider the 'text' option in the desktopinfo.ini file deprecated.
Version v1.9.0
October 2018
My primary objective in this release is to rework the raw data infrastructure so that I can store and move all the
collected data and have better control over what data is displayed, charted and logged to csv. For now chart data
remains pre-selected and the WMI item charts the first two numbers returned. In the next release I will open this up so
you can select which values you want to chart. I'm also adding lots of information to the readme file.
Version v1.9.1
October 2018
Change 1: Resolved some Unicode issues. Debug log is now unicode.
Change 2: Fixed issue with not resetting it's position after display size change.
Version v1.9.2
October 2018
Change 1: Fixed some fatal issues with the FILE/REGISTRY/EVENT monitor items.
Change 2: Fixed formcolor bug.
Version v1.10.0
November 2018
Important changes from v1.8.0 and v1.9.0: In those versions I started moving config options out of the main ini file and
into separate language files. I'm not happy with the way that's working out so I've returned to making the
desktopinfo.ini file the primary configuration file and the language files will simply override that if required. In most
cases you will not need a language file at all. My apologies if I made work for you.
In this release we continue to reap the benefits of the raw data infrastructure refactor done in v1.9.0 with major
improvements in both the charting and threshold functions. I've also been working hard on language support so we can
now display non Latin based languages.
Change 1: Revamped the thresholds so we can have up to 3 thresholds on each item using any returned value *plus* we
can have negative thresholds *plus* we can have thresholds on WMI items. See the Thresholds section for more info.
Change 2: Revamped the charts so we can chart any numerical value from any item including WMI items, bar or line,
linear or logarithmic, colors, thresholds etc. See the Charts section for details.
Change 3: Added REGEXIST item.
Change 4: ALLIPADDRESS has been extracted from it's dependency on NETWORKADAPTER, it's list and it's
'activeonly' and 'filter' options. It will now work independently. NETWORKADAPTER is deprecated.
Change 5: I've taken the 'hidden' page of items and turned it into a whole series of pages. Previously, "active:2" was the
special 'hidden' page. This is now simply page 2 out of 9 pages. See the Pages section for more info.
Change 6: The readme.txt file was getting too big. Time for a proper manual.
Change 7: Added FILE2TEXT item.
Change 8: OEMINFO now checks both 64 bit and 32 bit branches of the registry tree.
Change 9: Added log-level option.
Change 10: Splitting the config between two files was a bad idea so I thought it out again and the desktopinfo.ini file
returns to being the primary configuration file. Everything is configured within that file. If you wish to override any
options or text without altering the main configuration, create a language file. See the Language File section for more
information.
Change 11: Much work on unicode support means we can now create and display non Latin languages such as Croatian,
Chinese, Japanese etc via the language files. There is still work to be done to make the main ini file fully unicode so for
now you must use the language files for multi-byte text.
Change 12: Added right-to-left support for Arabic languages. It's not complete but it is usable. If you find any errors in
any of my sample language files please let me know.
Change 13: More work reducing the flicker/shimmer.
Change 14: The package no longer contains the desktopinfo.ini file, the file is renamed to desktopinfo-sample.ini. This
is in order to prevent accidentally overwriting your finely tuned custom config file when the new version arrives. When
Desktop Info runs, if there is no desktopinfo.ini file, it will copy the sample over and start using it. This makes it
transparent for new users. Similarly, the packaged language files are in the "sample-languages" directory. If you decide
to use one of the sample language files, you should copy it to a new location first to avoid it being overwritten by the
next new version.
Change 15: I've greatly pared down the sample ini file because, well, it's just a sample and there's too many options and
items to include everything. Good thing there's a proper manual now to see what's available.
Change 16: Added mtu option to NETPACKETS and NETPACKETSRATE.
Change 17: Added basic Windows Event Logs logging.
Change 18: Fixed "InetNtopw not found ws2_32.dll" bug running under Windows XP.
Change 19: Skip some NETWORKINTERFACES values not available under Windows XP.
Change 20: Added logo-align to options.
Change 21: Added queue length to CPU item.
Version v1.10.1
November 2018
Change 1: Fixed bug with logo not updating after ini change.
Change 2: Fixed bug with not aligning correctly when the 'bottom' option is used.
Change 3: Fixed contextmenu option not working.
Change 4: More work converting internal routines to Unicode.
Change 5: I believe I've resolved the stability issues. If you leave the "log-level=error" option on in the ini, you'll see
when an error occurs and hopefully the reason.
Version v1.10.2
Novermber 2018
Change 1: Fixed bug with FIXEDDISK and NETWORKADAPTER spinning out of control under Chinese Windows.
Change 2: Continue the Unicode work.
Change 3: Added reference English language file.
Change 4: Fixed handle leak in ProcessMem, TopProcess and registry routines.
Change 5: Fixed bug in bar chart when only one data point is available.