Last night I created a tutorial video for how to get started creating your very first app for Ubuntu. In the tutorial I show you how to create a simple web browser by generating a new project, customizing the user interface, writing some code, and then generating a package.
You can see the video below:
Can’t see the video? No problem, click here!
Don’t forget to take part in the Ubuntu App Showdown (there are plenty of app ideas here)!

Thanks for this tutorial, looked at galde in the past but didn’t really get into it much. This has rekindled my interest. Can you make this source code available on a VCS somewhere?
Excellent tutorial! The most detailed I have seen in a long time. Please continue to make more of these..This could easily turn into a series which will raise the interest of everyone using Ubuntu to develop their own app. I mean this is so incredible!
After adding this line
self.scrolledwindow.add(self.webview) I get the following error:/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property “type” for object `Window’ can’t be set after construction Gtk.Window.init(self, type=type, **kwds)Traceback (most recent call last): File “bin/myapp”, line 33, in myapp.main() File “/home/neha/myapp/myapp/__init__.py”, line 33, in main window = MyappWindow.MyappWindow() File “/home/neha/myapp/myapp_lib/Window.py”, line 35, in __new__ new_object.finish_initializing(builder) File “/home/neha/myapp/myapp/MyappWindow.py”, line 40, in finish_initializing self.scrolledwindow.add(self.webview)AttributeError: ‘NoneType’ object has no attribute ‘add’And I am stuck. Help please
Great tutorial. If you will ever do a second one, could you explain how to set application preferences and how to make application to read them when it starts? You could even make a blog post asking what people would like to see in a next tutorial.
Thanks for listening 😉
Could someone tell me what programming language (or environment) should I start with, in Linux, so it will be easier for me if there is a need to change it or learn a new one later.
property: construct property “type” for object `Window’ can’t be set after construction Gtk.Window.init(self, type=type, **kwds) Traceback (most recent call last): File “bin/mybrowser”, line 33, in mybrowser.main() File “/home/elison/mybrowser/mybrowser/__init__.py”, line 33, in main window = MybrowserWindow.MybrowserWindow() File “/home/elison/mybrowser/mybrowser_lib/Window.py”, line 35, in __new__ new_object.finish_initializing(builder) File “/home/elison/mybrowser/mybrowser/MybrowserWindow.py”, line 41, in finish_initializing self.scrolledwindow.add(self.webview) AttributeError: ‘NoneType’ object has no attribute ‘add’
When I run the programme after adding the refresh() command I get the following Warnings and am unable to view the url entered into the address bar.
/usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property “type” for object
Window' can't be set after construction Gtk.Window.__init__(self, type=type, **kwds) /usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for objectMybrowserWindow’ can’t be set after construction Gtk.Window.init(self, type=type, **kwds) simon@ubuntu:~/mybrowser$ quickly run /usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property “type” for objectWindow' can't be set after construction Gtk.Window.__init__(self, type=type, **kwds) /usr/lib/python2.7/dist-packages/gi/overrides/Gtk.py:391: Warning: g_object_set_property: construct property "type" for objectMybrowserWindow’ can’t be set after constructionGtk.Window.init(self, type=type, **kwds)
Could you advise me on what I might have done wrong.
This is one good “tutorial” ..I liked it ! Thank you !
I am following this tutorial but getting following error.Please help at your earliest
self.scrolledwindow.add(self, webview) NameError: global name ‘webview’ is not defined
I got this problem too – to fix: make sure you have typed self.scrolledwindow.add(self.webview) not self.scrolledwindow.add(self, webview)
I am also getting same error
This is an amazing tutorial….really thank you Jono
Thank you, great tuto
Really well-done tutorial, very focused and covering some difficult concepts in an easy way for some of us non-programmers. I spent over an hour here watching the video, taking notes, doing some quick searches because the way you covered this all was very easy to follow.
I just came across Quickly (have not tried to install yet) and hoping that activity is still somewhat active. Most of the stuff I’m coming across is pretty dated (2009-2013). Thanks for the tutorial (bookmarked for re-watching). It has inspired me to try and work out a simple GUI program I’ve had in my mind for a long time.