Coder Social home page Coder Social logo

cloaklet / cloaklet Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 441 KB

A simple GUI app wrapping around gocryptfs for macOS.

License: GNU General Public License v3.0

QML 63.23% C++ 8.94% Go 26.86% C 0.12% Objective-C 0.85%
qml go golang qt5 gocryptfs

cloaklet's Introduction

Cloaklet

A simple GUI app wrapping around gocryptfs. Currently usable on macOS.

UI and interaction is mimicked from Cryptomator.

How to build

Tool dependencies

You should have the following tools installed:

  • Qt5 suite: brew install qt5.
  • Clang: xcode-select --install to install the CommandLine Tools from Apple.
  • Go: brew install go, 1.14 would be fine.
  • qamel: go get -u -v github.com/go-qamel/qamel/cmd/qamel in project root to install.

Setup qamel profile

  • Run brew info qt5 to print the caveats for the installed Qt5 formula. What we need is the path to Qt tools, typically located at /usr/local/opt/qt/bin.
  • Run qamel profile setup to setup the default profile, it will ask you for path of each tool, use these:
    • For Qt tools dir, use the one you got from brew info qt5
    • For C compiler, use /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
    • For C++ compiler, use /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++

Build for development

When building for development it's not necessary to create an application bundle, instead we just need a executable binary file. The binary file alone is fast to compile thus saves a lot of time.

Generate moc headers

Qt's moc (Meta Object Compiler) is used to generate a header file specific to the extend.h file. This file provides some extended functionality via CGO, including a QML type named MousePos which provides MousePos.pos() slot to effeciently get current cursor coordinates.

# This will generate "moc-extend.h" file
/usr/local/opt/qt/bin/moc -o moc-extend.h extend.h

Build the binary

qamel build to build with the default profile. Run with ./Cloaklet.

Build for release

Just run go run build.go buildBundle, it should do all the building and bundling stuff and generates Cloaklet.app bundle. Double click it to start the app.

Notice

If the compiler complains about finding std library headers, you might need to set the Apple SDK path like this before running build command:

export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)"

License

GPL v3, see LICENSE file.

cloaklet's People

Contributors

jokerqyou avatar

Watchers

 avatar  avatar

cloaklet's Issues

Primary TODOs

  • Mount options
    • Read-only mount
    • Custom mount point
    • Post-mount action: nothing / reveal drive / ask
    • Change password
  • Auto start

I have a feeling that we might soon move to a native stack like Objective-C or Swift for some detailed benefits (e.g. pre-quit callback), but let's finish this list before it happens so we could know how well the interaction logic works.

Wrong font used

Previously we've packed Open Sans fonts into this repository, but after migrating from C++ to Golang (qamel) we've lost the ability to set custom fonts that are not installed on the host OS.

Might involve some cgo related stuff to fix this.

Lock all vaults before quitting

Or show a confirmation popup before quitting, by intercepting some Qt events.

Otherwise the gocryptfs processes would be moved to be children of launchd, which is not ideal since they keep vaults decrypted.

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.