Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Advanced multi-platform divelog based on Qt
C++ C XSLT JavaScript Shell QMake Other

cmake: make CMakeLists.txt more readable

Signed-off-by: Dirk Hohndel <>
latest commit f956d6291f
@dirkhh dirkhh authored
Failed to load latest commit information.
.tx Add simple glossary
Documentation merge conflicts
ReleaseNotes Get ready for Subsurface 4.4.1
android Turns out the manifest doesn't allow a dash in the name
appdata Replace other references to
dives Load remote images
icons Add better icons for the filter dialog
marbledata Add a CMake based buildsystem for the tests.
packaging Update the documentation with dependencies for cross-building on Linu…
qt-ui Save more planner settings into prefs
scripts Merge branch 'v4.4-branch' back into master
tests Some simple test for file parsing
theme HTML: don't collapse the dive if hyperlink is clicked
translations Latest translations
xslt Import support for new Seabear format
.clang-format Small tweaks to our whitespace handling
.gitattributes Ignore some files when archiving.
.gitignore Complement the CMakesList.txt with the latest file inclusions.
CMakeLists.txt cmake: make CMakeLists.txt more readable
CodingStyle CodingStyle: add an extra line for the braces explaination
INSTALL Update the documentation with dependencies for cross-building on Linu…
README Get ready for Subsurface 4.4.1
Readme.testing Information on writing test cases
Readme.ubuntu Update Readme.ubuntu
SupportedDivecomputers.html Make SupportedDivecomputer HTML more compact
SupportedDivecomputers.txt Improve generation of list of supported dive computers
TODO.CCR Update todo list for CCR
android.cpp Create a subsurface_access for Android too
cochran.c Fix memory leaks on Cochran file
cochran.h Eliminate packed struct for Cochran
color.h CVS import UI: mark the column names in blue as well
configuredivecomputer.cpp Use correct flag when connecting the progress events to the progress bar
configuredivecomputer.h Connect the progress events to the progress bar
configuredivecomputerthreads.cpp ifdef hw_ostc3_device_config_{read,write} usage
configuredivecomputerthreads.h Add infrastructure to emit progress from threads
datatrak.c Remove some white spaces
datatrak.h datatrak: some codings style fixes and fopen() usage
deco.c Use SAC from preferences for PSCR oxygen drop
deco.h Tissue saturation plot a la Sherwater Pretel
descriptor3.tsv Add structured file with list of supported dive computers
device.c Massive automated whitespace cleanup
device.h Massive automated whitespace cleanup
devicedetails.cpp Define new OSTC3 settings in devicedetails
devicedetails.h Define new OSTC3 settings in devicedetails
display.h Print: add the support to store margins and printer options
dive.c When loading an image with geodata create a divesite when the dive ha…
dive.h Import support for new Seabear format
divecomputer.cpp Don't reimplement the clear() method
divecomputer.h Don't reimplement the clear() method
divelist.c Change one more spot in divelist.c from locations to dive sites
divelist.h Deselect dives that are no longer shown as the dive list is filtered
divesite.c divesite.c: use rand() instead of random()
divesite.h Add helper function to detect empty dive sites
divesitehelpers.cpp Move helper functions around
equipment.c Use correct name for oxygen
exif.cpp Break picture handling code from C++ to C.
exif.h Break picture handling code from C++ to C.
file.c Import support for new Seabear format
file.h Liquivision import fixes
gaspressures.c Check error code of get_cylider_idx_by_use()
gaspressures.h Some gas handling improvements
gettext.h Add comment for "below floor" event
gettextfromc.cpp Make the cache cache things
gettextfromc.h Explicitly include needed include file
git-access.c Fix Ubuntu compilation error.
gpl-2.0.txt Add a copy of the GPL v2 to the project
helpers.h Move helper functions around
libdivecomputer.c Fix a couple of typos
libdivecomputer.h Add a private table for downloaded dives
linux.c Add subsurface_access()
liquivision.c Ignore buddy pressures in Liquivision import
load-git.c load-git::walk_tree_file - missing break in switch
macos.c Add subsurface_access()
main.cpp Remove the ProfileWidget from mainwindow.ui
membuffer.c membuffer: add helper functions to return regular C strings
membuffer.h membuffer: add helper functions to return regular C strings
parse-xml.c Fix a memory leak in parser-xml
planner.c Improve gas accounting in the panner
planner.h Planner: correctly free divedatapoints
pref.h Save more planner settings into prefs
profile.c Event name should be a const char *
profile.h Correcly look at all relevant dive computer structures
qt-gui.cpp qt-gui.cpp: fix imcomplete type error
qt-gui.h Main: separate the QApplication and UI creation
qthelper.cpp Load remote images
qthelper.h Load remote images
satellite.svg Satellite icon diet
save-git.c Add hashes to images
save-html.c Make exporting photos with HTML optional
save-html.h HTML: Save data with user selected units
save-xml.c Add hashes to images
sha1.c Another small tweak to whitespace tool
sha1.h Massive automated whitespace cleanup
statistics.c Better testing if the first gas is explicit
statistics.h Make gas use statistics be coherent and more complete
strtod.c Massive automated whitespace cleanup
subsurface-configure.pri More flexibility when linking statically against libgit2
subsurface-gen-version.pri PRI: include some variables in the version generation
subsurface-icon.svg Rename subsurface.svg to subsurface-icon.svg
subsurface-install.pri Allow overriding makensis program
subsurface.1 Replace other references to
subsurface.desktop Add a trailing ';' to the Keywords in the subsurface.desktop file Import Datatrak/WLog files
subsurface.qrc Hook up DiveLog import
subsurfacestartup.c Save more planner settings into prefs
subsurfacestartup.h Free strduped prefs before exit
subsurfacesysinfo.cpp Fix Subsurface build with Qt 5.4.1 and later
subsurfacesysinfo.h Fix Subsurface build with Qt 5.4.1 and later
terms Be more consistent in partial pressure naming
time.c Massive automated whitespace cleanup
uemis-downloader.c Clean req.txt file path
uemis.c Change UEMIS infrastructure to use dive sites
uemis.h Change UEMIS infrastructure to use dive sites
units.h Fix picture loading
version.c add and use a version.c / version.h pair
version.h add and use a version.c / version.h pair
webservice.h Put include guard to every header
windows.c windows.c: small cleaup in the wrapper functions
worldmap-options.h Gratuitous whitespace changes
worldmap-save.c Fix error on HTML worldmap exports.
worldmap-save.h Gratuitous whitespace changes
wreck.jpg Include images in profile


This is the README file for Subsurface 4.4.1

Please check the ReleaseNotes.txt for details about new features and
changes since Subsurface 4.4 (and earlier versions).

Subsurface can be found at

Our user forum is at
We also try to respond to questions in the dive software
forum at

Report bugs and issues at

License: GPLv2

You can get the sources to the latest development version from the git

git clone git:// .

You can also browse the sources via gitweb at the same site.

If you want the latest release (instead of the bleeding edge
development version) you can either get this via git or the release tar
ball. After cloning run the following command:

git checkout v4.4.1  (or whatever the last release is)

or download a tar ball from:

Detailed build instructions can be found in the INSTALL file.

Basic Usage:

Install and start from the desktop, or you can run it locally from the
build directory:

On Linux:

$ ./subsurface

On Mac:

$ open

Native builds on Windows are not really supported (the official Windows
installers are both cross-built on Linux).

You can give a data file as command line argument, or (once you have
set this up in the Preferences) Subsurface picks a default file for
you when started from the desktop or without an argument.

If you have a dive computer supported by libdivecomputer, you can just
select "Import from Divecomputer" from the "Import" menu, select which
dive computer you have (and where it is connected if you need to), and
hit "OK".

The latest list of supported dive computers can be found in the file

Much more detailed end user instructions can be found from inside
Subsurface by selecting Help (typically F1). When building from source
this is also available as Documentation/user-manual.html. The
documentation for the latest release is also available on-line


There is a mailing list for developers:
Go to
to subscribe.

If you want to contribute code, please either send signed-off patches or
a pull request with signed-off commits.  If you don't sign off on them,
we will not accept them. This means adding a line that says
"Signed-off-by: Name <email>" at the end of each commit, indicating that
you wrote the code and have the right to pass it on as an open source


Also, please write good git commit messages.  A good commit message
looks like this:

	Header line: explain the commit in one line (use the imperative)

	Body of commit message is a few lines of text, explaining things
	in more detail, possibly giving some background about the issue
	being fixed, etc etc.

	The body of the commit message can be several paragraphs, and
	please do proper word-wrap and keep columns shorter than about
	74 characters or so. That way "git log" will show things
	nicely even when it's indented.

	Make sure you explain your solution and why you're doing what you're
	doing, as opposed to describing what you're doing. Reviewers and your
	future self can read the patch, but might not understand why a
	particular solution was implemented.

	Reported-by: whoever-reported-it
	Signed-off-by: Your Name <>

where that header line really should be meaningful, and really should be
just one line.  That header line is what is shown by tools like gitk and
shortlog, and should summarize the change in one readable line of text,
independently of the longer explanation. Please use verbs in the
imperative in the commit message, as in "Fix bug that...", "Add
file/feature ...", or "Make Subsurface..."

A bit of Subsurface history:

In fall of 2011, when a forced lull in kernel development gave him an
opportunity to start on a new endeavor, Linus Torvalds decided to tackle
his frustration with the lack of decent divelog software on Linux.

Subsurface is the result of the work of him and a team of developers since
then. It now supports Linux, Windows and MacOS and allows data import from
a large number of dive computers and several existing divelog programs. It
provides advanced visualization of the key information provided by a
modern dive computer and allows the user to track a wide variety of data
about their diving.

In fall of 2012 Dirk Hohndel took over as maintainer of Subsurface.
Something went wrong with that request. Please try again.