Construct a .desktop file and return it as a string.
	Create a standards-compliant .desktop file, returning it as a string.
	Args:
			name			(str) : The program's name.
			exec\_		  (str) : The command.
			terminal		(bool): Determine if program should be run in a terminal emulator or not. Defaults to ``False``.
			additional_opts (dict): Any additional fields.
	Returns:
			str: The constructed .desktop file.

def construct(name, exec_, terminal=False, additional_opts={}):
	'''Construct a .desktop file and return it as a string.
	Create a standards-compliant .desktop file, returning it as a string.
	Args:
			name			(str) : The program's name.
			exec\_		  (str) : The command.
			terminal		(bool): Determine if program should be run in a terminal emulator or not. Defaults to ``False``.
			additional_opts (dict): Any additional fields.
	Returns:
			str: The constructed .desktop file.
	'''

	desktop_file = '[Desktop Entry]\n'

	desktop_file_dict = {
		'Name': name,
		'Exec': exec_,
		'Terminal': 'true' if terminal else 'false',
		'Comment': additional_opts.get('Comment', name)
	}

	desktop_file = ('[Desktop Entry]\nName={name}\nExec={exec_}\n'
					'Terminal={terminal}\nComment={comment}\n')

	desktop_file = desktop_file.format(name=desktop_file_dict['Name'],
									   exec_=desktop_file_dict['Exec'],
									   terminal=desktop_file_dict['Terminal'],
									   comment=desktop_file_dict['Comment'])

	if additional_opts is None:
		additional_opts = {}

	for option in additional_opts:
		if not option in desktop_file_dict:
			desktop_file += '%s=%s\n' % (option, additional_opts[option])

	return desktop_file