{"id":35438716,"url":"https://github.com/dseichter/workdir","last_synced_at":"2026-03-03T23:03:55.506Z","repository":{"id":237326304,"uuid":"785879031","full_name":"dseichter/Workdir","owner":"dseichter","description":"Working with directories and commands","archived":false,"fork":false,"pushed_at":"2026-02-28T21:33:57.000Z","size":1045,"stargazers_count":2,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-28T23:45:46.564Z","etag":null,"topics":["developer-tool","developer-tools","productivity","utilities","workdir"],"latest_commit_sha":null,"homepage":"https://dseichter.github.io/Workdir/","language":"Python","has_issues":true,"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/dseichter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"dseichter","custom":"https://www.paypal.com/donate/?hosted_button_id=T8KHMXMYSJ8YN"}},"created_at":"2024-04-12T20:27:19.000Z","updated_at":"2026-02-28T21:36:10.000Z","dependencies_parsed_at":"2024-04-30T22:23:42.535Z","dependency_job_id":"a98bbb45-bddc-451f-9df5-5b761f59db24","html_url":"https://github.com/dseichter/Workdir","commit_stats":null,"previous_names":["dseichter/workdir"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/dseichter/Workdir","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dseichter%2FWorkdir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dseichter%2FWorkdir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dseichter%2FWorkdir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dseichter%2FWorkdir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dseichter","download_url":"https://codeload.github.com/dseichter/Workdir/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dseichter%2FWorkdir/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30064797,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["developer-tool","developer-tools","productivity","utilities","workdir"],"created_at":"2026-01-02T23:17:36.759Z","updated_at":"2026-03-03T23:03:55.497Z","avatar_url":"https://github.com/dseichter.png","language":"Python","funding_links":["https://buymeacoffee.com/dseichter","https://www.paypal.com/donate/?hosted_button_id=T8KHMXMYSJ8YN"],"categories":[],"sub_categories":[],"readme":"# Workdir\n\nWorking with multiple directories and execute commands without navigate to them with **Workdir**.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"icons/folder_open_48dp_8B1A10_FILL0_wght400_GRAD0_opsz48.png\" alt=\"Workdir Logo\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/dseichter/Workdir?style=flat-square\" alt=\"Release\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/downloads/dseichter/Workdir/total?style=flat-square\" alt=\"Downloads\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/dseichter/Workdir?style=flat-square\" alt=\"License\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e\u003ca href=\"https://dseichter.github.io/Workdir/\"\u003eDocumentation\u003c/a\u003e\u003c/b\u003e •\n  \u003cb\u003e\u003ca href=\"https://github.com/dseichter/Workdir/releases\"\u003eDownloads\u003c/a\u003e\u003c/b\u003e •\n  \u003cb\u003e\u003ca href=\"https://github.com/dseichter/Workdir/issues\"\u003eIssues\u003c/a\u003e\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/dseichter/Workdir/actions/workflows/ruff.yml/badge.svg\" alt=\"ruff\"\u003e\n\u003cimg src=\"https://github.com/dseichter/Workdir/actions/workflows/bandit.yml/badge.svg\" alt=\"bandit\"\u003e\n\u003cimg src=\"https://github.com/dseichter/Workdir/actions/workflows/trivy.yml/badge.svg\" alt=\"trivy\"\u003e\n\u003ca href=\"https://sonarcloud.io/summary/new_code?id=dseichter_Workdir\"\u003e\u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=dseichter_Workdir\u0026metric=alert_status\" alt=\"Quality Gate Status\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## About \n\n![Workdir](docs/docs/assets/screenshots/workdir.png \"Workdir\")\n\nMy tool **Workdir** is one of the oldest tools I use. I have not been navigating back and forth between directories for over ten years now. I press a button and open my directories directly. I can also start executing commands with one click. With another button I directly start the command line. And sometimes I directly start a command inside the directory. This makes working with directories much easier.\n\nYou can *theoretically* specify an unlimited number of directories. Up to six individual commands can be called. When the program starts, it checks whether the directory exists. If not, it will be colored red and no actions will be available.\n\n## Installation and configuration\n\nDownload the [latest release](https://github.com/dseichter/Workdir/releases) into a destination folder of your choice and start the program. Via the configuration (menu Extras) you can specify your directories and store up to six commands.\n\n![Workdir - Configuration](docs/docs/assets/screenshots/configuration.png \"Workdir - Configuration\")\n\nPlease note that in the current version you can only specify the directory itself as a placeholder. The examples for CMD and Windows Explorer should help you to implement your own calls. Once you click Save, the commands and directories are immediately available in the Directories tab.\n\nFor commands that you do not want to start by mistake, the program gives you, via the Confirmation option, a prompt to display. Here you will be shown a dialog before each execution, which you must confirm before the command is actually executed.\n\nPlease always specify the directories using the variable {directory}. This will be replaced and assembled accordingly when the commands are executed. Of course you can also specify executable files or shell scripts which will be called accordingly. This has not been necessary for ourselves so far.\n\nYou can also specify additional environment variables. They will be added to your default ones.\n\nWorkdir includes a tray icon. You can minimize the main window to the system tray and continue running commands from the tray menu.\n\n## Multiple configurations\n\nI am asked from time to time if I would like to offer more than six commands. This request is mostly based on the need to handle different types of directories with different commands. Very gladly I give my answer in summary, so that it can help you from the beginning:\n\nWorkdir can be used multiple times. Create a subfolder each time, which you name “Development” or “Projects”, for example. Copy the application file into these directories. When you start the program, it will check if there is already a configuration there (if not, the program will create it automatically). Now you can define different commands, independent of the category. For example, the opening or updating (git pull) of directories with source code. Or automatic generation of thumbnails or conversion of file formats. The variety knows no limits. Workdir supports you in meeting these requirements as well.\n\n## Known Issues\n\nIf you run workdir the first time, the window can be really small. The size will be auto adjusted based on your directories. So please proceed by adding your directories.\n\n# Contributing \n\nIf you want to contribute by fixing an issue, add a new function or just optimize something, a simple instruction how to start development.\n\n## Start development\n\nCreate and activate an environment by running the following command:\n\n```python -m venv .venv```\n\n**On Windows:**\n```.venv/Scripts/activate```\n\n**On Linux/macOS:**\n```source .venv/bin/activate```\n\nInstall the required dependencies\n\n```pip install -r src/requirements.txt```\n\nTo build and install the project using the new pyproject.toml:\n\n```bash\npip install .\n```\n\nTo run the application:\n```python src/workdir.py```\n\n## 📄 License\n\nGPL 3.0 — see [LICENSE](LICENSE) file at the root of the repository for details.\n\n## Icons\n \nRunIfExists uses [Google Material Symbols](https://fonts.google.com/icons) within its code for UI icons.  \nMaterial Symbols are licensed under the [Apache License 2.0](https://github.com/google/material-design-icons/blob/master/LICENSE) and are free for use in open source projects.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdseichter%2Fworkdir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdseichter%2Fworkdir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdseichter%2Fworkdir/lists"}