What gui library is used by sublime text editor?

Question:

I’ve downloaded an editor of sublimetext and I want to know what GUI library is used in there.

The filenames of files that are in the editor executables directory are:

bz2.pyd
Microsoft.VC90.CRT.manifest   
msvcp90.dll
msvcr90.dll                   
PackageSetup.py
PackageSetup.pyc              
pyexpat.pyd                   
python26.dll
python26.zip                  
select.pyd
sublimeplugin.py              
sublimeplugin.pyc
sublimetext.exe               
unicodedata.pyd
unins000.dat                  
unins000.exe
_ctypes.pyd                   
_elementtree.pyd
_hashlib.pyd                  
_socket.pyd
_ssl.pyd     

Can I find the information from the file names?

Asked By: Freewind

||

Answers:

a little Googling suggested it is using the Sublime GUI, which judging by the Debian source package is written in C++.

then again, running strings on the Linux sublime_text binary shows the following shared libraries (equivalent of Windows DLLs) which might suggest gtk:

/lib/ld-linux.so.2
libgtk-x11-2.0.so.0
libgdk-x11-2.0.so.0
libatk-1.0.so.0
libgio-2.0.so.0
libpangoft2-1.0.so.0
libpangocairo-1.0.so.0
libgdk_pixbuf-2.0.so.0
libcairo.so.2
libpng12.so.0
libpango-1.0.so.0
libfreetype.so.6
libfontconfig.so.1
libgobject-2.0.so.0
libgmodule-2.0.so.0
libgthread-2.0.so.0
librt.so.1
libglib-2.0.so.0
libpthread.so.0
libdl.so.2
libutil.so.1
libm.so.6
libX11.so.6
libstdc++.so.6
libgcc_s.so.1
libc.so.6
libgio-2.0.so
libgio-2.0.so.0
module.so

this also suggests gtk.

Answered By: jcomeau_ictx

It might not be written in Python. The reason you see Python code is users can write scripts/plugin in Pythons to extend Sublime Text. I suspect it is written in C++ with GTK as GUI toolkit.

Answered By: jemeshsu

Sublime Text 2 is mostly coded in C++ and uses a custom UI toolkit. Here is the author, Jon Skinner, explaining it: http://news.ycombinator.com/item?id=2822114.

I keep meaning to write a blog post with some details on this, but as
with many things, I usually end up coding instead. Sublime Text 2 is
almost entirely C++ (with a smattering of Objective C for Cocoa and
Python for plugins). Coding is generally fairly straight forward: code
on one platform (mostly Linux at the moment, but I switch around
frequently), and then make sure it still compiles elsewhere. Sublime
Text 2 itself uses a custom UI toolkit. There are a lot of apps where
this may not make sense, but it’s not such an unreasonable choice for
Sublime Text, where I always knew that a lot of the UI controls were
going to have to be custom no matter the toolkit (e.g., the text
control and tab controls). The UI toolkit sits on top of a cross
platform abstraction layer, which is more a union of platform
functionality rather than lowest common denominator.

Answered By: Hugo