{"id":23331392,"url":"https://github.com/jim60105/toolbx","last_synced_at":"2025-06-11T10:06:35.289Z","repository":{"id":267742551,"uuid":"902155695","full_name":"jim60105/toolbx","owner":"jim60105","description":"My Personal Fedora Toolbox (Containerfile)","archived":false,"fork":false,"pushed_at":"2025-03-29T16:08:17.000Z","size":8587,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T17:22:42.535Z","etag":null,"topics":["dockerfile","fedora","linux","toolbx"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jim60105.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-12T02:41:55.000Z","updated_at":"2025-03-29T16:08:20.000Z","dependencies_parsed_at":"2024-12-12T07:19:48.265Z","dependency_job_id":"dd78c7b4-118d-4524-a7fe-cfc52918acff","html_url":"https://github.com/jim60105/toolbx","commit_stats":null,"previous_names":["jim60105/toolbx"],"tags_count":0,"template":false,"template_full_name":"jim60105/Containerfile-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Ftoolbx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Ftoolbx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Ftoolbx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jim60105%2Ftoolbx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jim60105","download_url":"https://codeload.github.com/jim60105/toolbx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640535,"owners_count":20971554,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dockerfile","fedora","linux","toolbx"],"created_at":"2024-12-20T22:36:55.601Z","updated_at":"2025-06-11T10:06:35.283Z","avatar_url":"https://github.com/jim60105.png","language":"Dockerfile","readme":"# My Personal Fedora Toolbox\n\n[![CodeFactor](https://www.codefactor.io/repository/github/jim60105/toolbx/badge?style=for-the-badge)](https://www.codefactor.io/repository/github/jim60105/toolbx)\n\n\u003e [!NOTE]  \n\u003e toolbx is not a typo, check \u003chttps://containertoolbx.org/\u003e\n\nToolbx is a tool for Linux, which allows the use of interactive command line environments for software development and troubleshooting the host operating system, without having to install software on the host. These are my personal Fedora toolbox images, which I use for development and daily usage.\n\nGet the Containerfile at [GitHub](https://github.com/jim60105/toolbx), or pull the image from [ghcr.io](https://github.com/jim60105?tab=packages\u0026repo_name=toolbx) or [quay.io](https://quay.io/search?q=jim60105%2Ftoolbx).\n\n## base toolbox\n\nThis is the base toolbox image for all the other toolboxes.\n\n\u003e [!NOTE]  \n\u003e This base image includes many development dependencies, making it quite large.  \n\u003e Even though some tools don't use these dependencies, I still include them in the base image. For example, sourcegit toolbox doesn't need Java, and video toolbox doesn't require most of the development tools.  \n\u003e The reason for this design is that my computer always runs all toolboxes simultaneously on Fedora using Podman; in theory, there is no extra overhead when sharing base image layers.\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx:latest fedora-toolbox-42\ntoolbox run sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n- zsh\n- Fonts\n  - Noto Sans CJK\n  - Noto Color Emoji\n  - Cascadia Code\n  - Hina Mincho\n  - [Iansui 芫荽](https://github.com/ButTaiwan/iansui)\n  - [Hack Nerd Font](https://github.com/ryanoasis/nerd-fonts)\n- Gnome Seahorse (OS keyring)\n- Git Credential Manager\n- .NET SDK 8.0 and 9.0\n- Java 21 (JetBrains loves this 😆)\n- Node.js, npm, pnpm, yarn\n- aria2\n- jq\n- vim\n- gh cli\n- Development Tools (@development-tools @c-development openssl-devel cmake ninja-build pkg-config)\n\n## [Sourcegit](https://github.com/sourcegit-scm/sourcegit) toolbox\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx-sourcegit:latest sourcegit\ntoolbox run -c sourcegit cp /usr/share/icons/sourcegit.png ~/.local/share/icons/\ntoolbox run -c sourcegit cp /usr/share/applications/sourcegit.desktop ~/.local/share/applications/\ntoolbox run -c sourcegit sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n## [VSCode](https://code.visualstudio.com/) toolbox\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx-vscode:latest vscode\ntoolbox run -c vscode cp /usr/share/icons/vscode.png ~/.local/share/icons/\ntoolbox run -c vscode cp /usr/share/icons/vscode-insiders.png ~/.local/share/icons/\ntoolbox run -c vscode cp /usr/share/applications/code.desktop ~/.local/share/applications/\ntoolbox run -c vscode cp /usr/share/applications/code-url-handler.desktop ~/.local/share/applications/\ntoolbox run -c vscode cp /usr/share/applications/code-insiders.desktop ~/.local/share/applications/\ntoolbox run -c vscode cp /usr/share/applications/code-insiders-url-handler.desktop ~/.local/share/applications/\ntoolbox run -c vscode sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n\u003e [!IMPORTANT]  \n\u003e Following this guide to setup os keyring to use `gnome-libsecret`:  \n\u003e \u003chttps://code.visualstudio.com/docs/editor/settings-sync#_recommended-configure-the-keyring-to-use-with-vs-code\u003e\n\n## [RustRover](https://www.jetbrains.com/rust/) toolbox\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx-rustrover:latest rustrover\ntoolbox run -c rustrover cp /usr/share/icons/rustrover.svg ~/.local/share/icons/\ntoolbox run -c rustrover cp /usr/share/applications/jetbrains-rustrover.desktop ~/.local/share/applications/\ntoolbox run -c rustrover sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n## [Rider](https://www.jetbrains.com/rider/) toolbox\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx-rider:latest rider\ntoolbox run -c rider cp /usr/share/icons/rider.svg ~/.local/share/icons/\ntoolbox run -c rider cp /usr/share/applications/jetbrains-rider.desktop ~/.local/share/applications/\ntoolbox run -c rider sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n## [DataGrip](https://www.jetbrains.com/datagrip/) toolbox\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx-datagrip:latest datagrip\ntoolbox run -c datagrip cp /usr/share/icons/datagrip.svg ~/.local/share/icons/\ntoolbox run -c datagrip cp /usr/share/applications/jetbrains-datagrip.desktop ~/.local/share/applications/\ntoolbox run -c datagrip sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n## video toolbox\n\nThis toolbox is for video processing and mpv player.\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx-video:latest video\ntoolbox run -c video cp /usr/share/icons/mpv.svg ~/.local/share/icons/\ntoolbox run -c video cp /usr/share/icons/obs.svg ~/.local/share/icons/\ntoolbox run -c video cp /usr/share/applications/mpv.desktop ~/.local/share/applications/\ntoolbox run -c video cp /usr/share/applications/obs.desktop ~/.local/share/applications/\ntoolbox run -c video sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n- OBS Studio\n- ImageMagick\n- ExifTool\n- yt-dlp\n- ffmpeg\n- [mpv](https://mpv.io/manual/stable/)\n  - vapoursynth + mvtools + [motion interpolation (to 60fps)](https://gist.github.com/phiresky/4bfcfbbd05b3c2ed8645)\n  - [uosc (Nice UI for mpv)](https://github.com/tomasklaen/uosc) + [thumbfast](https://github.com/po5/thumbfast)\n  - [Anime4K](https://github.com/bloc97/Anime4K)\n\n\u003e [!NOTE]  \n\u003e Trigger mpv motion interpolation by pressing `b` key.\n\n### Open youtube video in mpv\n\nExecute this script on the youtube video page:\n\n```javascript\n(function() {\n  function getYouTubeVideoId(url) {\n    const regex = /(?:https?:\\/\\/)?(?:www\\.)?youtu(?:\\.be\\/|be\\.com\\/(?:v\\/|embed\\/|watch\\?v=|watch\\?.+?\u0026v=|live\\/))((\\w|-){11})(?:\\S+)?/;\n    const match = url.match(regex);\n    \n    return match ? match[1] : null;\n  }\n\n  function openInMPV(videoId) {\n    window.open(`ytdl://${videoId}`, '_blank');\n  }\n\n  function stopVideo() {\n    var video = document.querySelector('video');\n    if (video) video.pause();\n  }\n\n  const url = window.location.href;\n  const videoId = getYouTubeVideoId(url);\n\n  if (!videoId) {\n    console.log(\"Invalid YouTube URL\");\n    return;\n  } \n\n  console.log(`The video ID is: ${videoId}`);\n\n  openInMPV(videoId);\n\n  stopVideo();\n})();\n```\n\n\u003e [!TIP]  \n\u003e I'm using [Enhancer for YouTube™](https://chromewebstore.google.com/detail/Enhancer%20for%20YouTube%E2%84%A2/ponfpcnoihfmfllpaingbgckeeldkhle) to run this script on the youtube page.  \n\u003e It provides a button so I don't have to implement it myself.\n\n## Kubernetes toolbox\n\nThis toolbox is for kubernetes related tools.\n\n```bash\ntoolbox create -i quay.io/jim60105/toolbx-kubernetes:latest kubernetes\ntoolbox run -c kubernetes cp /usr/share/icons/lens.png ~/.local/share/icons/\ntoolbox run -c kubernetes cp /usr/share/applications/open-lens.desktop ~/.local/share/applications/\ntoolbox run -c kubernetes sh -c 'cp /copy-to-host/* ~/.local/bin/'\n```\n\n- [OpenLens](https://github.com/MuhammedKalkan/OpenLens)\n- [kubectl](https://kubernetes.io/docs/reference/kubectl/overview/)\n- [helm](https://helm.sh/)\n- [talosctl](https://www.talos.dev/v1.9/talos-guides/install/talosctl/)\n\n## Toolbox cheat sheet\n\n- Recreate all the toolboxes\n\n  ```bash\n  podman pull quay.io/jim60105/toolbx:latest \\\n              quay.io/jim60105/toolbx-vscode:latest \\\n              quay.io/jim60105/toolbx-rustrover:latest \\\n              quay.io/jim60105/toolbx-rider:latest \\\n              quay.io/jim60105/toolbx-datagrip:latest \\\n              quay.io/jim60105/toolbx-sourcegit:latest \\\n              quay.io/jim60105/toolbx-video:latest \\\n              quay.io/jim60105/toolbx-kubernetes:latest \u0026\u0026 \\\n  toolbox rm -af \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx:latest fedora-toolbox-42 \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-vscode:latest vscode \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-rustrover:latest rustrover \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-rider:latest rider \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-datagrip:latest datagrip \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-sourcegit:latest sourcegit \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-video:latest video \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-kubernetes:latest kubernetes\n  ```\n\n- Recreate video toolbox\n\n  ```bash\n  podman pull quay.io/jim60105/toolbx-video:latest \u0026\u0026 \\\n  toolbox rm -f video \u0026\u0026 \\\n  toolbox create -i quay.io/jim60105/toolbx-video:latest video\n  ```\n\n\u003e [!NOTE]\n\u003e The `toolbox create` command will always use the existing image.  \n\u003e Remember to manually run `podman pull` before recreating the toolbox!\n\n## Troubleshooting\n\n### Random freezes in VSCode/JetBrains IDE\n\nSet `/etc/hosts` to include `toolbx` in localhost. [ref][1]\n\n```hostname\n# Loopback entries; do not change.\n# For historical reasons, localhost precedes localhost.localdomain:\n127.0.0.1   toolbx localhost localhost.localdomain localhost4 localhost4.localdomain4\n::1         toolbx localhost localhost.localdomain localhost6 localhost6.localdomain6\n```\n\n[1]: https://github.com/containers/toolbox/issues/1059#issuecomment-1135307025\n\n## LICENSE\n\n\u003cimg src=\"https://github.com/user-attachments/assets/77148063-7bd8-4c07-a776-ec297d2f6ad8\" alt=\"gplv3\" width=\"300\" /\u003e\n\n[GNU GENERAL PUBLIC LICENSE Version 3](LICENSE)\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n\u003e [!CAUTION]\n\u003e A GPLv3 licensed Containerfile means that you _**MUST**_ **distribute the source code with the same license**, if you\n\u003e\n\u003e - Re-distribute the image. (You can simply point to this GitHub repository if you doesn't made any code changes.)\n\u003e - Distribute an image that uses code from this repository.\n\u003e - Or **distribute an image based on this image**. (`FROM ghcr.io/jim60105/toolbx` in your Containerfile)\n\u003e\n\u003e \"Distribute\" means to make the image available for other people to download, usually by pushing it to a public registry. If you are solely using it for your personal purposes, this has no impact on you.\n\u003e\n\u003e Please consult the [LICENSE](LICENSE) for more details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjim60105%2Ftoolbx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjim60105%2Ftoolbx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjim60105%2Ftoolbx/lists"}