Scripts, tutorials, and general Desktop X help
Published on May 4, 2009 By sViz In OS Customization

Do you love DesktopX? You're reading this article so I'm assuming you do. If so, be sure to visit this thread: "What would you like to see in DX 4.x"

Lots of great ideas and suggestions being tossed about there, so head on over and put in your 2 cents. The future of DesktopX depends on it!!!

But first, the picks.


Outstanding General Info

Carbon Fibre GTV by Mirsguy

This is just a beautifully made combo widget. It includes weather, calendar, and a clock. I especially like the clock, but the entire package is very sleek.


Most Creative/Original

Tok 'Dok by HAPTORK

Haptork is one of my favorite DXers, so I'm always excited to see what he does next. And he's come out with this amazing widget.

It works just like a real dock. Drag and drop your shortcuts, delete, add a separator, configure the target, image, tooltip, and display properties.

I love the display effects, the 3D elliptical zoom & scrolling (how the heck did he do that?!) It has a boatload of controls for how the dock moves and displays, so you can tweak it to just the way you like it.

I know a ton of work must've gone into this thing and it definitely shows. My hats off to the author!


Most Innovative/Resourceful

DeskNotes by _Martin_

This gadget goes way beyond sticky notes. I'm not much of a desktop notes user, but this is the one I'd go with if I did.

Let's talk about the weather note; it's powered by so you get access to an amazing amount of information: video, maps, hundreds of more precise locations, and much more.

How about the stock note? You can watch stocks at a glance or open up the stock graph. It also quickly retrieves Yahoo! Finance feeds.

The RSS note works for the 5 majror news sites and it has quick access to different news categories.

It's also got a calednar note, clock note, and search note. Of course, you've got your note note, which is really more of a super note. There are so many useful options on that alone (hyperlink, alarm, pin on top, etc.,) you just have to try it for yourself.

Buy the pro version and you get tons more features and options.

Did I mention it comes with a user's manual? This is a profesional gadget made by a long-time DX expert. It is definitely worth downloading.


Theme of the Month

Alien Farstar DX by RedneckDude

Awesomeness. Yup. I think that prety much sums it up.

This theme matches the WB of the same name by madcat21. I love the color combination. It has a dark and menacing feel to it with the black semi-transparent elements. And it just looks good on the desktop.

It's fully loaded with the usual goodies: drag and drop menus, media, weather. This is Jim (in case you've not been around lately, PuterDudeJim is now RedneckDude,) so expect nothing less than the real goods.

Which is why I do have to make one teeny, teeny-tiny request form the DXtheme Extraordinaire: could we have some new images for the media buttons? We've seen a plethora of amazing styles from this artist over the years and I'd like to see him continue being unique and different.

Other than that, it's pure awesomeness! You must give it a spin.


Global Hue Changer (or brightness or size or...anything!)

DesktopX.Objects is another one of those features in DX that can be a very powerful function. It wasn't until _Martin_ offered a tip in the "What would you like to see in DX 4.x" thread (you think I've thread-dropped enough times?) that I realized how little known it was.

He's uploaded a very nice Multiple Object Manipulation Slider to the object gallery, and it's a great example on how to use this function.

Expanding on Martin's tip, I thought I'd show a few other ways you can use the DesktopX.Objects namespace. Since the point is to control several objects, you'll want to create three or four objects to see how these scripts work.

This first script will shift the hue of ALL objects in your project on l-click. Create an object; create a new script; copy and paste; apply.

'Called when L-click is released
Function Object_OnLButtonUp(x, y, dragged)
 If dragged Then Exit Function
 For Each obj In DesktopX.Objects
  If obj.states("").hue => 255 Then
    obj.states("").hue = 0
    obj.states("").hue = obj.states("").hue + 10
  End If  
End Function

You could just as easily make obj.hue, obj.width, obj.left, or any other object property.


This one will toggle ALL objects in your project on l-click, except the toggle button. Create an object; name it "toggle"; create a new script; copy and paste; apply.

Dim ToggleButton

ToggleButton = "toggle"

'Called when L-click is released
Function Object_OnLButtonUp(x, y, dragged)
 If dragged Then Exit Function
 For Each obj In DesktopX.Objects
  If <> ToggleButton Then
   If obj.visible = False Then
    obj.visible = True
    obj.visible = False
   End If
  End If
End Function


As you can see, with the .name property you can easily target specific objects to exclude from the action.


And for the heck of it, here's a script I use a lot to get the total number of objects in a collection that are NOT grouped. (To get the total number of grouped objects use: DesktopX.GroupObjects("groupname").count)

So I've got a bunch of objects I don't want grouped, for one reason or another, but I give them similar names--"point_1", "point_2", "point_3", etc. I can have this function search for and tally all the objects with "point_" in their names.

Again, DesktopX.Objects is the key. Using the same "toggle" object you created above, replace the entire script with the one below.

'Called when script is executed
Sub Object_OnScriptEnter
 SearchString = "toggle" '--string to look for
 TotalObjects = countObj(SearchString) '--call search function and assign value to variable
 msgbox "There are " & TotalObjects & " objects with" & Chr(34) & SearchString & Chr(34) & " in their name."
End Sub

'--Count how many similar objects not grouped--
Function countObj(strg)
 total = 0
 For Each elem In DesktopX.Objects
  'If string found in object name, add to total
  If Instr(,strg) > 0 Then total = total + 1
 countObj = total
End Function

The message box should say it found one object with "toggle" in its name.

So you can see there's a lot you can do with DesktopX.Objects. It's all explained HERE in the user's guide under Namespaces and Enumerators.


How to Get to the Market

People love stuff. What's more, they love stuff that does stuff. DesktopX is a program that makes stuff that does stuff.

There's lots of stuff people would love to have and use--you know, the "hey, I wish I had an XYZ that did ABC" type stuff.

You probably have an XYZ idea. There's probably tens of thousands of XYZ's out there, floating around in the minds of the masses. If only there were some program that could harness that creative energy and bring those ideas to fruition.

The ideas are there. So, I ask myself, why isn't there a mob of people using DesktopX? Where's the market?

If we get right down to it, many people love stuff that does stuff without them ever having to do stuff to make it do stuff. And if they have to do something, it better be as quick and painless as possible. Pick it up, turn it on, use it. Download, execute, done. Learning curve? Preferably not steep.

And that's where DesktopX stumbles; that's where widget-making in general stumbles, be it Yahoo, Apple, or whatever. The two major stumbling blocks, IMO, are scripting and configuring, otherwise known as painful & time-consuming.

As far as configuring, I've given my thoughts on an intuitive interface and one-click object creation in the aforementioned DX 4.x thread (one more mention wouldn't hurt,) so I won't become a broken record here.

But learning to script is like learning a second language. Having to script in order to create the really amazing widgets is akin to saying 'batteries not included.' How do we get around this stumbling block?

I imagine a truly easy-to-use widget engine would never have the user encounter coding. Ever. Unless they wanted to. That means creating a proxy by which they could add functions without knowing they're scripting.

Supposing you had a list of actions--something quite like the Filters in Photoshop: "Shift hue on l-click," "Shrink on mouse away," "Grow on mouse over," etc. All the user would have to do is select the action, enter a few settings, and DesktopX could build the script and put it into the object for you. Add to that the repository idea RomanDA has mentioned before and DesktopX could come with a whole library of scripts, ready to use.

I've said it before, I think accessiblity is the key to opening up DesktopX for the general market. The biggest obstacle is getting all these ideas implemented. There's not much we can do on the user end of the DesktopX community besides offer suggestions. In the end, it's all up to how much time, money, and resources Stardock is able to invest in upgrading and mainstreaming DesktopX. I understand they'd have to weigh whether that investment would be profitable, whether it's got a viable market, but I believe the market is there and it's broader than just the die-hards and coders; we just have to make DesktopX more accessible to them.

Of course, this is just my take. How do you think DesktopX can get to the mass market? Is it even possible or will DesktopX be another one of those much-loved but little-known softwares? Share your thoughts below.


Thanks for reading. Until next month, Happy DXing!



Comments (Page 1)
2 Pages1 2 
on May 04, 2009

Nice article sViz

on May 04, 2009

But learning to script is like learning a second language
That is exactly why I have not touched it.

I imagine a truly easy-to-use widget engine would never have the user encounter coding. Ever
I would skin it then.

Nice post sViz, I believe you 'hit the nail on the head' in your Widigit Talk segment.

on May 04, 2009

Another great post!

on May 04, 2009

Thanks for the newest great post sViz!

on May 04, 2009

Good read with some very good ideas!

on May 04, 2009

Thanks for another article with useful tips and information and your attempts to make DX more accessible.

on May 04, 2009

Thanks all.

on May 05, 2009

Great as always! 

on May 05, 2009

The very best idea is the one about scripting and not knowing it. Imagine being able to create gadgets, objects ,widgets and such by just clicking away. Having the scripts generated as a result can prompt a user to curiosity and see the 'how' of scripting...i.e....what text the clicking generates. How about a window that shows the scripts at the same time the object or what have you is in another window. I'd most definitely welcome that. My 2cents too.

on May 05, 2009
Well, Eve, I don't really think I'm all that, but you can feel free to keep on spreading those nasty little rumors if you Thanx for the Theme of the Month pick. I appreciate it, and I will do my best not to reuse media player buttons in the future. I promise to keep trying to be different and And you keep putting out those awesome scripts and templates I will use Thanx! And I must say this is a very nice article! Keep on DXing!!!!
on May 05, 2009

Thanks sViz for the kind words. I was so upset by the rating n downloads, thanks for noticing.

on May 05, 2009
I wish I understood better how to use DX, this article is very informative though thanks.
on May 05, 2009
Good stuff sViz... keep em coming
on May 06, 2009

so I can find this one again


on May 06, 2009
Personally, while others run away from scripting, I make DX themes for the flexibility of it. In a WindowBlinds, you are stuck with window borders & standard graphics. In RightClick, you have a background, arrows & mouse over states. With DesktopX, you do everything - location, behaviour, graphics!
I would love a more complex suggestion system while typing (i.e. currently the list that opens when you type 'DesktopX.' seems slightly outdated), and also some more build-in functions (I would like to be able to do certain stuff like "Format(Now,"hh:mm")" for time & also allowing the 'Dim' function to host something like "Dim ObjA as Boolean = True".)
Maybe a simple explanation to certain parts of the script as featured in basic VB programs like VB.NET Express 2008. eg. While typing up a section including a message box, it will give an explanation of what can be done. MsgBox("Text Body","Title Name","SelectType") as an example (it's not correct BTW).
2 Pages1 2