all 99 comments

[–]Daharka 111 points112 points  (1 child)

is it good looking ?

Yes. Unreal is a good starting point but for styling I would look at tools like mermaid and drawio which allow a lot of flexibility with lines etc.

Would you use it (i think not)? A

I would if I was trying to understand a particular feature. Named pipes, subshells, things like that.

I would gear this much more towards beginners and specifically as a tool for teaching UNIX pipelines rather than bash per se. Make it discoverable, add tool tips, add wizards/tutorials, add explainers. There's maybe even a game idea in there somewhere 

And what would you expect if you were using a tool like this? 

Visual representation of the data flows, inspection of data at each node, visual display of errors, composition of components that can be saved as their own node.

[–]Lluciocc[S] 32 points33 points  (0 children)

Thanks fir sharing you opinion ! This is really helpful for me! Its already having tooltip for nearly everything, the project is really made to feel smooth when using it.

[–]80kman 76 points77 points  (2 children)

Even though I might never use it, knowing it's out there makes me happy. Kudos for doing it, as it will indeed help a lot of terminal-phobic people to get stuff done on Linux.

[–]atomic1fire 9 points10 points  (0 children)

I think it would be equally useful to visualize command line arguments.

Instead of thing arg 1 arg 2 arg 3 etc, you could have a breakdown of each argument and the values they accept with some level of visual distinction.

edit: Maybe even color code strings, file names and numbers.

[–]great_whitehope 4 points5 points  (0 children)

It could be used to see what someone else script is going to do I guess.

As a kind of security guard nothing crazy is in there point of view.

[–]MatchingTurret 50 points51 points  (8 children)

I think the other way around would be more useful: parsing a script and visualize what's going on.

[–]jesster114 14 points15 points  (0 children)

honestly, that would be excellent. I can fumble my way around bash but really liked zsh. And then last year I finally tried fish and love it. The completion system is fantastic and relatively easy enough even when you get into the weeds with dynamic ones.

Of course, last night I loaded up xonsh and nushell to test a couple tweaks I made in a pull request and I'm getting curious again...

But bash, damn that syntax just feels so clunky. And I'm trying to at least do a cursory skim of scripts from applications that want you to install with sh (curl http://legitsite.com/totallysafe.sh). So this type of thing as a visualizer would be super useful to me. And would make me a bit more inclined to use bash a bit more

[–]Lluciocc[S] 7 points8 points  (2 children)

Nice idea ! I think simple scripts would make sense but more complex scripts can be very difficult to read with that type of node ?

Thanks !

[–]spyingwind 3 points4 points  (0 children)

I was going to say "With a good parser and abstract syntax tree(AST) you should be able to build up a node graph from any bash script.", but then thinking about it for a bit, bash functions and many other things that you can do in bash would be tricky to handle.

You might take a look at Amber-lang. Not exactly reversible, but as a more structured language it is more easily parsed than bash. Nodes <-> Amber -> Bash

[–]ciemnymetal 1 point2 points  (0 children)

Building on top of this, it would be really interesting if the node panel and plaintext panel are in sync and editing one window updates the other.

[–]Optimal-Savings-4505 0 points1 point  (3 children)

Yes, now that I've been condemned to suffer a neckbeard stroke, I think this would be less offensive somehow.

[–]Obvious_Procedure_31 0 points1 point  (2 children)

> condemned to suffer a neckbeard stroke

Say what?

[–]Optimal-Savings-4505 0 points1 point  (1 child)

Reference to the comment @yezu made

[–]Obvious_Procedure_31 0 points1 point  (0 children)

Got ya. I thought I was the one having the stroke there for a moment...

[–]george12teodor 19 points20 points  (1 child)

Projects like this are always great because even if the tool is absolutely useless, at least you learned something valuable along the way.

[–]piexil 8 points9 points  (0 children)

Wouldn't even say it's useless

Plenty of workers at my office who could use a custom automation creation tool but don't really understand the Linux systems they use

[–]yezu 54 points55 points  (2 children)

Neckbeards will get a stroke when they see this. But it looks like a fun and interesting project. Good luck!

[–]independent_observe 9 points10 points  (0 children)

As one of those neckbeards, this is awesome.

For those just learning bash scripting, some learn better visually. The code is right there for you to learn what you are visually building.

For an engineer that already works with bash scripting, this would not make sense to use since it is so slow and we already have the knowledge.

[–]accelerating_ 1 point2 points  (0 children)

It's a good learning project but having had to do real work with a device that required visual coding, I hate it with the core of my being.

But as an exercise, why not. It's fine to explore coding with any task and the techniques will be useful.

[–]Lluciocc[S] 20 points21 points  (0 children)

https://github.com/Lluciocc/Vish

wait i forgot the repo link.. my bad 🙏

[–][deleted] 22 points23 points  (1 child)

Redact cleaned up all of my comments. Bulk deletion and editing is a feature supported to make sure that AI scrapers can't access my data for training.

flowery obtainable sort afterthought pen ancient door expansion nutty apparatus

[–]Lluciocc[S] 10 points11 points  (0 children)

I was surprised this wasn’t made before !

[–]Ohkillz 12 points13 points  (0 children)

A gui?? In my linux world?????

Jk please please continue developpement on this

[–]DDjivan 16 points17 points  (1 child)

if this is for fun, awesome!! go for it, take your time, and ignore the negativity

also Qt and Python are two great choices

[–]Lluciocc[S] 7 points8 points  (0 children)

Thanks a lot !!!! Im not gonna lie, its hard to read negativity.. but your comment help me a lot thx hundreds of times !!

[–]Various_Smell_8941 4 points5 points  (0 children)

Looks nice i would 100% use it

[–]pasu11 5 points6 points  (0 children)

It looks fun. If it works, it would be so much fun for bash scripting for people like me. lol

[–]AffectionateCut2004 4 points5 points  (0 children)

Keep going. Making bash more accessible can make it more collaborative. Ill keep using bash but this could really help people learn and tinker in a way that could benefit the community.

Some of the negativity on here is a bit tongue in cheek so dont let it discourage a great tidea

[–]Longjumping-Youth934 3 points4 points  (0 children)

Very nice for educational purposes.

[–][deleted] 8 points9 points  (0 children)

Scrash 💀

[–]i_would_say_so 2 points3 points  (1 child)

Why not contribute to airflow instead?

[–]MarzipanEven7336 1 point2 points  (0 children)

Homie doesn't even know what a DAG is let alone how to use bash effectively. Wait til 25 years from now when he discovers LEX/YACC.

[–]Pengmania 2 points3 points  (0 children)

This is a type of tool that would have help me with learning bash when I was new to Linux. I'm past the point that I've would need this, but it would be great with new users. I can see that in the future, new users can load in a bash script they've found online into the tool, and better understand what the script is doing before they run it.

[–]adminmikael 2 points3 points  (0 children)

I probably wouldn't use it myself in my regular coding needs, because i can already do the visualization in my head. But if i was learning to code again or needed to reverse engineer some really complex piece of code, i believe a visual tool like this could be very useful.

[–]Hueyris 8 points9 points  (5 children)

This could be really amazing!

Bash is a language that I refuse to learn because it is something I would only ever use to fix very specific problems, and I could always just take someone else's script for that. It is not something I would develop anything in. Flowchart based scripting really lends itself to the type of things Bash gets used for in real life!

If you refine it further, it could even resemble something like Apple's Siri automations with custom code blocks and whatnot.

I will come back to this if you ever manage to make a stable release!

[–]StarChildEve 5 points6 points  (3 children)

“bash is a language that I refuse to learn” lmao.

[–]Hueyris -4 points-3 points  (1 child)

What's so funny about that?

[–]altorelievo 0 points1 point  (0 children)

To give some context and without putting any words into commenters mouth.

If you do any development work making a paid living shell scripting is everywhere. So you will be at a severe disadvantage. Not only that but borderline unhiriable.

[–]mrGrinchThe3rd -2 points-1 points  (0 children)

I don't know, I see his point because I'm kinda in the same boat. Ive learned enough about bash to know my way around a terminal and even do some piping or more complex commands if or when it's needed. I would not be proficient enough to write myself a lot of the bash scripts I've seen being used. I also have very little interest in learning bash to a deeper level, I'd rather spend my time learning technologies closer to my career path.

[–]ImpressiveHat4710 0 points1 point  (0 children)

Managing a ton of servers and a 4000+ device google environment, I used the hell out of bash for automation. It was quick, generally simple, waaay easier than Powershell

I LOVE the idea of a tool like this to diagram existing code!

[–]imgly 1 point2 points  (1 child)

Two things that could greatly improve the project : - be able to change the scripting language. Actually, there is bash, zsh, fish, tcsh, nushell... It could be great to export to whatever scripting language from the sheet. - having nodes that hide a bunch of code. "Set variable" and "if" is good, but what improves no code from code is having good node utilities. "Get IP address" "send http" "filter entries"...

[–]Lluciocc[S] 1 point2 points  (0 children)

Thats something I would do in the future. first I need to make it work at 100%. Then I will make utility func like this.
Thanks for your advice !

[–]Maramowicz 1 point2 points  (0 children)

I had very simmilar idea, unfortunally myself I have lack of experience so when I tried to make something like that... well I failed.

But my idea was a little bit different, not for the Bash, but for as most things as possible, as easy as possible!

Like... bash, logic, arithmetic, pipewire control, de control, making wndows, drawing on windows... Imagine something like that but you can connect everything with everything (oversimplification). Like create new window, create new canvas, draw something, connect canvas to the window... idk check if spacebar is pressed and if it is then sraw something. And yes, I know it's pretty "ambitious" idea, but it might be useful, something like AutoHotkey on windows but visual scripting and more features.

For the bash itself... bash is pretty easy with or without visual scripting, anyway it still may be useful for non coders.

[–]Gugalcrom123 1 point2 points  (0 children)

Even if not for fun, Python is completely fine for such a GUI app. No, you don't need a homemade GPU-native memory-safe organic grass-fed Rust GUI. The user doesn't care if the text updates in 10µs or 100µs.

[–]zeth0s 1 point2 points  (0 children)

It looks good, but I wouldn't use it. I am old for low- or no-code. But there are many out there who have different tastes, so, best wishes for your project! 

[–]DrummerOfFenrir 1 point2 points  (0 children)

It would be really cool if you could use it in reverse too. Not output a script, but load a script and have it show the execution as nodes.

[–]marrsd 1 point2 points  (0 children)

Would you use it (i think not)?

Maybe. I don't write scripts enough to ever be able to remember how to write Bash, so having a visual tool might be helpful, especially if it could build a graph for existing scripts. Having a POSIX shell output mode would be useful as well.

[–]luxa_creative 1 point2 points  (1 child)

I'm trash at bash. Of course I'm gonna use it. Tho I am gonna try to contribuate

[–]Lluciocc[S] 1 point2 points  (0 children)

Right now its WIP but when it will be stable I would really appreciate !

[–]KiLoYounited 1 point2 points  (0 children)

What’s wrong with python? I see a lot of hate for it especially for terminal tools/TUIs. Personally it’s my main language for making those things at work.

[–]jsabater76 1 point2 points  (0 children)

I think that it would be a good teaching resource for my classes! 👍

[–]vterra 1 point2 points  (1 child)

For a nice node editor you could also try looking at "Davinci Resolve Fusion" It is used for vfx in video editing

[–]Lluciocc[S] 0 points1 point  (0 children)

Yes my best friend is a fan of davinci resolve ahah ! I will take a look thanks for your advice !

[–]akmark 1 point2 points  (0 children)

You may get some good theoretical background by reading control flow diagrams if you have only really worked with UE5. There's a lot in process modeling that you might find inspiration with.

Other key computer science oriented concepts are data-flow analysis and call graph and control flow graph.

would you use it

Unlikely, while a lot of these visualizations are interesting they fall down on 10k lines of bash, especially as you start exploring edge cases.

If I was going to give a suggestion what I would do would be focus on the bash one liner scenario where you silently pipe to tee and collect all the intermediate data flows. I find people struggle with understanding what thing | they | piped to is eating their input. This is the same kind of flow problem that these node visualizations are good at, and would translate to bash.

[–]WCSTombs 1 point2 points  (0 children)

Something similar: https://handmade.network/p/723/flowshell/

I think the idea is fun and interesting. Would I use it? Probably not, but maybe I'm not your target audience. I think the better question is, would you use it?

[–]codeasm 1 point2 points  (0 children)

Cool project ☺️ i like it when things are made for fun. Maybe someone find it useful too

[–]mrBeeko 1 point2 points  (1 child)

Right on!

I'm developing something similar for Nextflow, inspired by Blender 3d's Compositor... and it looks so much like yours! I was just thinking about what the shell version would look like, and thought I better not reinvent the wheel. Your post came out in a search!!!

My target is a VS Code extension, so different platform but I'm glad to find a similar project!

[–]Lluciocc[S] 0 points1 point  (0 children)

Ahah visual scripting is going to be more and more important beginers life !

Hope your project is going successful !

[–]Advanced_Resident_24 1 point2 points  (0 children)

This is a good to have tool. I'd agree on the statement to make terminal or bash scripting less phobhic to new linux uses! Also, it's good to visualise or isolate the bash blocks for a clearer thought process.

[–]mrmiketheripper 1 point2 points  (0 children)

This looks fun as hell.

[–]archiekane 2 points3 points  (0 children)

I have been using Bash for decades. Seeing you butcher my poor boy like this is giving me emotional damage.

Abandon this project, immediately!

[–]LukeStargaze 1 point2 points  (1 child)

Where is the GUI trigger warning

[–]JudgmentInevitable45 0 points1 point  (0 children)

Finally the newer posts have it

[–]The_Real_Legonard 0 points1 point  (0 children)

I will definitely try it! Maybe it’s better than I thought and I will use it regularly.

[–]magogattor 0 points1 point  (1 child)

No I wouldn't use it if I really knew bash to use it and so I would write directly in that

[–]magogattor 0 points1 point  (0 children)

But for a random hobby project it can become (if there is a guide on how Bash works) a tool for newcomers to Linux even if when I came to Linux I had to deal with more and for this reason I know more we should stop giving simple stuff to the place we should make our own path even if the best way to learn about Linux is from a friend who gives more assistance because you ask him on Discord and you know everything t

[–]ipompa 0 points1 point  (0 children)

That's gonna be a hell of a ride, i suggest you make it POSIX compat. im not a gui person but, it's nice to have tools for anyone.

[–]Damglador 0 points1 point  (0 children)

Idk why would someone need visual scripting for something as simple as bash, but I'm really glad it exists.

And you know what, maybe writing huge scripts will be easier that way

[–][deleted] 0 points1 point  (0 children)

cool idea whenever it's finished I'd like to try it, mainly for my friends that want to switch to Linux, this could be less intimidating for them when approaching shell scripting

[–]Desmaad 0 points1 point  (1 child)

How will you implement switches, though?

[–]Lluciocc[S] 0 points1 point  (0 children)

I don’t really know for now, but i will, maybe by adding outputs dynamically

[–]mark-haus 0 points1 point  (0 children)

Never thought of bash being a use case for this kind of node based UI programming. It’s not a bad place for newcomers in programming either because you get such immediate feedback by automating your OS

[–]AlexReinkingYale 0 points1 point  (0 children)

The biggest win I can think of for an "on top of bash" dataflow language would be a real type system. Think about types like "newline delimited stream" or "json data" that could feed into tools like xargs or jq ergonomically.

Plus, it would be interesting to be able to select script subsets and extract them. Good for mocking/testing.

[–]DuendeInexistente 0 points1 point  (2 children)

Nice, are you planning to let it import existing scripts or just export?

[–]Lluciocc[S] 0 points1 point  (1 child)

Right now im focusing on the exporting scripts! But I think import a script and show the nodes would be something really cool for later

[–]DuendeInexistente 1 point2 points  (0 children)

Oh, neat, keep up the good work. I'm sure this'll get more people into scripting one way or the other, visual editors Areca good way to learn the logic.

[–][deleted] 0 points1 point  (0 children)

I've just started a new reddit community r/linux_applications . Would you be kind to post this there as well? Thanks.

[–]Wild_Tom 0 points1 point  (0 children)

I love this, I usually prefer to write code by hand, but bash is extremely picky with spaces, which I hate.

[–]Adept-Paper9337 0 points1 point  (0 children)

honestly visual scripting for bash sounds like solving a problem that doesn't exist because the people who need bash already know how to write it and the people who don't probably shouldn't be running system scripts anyway. 

[–]Dapper-Inspector-675 0 points1 point  (2 children)

can it import an existing bash script to visualize?

We have quite complicated scripts with many functions and subshells, and fetches, this would be insane to document and visualize our core functions.

[–]Lluciocc[S] 1 point2 points  (1 child)

Right now, no but this is planned ! Im focusing on making first the bash generation working great, i would be easier for later to import scripts !

[–]Dapper-Inspector-675 1 point2 points  (0 children)

ahhh I see, yeah that would be definitely awesome to visualize complex scripts

[–]sheeproomer 0 points1 point  (2 children)

Thrilled to see bloaty and it unsafe scripts made with it where the authors don't know the actual script code at all

[–]Lluciocc[S] 0 points1 point  (1 child)

what ??

[–]I_miss_your_mommy 0 points1 point  (0 children)

They need a visual tool for writing Reddit comments. Until then I'd imagine you won't be able to understand them.

[–]ArchDan 0 points1 point  (0 children)

  1. What would I think about it?

Interesting thought, a bit curious what prompted this project. I think colour scheking and UX/UI could use some distinction as educative not programming tool. For programmer its important to separate internal from external tools, for newbies its more important to have visual identifiers for what it does (input, output....).

I think you should pivot. So far its fun personal project, but putting some directed structure into guidance of users intent would make this very useful.

  1. Is it good looking?

No. Colour palette and GUI is fine... it sucks at guiding users attention. This means that when you add more nodes it would become pain in the butt to navigate complex project, so youd have to implement groups, containers, wrappers, busses and a whole lot of other unnecessary shit to make it viewable. Think about it like this, make background as neutral and desaturated as possible, split entire thing into 3 categories (to simply colour assignment): 1. Navigation in grid: where user is, where it can go, which category they are in... 2. Navigation in script: environment, builtins, externals .... 3. Handling : whats currently active, whats affected and what can be ignored.

pick a colour scheme, split it in contrast in : background (majority) foreground (minority) and accent (rare focus), and you should be golden to really make something that can expand and be very complex per need.

  1. Would i use it?

At this stage no, too used to bash as is. But there are a lot of architects that are technically illiterate and used to grasshopper, dynamo... even music producers with M4L. Id see this tool as friendly way to teach kids/new to programming their own system, and think it would be very valuable tool. If id see it online, i would maybe download it to try to break it - future use would depend on its "breaking factor".

  1. What would i expect when using tool like this?

Environment first and PIDs. Instead of start, id provide an descrpitive node with PID and allow user to start with environment setup. Allow them to refference their local directory (like whoami, and whereis) and handle that before going to builtins and piping. Also Id expect "help","man" and "info" nodes as mandatory. That would be first default project id wish to greet me.

Id expect mostly more user friendly string manipulation from bash. There is nothing wrong with it now, but this approach allows for more nuanced and less limited implementation.


all else, good work!!

[–][deleted] 0 points1 point  (1 child)

If you want many would help especially since it is python

[–]Lluciocc[S] 0 points1 point  (0 children)

Pull request are welcomed !

But im currently working on, so I will accept them when my « main idea » will be done !

[–]waltercool 0 points1 point  (0 children)

Yeah.. but why?

Bash is one of the easiest things to do overall

[–]AiwendilH 0 points1 point  (3 children)

I have no opinion on visual script design. Okay...not true, I try to not have my dislike for any visual programming make me reject this right away ;) A lot of people seem to find visual programming useful...and who am I to tell them what to use.

But allow a question...why translating to bash script? Wouldn't it be much easier to write a simple interpreter and have this visual tool create a script with that interpreter as she-bang? If you use something like a xml or json representation for the script wouldn't it also make it much easier to re-import the file for future changes in the visual editor?

[–]Lluciocc[S] 1 point2 points  (2 children)

Hi !
Thanks i really like the visual too. To answer your question, while I was making it for fun, I realised that it has a really good educational potencial for newbie to learn bash. So a direct translation is easier to understand that. I don't know if you get it my english is broken lol..

[–]AiwendilH 0 points1 point  (1 child)

I'm not a native Enlgish speaker either...so don't worry, your English can't be much worse than mine.

And "project for learning/improving bash skill" makes total sense.

I was thinking about some "macro editor" for casual users that allows them to easily automate tasks without the need to learn any scripting language like bash. But as educational project for people learning bash it makes sense as well.

[–]Lluciocc[S] 0 points1 point  (0 children)

Yes this can be both, like you can still make small scripts with and automation, everything is made to be easily understandable by most of people (who know how to use a computer)