Skip to content
/ futr Public
forked from futrnostr/futr

nostr client app written in haskell and qt5

License

Notifications You must be signed in to change notification settings

starius/futr

 
 

Repository files navigation

futr - nostr client

nostr client desktop app written in Haskell and Qt5.

The name 'futr' was chosen out of respect for the honorable Canadians.

License

Released under GPLv3.

See License File.

For developers

Linux

GHCUp

sudo apt-get install build-essential zlib1g-dev

curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
ghcup install ghc 9.6.6
ghcup install cabal 3.10.3.0
ghcup set ghc 9.6.6
ghcup set cabal 3.10.3.0

For QT:

sudo apt-get install qtdeclarative5-dev && \
                     libqt5quick5 && \
                     qttools5-dev-tools && \
                     qtbase5-dev && \
                     qt5-image-formats-plugins

For secp256k1 (from source)

sudo apt-get install autoconf autogen automake libtool

git clone https://github.com/bitcoin-core/secp256k1 && \
    cd secp256k1 && \
    ./autogen.sh && \
    ./configure --enable-module-schnorrsig --enable-module-extrakeys --enable-module-ecdh --enable-experimental --enable-module-recovery && \
    make && \
    make install && \
    cd ..

For building AppImage

wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage && \
    chmod +x linuxdeploy-x86_64.AppImage                                                                     && \
    sudo mv linuxdeploy-x86_64.AppImage /usr/bin                                                                  && \
    wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage   && \
    chmod +x appimagetool-x86_64.AppImage                                                                    && \
    sudo mv appimagetool-x86_64.AppImage /usr/bin

Building

cabal build

Building AppImage

cabal build
./build-appimage.sh

MacOS

@todo

Windows

Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { Invoke-Command -ScriptBlock ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -ArgumentList $true } catch { Write-Error $_ }
ghcup install ghc 9.6.6
ghcup install cabal 3.10.3.0
ghcup set ghc 9.6.6
ghcup set cabal 3.10.3.0

@todo

Profiling

Install ghc-prof-flamegraph if you haven't already

cabal install ghc-prof-flamegraph

Build and run the program with profiling

cabal build --enable-profiling --ghc-options="-fprof-auto -rtsopts"
LC_ALL=C cabal run --enable-profiling futr -- +RTS -p

Watch the output

less futr.prof

Generate the flamegraph

ghc-prof-flamegraph futr.prof

Open the generated file in your browser

xdg-open futr.svg

About

nostr client app written in haskell and qt5

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 72.6%
  • QML 27.2%
  • Shell 0.2%