• Stars
    star
    1,960
  • Rank 23,654 (Top 0.5 %)
  • Language
    C++
  • License
    Other
  • Created about 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Makes Linux applications self-contained by copying in the libraries and plugins that the application uses, and optionally generates an AppImage. Can be used for Qt and other applications

linuxdeployqt Build Status Downloads discourse Gitter irc

This Linux Deployment Tool, linuxdeployqt, takes an application as input and makes it self-contained by copying in the resources that the application uses (like libraries, graphics, and plugins) into a bundle. The resulting bundle can be distributed as an AppDir or as an AppImage to users, or can be put into cross-distribution packages. It can be used as part of the build process to deploy applications written in C, C++, and other compiled languages with systems like CMake, qmake, and make. When used on Qt-based applications, it can bundle a specific minimal subset of Qt required to run the application.

Differences to macdeployqt

This tool is conceptually based on the Mac Deployment Tool, macdeployqt in the tools applications of the Qt Toolkit, but has been changed to a slightly different logic and other tools needed for Linux.

  • Instead of an .app bundle for macOS, this produces an AppDir for Linux
  • Instead of a .dmg disk image for macOS, this produces an AppImage for Linux which is quite similar to a dmg but executes the contained application rather than just opening a window on the desktop from where the application can be launched

A note on binary compatibility

To produce binaries that are compatible with many target systems, build on the oldest still-supported build system. The oldest still-supported release of Ubuntu is currently targeted, tested and supported by the team.

We recommend to target the oldest still-supported Ubuntu LTS release and build your applications on that. If you do this, the resulting binaries should be able to run on newer (but not older) systems (Ubuntu and other distributions).

linuxdeployqt refuses to work on systems any newer than the oldest currently still-supported Ubuntu LTS release, because we want to encourage developers to build applications in a way that makes them possible to run on all still-supported distribution releases. For an overview about the support cycles of Ubuntu LTS releases, please see https://wiki.ubuntu.com/Releases. If you absolutely need to build your application on a build system newer than the oldest currently still-supported Ubuntu LTS release, then consider using go-appimage appimagetool -s deploy (unlike linuxdeployqt, this bundles all libraries).

linuxdeployqt does not contain any specific workarounds for Wayland which breaks many things. For best results, do not use Wayland.

Installation

Please download linuxdeployqt-x86_64.AppImage from the Releases page and chmod a+x it. If you would like to build linuxdeployqt from source instead, see BUILDING.md.

Usage

Usage: linuxdeployqt <app-binary|desktop file> [options]

Options:
   -always-overwrite        : Copy files even if the target file exists.
   -appimage                : Create an AppImage (implies -bundle-non-qt-libs).
   -bundle-non-qt-libs      : Also bundle non-core, non-Qt libraries.
   -exclude-libs=<list>     : List of libraries which should be excluded,
                              separated by comma.
   -ignore-glob=<glob>      : Glob pattern relative to appdir to ignore when
                              searching for libraries.
   -executable=<path>       : Let the given executable use the deployed libraries
                              too
   -extra-plugins=<list>    : List of extra plugins which should be deployed,
                              separated by comma.
   -no-copy-copyright-files : Skip deployment of copyright files.
   -no-plugins              : Skip plugin deployment.
   -no-strip                : Don't run 'strip' on the binaries.
   -no-translations         : Skip deployment of translations.
   -qmake=<path>            : The qmake executable to use.
   -qmldir=<path>           : Scan for QML imports in the given path.
   -qmlimport=<path>        : Add the given path to QML module search locations.
   -show-exclude-libs       : Print exclude libraries list.
   -verbose=<0-3>           : 0 = no output, 1 = error/warning (default),
                              2 = normal, 3 = debug.
   -updateinformation=<update string>        : Embed update information STRING; if zsyncmake is installed, generate zsync file
   -version                 : Print version statement and exit.

linuxdeployqt takes an application as input and makes it
self-contained by copying in the Qt libraries and plugins that
the application uses.

By default it deploys the Qt instance that qmake on the $PATH points to.
The '-qmake' option can be used to point to the qmake executable
to be used instead.

Plugins related to a Qt library are copied in with the library.

See the "Deploying Applications on Linux" topic in the
documentation for more information about deployment on Linux.

Simplest example

You'll need to provide the basic structure of an AppDir which should look something like this:

└── usr
    ├── bin
    │   └── your_app
    ├── lib
    └── share
        ├── applications
        │   └── your_app.desktop
        └── icons
            └── <theme>
                └── <resolution> 
                    └── apps 
                        └── your_app.png

Replace <theme> and <resolution> with (for example) hicolor and 256x256 respectively; see icon theme spec for more details.

Using the desktop file linuxdeployqt can determine the parameters of the build.

Where your desktop file would look something like:

[Desktop Entry]
Type=Application
Name=Amazing Qt App
Comment=The best Qt Application Ever
Exec=your_app
Icon=your_app
Categories=Office;
  • Notice that both Exec and Icon only have file names.
  • Also Notice that the Icon entry does not include an extension.

Read more about desktop files in the Desktop Entry Specification 1.0.

Now you can say: linuxdeployqt-continuous-x86_64.AppImage path/to/AppDir/usr/share/applications/your_app.desktop

For a more detailed example, see "Using linuxdeployqt with Travis CI" below.

Checking library inclusion

Open in Qt Creator and build your application. Run it from the command line and inspect it with ldd to make sure the correct libraries from the correct locations are getting loaded, as linuxdeployqt will use ldd internally to determine from where to copy libraries into the bundle.

QMake configuration

Important: By default, linuxdeployqt deploys the Qt instance that qmake on the $PATH points to, so make sure that it is the correct one. Verify that qmake finds the correct Qt instance like this before running the linuxdeployqt tool:

qmake -v

QMake version 3.0
Using Qt version 5.7.0 in /tmp/.mount_QtCreator-5.7.0-x86_64/5.7/gcc_64/lib

If this does not show the correct path to your Qt instance that you want to be bundled, then adjust your $PATH to find the correct qmake.

Alternatively, use the -qmake command line option to point the tool directly to the qmake executable to be used.

Remove unnecessary files

Before running linuxdeployqt it may be wise to delete unneeded files that you do not wish to distribute from the build directory. These may be autogenerated during the build. You can delete them like so:

find $HOME/build-*-*_Qt_* \( -name "moc_*" -or -name "*.o" -or -name "qrc_*" -or -name "Makefile*" -or -name "*.a" \) -exec rm {} \;

Alternatively, you could use $DESTDIR.

Adding icon and icon theme support

To enable icon and icon theme support you must add iconengines as an extra Qt plugin while running linuxdeployqt. In order for your application to locate the system theme icons, the libqgtk3.so platform theme must also be added:

-extra-plugins=iconengines,platformthemes/libqgtk3.so

Adding extra Qt plugins

If you want aditional plugins which the tool doesn't deploy, for a variety of reasons, you can use the -extra-plugins argument and include a list of plugins separated by a comma.
The plugins deployed are from the Qt installation pointed out by qmake -v.
You can deploy entire plugin directories, a specific directory or a mix of both.

Usage examples:

  1. -extra-plugins=sqldrivers/libqmsql.so,iconengines/libqsvgicon.so
  2. -extra-plugins=sqldrivers,iconengines/libqsvgicon.so
  3. -extra-plugins=sqldrivers,iconengines,mediaservice,gamepads

Handle Qt libraries infix

If you prepared a custom Qt distribution using the option -qtlibinfix during Qt configuration (resulting in library names such as libQt5CoreCustom.so), you must mention this infix on linuxdeployqt call. As an example, let's see if we configure our distribution using the infix Custom.

On Qt build chain: configure -qtlibinfix "Custom" [...]. This will generate Qt libraries (.so) like libQt5CoreCustom.so

So, on linuxdeployqt call: linuxdeployqt [...] -qtlibinfix "Custom" [...].

If you don't mention this infix, linuxdeployqt won't be able to detect Qt Core and Widgets libraries.

Using linuxdeployqt with Travis CI

A common use case for linuxdeployqt is to use it on Travis CI after the make command. The following example illustrates how to use linuxdeployqt with Travis CI. Create a .travis.yml file similar to this one (be sure to customize it, e.g., change APPNAME to the name of your application as it is spelled in the Name= entry of the .desktop file):

language: cpp
compiler: gcc
sudo: require
dist: trusty

before_install:
  - sudo add-apt-repository ppa:beineri/opt-qt-5.10.1-trusty -y
  - sudo apt-get update -qq

install:
  - sudo apt-get -y install qt510base libgl1-mesa-dev
  - source /opt/qt*/bin/qt*-env.sh

script:
  - qmake CONFIG+=release PREFIX=/usr
  - make -j$(nproc)
  - make INSTALL_ROOT=appdir -j$(nproc) install ; find appdir/
  - wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
  - chmod a+x linuxdeployqt-continuous-x86_64.AppImage
  # export VERSION=... # linuxdeployqt uses this for naming the file
  - ./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/*.desktop -appimage

after_success:
  # find appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq # for debugging
  # curl --upload-file APPNAME*.AppImage https://transfer.sh/APPNAME-git.$(git rev-parse --short HEAD)-x86_64.AppImage
  - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh
  - bash upload.sh APPNAME*.AppImage*
  
branches:
  except:
    - # Do not build tags that we create when we upload to GitHub Releases
    - /^(?i:continuous)/

When you save your change, then Travis CI should build and upload an AppImage for you. More likely than not, some fine-tuning will still be required.

For this to work, you need to set up GITHUB_TOKEN in Travis CI; please see https://github.com/probonopd/uploadtool.

By default, qmake .pro files generated by Qt Creator unfortunately don't support make install out of the box. In this case you will get

make: Nothing to be done for `install'.
find: `appdir/': No such file or directory

Fix for "make: Nothing to be done for 'install'"

If qmake does not allow for make install or does not install the desktop file and icon, then you need to change your .pro file it similar to https://github.com/probonopd/FeedTheMonkey/blob/master/FeedTheMonkey.pro.

Here is another simple example.

It is common on Unix to also use the build tool to install applications and libraries; for example, by invoking make install. For this reason, qmake has the concept of an install set, an object which contains instructions about the way a part of a project is to be installed.

Please see the section "Installing Files" on http://doc.qt.io/qt-5/qmake-advanced-usage.html.

For projects that use CMake, autotools, or meson with ninja instead of qmake

  - make INSTALL_ROOT=appdir install ; find appdir/

CMake wants DESTDIR instead:

  - cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
  - make -j$(nproc)
  - make DESTDIR=appdir -j$(nproc) install ; find appdir/

Some applications have the bad habit of relying on CMake versions newer than what comes with the oldest still-supported distributions. In this case, install a newer CMake with

  - sudo rm -rf /usr/bin/cmake /usr/local/cmake-* /usr/local/bin/cmake || true # Needed on Travis CI; don't do this on other systems!
  - wget "https://github.com/Kitware/CMake/releases/download/v3.13.2/cmake-3.13.2-Linux-x86_64.tar.gz" ; sudo tar xf  cmake*.tar.gz --strip-components=1 -C /usr

Under some circumstances it may also be required to add -DCMAKE_INSTALL_LIBDIR=/usr/lib to the cmake call.

autotools (the dinosaur that spends precious minutes "checking...") wants DESTDIR too but insists on an absolute link which we can feed it using readlink:

  - ./configure --prefix=/usr
  - make -j$(nproc)
  - make install DESTDIR=$(readlink -f appdir) ; find appdir/

Caution if you encounter

qmake PREFIX=/usr CONFIG+=use_qt_paths

Here, CONFIG+=use_qt_paths needs to be removed, otherwise it will install everything under the Qt installation paths in /opt/qt58 when using the beineri ppa.

The exception is that you are building Qt libraries that should be installed to the same location where Qt resides on your system, from where it will be picked up by linuxdeployqt.

meson with ninja apparently wants

  - meson --prefix /usr build
  - ninja -C build
  - DESTDIR=./appdir ninja -C build install ; find build/appdir

When using Qt from distribution packages

On Ubuntu 14.04, you will need to pass in -qmake=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake when using distribution packages.

A note on DESTDIR

According to https://dwheeler.com/essays/automating-destdir.html,

Automating DESTDIR can be a pain, so it’s best if the program supports it to start with; my package Auto-DESTDIR can automatically support DESTDIR in some cases if the program installation does not support it to begin with.

Also see https://www.gnu.org/prep/standards/html_node/DESTDIR.html for more information.

Sending Pull Requests on GitHub

linuxdeployqt is great for upstream application projects that want to release their software in binary form to Linux users quickly and without much overhead. If you would like to see a particular application use linuxdeployqt, then sending a Pull Request may be an option to get the upstream application project to consider it. You can use the following template text for Pull Requests but make sure to customize it to the project in question.

This PR, when merged, will compile this application on [Travis CI](https://travis-ci.org/) upon each `git push`, and upload an [AppImage](http://appimage.org/) to your GitHub Releases page.

Providing an [AppImage](http://appimage.org/) would have, among others, these advantages:
- Applications packaged as an AppImage can run on many distributions (including Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
- One app = one file = super simple for users: just download one AppImage file, [make it executable](http://discourse.appimage.org/t/how-to-make-an-appimage-executable/80), and run
- No unpacking or installation necessary
- No root needed
- No system libraries changed
- Works out of the box, no installation of runtimes needed
- Optional desktop integration with `appimaged`
- Optional binary delta updates, e.g., for continuous builds (only download the binary diff) using AppImageUpdate
- Can optionally GPG2-sign your AppImages (inside the file)
- Works on Live ISOs
- Can use the same AppImages when dual-booting multiple distributions
- Can be listed in the [AppImageHub](https://appimage.github.io/) central directory of available AppImages
- Can double as a self-extracting compressed archive with the `--appimage-extract` parameter
- No repositories needed. Suitable/optimized for air-gapped (offline) machines
- Decentralized

[Here is an overview](https://appimage.github.io/apps) of projects that are already distributing upstream-provided, official AppImages.

__PLEASE NOTE:__ For this to work, you need to set up `GITHUB_TOKEN` in Travis CI for this to work; please see https://github.com/probonopd/uploadtool.
If you would like to see only one entry for the Pull Request in your project's history, then please enable [this GitHub functionality](https://help.github.com/articles/configuring-commit-squashing-for-pull-requests/) on your repo. It allows you to squash (combine) the commits when merging.

If you have questions, AppImage developers are on #AppImage on irc.freenode.net.

Projects using linuxdeployqt

These projects are already using Travis CI and linuxdeployqt to provide AppImages of their builds:

These projects are using GitHub Actions and linuxdeployqt to provide AppImages of their builds:

This project is already using linuxdeployqt in a custom Jenkins workflow:

This GitHub template invokes linuxdeployqt during a GitHub CI Action:

These projects are already using linuxdeployqt:

This project on GitLab uses linuxdeployqt:

This project can be bundled successfully using linuxdeployqt:

Contributing

One great way to contribute is to send Pull Requests to the application projects you'd like to see use linuxdeployqt, as described above. You are also welcome to contribute to linuxdeployqt development itself. Please discuss in the forum or using GitHub issues and Pull Requests.

Contact

The developers are in the channel #AppImage on irc.freenode.net

More Repositories

1

MiniDexed

Dexed FM synthesizer similar to DX7 running on a bare metal Raspberry Pi (without a Linux kernel or operating system)
C++
745
star
2

irdb

One of the largest crowd-sourced, manufacturer-independent databases of infrared remote control codes on the web, and aspiring to become the most comprehensive and most accurate one
Python
695
star
3

go-appimage

Go implementation of AppImage tools. Still experimental
Go
518
star
4

ESP8266HueEmulator

Emulate a Philips Hue bridge running on an ESP8266 using the Arduino IDE.
C++
409
star
5

WirelessPrinting

Print wirelessly from Cura, PrusaSlicer or Slic3r to your 3D printer connected to an ESP8266 or ESP32 module
C++
352
star
6

SystemImageKit

Run (multiple) operating systems directly from image files. Add extensions, apps and configuration, which are one file each.
Shell
152
star
7

zsync-curl

Partial/differential file download client over HTTP(S)
C
100
star
8

uploadtool

Upload builds to GitHub Releases easily
Go
93
star
9

TimeLord

Arduino library with many time and date related functions... Daylight Savings, Moon Phase, Sidereal time, with the SunRise library rolled in.
C++
63
star
10

previous

NeXT hardware emulator for a NeXT Cube and NeXT Station. Mirrored from SourceForge
C
58
star
11

Zoom.AppImage

An AppImage for the Zoom desktop application (until Zoom provides an official one)
48
star
12

Emacs.AppImage

This repository builds GNU Emacs from git on Travis CI and packages it as an AppImage.
Shell
41
star
13

packstation-barcode

Erstellung von Barcodes für DHL Goldcard
Python
40
star
14

MakeHex

MakeHex by John Fine. Makes clean IR sequences from IR protocol files.
C++
30
star
15

lirc-remotes

The lirc remotes database
HTML
29
star
16

OpenPhone

Open source desk telephone implemented in Python and pjsua
Python
21
star
17

decodeir

Convert raw or Pronto Hex infrared codes into protocol, device, subdevice, command
C++
20
star
18

ProntoHex

Arduino library to convert Pronto Hex infrared remote control codes to raw timings that can be sent with usual IR sending libraries
Arduino
20
star
19

ESP8266iTachEmulator

Send infrared remote control signals via WLAN using an ESP8266
C++
18
star
20

static-tools

Building static binaries of some tools using an Alpine chroot with musl
C
18
star
21

dfilemanager

File manager written in Qt/C++ for a Mac-like experience
C++
17
star
22

Lifestyle

Controlling 27.145 MHz BOSE Lifestyle with ESP8266 and Raspberry Pi
C
17
star
23

video2smarttv

Send mp4 video URLs or YouTube videos to Samsung Smart TV. This is a no-frills implementation intended to be as lightweight and portable as possible.
Python
16
star
24

libhookexecv

Make fully relocateable Wine bundles by overriding the execv syscall to use a custom ld.so
Shell
15
star
25

announce

Announce services on the network with Zeroconf/Bonjour with minimal overhead.
C
14
star
26

PoorMakers_IR_Receiver

Poor Maker's Infrared receiver
Arduino
13
star
27

poor-mans-yun

Arduino Yun functionality using a $20 WR703N router and a $3 Arduino Pro Mini.
Shell
10
star
28

eos-movrec

EOS Camera Movie Record
9
star
29

vcontrold-for-openwrt

Control Viessmann heating systems such as the Vitotronic 200 KW 2 from OpenWrt
HTML
8
star
30

font-newg8

8
star
31

hub-ctrl-for-openwrt

Switch off power on USB ports on hubs supporting software controlled power switching
Makefile
8
star
32

qemu-ppc

Lets you run PowerPC operating systems on 64-bit Intel Linux hosts
7
star
33

marlin-for-ender-2

Marlin firmware for Creality Ender-2
G-code
7
star
34

RF100-Firmware

Conrad Electronic Renkforce RF100 Firmware
C
7
star
35

sketches

Some Arduino sketches
Arduino
6
star
36

eaglemode

Shell
6
star
37

QtQuickApp

Demo Qt Quick application for use with linuxdeployqt
QML
6
star
38

font-leutkirch

Python
5
star
39

plugin.video.invidious

Watch videos on https://invidious.snopyta.org
Python
5
star
40

Filer

A clean rewrite of the Filer for helloSystem
C++
5
star
41

simple-http-server

A simple HTTP server that advertises itself to the network with Zeroconf
Go
5
star
42

plugin.video.externalmedia

Play media on KODI from external drives without the need for library updates nor databases
Python
5
star
43

lirc-audio_alsa-for-openwrt

Use a soundcard input to receive infrared remote control signals.
Makefile
5
star
44

MultiDexed

MultiDexed
C++
5
star
45

arduino-esp8266

Linux AppImage with an Arduino IDE that allows running Arduino sketches on ESP8266
Shell
4
star
46

CircleNetboot

Shell
4
star
47

esp32-i2s-webradio

A webradio player using based on esp32 and i2s DAC
C++
4
star
48

Synth_Dexed

Mirrored from https://codeberg.org/dcoredump/Synth_Dexed
C++
4
star
49

parole-opus-for-openwrt

Run parole on OpenWRT. parole is a simple voip program that lets you make a voice call from the terminal using the Opus codec.
4
star
50

appwrapper

Execute a binary on Linux and show a desktop notification in case of errors
Go
4
star
51

codelite-appimage

https://github.com/eranif/codelite/issues/1455#issuecomment-584699413
3
star
52

mtk-gps-debugging

The missing MTK driver GPS debugging information
3
star
53

altairsim.AppImage

3
star
54

nativefier-appimage

Using nativefier to make an AppImage from a web app using Electron
3
star
55

nativefier-test

Shell
3
star
56

LBRY.AppImage

Inofficial LBRY AppImage until there is an official one
2
star
57

Viper.app

2
star
58

attrutil

Command line tool to set extended attributes
C
2
star
59

freebsd-logo-tools

Allows to edit the FreeBSD boot logo by converting it from and to a bitmap image that can be edited with any image editor
C
2
star
60

sigrok-util

Lua
2
star
61

build-with-poudriere

Shell
2
star
62

arduino-audiobook-player

Arduino-based audiobook player with a focus on simplicity
C++
2
star
63

ESP8266GitHubNotificator

ESP8266 GitHub notifications
C++
2
star
64

rpi-noobs-builder

Build Raspberry Pi NOOBS images using travis-ci
Shell
2
star
65

rt5350f-uboot

Backup of wertwert4pda/rt5350f-uboot
2
star
66

XChat

XChat is an IRC chat program for both Linux and Windows
C
2
star
67

live-build-travis

Build Live system on Travis CI using Debian live-build tools
Shell
2
star
68

temp-installer-gui

Python
2
star
69

customberry

2
star
70

ELEC-Remixer

Remix AlexELEC, OpenELEC, LibreELEC, CoreELEC,...
2
star
71

klik

Mirror of https://code.google.com/archive/p/klikclient mainly for historic reasons.
Shell
2
star
72

Siedle_SG_650-0

SIEDLE SG 650-0 Smart Gateway open source components
C
2
star
73

xdgurl-1

C++
1
star
74

marble

C++
1
star
75

casper-language-autodetection

Casper Language Autodetection
Shell
1
star
76

website-annoyances

Annoyances in website usability and privacy
1
star
77

SyncTERM.AppImage

BBS terminal program
1
star
78

esp32s2-seq

C++
1
star
79

covid19

Go
1
star
80

minivmac-3.0.0

minivmac-3.0.0 mirror
1
star
81

omegadict

Construct files in QuickDic format based on OmegaWiki data
Python
1
star
82

Lamp

Control Lead Energy Flexible White LED panel
Python
1
star
83

okc_auto_visitor

Visits all OkCupid matches above 85% so you appear in their recent visitors list.
JavaScript
1
star
84

alljoyn-for-openwrt

https://git.allseenalliance.org/cgit/core/openwrt_feed.git
1
star
85

esp32s3-linux

Based on https://gist.github.com/jcmvbkbc/316e6da728021c8ff670a24e674a35e6
1
star
86

QtUpdateBridges

Master repo to compile all update bridges for updatedeployqt using different qt versions. This will be injected into the Qt Application using QtPluginInjector.
C++
1
star
87

azpainter

Full color painting software for Linux for illustration drawing. This is un-official little fixed repositary of AzPainter (based on "mlib" toolkit). Official repositary hosted on OSDN - https://osdn.net/projects/azpainter/
C
1
star
88

assembly-service

Assembly Service for Flatpak, builds Flatpak into AppImage
1
star
89

travis2github

Upload travis builds to GitHub Releases
Python
1
star
90

XCept

This is XCept V 2.1 BETA
C
1
star
91

mediathek

Python
1
star
92

custom-tasmota

Builds https://github.com/arendst/Tasmota but with different compile-time configuration
Shell
1
star
93

aarch64-squashfs-builder

Trying to build squashfs images for aarch64 that can be booted on Amlogic devices
1
star
94

avahi-indicator

Indicator that shows services advertised on the network with Zeroconf/Bonjour/Avahi, written in Python
Python
1
star
95

sturdy

📓 Note-taking app with markdown support
C++
1
star
96

marlin-builds

1
star
97

manpager

C++
1
star
98

GoTranslate

This project contains two minimal examples for combining Go code with Qt GUIs
Go
1
star
99

openwrt-for-orangepi-zero

OpenWrt for OrangePi Zero
Shell
1
star
100

wine-alsa

Makefile
1
star