This is impressive, but (and probably because I'm not the intended audience for this post) I don't get it, I kind of want to get it though. With "it" I mean making Emacs do X, where X is something far from editing text files. It always seems to me like playing Doom on a pregnancy test. Sure you can do it, sure it's impressive, but should you?
n.b. I'm a C# developer that has accepted my fate and use Visual Studio to earn a living, though I've made sure I know my tool, flaws and merits, better than most developers I've met/worked with. My first job as a programmer was writing C++ code in Emacs and can't remember anything negative about that experience (other than getting used to ctrl+x, ctrl+s for saving and, by reflex, doing the same in Excel, and losing a big part of the document that I had just selected to move, because Excel couldn't undo past last save).
Reading the (at the time I'm writing this) 13 comments on this post I see mentions of at least three lightweight programs that does this. What other than "the mountain is there" makes someone think Emacs would be the tool for this? As a Resolve user I know what tool I'd reach for even if using a multi GB, Hollywood grade, non linear editor, compositor and color grader for trimming a short video clip is about as ridiculously overpowered as using a sledge hammer to press a key (and I did exactly that just a few days ago).
Like I said, I'm most likely not "getting it", on multiple levels. Please educate me, why would I use Emacs for this or any of the page upon page of "strange" use cases you find if you search for "Emacs" here on HN. I know Emacs is a powerful editor but I can't for the life of me understand why I would use it to trim video clips.
iLemming · 2h ago
Emacs is weird. I think it changed something in my brain. Before Emacs, I never thought I would ever try controlling video playback from my editor. "Just why?" I probably would've said. I never thought I'd be trying to get the text from the active tab in my browser. Or search through my browser history. Or OCR the content of my clipboard, or control my WM. Dang, before Emacs, it didn't even occur to me to try to type just about any text in my text editor - which now makes absolute sense - why would I ever bother typing in my browser window, Slack, Zoom, or email client?
In Emacs, I have all the tools I need for dealing with text - thesaurus, spell-checking, definition and etymology lookup, search engines, translation, LLMs, etc. Why, oh why, wouldn't I ever try typing anything longer than two words in anything else?
Like, for example, while typing this very comment, I may come across a thought: "I think I already made a similar comment some time ago, let me find it..." What would a regular user do? They'd switch to the browser, navigate to HN, scroll to the bottom, type search query, lookup on the page, jump to the next, keep paging until they find it, copy, switch back, paste... What would an experienced Emacs user do? They'd search for it without ever leaving their editor, grab the stuff from the buffer and paste it - all within just a few keystrokes. Or if I need to find a url in my browser history - I'd just search for it and insert in-place - two keystrokes+search query.
It's not just faster - it is profoundly satisfying and liberating. It gives you the feeling of being in control. You don't have to deal with the quirks of specialized apps; you don't need to memorize tons of their specific keybindings; it gives you a straight path to extracting or injecting plain text.
That's why those who never made a wholehearted attempt to use Emacs just never get it. And those who have, never can understand why others don't even try to recognize the value.
Zobat · 2h ago
I do like having access to stuff while doing similar stuff. Perhaps I'm just a little too lazy to learn that stuff while still getting paid to know other stuff. And I do have just about every tool/feature you mentioned, just not in a single user interface.
I guess the path to Emacs was more of a possibility/probability earlier in my career and I might find it later but for now I'll alt+tab to the browser and/or open a new tab when I need to look up any etymology and stick to navigating around Visual Studio like a pro while they still pay me to do it.
vector_spaces · 1h ago
The nice thing with emacs is that you can do as much or as little as you want with it. For me it started with basic text editing, then doing some git stuff with magit, then realizing emacs has wonderful capabilities around notetaking and to-do management in org-mode.
Like you, though, I work in orgs that are very Windows heavy, so I tend to use it more for my personal stuff rather than in my day job
Karrot_Kream · 1h ago
Yeah I know some folks who only really use it for basic text editing and org-mode notetaking. I know writers who only use it to write. I know coders who only use it to code. etc.
bfors · 1h ago
How are you integrating with things like HN or your browser history?
bowmessage · 1h ago
Per the comment, he doesn’t have to, all prior written text is nicely stored in a file (probably an org file), already open in emacs.
qiine · 2h ago
this is inspiring, I am slowly getting to that same conclusion but in neovim... if I write text I want all my nvim fancyness... because oh boy is it fancy!
uludag · 2h ago
As an Emacs users who often tries to do as many things as possible in Emacs, I would say that the more stuff you can do in Emacs, the more the various features in Emacs compound with each other, giving you more utility.
For example, I use the Verb package for making HTTP requests. So with Emacs as my HTTP client, I can do bulk HTTP request calls with keyboard macros. The HTTP requests can be stored in org-mode. I can write custom Elisp for special authentication scenarios. I can create new commands if I need them.
For this example, I can imagine (haven't used this myself) scenarios like creating a keyboard macro to shave off the first X seconds of a video usable with dired.
Some non-text-editing things in Emacs that are actually extremely useful:
- Git via Magit
- Managing files with Dired
- Media player with Emms
- RSS feeds with elfeed
and the list goes on and on...
Using a well thought-out Emacs interface for anything is one of the biggest sources of joy in my technical life.
Zobat · 1h ago
Using well thought out interfaces is a joy wherever we find them.
Something in your comment made me remember a DOS based file "explorer". Screen split down the middle with a folder-tree and file list on both sides. I remember hardly ever turning on the computer without starting that for one task or another. That was some serious UI pleasure, at least for the time. Ha, found it:
Getting deep enough into it, it basically becomes your shell, complete with the ability shells have to orchestrate multiple programs into a meta-program.
taeric · 56m ago
In this case, I'd view it more as an interactive mode to use ffmpeg?
That is, it isn't like emacs is the thing that is doing the trimming. It is just providing convenient access to ffmpeg to do that. That it is able to do this using roughly 300 lines of code is quite impressive and largely speaks to why people love doing things in emacs.
It would be one thing if this was code golfed to get to a working state. Reading the code, it is remarkably straight forward interactions with ffmpeg.
skydhash · 7m ago
Emacs more like a platform like DOS or the Terminal/Shell/TUI combination than an editor like Vim/Micro. The wealth of libraries, all centered around the concept of buffers and windows, make it easy to integrate pretty much any other tools.
Is it an REPL? use comint.
Is it a tool that act on text files (lint, test,...)? Use compile
Do you need input with completion? Use the minibuffer.
Do you need multichoice selection? Use a buffer and mark stuff (there's a mode that you can extend from if you need to display tabulated data).
Do you need to define flags on the fly? Use transient.
Network request? Calling shell command? A combination of all the above? Emacs got your back.
And because it's a live programming environment, you can start quickly with a prototype (or just altering stuff) and then tweak things until you have a proper package.
agentultra · 2h ago
There's some truth to the aphorism, "Emacs is a great operating system... if only it had a decent text editor."
I think Emacs is basically an elisp runtime that happens to have primitives like buffers, windows, etc upon which a text editor happened to be implemented.
It's more like a programming environment than a text editor. Sort of like Pharo Smalltalk, for example.
You can implement an HTTP server in elisp. You can render SVG, HTML, PDF. All kinds of things.
Karrot_Kream · 1h ago
I'm not really the type of person to do video editing or web browsing in Emacs, but I can still see the appeal.
A well-tuned emacs install is comfortable. I have my keybindings that do what I want them to do. I can visually organize my emacs frame (what is now called a GUI window) exactly how I want, with files taking up the parts of the screen that I want. I can be reading the README of some project I checked out and be curious about some terms, then just select it and send it off to my LLM. It's trivial to switch between Claude, OpenAI/ChatGPT, and Gemini depending on how much context I need to give.
It's like having personal space organized to your tastes. For some, their personal space can seem on the outside as a warzone of stuff, for others it's meticulously organized and labelled, but the key commonality is that it's personal space and that the owner of the space is comfortable in it. That's what emacs is. I don't need to learn a new set of keybindings or mouse clicks to unlock new functionality, I can just bring it into emacs.
t_mann · 1h ago
While I'm not an Emacs aficionado and I find some of the stuff that people squeeze into Emacs weird [0], I have to vouch for OP here. It's a front end for ffmpeg. ffmpeg is a text-based utility and Emacs is a text editor. That actually makes sense. And judging by the screengrab it's a lot more ergonomic than plain ffmpeg. If I were an Emacs user I'd definitely consider using this, and it makes me kind of jealous.
[0] recent example from here: a proto social network that runs via org-files-over-http (as if we didn't have a markup language designed for http already) https://news.ycombinator.com/item?id=44889354
layer8 · 2h ago
To me the point is that Emacs is a customizable environment that allows you to whip up stuff like that fairly easily, and have it integrate with arbitrary other Emacs stuff. Standalone desktop programs are each their own separate little worlds. Emacs is a more integrated environment in that sense, compared to mainstream operating systems.
kelvinjps10 · 3h ago
Great comment, although I use emacs for everything code, writing, finanaces, task management still all these things are text so I don't get using emacs for non text things
iLemming · 2h ago
> I don't get using emacs for non text things
What do you mean by "non-text things"? You are dealing with the computer, it's all about text and mostly text. Sure, it might be encoded and digitized, but even structured binary - is all just text. Even when you give a computer voice commands - they are just synthesized audio form of fucking text. Even with "turtles all the way down" - it's all turtles made of text.
Have you seen the gif in the blogpost? With the transient that has "Move Forward/Backward", "Increase", etc. commands? The commands that you'd have to send to the specialized app anyway - Emacs or not. In what form? Fucking text, of course.
sexyman48 · 2h ago
with the computer, it's all about text.
Boy, are you going to be blown away by Pac-Man.
iLemming · 2h ago
First Pac-man was written for Zilog Z80 microprocessor in Assembly. What do you think Assembly looks like? Sequence of emojis?
avhon1 · 24m ago
But how does playing pac-man make especial sense in text?
ElevenLathe · 24m ago
I would call a sequence of emojis a form of text too!
shadowgovt · 1h ago
Modern emacs is surprisingly powerful, far from "Doom on a pregnancy test" (image display and UI widgets are just features).
Looking at the code for this solution (https://github.com/xenodium/dotsies/blob/main/emacs/ar/video...), it's under 400 lines (excluding the require of three very common libraries and an ffmpeg dependency). I'm not actually sure I could pull off this feature in 400 lines of JavaScript (and the binding logic for going from node to ffmpeg isn't going to come to my fingertips nearly as fast as the logic for emacs LISP, although I know that varies from person-to-person).
Plus, once it's in emacs it can glue to other things. If I want to grab video from an email and trim it, I have tools in emacs to fetch particular emails, etc.
I think the most reasonable way to think about emacs hacks like this is "I could do this in a shell script... But why would I when emacs gives me interactivity, a REPL, and the advantages of buffer manipulation as a metaphor?"
cmrdporcupine · 2h ago
Unity of key bindings is one reason. Consistency of interface. Relative ease of using elisp to write some of these things.
Emacs users typically have a whole pile of customizations, macros, and workflow automations they've written up over the years.
And for things that are text oriented, the ability to work the buffers emacs-style between emacs windows is a joy.
There's a lot of advantages to keeping everything inside emacs.
layer8 · 3h ago
This supports the meme of Emacs as an operating system. It would actually be nice if graphical integrations like that could be implemented as easily on our actual OSs.
JohnKemeny · 56m ago
Emacs is an elisp interpreter.
dfltr · 3h ago
I love that (and I say this with zero shade intended) you can never really tell which "Use Emacs for x" posts are goofs and which ones are serious.
yashasolutions · 1h ago
Pretty neat. I use Emacs a lot, and also do quite a bit of video trimming. For people wondering "why Emacs?", here’s the use case: trimming video is mostly about writing down start/end times, sometimes with a note. That’s all text.
If you can turn that text directly into clips without switching to a separate video editor, it’s surprisingly efficient. Of course, this only makes sense if you already live in Emacs, then it reduces context switching, helps to keep the flow. If you don’t, it just looks odd. But it’s not about making a meme out of "doing everything in Emacs" - it is just a small tool that fits the workflow of people who are already in that environment.
tombert · 2h ago
This is pretty interesting; I had never thought of using Emacs as a video trimming thing, but why not? I've trimmed videos manually with FFmpeg and I've thought about building my own GUI to do it, so Emacs is as good a choice as any.
I don't really use Emacs but I love that people use it for everything; next step is a non-linear video editor.
finaard · 3h ago
Nice, I was just about to do something like that as I didn't find anything ready last week when I got annoyed yet again when trimming a video.
taeric · 4h ago
Massive kudos on this! Could see elevating this to a full blown "ffmpeg-mode" that allows other forms of editing that is common from that tool.
smw · 4h ago
All of your links to your own posts in your blog seem to be broken -- relative links need a "/" at the beginning, I think?
Hey, thanks for reporting. I had a couple of links that went haywire. Please lemme know if you run into other issues. First link to https://xenodium.com/seek-and-you-shall-find was broken. Should work fine now.
swyx · 5h ago
i love this but dont use emacs. i wish that existing tools were lighter weight at video trimming. Screenflow is the lightest i know of but fails badly at some video formats and sometimes OoMs. if it had a better architecture streaming bytes i feel like it might not have that problem.
any other light weight trimming people have?
latexr · 4h ago
I find my approach lightweight, but it’s still around 80 lines of code so a tad big to share as an HN comment. It also requires a bit of explanation to set up (though once done, it’s incredibly simple to use) and the output is custom to my needs.
Essentially, I already use mpv as my video player, which in addition to being very fast also allows seeking frame-by-frame, saving and returning to positions, and running Lua scripts. So I wrote some Lua which reacts to a specific key press by saving the current video timestamp. Press it again and it records a second timestamp, then it fires off Handbrake CLI (FFmpeg could also work) to do the cutting and save the trimmed file.
If you search online for “mpv cut video” you should find some plugins with that same idea. I have never used them so I can’t attest to how good or bad they are. All the ones I found are larger than my approach, but then again I just made mine do exactly what I want without customisation so that’s to be expected.
One specific advice I’ll give, if you go this approach and are on the Apple ecosystem: Use the Handbrake CLI instead of FFmpeg to do the cutting. FFmpeg was super frustrating and I was unable to get a result where the output video worked properly in Quick Look and sending through iMessage; after too long trying to get it to work and messing with a myriad flags, I switched to Handbrake with no weird settings and it’s been working flawlessly ever since.
But haven't worked on it in months. Usable for now if you don't need audio
xenodium · 4h ago
> Screenflow is the lightest i know of but fails badly at some video formats and sometimes OoMs
I'm a big fan of ScreenFlow, but light it is not ;) If you just want to trim and assuming you are on macOS, QuickTime's "Edit > Trim..." does the job. It's what I used before doing the Emacs thingy.
jcynix · 4h ago
Lightweight? I don't mind a bit of weight if its versatile. But when I want to do things fast, I use Shotcut (free, open source) which is much easier to use than e.g. ffmpeg. There exist a number of good tutorials showing how to accomplish tasks.
P.S. What's great about tools like emacs or ffmpeg is their usability via a command line and thus scripting. Which even works on an Android device running inside Termux.
kccqzy · 3h ago
I consider Handbrake lightweight. It never fails at any video formats I care to test and it also transcodes them to modern video codecs.
tombert · 2h ago
Avidemux is ok for what it is. I use it for snipping and stitching stuff together because you can avoid full reencodes when exporting.
beklein · 4h ago
Very cool tool, and always amazing what Emacs can do...
If this isn’t your _daily_ use case and you only need to edit video from time to time, just ask your preferred LLM to give you the FFmpeg commands to cut, speed up, mute, flip, add text, etc.
This has worked quite well for me with simple use cases, and well no need to learn Emacs.
latexr · 4h ago
That’d be an awful way to cut video, because it wouldn’t help with the most important part: visualising and extracting the exact initial and final time stamps.
Especially if you don’t do this regularly, a GUI makes much more sense and saves you the frustration of having to sift through potentially wrong commands and figuring out what exactly to edit to fix the mistakes.
beklein · 2h ago
I’m not saying this is better than a GUI, but instead let me give you an example.
Sometimes I have movie clips A, B, and C. I want to trim part of A at the beginning and end, then stitch clip B to it while speeding it up by 2x, and finally add clip C at the end, also trimmed a bit. After that, I want to add some text at specific times for a specific duration. In the end, I’ll export everything in 1080p.
I know all of this can be done with Final Cut or any other video editing app using a GUI, or the cool Emacs tool above...
But for me this would mean (GUI example) downloading the app and watching YouTube tutorials just to learn what to click.
For simple video editing (and other tasks), I sometimes need to get the job done quickly without wanting to learn a whole new tool.
I found out that I can achieve sufficiently advanced video edits with FFmpeg commands produced step by step from a LLM.
If you think this is awful, ok. I thought it was neat and wanted to share the idea.
latexr · 2h ago
I’m having a hard time believing your example.
If you ever needed to do that more than once, using a basic video editor (of which there are many, free and open-source, no need for a commercial behemoth like Final Cut), playing with it for ten minutes once would give you all the knowledge you need forever, even when you are without access to your LLM. And you can keep the app installed, you don’t need to download it every time. There’s also no need to watch YouTube videos, most of these basic editors have evident interfaces that anyone could figure out on their own for simple tasks. People did figure out things before YouTube tutorials. Or hey, if you’re that keen on LLMs, ask them where the option you want is.
Furthermore, you have not addressed at all the crux of the point. How are you even getting the exact time stamps to give to the LLM of FFmpeg for the cut? Or how do you decide that 2x is the exact speedup you need? Or how do you know what size and position and text font and colour even make sense?
All of those are visual decisions which need confirmation because video is visual. It doesn’t make sense to blindly run lengthy FFmpeg commands over and over to see if the result is any good.
beklein · 1h ago
Again, totally fair points, and for many people a (simple) GUI is the right tool. I am not against GUIs or particularly pro LLMs; I just want to show an alternative way to solve video editing problems without judging any specifc technology.
Not all video work is visual-first storytelling. In engineering/lab contexts you often just need “good enough” trims, concatenation, speedups, and a few labels to document an experiment. As I said in another comment, I usually get the timestamps by noting them down while watching the video, or in rarer cases from timestamped sensor data.
Sorry if my explanation wasn't good enough...
beepbooptheory · 3h ago
If the LLM is not seeing the video, what does this add for you over just looking up the relevant options?
StableAlkyne · 3h ago
> just looking up the relevant options
Not the OP, but ffmpeg's documentation is pretty awful to navigate if you aren't an expert in it. It is very technical and exact, but fails to provide examples for most options.
For example, the fpsmax option says you can set the maximum frame rate using "Hz value, fraction or abbreviation." So now the user has to search for how any of these things are to be specified (does a bare 60 mean 60hz? Do you need to include Hz? Is it case sensitive? What are the abbreviations? What is the fraction a fraction of?). And that's a random option I found in the pile of documentation it has.
Maybe it's useful if you use it every day, but I completely understand why people use GUIs whose purpose is to construct the command. Or even LLMs to do the same thing.
beklein · 2h ago
In my common use case, I note down the timestamps of the cuts. No LLM needed here.
I know there are options for everything in FFmpeg, and I’m thankful to the community and maintainers for providing such a powerful and well-documented tool. I sometimes just want a quick video edit that doesn’t involve reading the man pages for minutes or hours.
precompute · 3h ago
Great tool! I'm always impressed by how versatile a tool Transient is. I use it extensively as well and there's nothing like it anywhere else.
When you have a hammer in your hand and try to use it for more than nails.
iLemming · 3h ago
Typical reaction from someone who has no clue. Emacs isn’t a “hammer”; it's more like “glue” - you don't have to do everything _with_ Emacs, but it can definitely mediate and delegate specific tasks to more specialized tools - it can give you the sense of doing everything _through_ Emacs.
Why would anyone do that? Because plain text rocks.
> There is no equivalent in any other communication technology for the social, communicative, cognitive and reflective complexity ¹
And there's simply nothing better today than Emacs for dealing with the plain text. Neovim comes close, but still can't match it.
I know that you are a stalwart Emacs supporter — I've seen your posts before, and still remember your airplane awakening — but don't you think that more carrot than stick would be more effective at convincing people to use Emacs?
iLemming · 2h ago
I may not sound nice at times, but I strive to be kind. Kindness implies honesty. Why is it easier to learn a foreign language around kids? Because kids (with no malice in their hearts) would tell you the truth - when you mispronounce things, they'd laugh at your mistakes. When it comes to spreading truth about Emacs, I'd rather be like a kid.
I don't think the comment above justified characterizing it as a "stick", but I suppose that is something you wanted to say to me long ago, and I appreciate your veracity. If you give me more constructive suggestions for changing my rhetoric, I may even promise to consider changing my narrative, but at this point, I don't even see what's wrong with it, really.
submeta · 1h ago
You don’t have to tell me what Emacs is capable of. Been using it for all my computational use-cases for years. But migrated away from it because it is obvious that each use case has better solutions outside Emacs. I am convinced the Unix way (do one thing and do it well, connect them via pipes and text) is the way to go.
lycopodiopsida · 1h ago
> I am convinced the Unix way (do one thing and do it well, connect them via pipes and text) is the way to go.
I was convinced too, but after the amount of work required to convince terminal, tmux and neovim to be friends I thought “It would be nice if all of it would be in one sane configuration language and actually debuggable!”
These days, if I need unix tools (use rg a lot) I plug them into emacs.
trey-jones · 3h ago
This may be a bit pedantic, but Emacs-as-a-hammer metaphor might work better than you intended, since a hammer is definitely useful for more than just hitting nails. This seems pretty neat to me.
bitwize · 4h ago
Hey, has your favorite IDE been used to run German air traffic control?
rickdarlino · 4h ago
Everything seems like a nail these days. Probably uses his smartwatch to spread butter, too.
xenodium · 4h ago
lol I did work in the smarwatch space for a good chunk of time. While I totally get the nail thing, this is as quick/lightweight as it gets after the command line, which is a lot more cumbersome for this use case.
cpldcpu · 3h ago
You what is even easier than using Emacs to operare ffmpeg? Just use claude-code (or one of the other CLI code-agents)...
sexyman48 · 2h ago
Yeesh, OP merely respawns a new ffmpeg process to extract the next frame
-- a very emacsy, and thus boneheaded, way of emulating a proper GUI.
tombert · 2h ago
I'm not sure how you'd do it "properly" with libavcodec while still doing a regular Emacs plugin.
It's 300 lines and in pure Emacs lisp, it doesn't seem boneheaded to me.
sexyman48 · 2h ago
I'm not sure how to libavcodec while still doing Emacs
I'm glad you see my point.
tombert · 2h ago
I just don't think it's that bad. Even if it spawns a process for each frame when you're scrubbing, it seems to run fast enough on my computer.
If you want to do a lot of advanced video editing then yeah use a real editor, but if you're just doing a quick trim it's really not a big deal to spin up a few dozen very-short-lived processes.
mr_toad · 2h ago
It’s probably be more efficient to convert the video to multiple frames in batches, and then buffer them. Spawning processes is pretty resource intensive.
tombert · 1h ago
I mean, "resource intensive"; that's technically true but the processes are pretty short-lived and only one spawns at a time as far as I can tell. It's definitely more overhead than an in-thread thing, but still not that much on modern computers.
I agree that it would be more efficient to do these things in batches but I really don't think its current state is that bad, at least for a V1.
n.b. I'm a C# developer that has accepted my fate and use Visual Studio to earn a living, though I've made sure I know my tool, flaws and merits, better than most developers I've met/worked with. My first job as a programmer was writing C++ code in Emacs and can't remember anything negative about that experience (other than getting used to ctrl+x, ctrl+s for saving and, by reflex, doing the same in Excel, and losing a big part of the document that I had just selected to move, because Excel couldn't undo past last save).
Reading the (at the time I'm writing this) 13 comments on this post I see mentions of at least three lightweight programs that does this. What other than "the mountain is there" makes someone think Emacs would be the tool for this? As a Resolve user I know what tool I'd reach for even if using a multi GB, Hollywood grade, non linear editor, compositor and color grader for trimming a short video clip is about as ridiculously overpowered as using a sledge hammer to press a key (and I did exactly that just a few days ago).
Like I said, I'm most likely not "getting it", on multiple levels. Please educate me, why would I use Emacs for this or any of the page upon page of "strange" use cases you find if you search for "Emacs" here on HN. I know Emacs is a powerful editor but I can't for the life of me understand why I would use it to trim video clips.
In Emacs, I have all the tools I need for dealing with text - thesaurus, spell-checking, definition and etymology lookup, search engines, translation, LLMs, etc. Why, oh why, wouldn't I ever try typing anything longer than two words in anything else?
Like, for example, while typing this very comment, I may come across a thought: "I think I already made a similar comment some time ago, let me find it..." What would a regular user do? They'd switch to the browser, navigate to HN, scroll to the bottom, type search query, lookup on the page, jump to the next, keep paging until they find it, copy, switch back, paste... What would an experienced Emacs user do? They'd search for it without ever leaving their editor, grab the stuff from the buffer and paste it - all within just a few keystrokes. Or if I need to find a url in my browser history - I'd just search for it and insert in-place - two keystrokes+search query.
It's not just faster - it is profoundly satisfying and liberating. It gives you the feeling of being in control. You don't have to deal with the quirks of specialized apps; you don't need to memorize tons of their specific keybindings; it gives you a straight path to extracting or injecting plain text.
That's why those who never made a wholehearted attempt to use Emacs just never get it. And those who have, never can understand why others don't even try to recognize the value.
I guess the path to Emacs was more of a possibility/probability earlier in my career and I might find it later but for now I'll alt+tab to the browser and/or open a new tab when I need to look up any etymology and stick to navigating around Visual Studio like a pro while they still pay me to do it.
Like you, though, I work in orgs that are very Windows heavy, so I tend to use it more for my personal stuff rather than in my day job
For example, I use the Verb package for making HTTP requests. So with Emacs as my HTTP client, I can do bulk HTTP request calls with keyboard macros. The HTTP requests can be stored in org-mode. I can write custom Elisp for special authentication scenarios. I can create new commands if I need them.
For this example, I can imagine (haven't used this myself) scenarios like creating a keyboard macro to shave off the first X seconds of a video usable with dired.
Some non-text-editing things in Emacs that are actually extremely useful:
Using a well thought-out Emacs interface for anything is one of the biggest sources of joy in my technical life.Something in your comment made me remember a DOS based file "explorer". Screen split down the middle with a folder-tree and file list on both sides. I remember hardly ever turning on the computer without starting that for one task or another. That was some serious UI pleasure, at least for the time. Ha, found it:
https://handwiki.org/wiki/Software:File_Commander
Ah, the nostalgia!
That is, it isn't like emacs is the thing that is doing the trimming. It is just providing convenient access to ffmpeg to do that. That it is able to do this using roughly 300 lines of code is quite impressive and largely speaks to why people love doing things in emacs.
It would be one thing if this was code golfed to get to a working state. Reading the code, it is remarkably straight forward interactions with ffmpeg.
Is it an REPL? use comint.
Is it a tool that act on text files (lint, test,...)? Use compile
Do you need input with completion? Use the minibuffer.
Do you need multichoice selection? Use a buffer and mark stuff (there's a mode that you can extend from if you need to display tabulated data).
Do you need to define flags on the fly? Use transient.
Network request? Calling shell command? A combination of all the above? Emacs got your back.
And because it's a live programming environment, you can start quickly with a prototype (or just altering stuff) and then tweak things until you have a proper package.
I think Emacs is basically an elisp runtime that happens to have primitives like buffers, windows, etc upon which a text editor happened to be implemented.
It's more like a programming environment than a text editor. Sort of like Pharo Smalltalk, for example.
You can implement an HTTP server in elisp. You can render SVG, HTML, PDF. All kinds of things.
A well-tuned emacs install is comfortable. I have my keybindings that do what I want them to do. I can visually organize my emacs frame (what is now called a GUI window) exactly how I want, with files taking up the parts of the screen that I want. I can be reading the README of some project I checked out and be curious about some terms, then just select it and send it off to my LLM. It's trivial to switch between Claude, OpenAI/ChatGPT, and Gemini depending on how much context I need to give.
It's like having personal space organized to your tastes. For some, their personal space can seem on the outside as a warzone of stuff, for others it's meticulously organized and labelled, but the key commonality is that it's personal space and that the owner of the space is comfortable in it. That's what emacs is. I don't need to learn a new set of keybindings or mouse clicks to unlock new functionality, I can just bring it into emacs.
[0] recent example from here: a proto social network that runs via org-files-over-http (as if we didn't have a markup language designed for http already) https://news.ycombinator.com/item?id=44889354
What do you mean by "non-text things"? You are dealing with the computer, it's all about text and mostly text. Sure, it might be encoded and digitized, but even structured binary - is all just text. Even when you give a computer voice commands - they are just synthesized audio form of fucking text. Even with "turtles all the way down" - it's all turtles made of text.
Have you seen the gif in the blogpost? With the transient that has "Move Forward/Backward", "Increase", etc. commands? The commands that you'd have to send to the specialized app anyway - Emacs or not. In what form? Fucking text, of course.
Boy, are you going to be blown away by Pac-Man.
Looking at the code for this solution (https://github.com/xenodium/dotsies/blob/main/emacs/ar/video...), it's under 400 lines (excluding the require of three very common libraries and an ffmpeg dependency). I'm not actually sure I could pull off this feature in 400 lines of JavaScript (and the binding logic for going from node to ffmpeg isn't going to come to my fingertips nearly as fast as the logic for emacs LISP, although I know that varies from person-to-person).
Plus, once it's in emacs it can glue to other things. If I want to grab video from an email and trim it, I have tools in emacs to fetch particular emails, etc.
I think the most reasonable way to think about emacs hacks like this is "I could do this in a shell script... But why would I when emacs gives me interactivity, a REPL, and the advantages of buffer manipulation as a metaphor?"
Emacs users typically have a whole pile of customizations, macros, and workflow automations they've written up over the years.
And for things that are text oriented, the ability to work the buffers emacs-style between emacs windows is a joy.
There's a lot of advantages to keeping everything inside emacs.
If you can turn that text directly into clips without switching to a separate video editor, it’s surprisingly efficient. Of course, this only makes sense if you already live in Emacs, then it reduces context switching, helps to keep the flow. If you don’t, it just looks odd. But it’s not about making a meme out of "doing everything in Emacs" - it is just a small tool that fits the workflow of people who are already in that environment.
I don't really use Emacs but I love that people use it for everything; next step is a non-linear video editor.
https://xenodium.com/emacs-as-your-video-trimming-tool/
Is fixed and also fix various typo in the blog post. Bbut has other bugs, for example, the title link redirect to the bugged URL.
But (the bugged URL):
https://xenodium.com/emacs-as-your-video-trimming-tool Have the problems with relative links you talked about.
any other light weight trimming people have?
Essentially, I already use mpv as my video player, which in addition to being very fast also allows seeking frame-by-frame, saving and returning to positions, and running Lua scripts. So I wrote some Lua which reacts to a specific key press by saving the current video timestamp. Press it again and it records a second timestamp, then it fires off Handbrake CLI (FFmpeg could also work) to do the cutting and save the trimmed file.
If you search online for “mpv cut video” you should find some plugins with that same idea. I have never used them so I can’t attest to how good or bad they are. All the ones I found are larger than my approach, but then again I just made mine do exactly what I want without customisation so that’s to be expected.
One specific advice I’ll give, if you go this approach and are on the Apple ecosystem: Use the Handbrake CLI instead of FFmpeg to do the cutting. FFmpeg was super frustrating and I was unable to get a result where the output video worked properly in Quick Look and sending through iMessage; after too long trying to get it to work and messing with a myriad flags, I switched to Handbrake with no weird settings and it’s been working flawlessly ever since.
But haven't worked on it in months. Usable for now if you don't need audio
I'm a big fan of ScreenFlow, but light it is not ;) If you just want to trim and assuming you are on macOS, QuickTime's "Edit > Trim..." does the job. It's what I used before doing the Emacs thingy.
https://en.wikipedia.org/wiki/Shotcut
P.S. What's great about tools like emacs or ffmpeg is their usability via a command line and thus scripting. Which even works on an Android device running inside Termux.
If this isn’t your _daily_ use case and you only need to edit video from time to time, just ask your preferred LLM to give you the FFmpeg commands to cut, speed up, mute, flip, add text, etc. This has worked quite well for me with simple use cases, and well no need to learn Emacs.
Especially if you don’t do this regularly, a GUI makes much more sense and saves you the frustration of having to sift through potentially wrong commands and figuring out what exactly to edit to fix the mistakes.
Sometimes I have movie clips A, B, and C. I want to trim part of A at the beginning and end, then stitch clip B to it while speeding it up by 2x, and finally add clip C at the end, also trimmed a bit. After that, I want to add some text at specific times for a specific duration. In the end, I’ll export everything in 1080p.
I know all of this can be done with Final Cut or any other video editing app using a GUI, or the cool Emacs tool above...
But for me this would mean (GUI example) downloading the app and watching YouTube tutorials just to learn what to click.
For simple video editing (and other tasks), I sometimes need to get the job done quickly without wanting to learn a whole new tool.
I found out that I can achieve sufficiently advanced video edits with FFmpeg commands produced step by step from a LLM.
If you think this is awful, ok. I thought it was neat and wanted to share the idea.
If you ever needed to do that more than once, using a basic video editor (of which there are many, free and open-source, no need for a commercial behemoth like Final Cut), playing with it for ten minutes once would give you all the knowledge you need forever, even when you are without access to your LLM. And you can keep the app installed, you don’t need to download it every time. There’s also no need to watch YouTube videos, most of these basic editors have evident interfaces that anyone could figure out on their own for simple tasks. People did figure out things before YouTube tutorials. Or hey, if you’re that keen on LLMs, ask them where the option you want is.
Furthermore, you have not addressed at all the crux of the point. How are you even getting the exact time stamps to give to the LLM of FFmpeg for the cut? Or how do you decide that 2x is the exact speedup you need? Or how do you know what size and position and text font and colour even make sense?
All of those are visual decisions which need confirmation because video is visual. It doesn’t make sense to blindly run lengthy FFmpeg commands over and over to see if the result is any good.
Not all video work is visual-first storytelling. In engineering/lab contexts you often just need “good enough” trims, concatenation, speedups, and a few labels to document an experiment. As I said in another comment, I usually get the timestamps by noting them down while watching the video, or in rarer cases from timestamped sensor data.
Sorry if my explanation wasn't good enough...
Not the OP, but ffmpeg's documentation is pretty awful to navigate if you aren't an expert in it. It is very technical and exact, but fails to provide examples for most options.
For example, the fpsmax option says you can set the maximum frame rate using "Hz value, fraction or abbreviation." So now the user has to search for how any of these things are to be specified (does a bare 60 mean 60hz? Do you need to include Hz? Is it case sensitive? What are the abbreviations? What is the fraction a fraction of?). And that's a random option I found in the pile of documentation it has.
Maybe it's useful if you use it every day, but I completely understand why people use GUIs whose purpose is to construct the command. Or even LLMs to do the same thing.
I know there are options for everything in FFmpeg, and I’m thankful to the community and maintainers for providing such a powerful and well-documented tool. I sometimes just want a quick video edit that doesn’t involve reading the man pages for minutes or hours.
No comments yet
Why would anyone do that? Because plain text rocks.
> There is no equivalent in any other communication technology for the social, communicative, cognitive and reflective complexity ¹
And there's simply nothing better today than Emacs for dealing with the plain text. Neovim comes close, but still can't match it.
__
¹ Graydon Hoare: Always bet on text https://graydon2.dreamwidth.org/193447.html
I don't think the comment above justified characterizing it as a "stick", but I suppose that is something you wanted to say to me long ago, and I appreciate your veracity. If you give me more constructive suggestions for changing my rhetoric, I may even promise to consider changing my narrative, but at this point, I don't even see what's wrong with it, really.
I was convinced too, but after the amount of work required to convince terminal, tmux and neovim to be friends I thought “It would be nice if all of it would be in one sane configuration language and actually debuggable!”
These days, if I need unix tools (use rg a lot) I plug them into emacs.
It's 300 lines and in pure Emacs lisp, it doesn't seem boneheaded to me.
I'm glad you see my point.
If you want to do a lot of advanced video editing then yeah use a real editor, but if you're just doing a quick trim it's really not a big deal to spin up a few dozen very-short-lived processes.
I agree that it would be more efficient to do these things in batches but I really don't think its current state is that bad, at least for a V1.