Guitar – Git GUI Client
github.com
github.com
But it cannot just use native controls all the time as it generally supports more features than what is available on a given platform, so there has to be a kind of emulation.
Also, I would vastly prefer electron apps instead of using a native toolkit that's not following the interface guideline of the OS that looks to be using free icon set from the 90s instead of using Font Awesome or similar.
This is the most annoying thing with developers: many of them believe that a normal laptop from around 2010 is "underpowered" and everybody's using the latest macbook pro or some high-end device. But the majority of people use average computers with 4-8GB RAM and some random CPU. Most machines don't run on high-quality fast SSDs.
Also, the app is perfectly following the user guidelines of usable OSes: pre Win8 Windows and pre Gnome3 Linux. Those icons from the "90s" make sense and communicate their functionality well, because they adhere to some convention and are not pure fluff like FontAwesome et al. are. The sheer ignorance of dev community wrt. usability both in design and in performance is sad. Desktop is where people get work done and the bastardized mobile interfaces Win8, Gnome 3, and Electron brought there are nothing but an obstacle. Macs seem to not have gone to that direction yet, but slowly "advancing".
It's telling that none of the widely used IDEs---Even Android Studio or XCode---don't adhere to these bullshit "interface guidelines".
My blood pressure decreased by a huge amount the day I replaced discord & slack by ripcord... and it's also much better in term of UX when you are on a ton of different instances.
e.g. the difference in responsivity is huge : https://streamable.com/ori2yg
and ripcord does so in 87 megabytes of RAM with while slack does it in 758 : https://i.imgur.com/xivK3gr.png
and that's not counting that I would also need discord next to it. I had to buy 64gb on that machine because of all this fuckery - add a few additional work workspaces and a 16gb machine which is already more than what the general public have and it's unuseable. Just checked in the website of the biggest french retailer, and 7 out of the 10 most currently sold laptops have 8 gigs of ram for instance.
The glut of new ones I use for work on macOS: VSCode, Slack, Notion and Height all have different keybindings than any other apps, some completely disable command+? which I use to find/learn commands for operations I don’t already know. Some just don’t use the menu bar at all. Layout is awful in them, like slack threads being a sliver of the right side of the window, or notion’s usable area maxing out at 800 pixels, or height’s window being fixed to a minimum of 800. Some don’t respect auto dark/light mode. Notion has completely upended many tried and true patterns from word processing. Links take you to the browser based version instead of deep linking to the app.
Of course there are some things I do like about each app, but for me they aren’t worth the tradeoff for the ramp up time on a new product coupled with the annoyances I encounter when using these new apps. I can get things done just fine in a github repo full of markdown, or apple notes, or email, or Xcode, or textedit or sublime text, and on and on. Not to forget the venerable command line. I think the one web app I legitimately enjoy using is trello.
I know that there are some Electron apps that behave well and perform well (responsiveness and RAM usage), but those are in the minority. One could always run a bloated Electron app as the only foreground app on the system and give it more resources, but the usability compromises are hard to get over if you’re someone who likes learning and using keyboard shortcuts and other OS specific interactions.
Vscode is pretty snappy and relatively light to the point it's not prohibitively expensive to run it, for example.
VSCode is handling a lot of the heavier stuff in C++, but it's still an Electron app, with the sluggishness that comes with it. Compared to things like nvim or sublime text 3, VSCode performance ranges from "meh" to "ugh".
It's true that VSCode is somewhat usable (unlike Atom). However, it is not impressive, despite so much effort being put into its performance (including a vast amount of core code being written in C++).
For this reason, I take VSCode as the perfect counter-argument to Electron: It shows you that the absolute best case is somewhere between poor and mediocre responsiveness with pretty high resource consumption for the task.
(Anyone who finds VSCode to be snappy is either too used to the sluggishness of web, unfamiliar with how a responsive application feels, or has just thrown so much hardware at the problem that it ends up being decent.)
Sublime is also pretty featureless compared to VSCode as well.
Which toolkits are you referring to, and do you truly just mean the renderer, or the entire engine?
Chromiums renderer is pretty fast. Not as fast as direct rendering like Sublime Text does, but for very complex scenes, it will beat Gtk and Qt.
However, it's expensive to build scenegraphs for it (needed on every change), and partial updates are far more expensive than they need to be.
The end result is that, for something like an editor, Gtk and Qt will beat Chromium for responsiveness by a large margin, despite having much less performant renderers for the time being.
(You can get around some of these costs by using WebGL of course, but if you're doing manual rendering you have already thrown most of the reason for Electron out of the window, so why not do it natively where it will be even faster?)
> The memory consumption doesn't bother me either or come anywhere close to bottlenecking me, because I'm a professional using professional hardware.
This is an awful argument. That I have beefy workstation machines doesn't really matter when I'm usually mobile on a low-power laptop.
The difference between using VSCode and sublime/vim is several hours of battery life, and the difference between a comfortable lap and a warm lap.
This idiocy of "it's fine, there's enough resources" is why my colleagues expensive MacBook Pro's are hyperventilating 24/7, and it's a problem for poorer individuals that might not afford a powerful machine.
> Sublime is also pretty featureless compared to VSCode as well.
Matter of taste.
Sublime Text still has a very long list of plugins, and certainly does everything I will ever need an editor to do. I see no reason to pay the penalty of Electron to get support for NyanCat cursor plugins.
VSCode is also pretty featureless if you compare it to vim, and if we pull Emacs into the discussion, VSCode ends up looking more like nano/Notepad.
So all I'll say is that I get a lot of value out of VS Code as a tool, and I don't think it's slow. I think every point you bring up comes from a lack of experience and knowledge of the tool/platform, and it's not worth arguing about online.
I used VS Code for about a year, and occasionally revisit to reevaluate. Hell, I even gave Atom a (rather unwarranted) fair shot.
What I am evaluating is just performance and resource consumption, which is much worse than it needs to be due to the design choice of using Electron, which has little to nothing to do with the functionality it provides.
For me, the performance makes it uncomfortable to use. Others less fortunate will be experiencing something much worse than I am.
VSCode was a breath of fresh air compared to Atom and the extension support was even more impressive. But very recently when I found out about the Sublime LSP package, I decided to give Sublime another look. The snappiness difference between ST3 and VSCode is night and day. Even though by no means does VSCode feels "slow" for my day-to-day work, the small speed improvements of using ST3 compounds to make for a greater experience overall to me.
it's definitely not. Just adding a `/*` at the top of a file takes a noticeable delay to update the whole text, while it's completely unnoticeable in e.g. QtCreator.
I just took this video on my screen, notice how everything lags in VS Code (left) in contrast with QtC (right) :
Just look at the scrolling : super smooth on QtC, all janky on VSCode (I let my scrollwheel in free wheel mode in both cases) :
What's worse, VS Code uses GPU for its rendering while QtCreator uses a software rasterizer, which should in theory perform less well (in practice, GPU font rendering is definitely not there yet). Both use the same backend for C++ syntax parsing (clang) so the problem is not there.
Conversely, Qt Creator is rather anemic and featureless when compared with vscode. I mean, it doesn't even support very basic features such as editing yaml or json files, it barely supports any form of refactoring at all, doesn't support any form of project other than the old hardcoded C++ support piggybacking clang, etc.
Heck, supposedly Qt Creator's main build system is cmake, and it doesn't even allow you to add files to a project without having to hand-tweak CMakeLists.txt files.
Perhaps if Qt Creator offered a fraction of the features already provided by a free text editor such as vscode then we could start to compare sub-milisecond differences in paint times. Until then, unnoticeable differences in performance coupled with far more functionalities make it a non-starter.
> and it doesn't even allow you to add files to a project without having to hand-tweak CMakeLists.txt files.
I don't know any IDE which does this well and don't think that this is a solveable problem at all. e.g. where would a source file be added there ?
set(COMMON_SOURCES a.cpp b.cpp ${SOME_OTHER_SOURCES})
if(SOMETHING)
add_executable(foo WIN32 main1.cpp ${COMMON_SOURCES})
else()
add_executable(foo main2.cpp xyz.cpp ${COMMON_SOURCES})
endif()
if(FOOBAR)
target_sources(foo PUBLIC foobar.cpp PRIVATE baz.cpp)
endif()
I've tried looking in VSCode to test where it would go but cannot find a command that would add a new file to a CMakeLists. File > New file > save as .cpp definitely does not and I don't see a right-click option that would do it.> , it barely supports any form of refactoring at all,
c'mon, here's my experience with Qt Creator when comparing with VS Code (with the C++ extension installed):
- vscode: https://vimeo.com/410950170
- qtc: https://vimeo.com/410950345
I'll agree that QtC (https://doc.qt.io/qtcreator/creator-editor-refactoring.html) has less than for instance CLion in the refactor department, but than VSC? Maybe with ten additional extensions or so ? But qtc works from the get-go without needing to go fetch plug-ins elsewhere.
Note also how QtC helpfully tells me bugs and issues in my code along me typing, without making typing slower.
In contrast, I really have trouble concentrating with VSC (and also JetBrains IDEs & VC++) operating latency (and that's on a 8c/16t top-end desktop i7).
it's objectively worse.
https://pavelfatin.com/images/typing/editor-latency-windows-...
https://pavelfatin.com/typing-with-pleasure/
atom (electron based editor) has the highest latency of all. VSCode isn't listed but here's a benchmark by a random github user: https://camo.githubusercontent.com/7a5b91ed14a0173f861b8478c...
I have tried to adopt vs code multiple times and just end up going back to (n)vim, where opening a file is instantaneous and I never have latency when typing, etc.
However I do find Jetbrains' products like CLion/Goland are pretty nice.
FWIW, I use VSCode...
That said, there are use cases for VSCode that don't really apply to ST3, etc
I have this hope that they eventually will trigger VSCode's rewrite into React Native.
Seriously though, VSCode isn’t bad. I use it on my Surface Pro (dual core i5) without any issues. It’s a nice app.
It's slow compared to Sublime Text 3, which is probably the closest alternative. And compared to vim, VSCode is positively glacial.
Theoretically that doesn't have to be trade off. Theoretically it's possible to build an editor like vscode with a native interface. In the actual world it doesn't exist for whatever reason, so I'm going to keep using vscode.
Your claim that "in the actual world it doesn't exist" is just not true. Thousands of lifetime vim/emacs users are scratching their heads.
I no longer consider vscode to be an electron app. You would need a ton of expertise and lots of c++ to have your electron apps perform anywhere close to vscode (and you would still be slower than native)
Native apps feel like they react an order of magnitude faster.
It's ok, but "snappy" really is the last description I would think of when using Vscode.
Compare these 3 screenshots of the same window (https://imgur.com/a/UNXtweJ) - and that's not a translucent or blurred window, it's just a solid background color. The only change I made between taking those was picking a different desktop image.
When I open Slack, it doesn't match any of the native apps because it doesn't use the native color blending. It's just drawing a different palette of colors.
In this case, I don't know if QT is going to be any better if it is just drawing all of its own controls. There's another native Git client that I use, and it looks amazing and blends right in with the rest of the apps I use everyday.
DOM-based frameworks make this sort of stuff trivially to implement, and some of them evem come with gesture and animation support out-of-the-box. Meanwhile, feel free to take a look at Guitar's source tree to figure out if that is trivial to work with, and at best it looks like an app from 1998.
Looks pretty much the same as stitching DOM elements to me, and various runtime modifications in HTML-based frameworks remind me of the "put widget into container" code style of Tk. There's even a CSS-based styling support for Qt.
The main difference is that there is easy way to make a visual designer for the QT .ui files, so it's actually even easier to write GUI apps there.
And DOM based frameworks do nothing to ease of use, ease of navigation, or pretty much anything done by end user*. They make it easier on making portable GUI, yes, but that's on developer side, and with significant costs associated to everything, including reputation of the application and developer.
How easily can you make a staggered fade and slide in animation? Responsively change layout? Apply complex styles?
The developer experience is vastly superior in electron and it's reach is massive. There's no denying. But the underlying problems are pretty serious and the people who complain are not just hating for random reasons.
I hope you get how insane it is when your cpu fan starts spinning because of an app that plays music in the background!
So far the pro electron arguments are concerned only about developer experience who generally have beefier specs in their machines.
The lowest common denominator in end user machines are very different and I request you please keep that in mind!
P.S: I'm a web developer and I fully understand how much valuable electron is for me.
Even vscode, which has a gigantic memory footprint due to its plugin system, requires 1GB to run comfortably.
Nowadays you get computers with 4GB of RAM for 60€.
Let's not bother ourselves with irrelevant details.
Regardless of what many people say, RAM usage still matters. If every app takes a giant chunk of RAM just to get started ( which many do ) eventually that's going to bite you.
Yes, we do have a ton more resources to work with than we used to, but I'm afraid far too many developers have just stopped caring about it at all -- and that's a very bad thing.
That's great, so that must mean you'll be happy to hear that right now I have two instances of vscodium open, each one running half a dozen plugins, and their total memory footprint is less than 300MB.
Do you have anything relevant to say regarding how much resources are used? Or are we supposed to keep debating if being able to run 40x instances of a text editor is not enough room to work with, or if whether having only 7.8GB of RAM free to run other programs is too restrictive?
In case it's not: great UI != any of those
> great UIs with them?
is completely opposite to these:
> staggered fade and slide in animation?
> Responsively change layout?
> Apply complex styles?
I don't know about other users, but I like good software with functional UIs that are easy to automate and extend. In my experience, that's definitely _not_ Electron-based UIs. It's also not most GUIs either for that matter.
I absolutely do _not_ want "gesture" and "animation" support. Gestures are a hack for a shitty touch-screen input with zero tactile feedback. Animation is just a power hog for, like you said, a pretty interface. I don't want a pretty interface if it costs performance, costs battery, costs usability.
That said, if superfluous animations are a big part of the benefit, you can count me out in any case.
As a Norwegian <div> makes perfect sense, as "div" is a common shorthand for "diverse" meaning "various" or "miscellaneous". At least that's what I always think of when writing <div>.
I use and occasionally contribute to a distro that's very strict about all dependencies of an application also being packaged in the distro. That's just infeasible for most JavaScript apps these days; most that I've seen have on the order of 500-1000 dependencies.
As a developer I love good GUIs and should check this out.
cask 'gui-tar' do
version '1.2.4'
sha256 'e11177b99a01d5cff666f68072fd2145cccda4678a8a98203d97929cbe53dea2'
url "http://www.edenwaith.com/downloads/guitar.dmg"
name 'GUI Tar'
homepage 'http://www.edenwaith.com/products/guitar/'
app 'GUI Tar.app'
endhttps://www.freshports.org/sysutils/guitar/
http://web.archive.org/web/20020401054755/http://artemis.efe...
I was trying to figure out if it used git somehow to manage creation/rendering/storing of guitar tabs or something.
I kept looking for any images of guitars or screenshots of standard music notation and tab.
Then I finally read the title and part of the README.
:-D
Most of the GUI tools just focus on the MVP workflow and often they crash/bug out on the weird cases.
This is not really an argument against it, but just an observation I made through the years.
Sourcetree is one of the oldest GUI git clients and it has the most stuff handled correctly, and this basically looks like open-source source tree.
1. you can see all the information at on glance: current branch, all local branches all remotes and remot branches, local changes, recent commits, current merge conflics
2. cherry picking single lines for staging in multiple files is much faster in a GUI than via terminal (maybe there are clever tricks to make it easier I don't know of)
2. Yes, that was the only reason I have used git GUIs, but most modern editors have these features built-in.
Still, usually what I need there is the ability to leave a line or two there but don't stage it.
You get more context because you can see other parts of the diff in the editor, unlike when using the -p switch with the git add or reset commands.
GitGutter make working with hunks easy
>> You cannot unstage a staged hunk.
I'm not sure if that's a feature they plan to support, but something like this could easily be done by highlighting the hunk displayed when running git diff --cached in vim's linewise visual mode and filtering it through git apply -R --cached -.
I guess you would not want to edit a text file of which you could only see a single line at a time.
Projects can be messy and sometime you really need a bird's view of what's going on with all those branches\merges etc.
I felt a certain bravado in uni for always using the cli that I see among other HNers. As I get older, I couldn't give less of a damn. Scrolling manpages to find an re-remember the unintuitive cli arg I need vs just clicking a button that does it? I prefer the latter. The former is always available if I need it.
The few times I have to drop into cli git are the things I always have to look up anyways, like git-reflog.
All of this is possible with the terminal tools, but made much easier with a GUI. It also makes it possible for non-experts to fix problems without just blowing away the repository and repeating work.
I'm still using GitX(l) on mac, it keeps dying and being resurrected as a fork, I've always found it the perfect balance between "too simple" and "too complex", and I can just launch it from the terminal "in context" when I need it.
I rely a lot on visualisation to understand things so I tend to like a nice Git GUI. Although some stuff like rebase -i I found it handy to do it in the terminal.
This. Personally I handle most of Git's CRUD operations through the command line, but to analyse logs and branches and navigate through the depository's history, I find gitk to be an invaluable tool, albeit ugly as sin.
I still always prefer the CLI and will use that first, but I'd feel silly dying on that hill for every situation.
Command line is great if you prefer it, but Fork, SourceTree and Tower all have interactive rebase support. Here's me using Fork:
https://twitter.com/mikemaccana/status/1237708418124742656?s...
I hacked together a bash script that prints out all the branches and lets you click on it to switch to it and it's been pretty useful, just wish I could be bothered to make it properly with more features.
I would love GUI tools to complement the command line, instead of replacing it. Already I use the CLI 95% of the time, and launch gitk for that 5% when I really need to see the commit tree graphically. Usually before a merge is the only time I do this.
I wonder if that's a way forward.. a graphical equivalent of "tab completion" when you are trying to write out a command. Instead of a GUI that tries to make git "simpler" by hiding the command-line, how about something that takes the git command you are already trying to write, and helps you write it, e.g. by showing you results of a dry-run on the fly.
Much rather not have a terminal in these apps. It'd probably not match 100% my normal terminal and would slow me down.
I wish people who made these things didn't start off with the implicit belief that they need to try to replicate every feature of the git client in a UI.
There are some other features like the git highlighting in a file is a quick and easy way to see how the code has changed without leaving, but anything besides a merge conflict is done on command line
I’m a big believer in high-quality GUI. I’ve used CLI that would have a lot of folks whimpering under their desks, and don’t miss them at all.
Bad GUI is worse than CLI, though. I won’t mention the product, but I tried another fairly well-known “buzzword-compliant” GUI client. For the first fifteen minutes, it was great. Then I tried something off their beaten path, and the dumpster started smoking.
SourceTree has a relatively spartan interface, but also updates rapidly, which is important for when I switch over to CLI.
Back in the day when SourceTree had the original built-in multiple repsitory overview it had something no other tool had (I think) and for the rest it was workable, but slow. Then they basically rewrote it, replaced the whole UI with something which was slower and less clear and did not even have the repository overview. I still don't understand why. Plus it still had the annoying problems where you'd be rebasing on the CLI and that would fail because at the same time SourceTree had the repository open. tldr; I admit I don't know it's current state, but at least when I left it it was not exactly a high-quality UI.
Anyway I ditched it for SublimeMerge around that point and even though it lacks certain functionality I didn't go back. Main reason is probably that the UI looks clear, has good diff/staging and proper keyboard support and a command palette. But just like other tools, it's not for everyone.
Like most developers, I've learned where the potholes are, and have warning cones around them.
I'd love a nicer GUI, but, like I said, my experience has me a bit gunshy about using other stuff. I've had Tower for a while, but seldom use it. It's a great app, but the GUI actually gets in my way a bit.
My favorite text editor is BBEdit. I've been using it since last century. It's kept up with the times, but has a much more spartan aspect than editors like VSCode and Sublime. I like its RegEx support; which I use all the time.
From the on I resolved to only use the cli, and over time it has become almost as easy to navigate as the guis - all the different cli tools are actually quite great when you get used to them.
The flip side is that I feel comfortable going deep and resolving all the weird edge cases as I can drop to as low level as I wish.
And if you are fighting with the complex stuff, you are probably doing it wrong. Then no GUI in the world can help you.
It really depends on what you mean by day-to-day operations.
If all you do is checkout code, create ephemeral branches that either get deleted or are merged into another low-traffic branch or are simply pushed to a remote git workflow system, sure you don't need a GUI for that.
But if you need to traverse branch history and compare changes and do three-way merges and audit changes and track logs to a specific file within a repo... You are far better off with a GUI.
Once I worked with teams, I started encountering things like difficult merges, long-running divergent branches, etc. that make GUI useful.
If there are more people in the first category, it's only because anyone can start a solo repo but only a subset of people work on teams.
Either way, who cares? Use what is useful to you.
Throughout these comments is this weird assertion that other people are using the wrong tool unlike us enlightened HNers. It's like people get offended that others prefer other tools. As if it's like "What, is my cli git preference not good enough for them?!"
I'm low-key convinced that's what's actually going on in all these cross-examinations.
Everyone who has to fix bugs and maintain software?
Guitar is also good too, and are thankfully both native!
[0] Fork - https://fork.dev
It is nagware - will work forever but with a nag screen (like WinZip back in the day), and IMO it is definitely worth a one time fee of $50 if you don't mind using closed source.
But it is not quite the same category as Guitar.
That looks cool! Personally I love the simplicity of both Sublime Text and Merge so I gravitate towards those (I don't really care/need about customization)
I wish I liked it more but I've settled on fork now. Good you're happy with sublime. I'll check it out again once it's rounded off with more features
In the case of OP, Guitar looks a hell of a lot better on Linux installs. I suppose that's due to QT theming.
Smartgit works very well on Linux
I landed on it because the speed is unparalleled, but there's a few too many quirks (recent repositories never seems to work for me) and the UI is almost there but it's too hard to instantly see the status of things, particularly whether things are staged or not staged.
For more complex operations nothing beats the CLI.
I think that's only because most of the UIs are so bad! Manipulating a graph is something that I think inherently is actually quite visual.
GitUp[0] has excellent graph-editing facilities, and has replaced almost all of my git command-line machinations.
Alas, it's semi-abandoned and left in a perpetual state of 90% doneness...
A little challenge, if you're interested: Give some git manipulations you would do on the command line, and I will show you how to do it more easily in GitUp, or concede defeat. :-)
It's still actively developed and I love the Branch favoriting feature (which I haven't see in any other GUI).
https://github.com/jesseduffield/lazygit
There are edge cases that lazygit does not handle well, but it is a simple matter to type "q", bop back to the terminal and run whatever git command and get on with life.
Emacs users will always have magit, but for everyone else it can be handy to use GUI tools for interactive staging and interactive rebase.
The crucial advantage of lazygit for me is the "situational awareness" I gain in one window - more than any added functionality. The other take away is for your tools to be utterly trustworthy. :-)
https://old.reddit.com/r/git/comments/59j0yq/gitkraken_is_no...
On top of that GitKraken is closed-source and in the past there were concerns on telemetry collection: https://old.reddit.com/r/git/comments/4dgpgd/gitkraken_data_...
Nothing major, which is why I am still using it, but definitely enough to make you wary.
Other than that, most frequently I use CLI.
man tarNot so great... (they switched to subscription some years ago, adios amigos!)
Could you report this feature request to dev?[0]
You can see it in Fork's screenshot: https://git-fork.com/images/diffViewer.jpg
But if you look at Guitar's, you'll see the lack of word diffing, and that makes it take significantly longer to see exactly what changed: https://camo.githubusercontent.com/3c6c338ece93afda723cef575...
Is there a way to connect Guitar to a remote server.
Or, are there other Git GUI's that work over SSH?
I can use VSCode, but it is not really a Git GUI, and doesn't satisfy my needs.
for example: https://www.redhat.com/sysadmin/sshfs
Please, ask dev on issues tracker.[0]
FTR, Actually installers for Windows available only for Win32[1], so you may want request Win64 builds too.