Add items to Ubuntu 12.04 Unity Launcher (quicklaunch)

The recent upgrade to Ubuntu 12.04 Precise Pangolin left me somewhat hanging when it comes to creating launchers on the desktop, and also in the Unity Launcher (also called quicklaunch in some places) for Zend Studio and PHPStorm. In Gnome prior to Unity in Ubuntu it was easy to right click the desktop and select Create Launcher to create icons on the desktop to launch applications or scripts, but in 12.04 that options is gone. So here is how I solved some of the issues.

I will cover adding Eclipse to the launcher, adding Zend Studio to the launcher, and PHPStorm to the launcher.

Method 1 (easiest)

For Netbeans and Eclipse based editors like Zend Studio or Aptana it is not too bad. I created a {name}.desktop files for each one and put it in the /home/{username}/.local/share/applications/ directory. Here is how I created a zendstudio.desktop file:

Note: If you want this option to be available for all users you can alternatively create the file in the /usr/share/applications/ directory, but that requires superuser permissions.

[Desktop Entry]
Version=1.0
Name=Zend Studio
Comment=PHP IDE for PHP development
Type=Application
Categories=Development;IDE;
Exec=/home/{username}/Zend/ZendStudio/ZendStudio
Terminal=false
StartupNotify=true
Icon=/home/{username}/Zend/ZendStudio/icon.xpm
Name[en_US]=Zend Studio

After creating the file above I rebooted. Following the reboot I was able to click the Unity Dash Home button, type “Zend” in the search field, then drag and drop the Zend Studio icon to the launcher where I wanted it to be. Now the application stays in the Unity Launcher.

For PHPStorm see method 3 below.

Method 2

Another method I found was to install the ‘gnome-panel’ package. (Actually it was already installed on my system for some reason.)

sudo apt-get install --no-install-recommends gnome-panel

With the gnome-panel I was now able to create a launcher on the desktop using the command below.

gnome-desktop-item-edit ~/Desktop/ --create-new

In the create launcher dialog I filled it out as follows:
Type: Application
Name: PhpStorm
Command: /bin/bash /home/username/PhpStorm/PhpStorm-117.257/bin/phpstorm.sh

NOTE: You could use /bin/sh or whatever shell you use. I use bash so that is why I put /bin/bash.

To create a shortcut in the Unity Launcher I double clicked the new desktop launcher I created above. (NOTE: If you start PHPStorm by executing the phpstorm.sh you do not get any options at all when right clicking the icon in the Unity Launcher.) Then when PHPStorm was running I was then able to right click on the icon in the Unity Launcher and selected “Lock to Launcher”. Voila! Now I have phpstorm on the Unity Launcher.

Method 3

This option is built right into PHPStorm. The wonderful people at JetBrains created a handy item in Tools to automatically create a menu item for you. Simply click on Tools->Create Desktop entry…and now you can Lock to Launcher the next time you run it. Start the JetBrains PhpStorm IDE from the Unity Dash you can then right click on the icon that shows up in the Unity Launcher and select “Lock to Launcher”. The icon now stays there, even after a reboot/logout.

Update:

Method 4

See comment to this post below by Shinybird on using Ubuntu Tweak. (Not sure if it works, but it sounds good.)

Enjoy!!!

Executing CakePHP script using Windows Scheduled Task

In Windows adding a scheduled task is just not as straight forward as adding a CRON job using Linux. (Don’t get me started on troubleshooting a Windows Schedule Task that did not run for some reason.) However, it is not so difficult once you get it figured out. Here is what I did:

In this case I wanted to run a CakePHP script as a CRON job, or more accurately, as a Windows Scheduled Task since this customer insisted I create the application and use a Windows server. (I used XAMPP, so it wasn’t too bad.)

In order to run the script and take full advantage of the models in CakePHP it required that I use the CakePHP shell. Luckily the CakePHP developers created a ‘cake.bat’ script that enables this to happen on a Windows machine.  Normally on a Windows or Linux server you can navigate, via command line, to the ‘app’ folder and execute the ‘cake  name_of_script’ command, but using Windows Scheduled Tasks you need to execute the bat file.

Windows Scheduled Task Settings:
Run: C:\path\to\cake.bat  script_name {without the extension .php}
Start in: C:\path\to\app\folder
Run As: type in the appropriate users

Then of course you will need to go to the Schedule tab and set in the schedule you desire for your script.

Here is a screenshot: (you can see the default folders for xampp were used)

IMPORTANT: This entire process assumes that you have already created your script and placed it in the appropriate directory “/app/vendors/shells/{name_of_script.php}”.  It also assumes you understand how to create a cronjob for CakePHP to use.  (see below for a sample)

Sample content of ‘script_name.php’:

class ScriptNameShell extends Shell {
 
	var $uses = array('model1','model2');
 
	/**
	 * the main function is kicked off like a contructor
	 *
	 */
	function main() {
		echo 'Doing something.';
 
		$callingSomething = $this->otherFunction();
 
		echo $callingSomething;
	}
 
	function otherFunction() {
		$content = 'This is content from otherFunction.';
 
		return $content;
	}
}

Virtualmin error while installing on Ubuntu 10.4

While I am very comfortable using Linux via a command line shell, I think all of us can admit that occasionally we need to look up a command or two due to non-regular use. Because time is short, and can be expensive when we have tons to do, I usually install Virtualmin (which also installs Webmin) on most of my servers. It is simply easier to login and get things done quickly.

Well, as I was setting up a new server at my hosting provider today and installing Virtualmin I ran into a little problem. The server was a fresh install, and Virtualmin would not install on my fresh load of Ubuntu 10.4 (which is a supported OS by Virtualmin). Instead I received the error:

... No apport report written because the error message indicates its a followup error from a previous failure
 
pkg: dependency problems prevent configuration of virtualmin-base:
virtualmin-base depends on dovecot-common; however:
Package dovecot-common is not configured yet.
virtualmin-base depends on dovecot-imapd; however:
Package dovecot-imapd is not configured yet.
virtualmin-base depends on dovecot-pop3d; however:
Package dovecot-pop3d is not configured yet.
dpkg: error processing virtualmin-base (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
dovecot-common
dovecot-imapd
dovecot-pop3d
virtualmin-base
 
FATAL - 2011-09-01 00:07:13 - Fatal Error Occurred: Something went wrong during installation: 0
FATAL - 2011-09-01 00:07:13 - Cannot continue installation.
FATAL - 2011-09-01 00:07:14 - Attempting to remove virtualmin repository configuration, so the installation can be
FATAL - 2011-09-01 00:07:14 - re-attempted after any problems have been resolved.
FATAL - 2011-09-01 00:07:14 - Removing temporary directory and files.
FATAL - 2011-09-01 00:07:14 - If you are unsure of what went wrong, you may wish to review the log
FATAL - 2011-09-01 00:07:14 - in /root/virtualmin-install.log

Well, after some Google searching I determined that the problem may be related to a bad hostname set on the server. This was a little confusing because the install also detected this at the beginning and asked me what I would like the hostname set to. However, it appears that providing the hostname did not make a difference because Virtualmin was not able to set it.

I first tested the hostname to see if this was the problem by doing:

$ hostname -f

Sure enough, it warned that the hostname was a problem. So here is how I fixed things:

First, I had to set the hostname on the server (I use sudo, but you could be logged in as root or change to superuser with su.):

# sudo vi /etc/hostname

In vi you would edit the hostname to be a fully qualified domain name (FDQN) and saving. (click “i” to enter insert mode, then “esc” to stop, and hit “ZZ” to save and close. Note: these are capital “ZZ”.)

Second, this requires a restart of the hostname service to apply the change. (Note: you can use ‘restart’ instead of stop and start.)

# sudo /etc/init.d/hostname stop
# sudo /etc/init.d/hostname start

Third, I had to then update my hosts file to also reflect the change. (click “i” to enter insert mode, then “esc” to stop, and hit “ZZ” to save and close. Note: these are capital “ZZ”.)

# sudo vi /etc/hosts

IMPORTANT: If you do not include the “shortname” after the hostname applications will still not consider this a FDQN.

Example of what should be in the hosts file when you are done:

127.0.0.1     myhome.domain.com myhome

After doing these three steps I was able to successfully install Virtualmin with no issues.

Setting larger terminal size when launching

Have you ever noticed that when opening a terminal screen in Linux it is very small? Who can work like that? AND in order to do anything I need to drag the corner of the window to make it larger, which is time consuming and drives me crazy because I am opening and closing my terminal screens many times each day.

So, here is a screenshot of how small the terminal screen is when initially launched:

Tiny terminal window on launch

The fix is very simple.  Right click on the launcher for terminal and select “Properties”.  When that dialog opens you are going to edit the Command to set the geometry of the window to be BIGGER.  I personally like my terminal to be 175×50, you can vary the size as you wish.

So, here is the new Command: (175 is the width and 50 is the height)

gnome-terminal --geometry 175x50

Now when my terminal screen opens it is much better:

Bigger Terminal Size

Enjoy!