G-startup development considerations
I want G-startup to work on both Windows and Linux. Although it is possible to produce cross platform application, that gave me a few choices and accompanying problems. I want the application to look native to platform it is running on, avoid numerous dependency installations and avoid lengthy downloads.
Unfortunately, this is yet impossible. None of my solutions are nice, rather I must choose the approach which sucks the least. Here are some options:
Python and GTK:
Runtime is mostly present on Linux. Only PyGTK needs to be downloaded. Unfortunately, on Windows it requires download of Python, GTK runtime and PyGTK.
.NET:
2.0 framework is installed on many Windows machines. Linux is covered through the Mono project which is a separate install.
Multiple codebase:
Python + GTK for Linux and .NET for Windows. This approach covers previous drawbacks but adds maintenance problems with having two versions of source code.
I don’t like any of this but that’s the state of the industry every developer must cope with.
For now, I picked multiple codebase approach because I know how to do it immediately. Since my source code is under 1000 lines, maintenance is not an issue yet. I repeat, YET. It will be after the first few bugfix sessions. This version is now in trunk in repository and available for downloads.
I remain curious about Mono version. I suppose I will branch the project in the near future to try Mono approach.
G-startup project
It’s hard to find an application or utility that wasn’t already written. If you have some problem or want some improvement for your desktop, chance is you are not first with this idea.
- Sound card switcher? Check.
- Better multi monitor handling? Double check.
- Improved window managing? Check
These are obscure tools, I don’t know anybody (in person) who uses it beside me. But they exist.
Most projects start with scratching an itch: solving a problem a user or developer have. But there is already a utility for almost everything. If problem looks simple, it’s probably already solved. So I never actually developed any small, useful, hobby application. Oh joy when I finally found an unexplored land.
For some time I’ve used a script to delay starting of startup application. My startup folder in Windows and Startup applications in Ubuntu are very densely populated. Thunderbird, Skype, Pidgin, Dropbox, Deluge, Gnome Do, WinSplit, background changer, calendar… Having them all start simultaneously (competing with antivirus and firewall) at logon renders my PC unusable for few minutes. And if I just want to quickly open some file or check something on the Internet, I can’t for some time. Ant this is where my script helps.
Instead of starting all applications, only script is started. Script waits for some time and then starts the first program. Then it waits some more and start the next one. And so on.
This is quick and dirty vbscript:
WScript.Sleep(240000) call ShowApp("Pidgin") WScript.Sleep(20000) call ShowApp("Skype") WScript.Sleep(60000) call ShowApp("Mail") sub ShowApp(app) Set shell = CreateObject("WScript.Shell") select case app case "Mail" shell.Run """C:\Program Files\Mozilla Thunderbird 3\thunderbird.exe""" , 7, false case "Pidgin" shell.Run """C:\Program Files\Pidgin\pidgin.exe""" , 7, false case "Skype" shell.Run """C:\Program Files\Skype\Phone\Skype.exe"" /nosplash /minimized " , 7, false end select Set shell = Nothing end sub
Simple. And it works. Delayed startup the simplest way. But now here come them features. One case is when I want to completely bypass all startup applications. Other case is that I need the application now but it’s not scheduled for next few minutes. Then I decided to convert this script into a system tray enabled GUI application. I also used this opportunity to try running the project on Google code. So here it is: G-startup (from gentle startup, yes, searching for new name).

This is what you get: only tray icon is displayed which disappears once all applications are started. Clicking on it a window drops down allowing some actions.
Currently there is version for Linux only. It’s written in Python using Glade for GUI. Check it at: Gstartup on Google code