[HN Gopher] Show HN: TUI for managing XDG default applications
___________________________________________________________________
Show HN: TUI for managing XDG default applications
Author here. I made this little TUI program for managing default
applications on the Linux desktop. Maybe some of you will find it
useful. Happy to answer any questions.
Author : mitjafelicijan
Score : 123 points
Date : 2026-01-25 11:19 UTC (1 days ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| untech wrote:
| Looks neat!
| sourcegrift wrote:
| No one on earth has so far managed to get xdg default apps work
| on Linux. I've been failing since 19 years personally. If you've
| really succeded then congratulations!
| nickjj wrote:
| > No one on earth has so far managed to get xdg default apps
| work on Linux.
|
| I've only been using Linux for a few weeks but what am I
| missing here?
|
| I set a bunch of mime types in `~/.config/mimeapps.list` which
| are assigned to desktop apps and they all open perfectly with
| `xdg-open` or when I launch them through a file manager.
|
| It is documented in the XDG specification
| https://specifications.freedesktop.org/mime-
| apps/latest/file....
| forgotpwd16 wrote:
| For me currently, when trying to open a `text/markdown` file,
| there's a disassociation between what my file manager (Caja)
| runs (own bin/emacs script; was under the impression it was
| auto-creating a .desktop file), what mimeapps.list have
| (emacs.desktop), and what `xdg-open` runs (Firefox for some
| reason).
| TingPing wrote:
| Older desktops don't follow the specs and xdg-open does
| different things based on the desktop, so they indeed can
| get out of sync.
|
| I'd have to look into your specific case but `gio mime` and
| `gio open` do the right things.
| sam_lowry_ wrote:
| > what am I missing here?
|
| There are gotchas, for instance Chrom,{e,ium} insists on
| XDG_DESKTOP_DIR != XDG_DOWNLOAD_DIR.
|
| See this bug report from a confused user:
| https://issues.chromium.org/issues/41076564
| mikkupikku wrote:
| > _also of note, we (mostly) don 't allow ~/Desktop as the
| download dir for security reasons_
|
| This isn't an XDG issue. It's a chromium engineers being
| silly pricks that think they know better than the power
| users who obviously went out of their way to create such a
| configuration. Also I bet it would work if you set your
| XDG_DESKTOP_DIR to ~/Download/
| mitjafelicijan wrote:
| I probably haven't. :) They are a nightmare indeed. But it does
| help a little.
| saturn_vk wrote:
| Great. I must be living on the moon then. I guess gnome work
| great there since it manages this part
| mitjafelicijan wrote:
| Gnome has done an amazing job at this, I agree. You don't
| even notice this issue.
| t-3 wrote:
| It's when I want to use a non-systemd, no-DE environment
| that xdg-stuff becomes very annoying, but that's usually
| because _applications_ assume a certain setup rather than
| any fault of xdg. eg. Wayland is very stupid about
| requiring a certain xdg setup to run at all.
| jwrallie wrote:
| Just by reading the title, I'm sold! This should be very useful
| specially if you are not using a desktop environment that manages
| the default apps.
|
| I always alias open to xdg-open, it's so useful to open a file
| directly from the terminal.
| mitjafelicijan wrote:
| That was the exact reason for it. I made my own window manager
| for fun and was missing a simple way of changing default apps.
| roman_soldier wrote:
| Nice, but problem with all these AI coded TUI's is we will have
| hundreds of them, best to stick to the built in linux commands,
| add aliases/abbreviations (fish) if required, do you need a TUI
| for everything? Sometimes the answer to "Should I write this?" Is
| no
| mitjafelicijan wrote:
| I do agree with some of your sentiment. But by that logic,
| nothing would ever be made.
|
| The same goes with aliases. Why not just use the actual
| commands. You give it your best shot, and sometimes something
| good comes out. And sometimes it's crap. That's life.
|
| And I made it for fun and to learn something. And it wasn't AI
| coded. It's like 200 lines. I wanted to learn termbox2.h a bit
| more than I already had.
| brw wrote:
| Yea I was pleasantly surprised by how simple the code is when
| I read it. Honestly a great example of what termbox2 is
| capable of. Very nice!
|
| And now I know about termbox2, which looks very cool. Looking
| through the example projects[1] in the README I also found
| ictree[2], which does exactly what I was looking for
| yesterday (turning the output of `find` into an ncdu-
| like/interactive tree interface). I didn't manage to find
| something for that through googling around or asking LLMs,
| but thanks to you posting this here I did, so thanks!
|
| [1] https://github.com/termbox/termbox2#examples
|
| [2] https://github.com/NikitaIvanovV/ictree
| mitjafelicijan wrote:
| This whole tool is much more a display of what termbox2 can
| do in couple of lines tbh :) You are so right about that.
|
| It's an amazing library. And all that juice in one stb-
| style header file. You just gotta love it.
|
| And if you are interested in such small libraries, I have a
| Github list with a bunch of them that I found.
|
| https://github.com/stars/mitjafelicijan/lists/stb-style-
| mini...
| wolttam wrote:
| Let people make and use what they want, you don't have to use
| it.
| samtrack2019 wrote:
| reading the code, what make you think it was vibe coded?
| jrm4 wrote:
| I absolutely fail to see the problem and I think the whole
| "best to stick to built in linux commands" is an utterly
| dinosaur-esque take that can, and will, and should, go extinct
| in the age of AI-assisted coding.
| mitjafelicijan wrote:
| It is interesting that somehow every conversation now pivots
| to LLM's. It's almost like people are paranoid or something.
| I have no issue with AI. But it should be used carefully when
| learning/working so you don't miss the little details that
| usually make a big difference later. But to each their own.
|
| It is just getting tiring that people assume more and more
| that things were written with AI for everything. It's like,
| OMG, can you stop it for a second. And who cares, really. Do
| your due diligence, check the code and decide for yourself.
| But maybe, this is just projection. Or a nice way of
| insulting/dismissing people, which I find quite funny.
|
| And like you said, the age of AI-assisted coding is already
| here. There is beauty in piping core utils together and being
| really productive with them. No doubt about it. But there are
| also new ways of computing emerging, and we should learn
| about that too.
| mikkupikku wrote:
| The nice thing about AI coded TUIs is they're so easy to make
| you can make the ones that suit you yourself and ignore the
| rest.
| ranger_danger wrote:
| Feature suggestion: The ability to add/remove more specific mime
| entries such as video/mp4
| mitjafelicijan wrote:
| I haven't thought about this. That makes sense. I will add
| this.
| fouc wrote:
| At first I thought it was going to be some kind of solution to
| force all linux apps to adhere to the XDG Base Directory
| Specification, until I realized this related to a different
| specification altogether (XDG MIME Applications specification).
| jedahan wrote:
| Making home read-only can get there, and I can't find the
| project that forced using XDG paths. I think it used LD_PRELOAD
| or somesuch trick.
|
| edit: https://soc.me/standards/defending-home
| ekipan wrote:
| Strange. Middle-clicking the link opens a HackerNews
| frontpage, but copypasting into a new tab shows the article.
| Presumably the server shoos away referer links? To reduce
| load maybe somehow? Or maybe something's weird in my own
| configuration idk.
| mitjafelicijan wrote:
| I had the same issue as you. Had to copy and paste the
| link.
| IAmLiterallyAB wrote:
| They explicitly check if the referrer is hackernews and do
| that.
| piskov wrote:
| Thank god it's not another React, Solid, Typescript, what have
| you, web abomination inside the terminal (claude code, opencode,
| I'm looking at you).
|
| Bravo!
| thehamkercat wrote:
| That's where codex-cli shines (rust)
|
| the startup time is crazy, you can start writing as soon as you
| hit the command
|
| (I don't use codex, just noticed that it's crazy fast)
| DrammBA wrote:
| Sadly the fast startup time is overshadowed by the slow
| response time of the codex agent
| piskov wrote:
| I don't get it. Even in ChatGPT I always use Pro model with
| maxed-out thinking budget (selectors available only on web
| and windows).
|
| Let them cook as much as they can.
| forgotpwd16 wrote:
| Looks like there're two main approaches to AI-first
| development: (i) favor slow responses to produce an
| upfront high-quality result, (ii) favor quick responses
| to enable faster response-test-query iteration. And,
| based on comments read here, seems Codex isn't too fit
| for the later. Optimally a developer should be able
| switch between the two approaches depending on problem at
| hand.
| codethief wrote:
| > claude code, opencode, I'm looking at you
|
| Could you elaborate? I mean, I get the usual criticism of
| web/Electron-based desktop applications (slow, includes a whole
| Chrome engine, non-native UI, ...) but Claude Code isn't one of
| them?
| piskov wrote:
| Search for twitter drama where Anthropic engineer says
| basically the following [1] and gets shamed by what AAA game
| developers are able to render at the same time.
|
| tldr; the ui you see in the terminal is react-based in claude
| code. As for opencode just see their repo on github.
|
| [1] https://news.ycombinator.com/item?id=46706040
| renewiltord wrote:
| These days I pretty much write this kind of software in ratatui
| with LLM when I need it. But the idea is nice. I like that. LLMs
| are the return of the value of the ideas guy!
|
| But this seems human-written? Then it is interesting. Thank you
| for sharing.
| mitjafelicijan wrote:
| Yeah, I did write it myself, yes. It's actually a very simple
| program.
|
| I heard so many great things about ratatui. I am, however, not
| well versed in Rust. Only did a couple of toy little things in
| it.
| coppsilgold wrote:
| I usually just edit ~/.config/mimeapps.list directly.
|
| I can see how that tool can be useful, but only if it's included
| in official repos. Editing mimeapps.list is simpler than the
| hassle of downloading and building this tool.
___________________________________________________________________
(page generated 2026-01-26 15:01 UTC)