{"id":19575859,"url":"https://github.com/martukas/dotfiles","last_synced_at":"2026-03-07T08:34:11.753Z","repository":{"id":148710275,"uuid":"147295219","full_name":"martukas/dotfiles","owner":"martukas","description":"My dotfiles for Linux and Windows","archived":false,"fork":false,"pushed_at":"2024-10-27T02:49:57.000Z","size":661,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-27T03:43:07.147Z","etag":null,"topics":["bash","bootstrap","dotbot","dotfiles","linux","powershell","windows"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martukas.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":"2018-09-04T05:57:50.000Z","updated_at":"2024-10-27T02:50:01.000Z","dependencies_parsed_at":"2024-05-05T08:25:29.859Z","dependency_job_id":"8c8f4c00-0df9-4fae-a725-0fc63c251180","html_url":"https://github.com/martukas/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martukas%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martukas%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martukas%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martukas%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martukas","download_url":"https://codeload.github.com/martukas/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224062749,"owners_count":17249290,"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":["bash","bootstrap","dotbot","dotfiles","linux","powershell","windows"],"created_at":"2024-11-11T06:49:42.314Z","updated_at":"2025-10-25T22:05:44.409Z","avatar_url":"https://github.com/martukas.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# One ring to rule them all\n\n[![Xubuntu](https://img.shields.io/badge/Xubuntu-22.04-0044aa?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUwMS4zMTIgLTQ5NC4wMzIpIj48Y2lyY2xlIGN4PSI1MzMuMzEyIiBjeT0iNTI2LjAzMiIgcj0iMzIiIHN0eWxlPSJmaWxsOiMwNGE7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiLz48cGF0aCBkPSJNNTI0LjAxMyA1MTEuNzU0Yy0uNDYyIDIuMjk2LjIwMiA0LjkyMyAxLjEzMSA4LjEuMDU3LjE5Mi0uMDUyLjQzNy0uMTUuNDY2LS40MjIuMTIzLTEuMTQ1LS4wMDgtMS4yODUtLjI5Ni0uNzI0LTEuNDg2LTEuMDY5LTMuMDA2LTEuOTE0LTQuNDctLjU4NS0xLjAxMi0xLjE5LTEuOTc4LTEuOTExLTIuNjMxLS44NzYtLjc5My0xLjU2Mi0uOTUtMi40OTktLjU1OC0xLjE4Mi40OTQtMS44OTYgMS42NzgtMi4xNCAyLjc0LS4yNDkgMS4wNzYtLjE0NSAyLjMyLjA1IDMuNC4yMjggMS4yNy41MiAyLjI3Mi44OTQgMy40Ni0uMjg2Ljg0NC0yLjAwNCA1LjQ3Ny0yLjQyIDguNjktLjUzMyA0LjEyMi0yLjAzMyAxNi41OTggMTEuNzE0IDE1LjIxIDUuMDctLjUxIDkuMjAyLTIuMjg4IDEzLjExMS00LjExIDEuNzkyLS44MzYgNC4wNC0xLjkxNCA2LjItMy4xIDIuMTYyLTEuMTg4IDQuMTY4LTIuNDU0IDUuNy0zLjggMS41MzYtMS4zNSAyLjY1NC0yLjgyOCAyLjQ1LTQuMy0uMzI4LTIuMzc0LTEuOTAyLTQuMTM4LTQtNS41LTIuMTA1LTEuMzY4LTUuNzAxLTIuNjQtOC4zLTMuMzk5LTMuNDEtLjk5Ni02LjA1LTEuMzgzLTkuMjUtMS41NTctLjE3OS0zLjI0Mi4yNTMtNy41MS0xLjgtOS45OTUtLjQ3NS0uNTc1LTEuMTY4LS45NDEtMi0xLTEuMzM2LjA1NC0zLjE1MS41Mi0zLjU4IDIuNjV6IiBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIvPjxwYXRoIGQ9Ik01NDAuMTU4IDUxNy41NTFjLS4wMzQuNzk5LjEzMyAyLjUyMSAxLjE4IDIuNjU0IDEuMjQ3LjE0NyAxLjY0Ny0uODggMS43ODMtMS42ODMuNDMzLTIuNTU1LjU1My0zLjMxOS43Ny01LjYzNC4yNTQtMi43MjguOTI1LTcuMzMxLS4yNDctNi45MDItMS4xODcuNDM1LTIuMTMgNC4xMTEtMi40MzggNS42NTItLjI0IDEuMi0uOTg5IDQuNTQyLTEuMDQ4IDUuOTEzek01NDUuNjIzIDUxOC4xM2MtLjY4MyAxLjU5Ni0xLjAwNyAyLjk3NC0uMDYyIDMuNDQyIDEuMTI1LjU1NyAyLjA5OC0uNTIzIDIuNDE1LTEuMjczLjk1NC0yLjI2MiAxLjQ4My0zLjYzMiAyLjIyLTUuMzQzIDEuMDgzLTIuNTE3IDMuNzg3LTcuMzUyIDIuMDAzLTcuMDk2LTEuMjUyLjE4LTIuOTM0IDMuMzU4LTMuNzQyIDQuNzA2LTEuMDQgMS43MzItMS44NSAzLjI2Ny0yLjgzNCA1LjU2NXoiIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIi8+PC9nPjwvc3ZnPg==)](https://xubuntu.org/)\n[![Windows10](https://img.shields.io/badge/Windows-10-0078D6?logo=windows)](https://www.microsoft.com/en-us/software-download/windows10%20)\n[![Windows11](https://img.shields.io/badge/Windows-11-0078D6?logo=windows)](https://www.microsoft.com/en-us/windows/windows-11)\n[![bash](https://img.shields.io/badge/GNU-Bash-4eaa25?logo=gnubash)](https://www.gnu.org/software/bash/)\n[![PowerShell](https://img.shields.io/badge/PowerShell-7-26405f?logo=powershell)](https://github.com/PowerShell/PowerShell)\n\u003cbr\u003e\n[![CircleCI](https://dl.circleci.com/status-badge/img/gh/martukas/dotfiles/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/martukas/dotfiles/tree/master)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/e85734ffda084555a2a4ffd960e4074c)](https://app.codacy.com/gh/martukas/dotfiles/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n\nThese are my dotfiles and bootstrap scripts for Linux and Windows systems.\u003cbr\u003e\nThe git/bash/ssh parts should work for Mac as well.\n\n## Bootstrapping\n\nLet's make as few assumptions as possible about what's available on the machine - no git, no Python.\u003cbr\u003e\nThese scripts will install the essentials, set up ssh credentials and clone this repo.\n\n### Linux\n\nThis one-liner should get things going:\n\n```shell\nbash \u003c(wget -qO- https://github.com/martukas/dotfiles/raw/master/bootstrap/bootstrap.sh)\n```\n\n### Windows\n\nFirstly, you want to prevent OneDrive from taking over your home directories as described [here](https://answers.microsoft.com/en-us/windows/forum/all/taking-back-control-of-your-folders-from-onedrive/7b7ad05e-8b05-4bcd-9772-9e4eee880346):\n\n- Open 'gpedit' from the Start menu\n- Follow `Local Computer Policy` \u003e `Computer Configuration` \u003e `Administrative Templates`\u003e`Windows Components`\u003e`OneDrive`\n- Edit and enable `Prevent the usage of OneDrive for file storage`.\n- Reboot and make sure that OneDrive is not running\n\nStart PowerShell (64 bit, with Admin privileges), and run these commands\n\n```powershell\nSet-ExecutionPolicy Unrestricted\nInvoke-WebRequest -Uri \"https://github.com/martukas/dotfiles/raw/master/bootstrap/bootstrap.ps1\" -OutFile \"bootstrap.ps1\"\n.\\bootstrap.ps1\n```\n\nYou will have to reboot before you start using the utilities below.\n\n## First use\n\nFor first-time setup:\n\n- go to `~/dev/dotfiles`\n- run either `install.ps1` or `install.sh` as per shell type\n\nThese scripts will set up symlinks, command aliases and also run [SuperPack](https://github.com/martukas/superpack) to offer you installation of packages appropriate for your system.\n\n## Routine use\n\nThe following aliases have (nearly) identical behaviour in bash and Powershell, Linux and Windows.\n\n| Alias                       | Function                                                                 |\n| --------------------------- | ------------------------------------------------------------------------ |\n| dfu                         | **dotfiles update:** pulls this repo and runs appropriate install script |\n| df-upgrade                  | **dotfiles upgrade:** upgrades git sub-modules in this repo              |\n| dnb `new_branch_name`       | **git new branch:** creates and pushes new branch                        |\n| commmit-push \"message\"      | add everything, commit with \"message\", push                              |\n| commmit-push-bypass-hooks   | same as above, but skips pre-commit hooks                                |\n| git-rm-submodule            | actually removes a git sub-module                                        |\n| upd                         | update all (`apt` and `snap`) or `winget` packages, cleanup              |\n| missue `123_something`      | creates and pushes branch `issue_123_something`                          |\n| issue \"message\"             | `commit-push` appending \"; updates #123\" (on an `issue_123` branch)      |\n| la                          | list directory contents, including hidden files                          |\n| cdgr                        | cd to git root                                                           |\n| mcd                         | make directory and cd into it                                            |\n| up `num`                    | go up `num` directories                                                  |\n| :penguin: mx                | `make executable:` chmod 775                                             |\n| :penguin: mw                | `make writable:` chmod 664                                               |\n| :penguin: own               | take ownership as user:user                                              |\n| :penguin: rm-ext            | remove all files recursively with given extension (asks to confirm)      |\n| :penguin: create-user       | create user with sudo privileges, home directory, authorized ssh key     |\n| :window: Test-Administrator | Return true if in elevated session                                       |\n\n### Keeping repo up to date\n\n- use the `df*` aliases above\n- symlinked files will stay up to date\n- \"dirty\" state in the `/private` subrepo will be ignored. Commit changes to that submodule separately, before you commit in parent dir\n\n\u003c!-- markdownlint-disable no-space-in-emphasis --\u003e\n\n## Manual steps required\n\nThe following cannot be automated:\n\n- [Jetbrains remote](https://www.jetbrains.com/help/idea/remote-development-overview.html)\n- [CLion + PlatformIO integration](https://docs.platformio.org/en/latest/integration/ide/clion.html)\n\n\u003cdetails\u003e\n\u003csummary\u003eLinux manual steps\u003c/summary\u003e\n\n- flameshot kbd shortcut\n- panel items layout\n- movable window manager tabs\n- mugshot avatar\n- whisker favorites\n- Enable [Ubuntu pro](https://ubuntu.com/pro/dashboard?) and run `sudo pro enable esm-apps`\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows manual steps\u003c/summary\u003e\n\n- Mouse cursor color `Settings` \u003e `Bluetooth \u0026 devices` \u003e `Mouse` \u003e `Mouse pointer`\n- File associations `Settings` \u003e `Apps` \u003e `Default apps`\n  - Clementine: XSPF\n  - VLC: everything else it wants\n  - IrfanView: Everything else it wants, except TTF\n- [Unblock Flameshot shortcut](https://flameshot.org/docs/guide/windows-help/) \u0026 reboot\n- Configure foreign keyboards\n- Turn on night light\n- Configure 24h clock\n\n\u003c/details\u003e\n\n## Future improvements\n\n\u003cdetails\u003e\n\u003csummary\u003eRoadmap\u003c/summary\u003e\n\n- include .profile?\n- install [conan](https://docs.conan.io/2/installation.html)\n- clementine remote config \u0026 script\n- Linux:\n  - Numlock on startup\n  - Clone with pre-commit enabled\n  - Window tiling manager\n  - change terminal name via ssh\n  - NPM\n  - synaptic\n  - baobab\n  - circleci\n- Windows:\n  - add whkrdc config to repo\n  - WLS\n  - dotnet\n  - jdk\n  - optional sshd and remote-desktop config\n- Configure rustup shell completion [here](https://rust-lang.github.io/rustup/installation/index.html)\n- Try out [oh-my-fish](https://github.com/oh-my-fish/oh-my-fish)\n- Set up conditional GPG things in `.gitconfig_local` or some such\n- Adopt \u003chttps://github.com/pop-os/shell\u003e ?\n- Migrate to \u003chttps://www.chezmoi.io/\u003e ?\n- Adopt \u003chttps://github.com/mehedirm6244/My_XFCE_dotties/tree/Everblush\u003e ?\n\n\u003c/details\u003e\n\u003c!-- markdownlint-enable no-space-in-emphasis --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartukas%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartukas%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartukas%2Fdotfiles/lists"}