Git Product home page Git Product logo

hyperplane's Introduction

Hyperplane

A non-hierarchical file manager

Warning

This project is currently in BETA. You can try it out at your own risk, but be aware that things might break, it might have annoyances, DATA LOSS may occur and it may kill your cat.

For now, I recommend only trying it if you have a recent backup of your files.

The project

The problem is that current methods for tagging files are OS-, file system- or application-specific and not portable.

The app was primarily built as a proof of concept for a non-hierarchical file manager whose storage can still be conveniently browsed via conventional file managers.

It is also a playground for design ideas like file extension badges or a symbolic grid view.

The concept

Hyperplane stores its 'tags' (called categories) on disk as regular directories.

File A tagged 'Pictures', 'Art' and 'Animals' would be stored at /Pictures/Art/Animals/ on disk.

File B tagged 'Videos' and 'Art' would be stored at /Videos/Art/.

When filtering for files tagged 'Art' however, both of these would show up.

The app keeps track of the list of categories in a .hyperplane file at the root of the Hyperplane directory. (Which is $HOME by default, but can be changed with the $HYPHOME environment variable.)

The name

https://en.wikipedia.org/wiki/Hyperplane

It is subject to change.

Testing

The project is currently in beta. Most features work, but user experience still needs refinement.

If you want to test without risking data loss, please set the $HYPHOME environment variable to point to somewhere inside ~/.var/app/page.kramo.Hyperplane.Devel/ and remove the app's --filesystem=host access.

You can download the latest beta from the Releases page or the latest in-development version from here.

You will need the GNOME Nightly runtime installed to be able to test the app.

Please report any and all issues you find!

UX suggestions and missing feature reports are also welcome, even if it seems obvious.

Contributing

If you want to help with code or design, please reach out or file an issue before making a pull request. That being said, I appreciate any help!

Code

Building

git clone https://github.com/kra-mo/hyperplane.git
cd hyperplane
meson setup build
ninja -C build install

Code style

All code is auto-formatted with Black and linted with Pylint. Imports are sorted by isort.

VSCode extensions are available for all of these and you can set them up with the following settings.json configuration:

"python.formatting.provider": "none",
"[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    },
},
"isort.args":["--profile", "black"],

For other code editors, you can install them via pip and invoke them from the command line.

Translations

Strings are not final yet, I will set up translations closer to an initial release.

Code of Conduct

The project follows the GNOME Code of Conduct.

See CODE_OF_CONDUCT.md.

hyperplane's People

Contributors

kianmeng avatar kra-mo avatar monsterobserver avatar rdbende avatar theevilskeleton avatar yakushabb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hyperplane's Issues

Better summary

The current summary "Manage your files like never before!" is longer than 35 characters, the exclamation mark is off-style, and it's not very descriptive. Maybe "Manage your files with tags", or something else mentioning tags?

Feedback on the ALPHA hyperplance concept

Hi,

Congrats for exploring the world of non-hierarchical file management methods and thanks for your prototype!

With the experience from tagstore (a research software to explore aspects of tagging files which was part of my PhD on that topic) and filetags (my current method) I'd like to give some feedback on the concept.

First, a few comments on the README file from your repository.

The problem is that current methods for tagging files are OS-, file system- or application-specific and not portable.

As far as I understood your concept, your app offers its non-hierarchical file retrieval method in an application-specific way which is not available when using File Open/Save dialoges in applications or other file managers. So I would suggest that you should mention that your solution may not address the issue of having application-specific interfaces for tags.

Hyperplane stores its 'tags' (called categories) on disk as regular directories.

To my understanding, "tags" are different from "categories".

While one item may be categorized with one single category, it may have multiple tags which offers multi-classification. Therefore, I'd overthink your naming scheme before settling with names that might cause misunderstanding.

File A tagged 'Pictures', 'Art' and 'Animals' would be stored at /Pictures/Art/Animals/ on disk.

I do have food for thought for you. My filetags method implements a concept I named "TagTrees". You can learn about it in this article or in the README of filetags. Basically, it provides access to files tagged with 'Pictures', 'Art' and 'Animals' in paths that reflect all different permutations of those three tags:

  • Pictures/Art/Animals/
  • Pictures/Animals/Art/
  • Art/Pictures/Animals/
  • Art/Animals/Pictures/
  • Animals/Pictures/Art/
  • Animals/Art/Pictures/

This allows for not having to remember absolute paths or orders of tagging.

The app keeps track of the list of categories in a .hyperplane file at the root of the Hyperplane directory.

You did not specify where the tags-to-file-relations are stored. I assume it is in this .hyperplane file.

If so, you introduced fragile tag-to-file-relations: if a file gets renamed, you'll probably lose the association to the tags.

The name

https://en.wikipedia.org/wiki/Hyperplane

It is subject to change.

Yes, you should definitely change it as soon as possible. "Hyperplane" is a well-known concept already and you'll get a hard time to be found via search engines when you try to overwrite that concept name.

In general, I'm personally still not convinced of any file store and retrieval UI which offers great assistant but is only specific to that single interface.

If you might want to overthink this approach to truly assist an independent method, you might as well take any existing method and offer an additional UI for it. So you could adapt your tool to visualize files stored in the concept of TagSpaces, denote, fs-curator (I'm not very familiar with this) or even my filetags. The latter would have the advantage that there's no specific GUI tool which could serve as an alternative to TagTrees sub-hierarchy generation (which could take many resources especially on NTFS-systems) available at the moment, if you don't count filetags.el (for Emacs dired).

Whatever you do, have fun working on your project, exploring the world of non-hierarchical file storage and retrieval methods.

Pathbar behaves weirdly when using a Google Drive (and possibly others)

  • No pretty names shown, only the id from the URI
  • Navigation is a bit broken
Bildschirmaufzeichnung.vom.2024-01-13.21-41-01.webm

Unfortunately, I don't have time to debug this at the moment :/

PS: please ignore the fact, that Hyperplane was frozen for a couple of seconds after opening that folder :D

attempting to tag a file destroys the file

when using the sidebar to tag a file, the file is deleted.

version: v0.4.1-beta, installed from releases
operating system: Fedora Linux 39

steps to replicate:

  1. navigate to a tag
  2. drag a file to the sidebar and drop it on another tag

aarch64 builds

Just tried to run on my linux mobilephone, but realized its x86_64 ๐Ÿ˜…

since we are still missing a nice browser, any chance to try aarm64?

or how to compile on alpine?

thanks for your work!

Build from source results in permission error

git clone https://github.com/kra-mo/hyperplane.git
cd hyperplane
meson setup build
ninja -C build install

results in a successful install, but then

hyperplane gives zsh: permission denied: /usr/local/bin/hyperplane

And the .desktop file gives

image

Improve recents view

These would be nice to have:

  • Initiate the drag and drop operation with the item's real path, as the recent:// URI doesn't work in most places.
  • Add an option to copy real path
  • Add an option to show the item in the containing folder
  • Add an option to remove the item from recents

How about an AppImage?

IMO this will be the easiest way for folks to try the App out and reports any issues...

Use gfvs extended attributes to store tags

Dear Developer,

Thanks for your work on Hyperplane.
It seems to use a sub-directories system to implement tags.
It would be nice to use normal directory structure, and gvfs extended attributes to store tags.
This could allow to preserve user's directory system, and avoid to duplicate files ...

Thanks

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.