b3nj5m1n/xdg-ninja

List of missing programs

amtoine opened this issue ยท 28 comments

I really love that application ๐Ÿคฉ
I was able to quickly clean a lot of my $HOME directory and my dotfiles repo, really cool stuff we have here ๐Ÿ‘

I wanted to further clean my $HOME and noticed, and that's normal considering the number of existing applications, a lot of hidden files and directories still hanging around without explicit permissions ๐Ÿค”

Below are lists of all the directories and files I still have in my $HOME, I only removed those already supported by xdg-ninja but without definitive solution and my personal files. There might be items not relevant to xdg-ninja, please tell me and i'll remove them ๐Ÿ˜‰

If you prefer to split this issue into more little ones, this one can be closed and the job can be done.

I just thought a somewhat ""complete"" list of missing programs would be usefull ๐Ÿ˜‹
And I would be more than happy to help if you accept external contributions ๐Ÿ˜‹

Missing directories:

.arduino-create/
.arduino15/
.dwarffortress/
.eendroroy-coloschemes/
.emacs.d/
.gsutil/
.ipython/
.keras/
.kube/
.links/
.lyrics/
.moc/
.mujoco/
.oh-my-bash/
.oh-my-xonsh/
.pytest_cache/
.quickemu/
.screenlayout/
.slime/
.SpaceVim/
.SpaceVim.d/
.surf/
.telegram-cli/
.themes/
.thumbnails/
.trash/
.vim/ -> ~/.SpaceVim/
.vim_back/
.virtualbox/
.when/
.xmonad/
.zotero/

Missing files:

.bash_aliases
.bash_logout
.bash_profile
.bashrc
.bashrc.backup
.boto
.ctags
.dmrc
.gcalcli_cache
.gcalcli_oauth
.gnuplot_history
.grip-oggenc
.luahistory
.matho_history
.net.log
.notion-enhancer
.nwinkler_random_colors
.osh-update
.pdbhistory
.profile
.pulse-cookie
.python_history-83827.tmp
.rtorrent.rc
.sc_history
.sdirs
.viminfo
.vimrc_back
.xonshrc
.xscreensaver
.yarnrc
.zcompdump*
.zsh_history

Special cases:

  • gnupg: this program is supported but the ~/.gnupg file gets regenerated each time on my machine. This would be great to have a mention to that problem in the output of xdg-ninja

I removed ~/.steampid as it is mentionned in arduino/Arduino#78.

thunderbird is added in 05cec29

also thank you for pointing a lot of these out.

yes you're right I did not git fetch the new version, removing that ๐Ÿ‘Œ

so would you be open to PRs @wael444? ๐Ÿ˜‹
just to know if it is worth working on some of the programs above ๐Ÿ˜‰

just to know if it is worth working on some of the programs above wink

certainly maybe,
all you need is a description on how to fix it, if it is movable and if it is fixable whatever.
I'm pretty sure you can use the XDG Base Directory wiki page on arch wiki for the resources as that's all i know of.
there are simply too many programs to be honest.
please add my issue arduino/Arduino#78 aka ~/.steampid to your issue.

Hi @a2n-s, thank you so much, this is the most comprehensive list of missing applications I've got so far.

I originally intended to add unsupported apps from the xdg-base-dir page from the arch wiki, but it was not a high priority, so I haven't got around to it yet.

If you would be willing to make a PR for this, that would be awesome. It obviously doesn't have to be all of them, and if you want to do some now and some later, multiple PRs are more than welcome as well.

If you have cabal installed, you can compile the haskell program in this repository, that will make it easier to add new configurations. cabal run xdgnj add will guide you through the process of adding new configurations, you can preview the config for a program with cabal run xdgnj prev programs/PROGRAM.json (where PROGRAM is the name of the program you want to preview), and you can edit existing configurations with cabal run xdgnj edit programs/PROGRAM.json.

If you don't want to go through the trouble, it would still be very helpful if you were to compile the information necessary (I suspect in this case most of the files sadly won't be movable, so this necessary information would be the name of the program responsible for the creation of the file/dir, and optionally a link to a relevant issue discussing xdg compliance) and send that over to me, as a comment to this issue would be fine, then I would go through it myself and create the configs.

Either way, thank you so much for this report and the kind words!

please add my issue arduino/Arduino#78 aka ~/.steampid to your issue.

I purposely removed ~/.steamip from the list above as you mention it already in arduino/Arduino#78.

The goal of my issue is to shed light on missing programs in xdg-ninja, i.e. programs not in the code base, nor in any issue or PR, not to swallow the other issues into mine ๐Ÿ˜‹

Hi @a2n-s, thank you so much, this is the most comprehensive list of missing applications I've got so far.

Hi @b3nj5m1n! ๐Ÿ‘‹
I think that is normal and the very minimum to make the life of maintainers of open-source projects easier with clear discussions ๐Ÿ˜‹
I'm far from perfect at that, but I simply try my best ๐Ÿ˜‰

I originally intended to add unsupported apps from the xdg-base-dir page from the arch wiki, but it was not a high priority, so I haven't got around to it yet.

Oh I see, this is a great piece of information for the endeavour of xdg-ninja!

If you would be willing to make a PR for this, that would be awesome. It obviously doesn't have to be all of them, and if you want to do some now and some later, multiple PRs are more than welcome as well.

I sure can do that, as stated in the opening message of the issue.

If you have cabal installed, you can compile the haskell program in this repository, that will make it easier to add new configurations. cabal run xdgnj add will guide you through the process of adding new configurations, you can preview the config for a program with cabal run xdgnj prev programs/PROGRAM.json (where PROGRAM is the name of the program you want to preview), and you can edit existing configurations with cabal run xdgnj edit programs/PROGRAM.json.

If you don't want to go through the trouble, it would still be very helpful if you were to compile the information necessary (I suspect in this case most of the files sadly won't be movable, so this necessary information would be the name of the program responsible for the creation of the file/dir, and optionally a link to a relevant issue discussing xdg compliance) and send that over to me, as a comment to this issue would be fine, then I would go through it myself and create the configs.

Do not worry, I'll try to find my way through cabal and the tools you propose to generate proper .json files ๐Ÿ‘Œ

Either way, thank you so much for this report and the kind words!

Well, I was not that much aware of the mess my $HOME directory was... I knew it was filled with some hidden files, but time did pass and now it is quite out of control. I discovered your project with this video from "The Linux Cast" and, yeah, I do not want uncontrolled files in my $HOME anymore!! At least know that they are there and cannot be moved ๐Ÿ˜„

I would like to work on a refactor of my GitHub account this week-end, it's been on my mind for way too long...

But, once I'm done, count on me to open PRs and try to solve as best as I can the files listed above!

I thought about the following plan yesterday before going to bed:

  • adding a minimal support for all of the files at once, just to have them checked when running xdg-ninja
  • try to solve the hidden files that still hang around in my dotfiles repo (that's just to have an arbitrary starting point ๐Ÿ˜‰)
  • then address the others when possible

What do you think about that? ๐Ÿ˜‹

Also, before beginning anything... What is the difference between "Currently unsupported" and "No help available" in the .json files? ๐Ÿค”

here's my effortless info that i managed to find

file/directory status info
.arduino-create no information found
.eendroroy-coloschemes no information found
.links no information found
.lyrics no information found
.mujoco no information found
.oh-my-bash no information found
.oh-my-xonsh no information found
.quickemu no information found
.SpaceVim no information found
.SpaceVim.d no information found
.telegram-cli no information found
.trash no information found
.vim_back no information found
.info no information found
.boto no information found
.dmrc no information found
.luahistory no information found
.net.log no information found
.notion-enhancer no information found
.nwinkler_random_colors no information found
.osh-update no information found
.pdbhistory no information found
.sc_history no information found
.sdirs no information found
.xonshrc no information found
.xscreensaver no information found
.arduino15 won't fix arduino/arduino-ide#1514
.kube won't fix kubernetes/kubernetes#56402
.pytest_cache won't fix pytest-dev/pytest#1089
.zotero won't fix zotero/zotero#1203
.bashrc wont fix https://savannah.gnu.org/support/?108134
.bash_aliases won't fix https://savannah.gnu.org/support/?108134
.bash_profile won't fix https://savannah.gnu.org/support/?108134
.bash_login won't fix https://savannah.gnu.org/support/?108134
.bash_logout won't fix https://savannah.gnu.org/support/?108134
.ctags wont fix universal-ctags/ctags#89
.matho_history won't fix History can be moved by using rlwrap mathomatic -r with the RLWRAP_HOME environment set appropriately.
.profile won't fix
.pulse-cookie won't fix
.dwarffortess unnoticed https://www.bay12games.com/dwarves/mantisbt/view.php?id=11800
.keras unnoticed tensorflow/tensorflow#38831
.gsutil unnoticed GoogleCloudPlatform/gsutil#991
.screenlayout unnoticed https://gitlab.com/arandr/arandr/-/issues/45
.slime unnoticed slime/slime#610
.themes supported $XDG_DATA_HOME/themes
.trash supported $XDG_DATA_HOME/trash
.virtualbox supported
.gnuplot_history supported
.pulse-cookie supported
.rtorrent supported
.thumbnails needs more information https://bugzilla.gnome.org/show_bug.cgi?id=166643
.vim needs more information XDG_CONFIG_HOME/vim/vimrc https://wiki.archlinux.org/title/XDG_Base_Directory#Supported
.vimrc needs more information https://wiki.archlinux.org/title/XDG_Base_Directory#Supported
.viminfo needs more information https://wiki.archlinux.org/title/XDG_Base_Directory#Supported
.emacs.d optional XDG_CONFIG_HOME/emacs/init.el
.oh-my-zsh optional ZSH="~/.config/zsh/oh-my-zsh" sh installer.sh
.xmonad optional `All of these must exist, otherwise it gives up and falls back to ~/.xmonad/ for each: XDG_CACHE_HOME/xmonad, XDG_CONFIG_HOME/xmonad, XDG_DATA_HOME/xmonad
.yarnrc optional alias yarn='yarn --use-yarnrc "$XDG_CONFIG_HOME/yarn/config"'
.zshrc optional $ZDOTDIR via ~/.zshenv
.zcompdump optional $ZDOTDIR via ~/.zshenv
.zsh_history optional $ZDOTDIR via ~/.zshenv
.ipython optional The default dotfile path is still $HOME but xdg directories (or ~/.config/ipython if XDG_* vars are unset) are supported and work correctly.
.moc optional mocp -M "$XDG_CONFIG_HOME"/moc mocp -O MOCDir="$XDG_CONFIG_HOME"/moc
.surf optional see config.def.h

should i open a PR for the information i managed to gather?

Thanks a lot @wael444, this is a great start.

should i open a PR for the information i managed to gather?

Yes, let's start with the ones that are "won't fix" and have relevant issues attached.


@a2n-s

I thought about the following plan yesterday before going to bed:

adding a minimal support for all of the files at once, just to have them checked when running xdg-ninja
try to solve the hidden files that still hang around in my dotfiles repo (that's just to have an arbitrary starting point wink)
then address the others when possible
What do you think about that?

I'm not sure what you mean by minimal support, but this sounds like a good plan to me. If we manage to add support for some of these before you get to it, I'll try to create and maintain a checklist in a comment here somewhere, so it's clear which ones have been addressed and which ones haven't.

Also, before beginning anything... What is the difference between "Currently unsupported" and "No help available" in the .json files?

No help available is automatically inserted into the output when the "help" section is left completely blank. This is mostly for stuff that probably won't get xdg support, and where the either isn't a relevant issue to link to, or I was too lazy to dig it up. The goal is to reduce the number of files producing this.

Currently unsupported means it's not supported (you can also use this if there are no official plans to add support, i.e. it's been marked as won't fix), but these generally link to a relevant issue.

You shouldn't worry about this too much, as the helper program will generate a template for you based on whether the file can be moved or not.

No help available is automatically inserted into the output when the "help" section is left completely blank. This is mostly for stuff that probably won't get xdg support, and where the either isn't a relevant issue to link to, or I was too lazy to dig it up. The goal is to reduce the number of files producing this.
Currently unsupported means it's not supported (you can also use this if there are no official plans to add support, i.e. it's been marked as won't fix), but these generally link to a relevant issue.
You shouldn't worry about this too much, as the helper program will generate a template for you based on whether the file can be moved or not.

ok I understand ๐Ÿ‘Œ

I'm not sure what you mean by minimal support, but this sounds like a good plan to me. If we manage to add support for some of these before you get to it, I'll try to create and maintain a checklist in a comment here somewhere, so it's clear which ones have been addressed and which ones haven't.

I mean simply adding a blank file, or with "Currently unsupported" at least, to have the program in the database of xdg-ninja

I was willing to start working on that but do not want to produce duplicate work. Let's wait for @wael444 to respond to you and see if a PR is opened, no need to open twice the same PR ๐Ÿ˜‰

I was willing to start working on that but do not want to produce duplicate work. Let's wait for @wael444 to respond to you and see if a PR is opened, no need to open twice the same PR wink

what do you exactly want me to do? just add the programs into programs/ and open a PR?

Add then using cabal run xdgnj add, that will add them to programs/, then open a PR.

Just to clarify @wael444, since you said in #79 (comment) that you "have no idea how to use cabal", are you still planning to work on this?

Just to clarify @wael444, since you said in #79 (comment) that you "have no idea how to use cabal", are you still planning to work on this?

Sorry, I am unable to work on it.

@b3nj5m1n, I will try to solve that issue as best as I can ๐Ÿ˜‰

Stay tuned ๐Ÿ˜‹

Sadly, I've not been able to compile the haskell code using cabal run xdgnj add...
i've tried cabal update, cabal install --dependencies-only --ghc-option=-dynamic, but none of them worked ๐Ÿค”

I will fall back onto my editor of choice, that's not a big deal for the work to be done, just a bit sad not being successfull with a new tool ๐Ÿ‘

Are you on arch linux? There's some additional configuration you need to do, namely adding the following to your cabal config:

library-vanilla: False
shared: True
executable-dynamic: True
program-default-options
  ghc-options: -dynamic

See also the arch wiki page.

If it still doesn't work, you can also just write out the information and give it to me in a text file or something like that, then I'll add the properly formatted configs. Sorry about the inconvenience.

I'll try to write a Dockerfile to make this easier.

Are you on arch linux? There's some additional configuration you need to do, namely adding the following to your cabal config:

yes I am ๐Ÿ‘Œ

library-vanilla: False
shared: True
executable-dynamic: True
program-default-options
  ghc-options: -dynamic

See also the arch wiki page.

that is super strange, it did not work...
i ran cabal run xdgnj prev programs/git.json... which worked
and now cabal run xdgnj add appears to be working ๐Ÿ˜ฎ

If it still doesn't work, you can also just write out the information and give it to me in a text file or something like that, then I'll add the properly formatted configs. Sorry about the inconvenience.

that is not your fault at all ๐Ÿ˜‹

I'll try to write a Dockerfile to make this easier.

that would be amazing ๐Ÿคฉ

Below is a todo list of all the programs from the beginning of that issue:

  • .arduino-create/
  • .arduino15/
  • .dwarffortress/
  • .eendroroy-coloschemes/
  • .emacs.d/
  • .gsutil/
  • .ipython/
  • .keras/
  • .kube/
  • .links/
  • .lyrics/
  • .moc/
  • .mujoco/
  • .oh-my-bash/
  • .oh-my-xonsh/
  • .pytest_cache/
  • .quickemu/
  • .screenlayout/
  • .slime/
  • .SpaceVim/
  • .SpaceVim.d/
  • .surf/
  • .telegram-cli/
  • .themes/
  • .thumbnails/
  • .trash/
  • .vim/ -> ~/.SpaceVim/
  • .vim_back/
  • .virtualbox/
  • .when/
  • .xmonad/
  • .zotero/
  • .bash_aliases
  • .bash_logout
  • .bash_profile
  • .bashrc
  • .bashrc.backup
  • .boto
  • .ctags
  • .dmrc
  • .gcalcli_cache
  • .gcalcli_oauth
  • .gnuplot_history
  • .grip-oggenc
  • .luahistory
  • .matho_history
  • .net.log
  • .notion-enhancer
  • .nwinkler_random_colors
  • .osh-update
  • .pdbhistory
  • .profile
  • .pulse-cookie
  • .python_history-83827.tmp
  • .rtorrent.rc
  • .sc_history
  • .sdirs
  • .viminfo
  • .vimrc_back
  • .xonshrc
  • .xscreensaver
  • .yarnrc
  • .zcompdump*
  • .zsh_history

I push the first ones so that you can tell me if that's ok with you @b3nj5m1n ๐Ÿ˜‰

I'll try to write a Dockerfile to make this easier.

I added a dockerfile on a new branch, it builds a statically linked executable from the project, so it should run anywhere without any dependencies needed (?)

You can find the dockerfile here and a prebuilt binary here.

I'll give it a try later in a vm to see if it really works properly as a standalone binary, if it does, it should make using the helper program a lot easier.

And there we have it! The full list implemented in ./programs.

Some of them are really unclear about what program that is and how to fix it, but this is the best so far, and people can still open issues to fix any problem ๐Ÿ˜‹

I'll try to write a Dockerfile to make this easier.

I added a dockerfile on a new branch, it builds a statically linked executable from the project, so it should run anywhere without any dependencies needed (?)

You can find the dockerfile here and a prebuilt binary here.

I'll give it a try later in a vm to see if it really works properly as a standalone binary, if it does, it should make using the helper program a lot easier.

really great news for future contributions ๐Ÿคฉ

I propose to move to the new issue below, as this issue will probably be closed soon, after the merge of arduino/Arduino#82, if you accept it ๐Ÿ˜‹

As this is fully merged, I close the issue ๐Ÿ˜‰