Veloman Yunkan 0235d0bafa 2-stage pausing/resuming of downloads
Pausing a download now changes its state to PAUSE_REQUESTED and the
pause request is enqueued for asynchronous execution. Similarly,
resuming a download changes its state to RESUME_REQUESTED and the resume
request is enqueued for asynchronous execution.

In the PAUSE_REQUESTED and RESUME_REQUESTED states download actions
are disabled.

Known issues:
 - The PAUSE_REQUESTED state may be incorrectly restored to DOWNLOADING
   if at the time of pausing an earlier UPDATE request for the same
   download preceded it in the queue or was being executed. After
   the response to the said UPDATE request is received it results
   in the DownloadState being reset to the previous state. But after
   the pause request is processed a subsequent UPDATE request will
   change the state to PAUSED. In GUI this looks as follows (assuming
   slow responses from aria2c, allowing to observe the events in slow
   motion):

   1. Pause button is pressed
   2. Pause button and download progress info (the textual one) disappear
   3. Pause button and download progress info (the textual one) re-appear
   4. Download switches to paused state without any further user actions

   A similar problem exists for resuming the download.

   The solution is to convert the request queue to a priority queue
   where download actions are given precedence over update actions.
   However this will not eliminate the problem completely since a
   pause/resume action may be issued while an update request is being
   processed by aria2c (the likelyhood of which greatly increases if
   aria is mostly stuck struggling with slow storage). The latter
   case will be addressed by tracking the timestamps of the requests
   and ignoring the download status from those update requests that
   were issued before the user action requests.
2024-07-19 07:12:43 +02:00
2024-07-18 11:14:08 +02:00
2024-07-19 07:12:43 +02:00
2024-06-25 11:18:16 +03:00
2024-03-01 22:12:06 +00:00
2022-11-30 18:05:57 +01:00
2018-12-13 17:36:05 +01:00
2017-12-03 13:49:23 +01:00
2024-03-01 22:12:06 +00:00

Download on Flathub

Kiwix Desktop

The Kiwix Desktop is a viewer/manager of ZIM files for GNU/Linux and Microsoft Windows OSes.

Release Repositories Build Status CodeFactor License: GPL v3

Disclaimer

This document assumes you have a little knowledge about software compilation. If you experience difficulties with the dependencies or with the Kiwix library compilation itself, we recommend to have a look at kiwix-build.

Dependencies

The Kiwix Desktop application relies on many third party software libraries. The following libraries need to be available:

These dependencies may or may not be packaged by your operating system. They may also be packaged but only in an older version. The compilation script will tell you if one of them is missing or too old. In the worst case, you will have to download and compile a bleeding edge version by hand.

Libkiwix has to be compiled dynamically, the best way to have it is to use kiwix-build.

Install needed packages (on Ubuntu 18.04+):

sudo apt-get install libqt5gui5 qtbase5-dev qtwebengine5-dev \
     libqt5svg5-dev qt5-image-formats-plugins aria2 \
     qttools5-dev-tools qtchooser qt5-qmake \
     qtbase5-dev-tools

Compilation

Once all dependencies are installed, you can compile Kiwix Desktop:

qmake .
make

qmake will use pkg-config to locate libraries. Depending on where you've installed libkiwix (and other libraries) you may have to update the env variable PKG_CONFIG_PATH. It can be set as follows, for example, for x86-64 native systems:

export PKG_CONFIG_PATH="<...>/BUILD_native_dyn/INSTALL/lib/x86_64-linux-gnu/pkgconfig"

You may want to simply open the kiwix-desktop project in QtCreator and then compile the project from there (don't forget to update PKG_CONFIG_PATH if necessary).

Compilation with Qt6

There is initial support for Qt6. Additional packages are needed:

sudo apt install qt6-base-dev qt6-base-dev-tools qt6-webengine-dev libqt6webenginecore6-bin libqt6svg6

And qmake needs to be configured to use Qt6. First confirm qmake is using the right version:

qtchooser -install qt6 $(which qmake6)   # run once
export QT_SELECT=qt6                     # set in environments where Qt6 builds are desired
qmake --version

produces this output:

$ qmake --version
QMake version 3.1
Using Qt version 6.2.4 in /usr/lib/aarch64-linux-gnu

then build as normal:

qmake .
make

Installation

To install Kiwix Desktop on the system:

sudo make install

Run

To run Kiwix Desktop

kiwix-desktop

You might have to refresh the ld database before:

sudo ldconfig

If you face problems such as library not found..., add the following environment variable:

LD_LIBRARY_PATH="<...>/BUILD_native_dyn/INSTALL/lib/x86_64-linux-gnu"

Communication

Available communication channels:

For more information, please refer to https://wiki.kiwix.org/wiki/Communication.

License

GPLv3 or later, see LICENSE for more details.

Description
Kiwix for Windows and GNU/Linux desktops
Readme GPL-3.0 20 MiB
Languages
C++ 92.4%
CSS 3.7%
QMake 2.2%
Python 0.9%
HTML 0.4%
Other 0.4%