Pass Viewer

Your rating: None Average: 4.9 (18 votes)

This is a simple viewer for PassBook® files.

The app searches the file system, starting in the home directory, for passes, and shows them in a list. A tap on the pass shows the details including the barcode (usually the most important thing). The design is simplified compared to the original app, but should be readable.

Passes close to the relevant time are highlighted. It's also possible to highlight passes close to relevant coordinates (check settings). The top highlighted pass is shown on the cover, with the cover action opening the pass directly. Also, highlighted passes are shown in the event view, while the app is running. Calendar entries can be made from passes with a relevant time.

Passes containing an update link may be updated. Changed fields will be marked the first time the pass is viewed after the update.

License: MIT/BSD

Application versions: 
File harbour-passviewer-0.1-1.armv7hl.rpm101.06 KB25/04/2015 - 20:13
File harbour-passviewer-0.2-1.armv7hl.rpm109.88 KB10/05/2015 - 19:05
File harbour-passviewer-0.3-1.armv7hl.rpm132.16 KB22/05/2015 - 21:51
File harbour-passviewer-0.3-2.armv7hl.rpm133.2 KB08/06/2015 - 22:13
File harbour-passviewer-0.4-1.armv7hl.rpm130.57 KB20/06/2015 - 20:15
File harbour-passviewer-0.4-2.armv7hl.rpm131.66 KB25/06/2015 - 23:55
File harbour-passviewer-0.5-1.armv7hl.rpm132.22 KB29/06/2015 - 22:16
File harbour-passviewer-0.6-1.armv7hl.rpm138.48 KB19/07/2015 - 21:37
File harbour-passviewer-0.7-1.armv7hl.rpm147.6 KB02/08/2015 - 15:54
File harbour-passviewer-0.8-1.i486.rpm156.29 KB16/10/2015 - 20:33
File harbour-passviewer-0.8-1.armv7hl.rpm150.11 KB16/10/2015 - 20:33
File harbour-passviewer-0.9-1.i486.rpm201.29 KB21/12/2015 - 21:35
File harbour-passviewer-0.9-1.armv7hl.rpm192.84 KB21/12/2015 - 21:35
File harbour-passviewer-0.10-1.i486.rpm222.37 KB19/01/2016 - 00:18
File harbour-passviewer-0.10-1.armv7hl.rpm209.47 KB19/01/2016 - 00:18
File harbour-passviewer-0.11-1.i486.rpm211.52 KB06/02/2016 - 15:34
File harbour-passviewer-0.11-1.armv7hl.rpm194.71 KB06/02/2016 - 15:34
File harbour-passviewer-1.0-1.i486.rpm212.8 KB17/02/2016 - 23:09
File harbour-passviewer-1.0-1.armv7hl.rpm198.33 KB17/02/2016 - 23:09
File harbour-passviewer-1.1-1.i486.rpm217.46 KB03/04/2016 - 14:03
File harbour-passviewer-1.1-1.armv7hl.rpm202.88 KB03/04/2016 - 14:03
File harbour-passviewer-1.2-1.i486.rpm218.86 KB13/09/2017 - 20:07
File harbour-passviewer-1.2-1.armv7hl.rpm201.39 KB13/09/2017 - 20:07
File harbour-passviewer-1.3-1.i486.rpm228.69 KB07/01/2019 - 20:05
File harbour-passviewer-1.3-1.armv7hl.rpm214.95 KB07/01/2019 - 20:05
File harbour-passviewer-1.4-2.armv7hl.rpm216.54 KB27/01/2019 - 22:06
File harbour-passviewer-1.4-2.i486.rpm229.61 KB27/01/2019 - 22:06
File harbour-passviewer-1.4-2.aarch64.rpm235.37 KB18/07/2021 - 11:14
File harbour-passviewer-1.5-2.aarch64.rpm227.97 KB01/01/2022 - 14:59
File harbour-passviewer-1.5-2.armv7hl.rpm217.14 KB01/01/2022 - 14:59
File harbour-passviewer-1.5-2.i486.rpm245.65 KB01/01/2022 - 14:59
File harbour-passviewer-1.6-2.aarch64.rpm229.36 KB21/04/2024 - 20:11
File harbour-passviewer-1.6-2.armv7hl.rpm218.01 KB21/04/2024 - 20:11
File harbour-passviewer-1.6-2.i486.rpm247.34 KB21/04/2024 - 20:11

- Barcodes can now contain NUL characters
- Spanish translation added (thanks to Carmen F. B.)
- Settings storage fixed (also thanks to Carmen F. B.)


Maximilian1st's picture

Hi, I have a pkpass from the SWISS flight company and there should be two tickets inside but only the first one is displayed.

p2501's picture

pkpass files can only contain one ticket each. If you have two tickets, you should have two files.

I suspect it's a boarding pass. These days, if you have two connecting flights with the same airline, you sometime get only one boarding pass that is valid on both flights. Check the Departure and Arrival in the pass.

fingus's picture

Great App, i using it for Cinema, works great!

rob_k's picture

Great stuff! No more pdf files somewhere to be found at the right moment. Thanks! (BTW I had to unzip a downloaded ticket before it actually showed itself.)

raphman's picture

Thanks for Pass Viewer!

I have encountered a problem with a Deutschlandticket .pkpass file (format: PKBarcodeFormatAztec)

Unfortunately, the message field contains null bytes. When Pass Viewer parses the message field (Qt.btoa(pass.barcodes[barcode].message)),  the first null byte terminates the string, resulting in a truncated, invalid barcode to be rendered. Not sure what the best way to fix this issue would be.

p2501's picture

I deleted my former comment as it was wrong and unfair towards Qt.

btoa actually isn't at fault here. It does what it's supposed to. I'm running in two problems later in the process.

Problem number one: Before the message can be turned into a barcode, it has to be converted to the required character encoding. I've been using Qt's character encoding methods for this, but appearantly, those don't handle NUL characters in strings. I can circumvent the problem by using the iconv function, which is part of the standard C library.

Number two: I'm using libzint to create the actual barcodes, and the version of libzint I'm currently using erroneously considers NUL characters to be invalid in Aztec codes. The current version doesn't seem to have this problem, so I guess I'll have to update the library packaged with the App. There has been a big overhaul of libzint, so this may take a bit of time.

I'll try to get this fixed before I travel to Munich at the end of the month.

p2501's picture

Okay, it should work now. In case somebody runs into the same problem: The character set conversion didn't work properly, because the default QByteArray to QString conversion stops at NUL characters (this is fixed in Qt Version 6). Use a method where you specifiy the length of the conversion string, and you should be fine.

maier's picture

Thank you!

ninepine's picture

Fixed thanks!

p2501's picture

Good to know. Thanks! As I don't have a 64-bit device, I can't test the 64-bit packages myself.

In case anybody wonders: The package accidentally asked for both the 64-bit version and the 32-bit version of libbz2. Only the 64-bit version is present (and actually required).

baxyz's picture

Same here X-D

ninepine's picture

Nothing provides

p2501's picture is on the list of allowed required libraries. It should be in the system repo and automatically installed. Looks like it's missing. I also submitted the 64-bit version to the Harbour. Let's see what they say.

If there is no other quick solution, I might also patch out the BZip2 support for now. I don't think the BZip2 compression is in actual use in passes, so the feature probably isn't needed anyway.

slava's picture

On my 64-bit device:

[root@Xperia10II-DualSIM ~]# rpm -ql --requires -p /tmp/harbour-passviewer-1.4-2.aarch64.rpm | grep libbz2
[root@Xperia10II-DualSIM ~]# rpm -q --provides bzip2-libs
bzip2-libs = 1.0.8+git1-1.1.38.jolla
bzip2-libs(aarch-64) = 1.0.8+git1-1.1.38.jolla
[root@Xperia10II-DualSIM ~]# 

bzip2-libs doesn't provide

You're probably adding this dependency manually. Don't do that, let rpmbuild to figure it out.

p2501's picture

You are correct. There where still manual REQUIRE entries from way back. I removed them, rebuilt and replaced the package. Please try again.

slava's picture

It does install now.

baxyz's picture

Same here

ninepine's picture

Getting an error when trying to install the aarch64 on Xpedia 10ii. Will try again after a refresh



p2501's picture

I'm currently bogged down. However, I should be able to resume work on this app mid July (this year ;-) ). Next version will mostly be technical changes for the current versions of SailfishOS, but also some UI upgrades.

ninepine's picture

Yes agreed @cquence an aarch64 version would be much appreciated please!

cquence's picture

A 64bit version of the app would be great!

will99's picture


I recently had an event where the format for the barcode is missing in the json:

  "barcode": {
    "format": "",
    "message": ":3742",
    "altText": ":3742",
    "messageEncoding": "iso-8859-1"

Maybe instead of not showing any barcode, there should be a fallback code like: code128. I don't know how other viewers behave or maybe there is a standard fallback code...

Anyway, still a very helpful app...



p2501's picture

I guess I could default to QR-Codes (as they are the most common type).

useretail's picture


dfstorm's picture

Thanks for this app :) It work very well (and thanks again for the "full screen code"). If it's not too much to ask I would follow on @cartron comment: adding the date in the list would be a great addition.

cartron's picture

works well, thanks very much! that was very much needed for SFOS.

One request maybe: any way to add the date for the travel? I just have a list with "origine->destination" for train tickets, so I have to click on each pkpass to find the correct one - or maybe allow order to be changed?

p2501's picture

I'll see what I can do in a future release. You gave me an idea or two how to handle this.

llv95dno's picture

Hi again. You might be right that the download from the Exchange-account get distorted somehow. The attachments from both accounts seems to be stored in the Downloads-folder, so no need for adjustment in that aspect. When I compare the files, they are both zip-archives but it seems like there is data missing (not completley empty files) in the attachment at the Exchange-account. Hopefully something can be done Jolla in future updates.

llv95dno's picture

Hi, the app works fine with .pkpass attachment sent to gmail-account configuered on my Xperia X, but it does not seem to find any attachments sent to a MS Exchange-account, but that maybe is as expected. It could be very useful to make it discover attachments in exchange if that could be possible.

p2501's picture

There seems to be a problem with the Sailfish Exchange plugin. With some servers (like some versions of Zimbra), attachements don't get downloaded, just empty files. If that happens, they won't show up in this app.

If you're certain that the attachements get downloaded properly, the problem may be that they end up somewhere in the file system where the app doesn't look for it. I can fix this, but only if I know where to look (I don't have an exchange account, so I can't check myself).