Git Product home page Git Product logo

xournalpp / xournalpp Goto Github PK

View Code? Open in Web Editor NEW
10.3K 10.3K 768.0 52.16 MB

Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.

Home Page: https://xournalpp.github.io

License: GNU General Public License v2.0

C 0.52% Shell 1.05% C++ 93.01% CMake 2.40% NSIS 0.50% PHP 0.06% Lua 1.72% CSS 0.12% TeX 0.07% Python 0.55%
c-plus-plus crossplatform gtk3 notes notetaking pdf pdf-viewer pen

xournalpp's Introduction

Xournal++

Build Status Join the chat at https://gitter.im/xournalpp/xournalpp

Translations

Would you like to see Xournal++ in your own language? Translators are welcome to contribute to Xournal++.

You can contribute translations to the following locations:

Interested in translating a new language? Discuss on Gitter or create a new issue to unlock the language on Crowdin.

Thanks in advance!

Features

Xournal++ (/ˌzɚnl̟ˌplʌsˈplʌs/) is a hand note-taking software written in C++ with the target of flexibility, functionality and speed. Stroke recognizer and other parts are based on Xournal Code, which you can find at SourceForge.

Xournal++ features:

  • Supports pressure-sensitive styluses and digital pen tables (e.g. Wacom, Huion, XP Pen, etc. tablets)
  • Paper backgrounds for note-taking, scratch paper, or whiteboarding
  • Annotate on top of PDFs
  • Select text from the background PDF, copy, highlight or underline it or strike it through
  • Follow links from the background PDF
  • Export to a variety of formats including SVG, PNG and PDF, both from the GUI and command line
  • Different drawing tools (e.g. pen, highlighter) and stroke styles (e.g. solid, dotted)
  • Shape drawing (line, arrow, circle, rectangle, spline)
  • Use the set-square and compass tools for measurements or as a guide for drawing straight lines, circular arcs and radii
  • Fill shape functionality
  • Shape resizing and rotation
  • Rotation and grid snapping for precise alignment of objects
  • Input stabilization for smoother writing/drawing
  • Text tool for adding text in different fonts, colors, and sizes
  • Enhanced support for image insertion
  • Eraser with multiple configurations
  • LaTeX support (requires a working LaTeX installation) with customizable template and a resizable editor with syntax highlighting
  • Sidebar containing page previews with advanced page sorting, PDF bookmarks and layers (can be individually hidden/edited)
  • Allows mapping different tools/colors etc. to stylus/mouse buttons
  • Customizable toolbar with multiple configurations, e.g. to optimize toolbar for portrait/landscape
  • Custom color palette support using the .gpl format
  • Page template definitions
  • Bug reporting, auto-save, and auto backup tools
  • Audio recording and playback alongside with handwritten notes
  • Multi language support (over 20 languages supported)
  • Plugins using Lua scripting

Mobile & web app

From mid 2020 to May 2021, a Flutter-written mobile app for Android, Chrome OS and iOS (unreleased) and the web has been developed, which supports the file format and most of the basic features of Xournal++. Unfortunately development has stalled and we have lost contact to the (single) developer. The web app is no longer available. You can still check out the separate repository on GitLab or Get it on Google Play

GNU/Linux

Windows 10

macOS Catalina

Xournal++ Mobile on Chromium OS

Toolbar / Page Background / Layer

Multiple page background, easy selectable on the toolbar

Layer sidebar and advanced layer selection

Multiple predefined and fully customizable toolbars

User Manual and FAQ

For general usage, consult the User Manual. Answers to some common questions can be found in the FAQ.

Experimental Features

Sometimes a feature is added that might not be rock solid, or the developers aren't sure if it is useful. Try these out and give us some feedback.

Here are a few under development that you can play with now:

  • Assign a mouse button or stylus button to bring up a toolbox of toolbars right under the cursor. You can also modify what is in the toolbox through the usual View → Toolbars → Customize although it won't appear unless you've assigned a button in preferences: mouse or stylus (or selected a toolbar configuration that uses it).

    • This is an experimental feature because not everything you can put in the toolbox behaves. So be aware.

  • Keep your eyes out for other experimental features in preferences as seen here:

    DrawingTools: When drawing a box, circle etc, simulate ctrl or shift modifiers by the initial direction you move the mouse.

    Action on Tool Tap: Allow a brief tap on the screen to bring up the floating toolbox and/or select an object. May work with pen and highlighter only.

Installing

The official releases of Xournal++ can be found on the Releases page. We provide binaries for Debian (Buster), Ubuntu (16.04), MacOS (10.15 and newer), and Windows. For other GNU/Linux distributions (or older/newer ones), we also provide an AppImage that is binary compatible with any distribution released around or after Ubuntu 16.04. For installing Xournal++ Mobile on handheld devices, please check out Xournal++ Mobile's instructions

A note for Ubuntu/Debian users: The official binaries that we provide are only compatible with the specific version of Debian or Ubuntu indicated by the file name. For example, if you are on Ubuntu 20.04, the binary whose name contains Ubuntu-bionic is only compatible with Ubuntu 18.04. If your system is not one of the specific Debian or Ubuntu versions that are supported by the official binaries, we recommend you use either the PPA (Ubuntu only), the Flatpak, or the AppImage.

There is also an unstable, automated nightly release that includes the very latest features and bug fixes.

With the help of the community, Xournal++ is also available on official repositories of some popular GNU/Linux distros and platforms.

Debian

On Debian bookworm and Debian sid the xournalpp package (stable version) is contained in the official repositories. Simply install via

sudo apt install xournalpp

There are also the official Stable releases and unstable automated nightly releases.

Ubuntu and derivatives

On distros based on Ubuntu 22.04 Jammy Jellyfish (and later) the xournalpp package (stable version) is contained in the official repositories. Simply install via

sudo apt install xournalpp

Stable PPA

The latest stable version is available via the following unofficial PPA:

sudo add-apt-repository ppa:apandada1/xournalpp-stable
sudo apt update
sudo apt install xournalpp

Unstable PPA

An unstable, nightly release is available for Ubuntu-based distributions via the following PPA:

sudo add-apt-repository ppa:andreasbutti/xournalpp-master
sudo apt update
sudo apt install xournalpp

This PPA is provided by the Xournal++ team. While it has the latest features and bug fixes, it has also not been tested thoroughly and may break periodically (we try our best not to break things, though).

Fedora

The released version of xournalpp is available in the main repository via Software application or the following command:

sudo dnf install xournalpp

or

pkcon install xournalpp

The bleeding edge packages synced to xournalpp git master on a daily basis are available from COPR luya/xournalpp. Copr build status

openSUSE

On openSUSE Tumbleweed, the released version of Xournal++ is available from the main repository:

sudo zypper in xournalpp

For openSUSE Leap 15.0 and earlier, use the install link from X11:Utilities.

For all versions of openSUSE, bleeding edge packages synced to xournalpp git master on a weekly basis are available from home:badshah400:Staging.

Arch Linux

The latest stable release is available in the [extra] repository.

To build the latest state of the master branch yourself, use this AUR package.

Solus

The latest stable release is available in the main repository:

sudo eopkg it xournalpp

Flatpak

The Xournal++ team officially supports a FlatHub release, which can be installed with

flatpak install flathub com.github.xournalpp.xournalpp

Note that for Xournal++ to work properly, you must have at least one GTK theme and one icon theme installed on Flatpak. To enable LaTeX support, you will also need to install the TeX Live extension:

flatpak install flathub org.freedesktop.Sdk.Extension.texlive

The Flatpak manifest can be found at the Xournal++ Flatpak packaging repository, and all Flatpak-related packaging issues should be reported there.

Android and Chrome OS

Android is supported by Xournal++ Mobile. It can be downloaded either on the Tags page or from Google Play.

iOS

Unfortunately, the iOS app is not published yet in the Apple App Store. See here to learn, why. Anyway, in the Building section you can learn how to build an early preview.

Windows

Official Windows releases are provided on the Releases page.

Mac OS X

Mac OS X releases are provided on the Releases page.

Notes:

  • There have been compatibility problems with Mac OS X Catalina regarding both file permissions and stylus support (#1772 and #1757). Unfortunately, we don't have the resources to adequately support Catalina at this time. Help would be appreciated!
  • Xournal++ will be delivered with a patched GTK. Else, pressure sensitivity will not work on Mac #569.

Building

GNU/Linux Build

Mac Build

Windows Build

Android Build

iOS Build

File format

The file extension .xopp is a gzipped XML file. PDFs are not embedded into the file, so if the PDF is deleted, the background is lost. .xopp is basically the same file format as .xoj, which is used by Xournal. Therefore, Xournal++ is able to read .xoj files, and can also export to .xoj. As soon as notes are exported to a .xoj file, all Xournal++ specific extensions like additional background types, are lost.

.xopp files can theoretically be read by Xournal, as long as you do not use any new features. Xournal does not open files that contain new attributes or unknown values, so Xournal++ will add the extension .xopp to all saved files to indicate the potential presence of Xournal++-only features.

All new files will be saved as .xopp. If an .xoj file that was created by Xournal is opened, the Save-As dialog will be displayed on save. If the .xoj file was created by Xournal++, the file will be overwritten on save and the file extension will not change.

We are currently introducing a new file format that can efficiently store attached PDF files and other attachments internally. We will still allow for attachments that are linked to external files. Please refer to #937 for further details.

Building

We support building on three operating systems:

Contributing

See CONTRIBUTING.md

xournalpp's People

Contributors

andreasb242 avatar atticus-sullivan avatar bhennion avatar createyourpersonalaccount avatar cruzeblade avatar danemtsov avatar febbe avatar frohro avatar hrdl-github avatar hyperupcall avatar idotobi avatar jhilmer avatar jjones780 avatar littlehuba avatar luco5826 avatar marekpikula avatar mikewalrus avatar mjg avatar morrolinux avatar peetcreative avatar personalizedrefrigerator avatar rolandlo avatar siliconninja avatar st4ll1 avatar tattsan avatar technius avatar tmoerschell avatar vivekthazhathattil avatar wbrenna avatar x2b avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xournalpp's Issues

Up and Down Arrow Actions on Images

The up arrow should move a selected image or text object upwards by a small amount. Currently the arrows move the object in the opposite direction, and by an amount that is a little larger than is comfortable.

Modify Page Down behaviour

Alter the Page Down behaviour to actually go one page down when the view is fit-to-height or zoomed out further. This will assist the presentation mode.

Canvas sometimes hangs on typing text and moving images/elements

Sometimes, especially with larger files, the canvas hangs on dragging objects around or typing text until a stroke is drawn, the window is scrolled in, etc. I suspect this is similar to bug #17 as it might be sporadic due to a lazy gtk_main but certainly there should be a canvas repaint from those actions, which I think is not done.

Mathtex Requires a Double \

In order to parse, e.g. a new line in an array environment, mathtex requires \ instead of . Probably it just has to do with using the right type of quotes.

Crash due to settings.xml

Crashes on startup with
** (xournalpp:8834): WARNING **: XojTypeCheck failed: NULL gui/sidebar/Sidebar.cpp:166

when settings.xml has sidebar "false".

ScaleUndo replaces text in the wrong spot

When a scale is performed from the top right corner of an object, it is treated as a move and then a scale. Undoing this command results in two undo commands - an undo scale and an undo move. The undo move will move the object back near its original location, but from what I see, it overshoots.

Moving Objects Scrolls to Top

Using the arrow keys to move a selection of text or image causes the page to scroll to the very top. This is rather irritating.

Compile with Mathtex internally

Eventually the desired behaviour is to use configure flags to decide whether to compile with Mathtex or not, and if so, check for a working Tex install and compile with the copy of Mathtex that is being distributed.

Export As... does not work (at all!)

To PDF it produces a file but it is empty and gives

Error: PDF file is damaged - attempting to reconstruct xref table...

To PNG it crashes catastrophically

xournalpp: cairo-surface.c:637: cairo_surface_destroy: Assertion `((*&(&surface->ref_count)->ref_count) > 0)' failed.
Crash Handler::Crashed with signal 6
[bt] #9 /home/wilson/documents/Dropbox/misc/xournalpp/xournalpp_fedora/src/xournalpp(_ZN9ExportJob11freeSurfaceEi+0xb7) [0x80b91f7]
/home/wilson/xournalpp/src/control/jobs/ExportJob.cpp:110
[bt] #10 /home/wilson/documents/Dropbox/misc/xournalpp/xournalpp_fedora/src/xournalpp(_ZN9ExportJob3runEv+0x443) [0x80b9733]
/home/wilson/xournalpp/src/control/jobs/ExportJob.cpp:195
[bt] #11 /home/wilson/documents/Dropbox/misc/xournalpp/xournalpp_fedora/src/xournalpp(_ZN11BlockingJob7executeEv+0x9d) [0x80b88dd]
/home/wilson/xournalpp/src/control/jobs/BlockingJob.cpp:25
[bt] #12 /home/wilson/documents/Dropbox/misc/xournalpp/xournalpp_fedora/src/xournalpp(_ZN9Scheduler17jobThreadCallbackEPS_+0x135) [0x80be3d5]
/home/wilson/xournalpp/src/control/jobs/Scheduler.cpp:275

Resize Sidebar crashes if pages aren't buffered

On some larger documents, if you resize the Preview sidebar before Xournalpp has buffered a certain number of pages, it will crash in gtk_widget_queue_resize. Snippet:

[bt] #16 /lib/libgtk-x11-2.0.so.0(gtk_widget_queue_resize+0x8f) [0x4e2c9eff]
??:0
[bt] #17 ./xournalpp(_ZN14ToolZoomSlider16updateScaleMarksEv+0xbd) [0x8139d1d]
/home/wilson/documents/Dropbox/misc/xournalpp/xournalpp_toshiba/src/gui/toolbarMenubar/ToolZoomSlider.cpp:64
[bt] #18 ./xournalpp(_ZN11ZoomControl25fireZoomRangeValueChangedEv+0xaa) [0x81087fa]
/home/wilson/documents/Dropbox/misc/xournalpp/xournalpp_toshiba/src/control/ZoomControl.cpp:57 (discriminator 2)
[bt] #19 ./xournalpp(_ZN11ZoomControl10setZoomFitEd+0xac) [0x8108bcc]
/home/wilson/documents/Dropbox/misc/xournalpp/xournalpp_toshiba/src/control/ZoomControl.cpp:91

ENABLE_MATHTEX Macro not read on FC15

The macro ENABLE_MATHTEX doesn't propagate on FC15, so mathtex is always disabled. As a temporary fix, put

#define ENABLE_MATHTEX

after the #include lines in src/control/Control.cpp.

Fix tracking on Automake files.

If we remove all the tracked *.in (there are 5), aclocal.m4, configure, and libtool, we can completely remake with the commands aclocal, automake, make. Probably add the files to gitignore is easier, so that they're there but changes are untracked.

Canvas Blank on Switch Desktop

Sometimes upon switching desktop away and back to Xournalpp (Fedora Core 19 addpoppler branch) the canvas is completely blank (the view is just a titlebar with no features) with a stroke-input cursor until some stroke is drawn, upon which a complete refresh takes place.

This might be due to incompatibilities with the newest gtk, perhaps?

Support GTK3+

There are a large number of these visible as warnings during make. They should be updated. Ideally to support GTK3+ once it's in common use (I don't want to break backwards compatibility).

Compilation on Linux Mint 15 Fails

Plenty of errors on compiling on this system. The automake routine needs to be performed, libopenjpeg is not found (libopenjpeg2 is the installation candidate on this system), /usr/lib/ structure is different (/usr/lib/libi386, for example), liblcms is a different version, libfontconfig needs to be linked, and .deps/libutil_la-Logger.Tpo is not created for some reason.

Clean up LatexAction

Now that the Mathtex insertion is nearly mature, the unused functions in LatexAction (and perhaps LatexGlade) should be cleaned up.

Font selection not working (From SF #129)

for Xournal++ 0.9.1
There seems to be no effect from Tools > Text Font. It neither changes the font of subsequent text input, nor does it change the font of a selected bit of text.
The only way I find to change font, is by editing it manually in ./xournalpp/settings.xml. But that just changes the default font, and does not allow for comfortably using multiple fonts in one document.

Add Snap To Grid

This isn't a priority for me at the moment but a nice feature would be the ability to snap objects that are moved onto a grid for easier alignment of things. I think it would be a fairly simple thing to add.

Limit on MathTex Command Size

The Insert/Edit Tex command window only accepts a limited command size. Increase this to a practically large value.

Memory Leak on XojFont

If the font size (probably type as well) is changed, it will leak "-1" objects of type XojFont. This does not actually require typing anything in the new or old font.

Catch Addpoppler Branch up to Master

Addpoppler has deviated from Master because of the difference in automake files. Once these are properly copied from Master, the branches can again be merged to keep addpoppler up to date with changes.

Update Bug Reporter

Probably this is sending bugs to a non-existent location by this point...

Blackboard Mode

Add a black and/or green page background option, perhaps with neon colours depending on how they look, for a "chalkboard/blackboard" effect.

Crash on quit

Double free:
*** glibc detected *** ./xournalpp: double free or corruption (out):

======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x72606)[0x7f09e1fc3606]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x6c)[0x7f09e1fc833c]
./xournalpp(_ZN6StrokeD0Ev+0x7a)[0x50733a]
./xournalpp(_ZN5LayerD0Ev+0x8f)[0x501d7f]
./xournalpp(_ZN7XojPageD0Ev+0x8e)[0x50aa6e]
./xournalpp(_ZN7PageRefaSEP7XojPage+0x22)[0x504b22]
./xournalpp(_ZN18SidebarPreviewPageD0Ev+0xa4)[0x4c2034]
./xournalpp(_ZN15SidebarPreviewsD0Ev+0xff)[0x4c363f]
./xournalpp(_ZN7SidebarD0Ev+0x96)[0x4be8f6]
./xournalpp(_ZN7ControlD0Ev+0x1bf)[0x490a8f]
./xournalpp(_ZN11XournalMain3runEiPPc+0x502)[0x4a2d62]
./xournalpp(main+0x43)[0x5287b3]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xfd)[0x7f09e1f6fead]
./xournalpp[0x457319]

Some PDF Files fail when annotated and edited

This may be due to the old version of poppler used here, I'm not sure. I'll try to find an example of one of these files. Basically the resulting pdf just has some of the pages with blank backgrounds, annotations on top of nothing.

The fix might be worse than just updating the poppler routines.

Memory Leak - Search

Open a blank Xournalpp document, use CTRL-F to open a search box, type in some garbage, and close the program. It will give:

MemoryLeak: 1 objects of type: SearchControl
MemoryLeak: 1 objects of type: XojPage
MemoryLeak: 1 objects of type: BackgroundImage
MemoryLeak: 1 objects of type: PageRef
MemoryLeak: sum 4 objects.

Fix libjpeg2000 Issue

This occurs on compiling for some systems, notably Arch 2013.11.01. The linker dies when trying to link the libpoppler.a file into xournalpp.

Remove Duplicate Backups

Currently the dev version saves a backup in .xoj.bak as well as a tmp.autosave.xoj. They should both be prefixed with a dot in order to keep them hidden, and I'm mulling over either eliminating or moving one of them to the ~/.xournalpp folder, perhaps the backups in ~/.xournalpp/backups/.

Text is shifted between computers

The text gets shifted between different computers; I suspect a small bug due to the screen resolution. Also, sometimes written strokes differ in location with respect to text.

Crash on Quit in RemoveAllJobs

I think it's due to the line

Job * job = (Job *) g_queue_peek_nth(this->jobQueue[priority], i);

in the XournalScheduler on quit. It locks the jobQueue mutex, so I would have thought this would work properly, but something might be getting messed up in setting the job queue earlier. This happens only very rarely and it seems to be during a quit when there are jobs in the queue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.