Skip to content
Browser for the distributed web
Python
Branch: master
Clone or download
Latest commit a70cc34 Aug 21, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
AppImage Better use --from-appimage Aug 21, 2019
galacteek Better use --from-appimage Aug 21, 2019
screenshots Merge branch 'scheme-base32' into atom-feeds Jun 24, 2019
share Web profiles, more work on the native schemes Aug 21, 2019
tests tests: move daemon fixtures to conftest Jul 3, 2019
travis Merge branch 'webprofiles' into devel Aug 21, 2019
.gitattributes Add galacteek.desktop and .gitattributes Nov 19, 2018
.gitignore Add tox as part of the travis build Jul 3, 2019
.travis.yml CI: conditions for release on PyPI Jul 23, 2019
AUTHORS.rst Web profiles, more work on the native schemes Aug 21, 2019
CHANGELOG.rst Changes in the ipfs-search UI Jul 20, 2019
Dockerfile Dockerfile update Oct 24, 2018
LICENSE Update license and setup Apr 30, 2018
LICENSE.Qt.GPLv3 Add Qt license and AppStream metadata file Jan 14, 2019
LICENSE.go-ipfs - add donate dialogs and donation infos in the readme Jun 14, 2018
MANIFEST.in Add tox as part of the travis build Jul 3, 2019
Makefile Lots of improvements, see below Jun 13, 2019
Pipfile Change jsonschema required version (try to match the reqs of web3) Aug 3, 2019
README.rst travis: disable libmagic install in the .dmg; README update Jul 4, 2019
galacteek.appdata.xml appstream update Jun 24, 2019
galacteek.desktop Add galacteek.desktop and .gitattributes Nov 19, 2018
galacteek.pro Merge branch 'scheme-base32' into atom-feeds Jun 24, 2019
requirements-dev.txt Add support for compiling Vyper smart contracts Jul 21, 2019
requirements.txt Change jsonschema required version (try to match the reqs of web3) Aug 3, 2019
setup.cfg Changes in the ipfs-search UI Jul 20, 2019
setup.py Add galacteek.ipdapps in setup.py Aug 21, 2019
tox.ini Changes in the ipfs-search UI Jul 20, 2019

README.rst

https://gitlab.com/galacteek/galacteek/raw/master/share/icons/galacteek.png

info:A multi-platform browser for the distributed web
https://travis-ci.org/eversum/galacteek.svg?branch=master

galacteek is an experimental multi-platform Qt5-based browser/toolbox for the IPFS peer-to-peer network.

Platforms supported

  • Linux (main target)
  • FreeBSD (or any BSD OS, as long as you have PyCryptodome)
  • MacOS

This started as an experiment with quamash and is WIP.

Please prefer the ready-to-use images over a manual install if available on your platform, as they contain everything needed, including the latest go-ipfs binary.

Installation

If you use Linux or MacOS you can download a prebuilt image (an AppImage for Linux or a .dmg image for osx) from the releases page.

If you want to use QR codes on MacOS, don't forget to install zbar by running brew install zbar in a terminal.

If you use any other system or want to install the software manually you can always install from PyPI.

PyPI

You need to have python>=3.6 and pip installed. From a virtualenv, or as root, install with:

pip install galacteek

Upgrade with:

pip install -U galacteek

Or building it from source:

pip install -r requirements.txt
python setup.py build install

Now just run the application with:

galacteek

If you don't have go-ipfs already installed, the application will ask you if you want to automatically download it from dist.ipfs.io You need a recent version of go-ipfs (> 0.4.7) with the new DAG API.

For the media player to work on Linux, you will need to install the gstreamer (1.x) package and all the gstreamer plugins.

There is experimental support for reading QR codes containing IPFS addresses, using pyzbar. pyzbar depends on the zbar shared library, so make sure it's installed on your system (on Linux look for a libzbar or libzbar0 package and install it, on MacOS install it with brew install zbar).

AppImage

For Linux users (arch: x86_64), you can get an AppImage from the releases page. The script used to build the image can be found here

DMG (MacOS)

On MacOS the easiest is to download a DMG image from the releases page. MIME type detection will be faster if you install libmagic. Install zbar as well for QR codes if you want with:

brew install libmagic zbar

After opening/mounting the DMG image, hold Control and click on the galacteek icon, and select Open and accept. You probably need to allow the system to install applications from anywhere in the security settings.

Command-line usage

Use the -d command-line switch to enable debugging output. Using --profile gives you the ability to have separate application profiles (main is the default profile). Use --help for all options.

Development: Use --monitor to enable event-loop monitoring with aiomonitor (install aiomonitor manually as it's not a dependency). Then connect to the aiomonitor interface with nc localhost 50101

URL schemes

As much as possible we're trying to follow the in-web-browsers specs (URL notations are taken from there).

ipfs:// and ipns://

These are what could be considered the native schemes. The scheme handler for these schemes supports the following URL formats:

ipfs://{cidv1base32}/path/to/resource
ipns://{fqdn-with-dnslink}/path/to/resource

This scheme handler makes the requests asynchronously on the daemon (it does not use the go-ipfs's HTTP gateway). The root CID or IPNS domain of the URL is considered the authority.

We are using CIDv1 by default for all content (and starting with go-ipfs v0.4.21, they will be base32-encoded by default). If you're accessing an object within a base58-encoded CIDv1, the root CID will automatically be converted to its base32 representation so that you can use the native ipfs:// scheme.

When you are using the native handler, the URL's background color should change (you're using base32 after all!) and will look something like this:

https://gitlab.com/galacteek/galacteek/raw/master/screenshots/ipfs-scheme-urlbar.png

Note: this is a recent implementation, please report any issues. MIME type detection for rendered resources could be slow on platforms that don't have libmagic.

dweb:/

This is the legacy scheme and it will be automatically used when accessing content rooted under CIDv0 objects. Because it proxies the requests to the daemon's HTTP gateway, it can handle anything that the daemon supports:

dweb:/ipfs/{cidv0}/path/to/resource
dweb:/ipfs/{cidv1b32}/path/to/resource
dweb:/ipfs/{cidv1b58}/path/to/resource
dweb:/ipns/{fqdn-with-dnslink}/path/to/resource
dweb:/ipns/{libp2p-key-in-base58}/path/to/resource

ens://

There is support for accessing IPFS-hosted websites that are registered on the Ethereum Name Service (see ENS). Just use ens://mydomain.eth for example as a URL in the browser and you will be redirected to the IPFS website referenced on ENS for this domain.

Go to ens://blog.almonit.eth to find a list of some ENS+IPFS websites.

Features

galacteek can either spawn an IPFS daemon and use it as transport, or connect to an existing IPFS daemon. By default it will try to run a daemon. You can change the IPFS connection settings by clicking on the settings icon in the toolbar and restart the application afterwards. If using a custom daemon, you should enable pubsub or some features won't be available.

  • Browsing sessions with automatic pinning (pins every page you browse)
  • File manager with drag-and-drop support
  • Search content with the ipfs-search search engine
  • Atom feeds (subscribe to feeds on the dweb)
  • ENS (Ethereum Name Service) resolving (access to ENS+IPFS websites)
  • Sharing hashmarks over pubsub
  • Basic built-in media player with IPFS-stored playlists
  • Image viewer
  • QR codes from images
  • Decentralized application development/testing with the Javascript API (using window.ipfs)

Keyboard shortcuts

Please see the shortcuts page (or from the application, click on the Information icon in the toolbar, which will open the documentation).

Screenshots

Browsing the Wikipedia mirror over IPFS

Browsing the Wikipedia mirror over IPFS

QR codes

IPFS QR codes

Contributions and contact

Contributions and ideas are more than welcome! Contact by mail at: galacteek AT protonmail DOT com

If you want to donate to this project please use the Patreon page

Requirements

  • python3 >= 3.6
  • go-ipfs >= 0.4.7
  • PyQt5 >= 5.12.2
  • PyQtWebengine >= 5.12
  • gstreamer (on Linux) for media player support
  • quamash
  • aiohttp
  • aioipfs

License

galacteek is offered under the GNU GPL3 license

Some elements from the ipfs-css repository (CSS files and fonts) are included.

Some icons from the "Oxygen" icons set are included.

Some of the beautiful artwork (under the Creative Commons CC-BY-SA license) from the ipfs-logo project's repository is included, unchanged.

You can’t perform that action at this time.