Code Monkey home page Code Monkey logo

labyrinth's Introduction

Labyrinth

No-one is actively maintaining Labyrinth at the moment. If you're interested in taking it on, please open an issue to discuss it.

Labyrinth is a lightweight mind-mapping tool, written in Python using Gtk and Cairo to do the drawing. It is intended to be as light and intuitive as possible, but still provide a wide range of powerful features.

A mind-map is a diagram used to represent words, ideas, tasks or other items linked to and arranged radially around a central key word or idea. It is used to generate, visualise, structure and classify ideas, and as an aid in study, organisation, problem solving, and decision making. (From wikipedia)

Currently, Labyrinth provides 3 different types of thoughts, or nodes - Text, Image and Drawing. Text is the basic standard text node. Images allow you to insert and scale any supported image file (png, jpeg, svg). Drawings are for those times when you want to illustrate something, but don't want to fire up a separate drawing program. It allows you to quickly and easily sketch very simple line diagrams.

License

This software is released under the GNU GPL v2 (or later) license. All source files are included in this, unless explicitly stated in the source file itself. For copyright owners, please refer to the source files individually.

The "labyrinth" icon (data/labyrinth.svg and data/labyrinth-*.png) is copyright Josef Vybíral and is released under the GNU GPL v2 license.

Please refer to the "COPYING" file for a complete copy of the GNU GPL v2 license.

All documentation (This file, anything in the docs directory) released with this package is released as public domain. The documentation, you can do with as you please.

Requirements

  • Python >= 2.6
  • gtk+
  • pygtk
  • pygobject
  • pycairo
  • PyXDG

The minimum required versions are unknown, but any reasonably recent packages should work.

How to use it

From the top directory of the package, run the command:

./labyrinth

You can also install Labyrinth with python setup.py install, and ./install_data_files.sh for icons and translations. It can then be run as labyrinth.

This will open a browser window, showing you all the maps currently available and allow you to modify / delete them and create new maps. The title is (currently) the primary thought text(truncated to 27 characters long). This is usually the first thought created in a new map.

In a new map, single click somewhere to create a new "thought". This is your root. Add your main thought to this. Click somewhere else will create a new thought, linked to the first. To move thoughts around, single-click and drag. To edit a current thought, double click on it (text thoughts only).

Drawing and Image thoughts can be resized using their corners / sides.

Links between thoughts can be created, strengthened and weakened. To create a new link, in edit mode, click and drag from the "parent" thought to the "child" thought while holding down the ctrl key. Doing this with a link already in place will strengthen the link by 1 and dragging from child to parent will weaken the link by 1. If the link goes to 0 strength (it starts at 2), the link is deleted. Links can also be created / deleted by selecting both thoughts (hold down the shift key to select > 1 thought) and choosing "Edit->(Un)Link Thoughts" from the menu (shortcut: Ctrl-L).

Loading and saving of maps is in the tomboy style - they are automatically saved, you shouldn't have to worry about them. For reference anyway, the maps are saved in $XDG_DATA_HOME/labyrinth/<longstring>.map. Please see the Freedesktop basedir specification for more information http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

Future Plans

In doc/TheFuture, there are a list of goals for a 1.0 release and for the next release. Releases are feature-based at this stage. Once all the required features are in place, a release is made.

However a release may also be made without all the changes if it is deemed that this is in the best interest.

Getting the Latest Development Code

Development happens on Github. See https://github.com/labyrinth-team/labyrinth

Helping Out and Questions

If you have any questions about Labyrinth or just want to be part of our gang, the mailing list address is [email protected]

If you want to help out with developing labyrinth, please let us know on the mailing list. We aren't just looking for coders. We're looking for packagers, artists, doc writers, interface designers, web developers, and just about anyone else.

Translations now take place on Transifex. If you want to use Transifex in your language, it's very easy to get started.

labyrinth's People

Contributors

cosimoc avatar matze avatar ropp avatar sanjayankur31 avatar takluyver 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

Watchers

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

labyrinth's Issues

Need to upgrade to use newer GNOME runtime

% flatpak update
Looking for updates…
Info: org.gnome.Platform is end-of-life, with reason: The GNOME 3.34 runtime is no longer supported as of 14th August 2020. Please ask your application developer to migrate to a supported platform.
Info: org.gnome.Platform.Locale is end-of-life, with reason: The GNOME 3.34 runtime is no longer supported as of 14th August 2020. Please ask your application developer to migrate to a supported platform.

%flatpak list --app --columns=name,runtime | grep "3\.34"   
Labyrinth	org.gnome.Platform/x86_64/3.34

% flatpak info com.github.labyrinth_team.labyrinth

Labyrinth - A light weight mind mapping tool

          ID: com.github.labyrinth_team.labyrinth
         Ref: app/com.github.labyrinth_team.labyrinth/x86_64/stable
        Arch: x86_64
      Branch: stable
     Version: 0.6
     License: GPL-2.0
      Origin: flathub
  Collection: org.flathub.Stable
Installation: user
   Installed: 91.3 MB
     Runtime: org.gnome.Platform/x86_64/3.34
         Sdk: org.gnome.Sdk/x86_64/3.34

      Commit: 1b1ff107a6ef87cbf3c6670162e1c75146a0308bc501c46267a9cb4b6141253a
      Parent: 09611ff95e2444e5a7e6219a633f1134becab0c6b8ea3b08415dfd98e21f474b
     Subject: Rename & install the metainfo (1873027c)
        Date: 2020-01-26 19:04:51 +0000

EDIT: Sorry, this belongs in flatpak issues, not the application.

Disappearing elements' content

Hi! Is the development active again?

I remember there was a bug that caused elements' content to disappear. The contents were correct but after I save the file and load the map again, some of the elements are empty text. Possibly related to ghost nodes?

Archlinux-i3wm-Slowdown

There are several instances when creating/editing/moving around nodes that the program will hang. I am not sure what the cause is.

Arrowheads

I'd like a way to draw arrowheads on lines.

Windows 8

my machine was upgraded to Windows 8 for work and Labyrinth stopped launching. any idea if there's a simple fix? thanks!

Really nice project, but fairly unusable right now

Really nice project, but fairly unusable right now. Critical bugs:

  • pressing ctrl-s doesnt just save. I prefer to save after every action, ie every 20-30 seconds. The 'save as...' dialog box gets olds pretty quickly...
  • selecting nodes takes a really long time. seconds. this also gets old really quickly

Otherwise, this does really want I want :-) I have tried prior to this:

  • xournal (ok, but no connectors)
  • inkscape (no connectors...)
  • libreoffice impress (connectors only snap to 4 different locations, ie top/bottom/left/right, which looks really ugly really fast
  • mind map (on Android). really niceeee, but display too small, being a phone
  • vym (ugly, connections dont connect in hte way I'd like)

Please fix the ctrl-s, and the weird selection lag, and this project will be perfect :-)

Better linking

Currently, to link two nodes, one has to perform a fairly complex sequence of gestures:

  1. Click one node
  2. Shift+click another node
  3. Ctrl+L

It would be nice if Ctrl+click could be used in step 2.

Can't edit a new text thought after making an image thought

  1. New map
  2. Image mode
  3. Click on the map to add thought, select image
  4. Switch back to text mode
  5. Click on the map to add thought.

Thought appears, but can't edit text. In a terminal, I see tracebacks like this:

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/labyrinth_lib/MMapArea.py", line 761, in expose
    self.draw (event, context)
  File "/usr/lib/python2.7/dist-packages/labyrinth_lib/MMapArea.py", line 798, in draw
    t.draw(context)
  File "/usr/lib/python2.7/dist-packages/labyrinth_lib/TextThought.py", line 333, in draw
    r, g ,b = utils.gtk_to_cairo_color(utils.default_colors["text"])
  File "/usr/lib/python2.7/dist-packages/labyrinth_lib/utils.py", line 151, in gtk_to_cairo_color
    return (color.red / 65535.0, color.green / 65535.0, color.blue / 65535.0)
AttributeError: 'tuple' object has no attribute 'red'

crashes on MacOS X possibly due to cairo init_cairo()

Usage:

$ ./labyrinth
Fatal Python error: PyThreadState_Get: no current thread
Abort trap: 6

Crash details:

Process:         Python [XXX]
Path:            /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
Identifier:      Python
Version:         2.7.X (2.7.X)
Code Type:       X86-64 (Native)
Parent Process:  bash [XXX]
Responsible:     iTerm [XXX]
User ID:         XXX

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x000012ee835ee866 __pthread_kill + 10
1   libsystem_pthread.dylib         0x000012ee870c135c pthread_kill + 92
2   libsystem_c.dylib               0x000012ee84c5bb1a abort + 125
3   org.python.python               0x0000001508341b37 Py_FatalError + 49
4   org.python.python               0x0000001508341019 PyThreadState_Get + 28
5   org.python.python               0x000000150833de76 Py_InitModule4_64 + 62
6   _cairo.so                       0x0000001508287eb2 init_cairo + 498
7   org.python.python               0x0000001a01028932 _PyImport_LoadDynamicModule + 150
8   org.python.python               0x0000001a01028649 0x100123000 + 620105
9   org.python.python               0x0000001a01028225 0x100123000 + 619045
10  org.python.python               0x0000001a01026522 PyImport_ImportModuleLevel + 1153
11  org.python.python               0x0000001a0100c776 0x100123000 + 505718
12  org.python.python               0x0000001a00f9af72 PyObject_Call + 101
13  org.python.python               0x0000001a0101701f PyEval_CallObjectWithKeywords + 93
14  org.python.python               0x0000001a01014110 PyEval_EvalFrameEx + 12115
15  org.python.python               0x0000001a01011093 PyEval_EvalCodeEx + 1641
16  org.python.python               0x0000001a01010a24 PyEval_EvalCode + 54
17  org.python.python               0x0000001a010250bc PyImport_ExecCodeModuleEx + 247
18  org.python.python               0x0000001a01027c00 0x100123000 + 617472
19  org.python.python               0x0000001a01027e7c 0x100123000 + 618108
20  org.python.python               0x0000001a01028649 0x100123000 + 620105
21  org.python.python               0x0000001a01028225 0x100123000 + 619045
22  org.python.python               0x0000001a01026522 PyImport_ImportModuleLevel + 1153
23  org.python.python               0x0000001a0100c776 0x100123000 + 505718
24  org.python.python               0x0000001a00f9af72 PyObject_Call + 101
25  org.python.python               0x0000001a00f9b101 0x100123000 + 41217
26  org.python.python               0x0000001a00f9b08f PyObject_CallFunction + 187
27  org.python.python               0x0000001a01025fb6 PyImport_Import + 404
28  org.python.python               0x0000001a01024687 PyImport_ImportModule + 31
29  org.python.python               0x0000001a00fa7de7 PyCObject_Import + 18
30  _gtk.so                         0x0000001a01514ff8 init_gtk + 608
31  org.python.python               0x0000001a01028932 _PyImport_LoadDynamicModule + 150
32  org.python.python               0x0000001a01028649 0x100123000 + 620105
33  org.python.python               0x0000001a0102844e 0x100123000 + 619598
34  org.python.python               0x0000001a010265db PyImport_ImportModuleLevel + 1338
35  org.python.python               0x0000001a0100c776 0x100123000 + 505718
36  org.python.python               0x0000001a00f9af72 PyObject_Call + 101
37  org.python.python               0x0000001a0101701f PyEval_CallObjectWithKeywords + 93
38  org.python.python               0x0000001a01014110 PyEval_EvalFrameEx + 12115
39  org.python.python               0x0000001a01011093 PyEval_EvalCodeEx + 1641
40  org.python.python               0x0000001a01010a24 PyEval_EvalCode + 54
41  org.python.python               0x0000001a010250bc PyImport_ExecCodeModuleEx + 247
42  org.python.python               0x0000001a01027c00 0x100123000 + 617472
43  org.python.python               0x0000001a01027e7c 0x100123000 + 618108
44  org.python.python               0x0000001a01028649 0x100123000 + 620105
45  org.python.python               0x0000001a01028263 0x100123000 + 619107
46  org.python.python               0x0000001a01026522 PyImport_ImportModuleLevel + 1153
47  org.python.python               0x0000001a0100c776 0x100123000 + 505718
48  org.python.python               0x0000001a00f9af72 PyObject_Call + 101
49  org.python.python               0x0000001a0101701f PyEval_CallObjectWithKeywords + 93
50  org.python.python               0x0000001a01014110 PyEval_EvalFrameEx + 12115
51  org.python.python               0x0000001a01011093 PyEval_EvalCodeEx + 1641
52  org.python.python               0x0000001a01010a24 PyEval_EvalCode + 54
53  org.python.python               0x0000001a010250bc PyImport_ExecCodeModuleEx + 247
54  org.python.python               0x0000001a01027c00 0x100123000 + 617472
55  org.python.python               0x0000001a01028649 0x100123000 + 620105
56  org.python.python               0x0000001a01028225 0x100123000 + 619045
57  org.python.python               0x0000001a01026522 PyImport_ImportModuleLevel + 1153
58  org.python.python               0x0000001a0100c776 0x100123000 + 505718
59  org.python.python               0x0000001a00f9af72 PyObject_Call + 101
60  org.python.python               0x0000001a0101701f PyEval_CallObjectWithKeywords + 93
61  org.python.python               0x0000001a01014110 PyEval_EvalFrameEx + 12115
62  org.python.python               0x0000001a01017864 0x100123000 + 551012
63  org.python.python               0x0000001a010144d4 PyEval_EvalFrameEx + 13079
64  org.python.python               0x0000001a01011093 PyEval_EvalCodeEx + 1641
65  org.python.python               0x0000001a01010a24 PyEval_EvalCode + 54
66  org.python.python               0x0000001a0102fc2c 0x100123000 + 650284
67  org.python.python               0x0000001a0102fcd3 PyRun_FileExFlags + 137
68  org.python.python               0x0000001a0102f821 PyRun_SimpleFileExFlags + 718
69  org.python.python               0x0000001a01040363 Py_Main + 2995
70  libdyld.dylib                   0x000012ee87c4d5fd start + 1

Some numbers have been redacted for privacy.

Crash when using ä symbol

Working on a website thought that had the word Näläkä. Though it worked, but when I closed the about page after viewing the homepage it crashed with no report. Loading the page showed the box but it had no words in it.

Undefined names in TextThought.delete_surroundings()

Pyflakes points out that this method refers to variables old and local_bytes which are never defined. It's not clear what they should be, although perhaps old should be orig (which is defined).

These were already missing when TextThought was refactored 4 years ago (185c2c4). I think this method is only called when using advanced input methods, like those for entering Chinese, so I don't know how to test it.

Support input method

The node can only input english, can't switch to other input method.

I run labyrinth 0.6 on archlinux with fcitx input method tool.

Ghost nodes

There seem to be one or more empty thoughts. They are impossible to grasp…

I can't select, edit or move them. Is this intended as a mechanism to clear ones head?

(Just a test mindmap, not real thoughts…)
labyrinth screenshot ghost node

Creating links in the system

It would be handy to have links clickable.
Other ideas involving this:
It would look at the content and take a snapshot of it so I could view it later.
If a picture then it woulld automatically download and show the picture there.
If a video (not sure how yet) but it would be playable.

Setting bold/italic on new text thought fails

Create a new map, and click on the canvas to create a new text thought. Click bold or italic before entering any text. When you enter text, the style does not apply to it.

Notes:

  • Underline does work as expected.
  • It only affects selecting a style before entering any text. If you type a, click bold, type b, b appears in bold (correctly).

import error- no module named GTK

I get this error message:

[fox@darkstar ~]$ labyrinth
Traceback (most recent call last):
File "/usr/bin/labyrinth", line 25, in
main()
File "/usr/lib/python3.4/site-packages/labyrinth_lib/init.py", line 4, in main
from .launch import main
File "/usr/lib/python3.4/site-packages/labyrinth_lib/launch.py", line 10, in
import gtk
ImportError: No module named 'gtk'

Suggestions - Dark mode, sidebar, centering map in editor, Python 3 and GTK 4.

I noticed some newer mind-mapping software has a couple neat features. I know this is no longer actively maintained (a shamed, considering this themes well with GTK and is very light) but I thought I'd suggest them for future maintainers and, hopefully, if I am skilled enough to contribute.

1. Dark mode (this is now supported on multiple programs and is useful for the eyes and low power devices).
2. Sidebar showing list of nodes and hierarchy of nodes (extremely useful - see Xmind ZEN).
3. Ability to center mind-map to first main node (centering the mind-map in the editor could prove useful).
4. Move to Python 3.
5. Move to GTK 4.

Again, I know this is no longer maintained, but I think these features would be incredibly useful for future devs and users.

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.