{"id":13706676,"url":"https://github.com/palikar/dotfiles","last_synced_at":"2025-07-10T19:04:41.892Z","repository":{"id":93817524,"uuid":"138159220","full_name":"palikar/dotfiles","owner":"palikar","description":"Almost full setup for my Debian system.","archived":false,"fork":false,"pushed_at":"2024-07-25T10:57:28.000Z","size":38068,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-19T19:26:43.464Z","etag":null,"topics":["compton","configuration","debian","dotfiles","emacs","emacs-initialization","emacs-packages","i3","i3-gaps","i3-wm","i3blocks","qutebrowser","ranger","system-configuration","system-setup","urxvt"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/palikar.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-06-21T11:04:09.000Z","updated_at":"2024-10-03T05:41:32.000Z","dependencies_parsed_at":"2024-11-08T15:32:18.875Z","dependency_job_id":"46083e34-aafd-4e77-9f07-fc04d84c9016","html_url":"https://github.com/palikar/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/palikar/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palikar%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palikar%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palikar%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palikar%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palikar","download_url":"https://codeload.github.com/palikar/dotfiles/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palikar%2Fdotfiles/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264638260,"owners_count":23642133,"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":["compton","configuration","debian","dotfiles","emacs","emacs-initialization","emacs-packages","i3","i3-gaps","i3-wm","i3blocks","qutebrowser","ranger","system-configuration","system-setup","urxvt"],"created_at":"2024-08-02T22:01:04.731Z","updated_at":"2025-07-10T19:04:41.872Z","avatar_url":"https://github.com/palikar.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# Dotsome\n\n\n## Abstract\n\nEveryone loves setting up their system from scratch as easy as possible. Because of this, much smarter than me people has come up with the idea of *[dotfiles](https://wiki.archlinux.org/index.php/Dotfiles)*. A collection of scripts, configuration-files and system settings that can make your whole *system installation* and *configuration* as seamless as possible. My final goal with this \u0026ldquo;project\u0026rdquo; of sorts is to be able to install fresh Debian, run one *master .sh file* and then just wait couple of hours unitl everything is getting ready by itself\u0026#x2026;time in which I can, I don\u0026rsquo;t know, drink tea and watch movies or something.\n\n\n### Warning\n\n**Please!** Do not run any of my scripts without understanding what they do. Look at the config files and choose the settings that you like and discard those you don\u0026rsquo;t. Creating (steeling form somebody else) your own dotfiles is pretty much an art.\n\n\n## Setup\n\nFor now I\u0026rsquo;ve chosen to use [Debian](https://de.wikipedia.org/wiki/Debian) as my primary distro. This may seem a little bit controversial but I feel comfortable with it and I have never used the [AUR](https://aur.archlinux.org/) so I don\u0026rsquo;t know what am I missing. If I want to use something that is on the AUR and it is not present in the Debian repositories, I just compile it myself. I\u0026rsquo;ve actually written a separate tool ([code-manager](https://github.com/palikar/code_manager)) that can pull repos from [Github](https://github.com/palikar/code_manager) (or whatever) and compiles\\installs them automatically.\n\n\n\nSome of the relevant things that I currently use for my system setup:\n\n-   [i3-gaps](https://github.com/Airblader/i3) - A tiling windows manager. No Desktop Environment here!\n-   [i3blocks](https://github.com/vivien/i3blocks) - A status bar with easy to use configuration.\n-   [i3lock](https://github.com/i3/i3lock) - A screen locker.\n-   [compton](https://wiki.archlinux.org/index.php/compton) - A windows compositor for that sweet sweet transparency.\n-   [urxvt](https://wiki.archlinux.org/index.php/rxvt-unicode) - A [suckless](https://suckless.org/) and minimal terminal emulator\n-   [ranger](https://github.com/ranger/ranger) - Terminal based file manager.\n-   [rofi](https://github.com/DaveDavenport/rofi) - An application launcher.\n-   [qutebrowser](https://qutebrowser.org/) - A mouse oriented browser.\n-   [Emacs](https://www.gnu.org/software/emacs/) - Yes, I am in that tribe. I also write my own packages for Emacs so.. yeah, I am knee deep in it.\n-   [pamixer](https://github.com/cdemoulins/pamixer) and playerctl(a [systemd](https://en.wikipedia.org/wiki/Systemd) thing) - for controlling audio and media playback over [Dbus](https://www.freedesktop.org/wiki/Software/dbus/).\n-   [dunst](https://wiki.archlinux.org/index.php/Dunst) - a lightweight notification-daemon.\n\n\n\nAll of those (and a few more) things add up to create a comfy environment where everything is setup to my tastes, I can preform almost any action through the keyboard and I can be much more productive than when I am using Windows or some DE ([Desktop Environment](https://en.wikipedia.org/wiki/Desktop_environment)). A few screenshot for visual representation of my system:\n\n![img](screenshots/basic.png)\n\n![img](screenshots/work.png)\n\n\n## Installation\n\n*Note:* As said, I use Debian and my dotfiles and system setup \u003cspan class=\"underline\"\u003ewill probably work only\u003c/span\u003e on it as I have a few Debian specific things. Use the dotfiles on other systems at your own risk!\n\n\n\nThere are a few ways to download the setup the whole thing. If your system is fully fresh and you don\u0026rsquo;t even have *git* on your system, you can run:\n\n```sh\ncurl -LOs https://gist.githubusercontent.com/palikar/02e1d0e3c14e63bdf80a12d484ce9f46/raw/c5e0851bd814bc5ebbe89da8a60b8d59e9825cfb/install_setup.sh\nsudo bash install_setup.sh\n```\n\nThis is [this](https://gist.github.com/palikar/7e520697033d3dfd9825e5207230d070) gist of mines. Of course this relies on [curl](https://curl.haxx.se/).\n\n\n\nIf you, however, already have *git*, you can just clone the repo and run the `install.sh` script. My recommended way of doing that is.\n\n    cd ~\n    mkdir code \u0026\u0026 cd code\n    git clone https://github.com/palikar/dotfiles\n    cd dotfiles\n    sudo bash setup_all.sh\n\nThis \u0026ldquo;should\u0026rdquo; setup almost everything. I keep all of my configuration files in the directory of the repository and just create symbolic links at the right places. This way I have quite the separation between the used system and all of the configuration for it.\n\n\n## Relevant files\n\nAs you may see, I have quite a lot of files that I use for my system. I don\u0026rsquo;t have the time to go over each of them but I can present some short explanations on some of them.\n\n\n### Basic system config\n\nA list of somewhat important configuration files:\n\n-   `.emacs` - init file for Emacs. Doesn\u0026rsquo;t do that much on its own. The file loads a separate configuration file for Emacs written in [org-mode](https://orgmode.org/) \u0026#x2013; [myinit.org](./.emacs.d/myinit.md)\n-   `.vimrc` - very basic vim configuration. I took it form \u0026ldquo;the internet\u0026rdquo;.\n-   `.Xdefaults` - sets up the colors and XResources for the XSession and it\u0026rsquo;s used by urxvt as a config file.\n-   `.paths` - every line here must be directory. The directories in the file will be added to your *PATH* automatically.\n-   `emacs_packages.txt` - A list of emacs packages that I want installed and present in my Emacs. The file is used by a script that updates the file and the an Emacs configuration file so that every time I launch Emacs, all of the packages will be checked. I something is not installed, it gets installed automatically.\n-   `apt_packages.txt` - A list of apt packages that I want to have on my system. The packages will be installed upon system setup by the `install.sh` script.\n-   `system-config/.bash_aliases` - some useful abbriviations for certain commands in the terminal\n-   `system-config/.bash_prompt`\n-   `system-config/.env` - setting up some basic environment variables\n-   `system-config/.bashr` - this file will be evaluated every time you launch *bash*.\n-   `system-config/.profile` - the file will be evaluated upon starting the session.\n-   `system-config/.inputrc` - some minor fixes for better typing in the terminal\n-   `.gitconfig` - making `git` more pleasant to work with. Mainly diffetent abbreviations for git-commands. Also sets up my email-address for git commits. This is important! Change the address if you are going to use the file.\n\nThe important \u0026ldquo;linux\u0026rdquo; files are in folder \u003csystem-config\u003e.\n\n\n### Applications config\n\nThe folder \u003cfzf\u003e contains couple of bash scripts that will be sourced by `.bashrc`. [Fzf](https://github.com/junegunn/fzf) is a command-line fuzzy finder and it provides some useful features for those of us that spend a lot of time looking at the terminal. The command that I regularly use are:\n\n| Keybinding | Command                                                                                                                            |\n|---------- |---------------------------------------------------------------------------------------------------------------------------------- |\n| `Alt-c`    | Fuzzy change directory. It will recursively find all directories\u003cbr\u003efrom the current one onward and it will prompt you choose one. |\n| `C-r`      | Fuzzy search for previous command. List all commands in the bash history and choose one                                            |\n| `C-t`      | Fuzzy select file. List all files in the subdirectories and prompts you to choose one.                                             |\n\n\n\nOn Linux a lot of applications create their own folders with configuration files and those are usually created in the `~/.config` folder. I don\u0026rsquo;t care about all of the applications\u0026rsquo; configurations on my system so I don\u0026rsquo;t version control the whole `~/.config` folder but rather only parts of it. Some of the more important things in there are:\n\n-   `code_manager/` - configuration files, cache and install scripts for a tool for package management that I\u0026rsquo;ve written in python. For more information, check out [the repository](https://github.com/palikar/code_manager).\n-   `compton/` - configuration files of Compton.\n-   `dunst/` - Dunst configuration that makes the notifications that pop up somewhat pretty\n-   `feh/` - [feh](https://feh.finalrewind.org/) is an image viewer that I use for\u0026#x2026; setting my background (no joke). And yeah, I also use if as image viewer sometimes so I need some basic keybindings.\n-   `gitk/` [gitk](https://git-scm.com/docs/gitk) is a Git repository browser. Very convenient\n-   `i3/` - This contains probably the most important configuration file for my system \u0026#x2013; the configuration for the windows manager.\n-   `i3blocks/` - again a single configuration file that specifies how the status bar of the system should look like. The configuration uses a lot of the scripts in `.scripts/` directory.\n-   `khal/` - [khal](https://github.com/pimutils/khal) is a CLI calendar application.\n-   `ranger/` - the configuration files of my file manager\n-   `qutebrowser/` - the configuration files of my file browser\n-   `rofir/` - configuration mainly to \u0026ldquo;prettify\u0026rdquo; rofi\n\n2\n\n\n### Auxiliary scripts\n\nThe folder \u003c.scripts\u003e contains\u0026#x2026; a lot of stuff. There I put scripts needed by some part of the system. The folder is in the path so everything can be easily executed on command line. There are a lot of scripts in there and a lot of them are self-explanatory. For sake of completeness though\u0026#x2026;:\n\n-   `battle` - opens a bunch of stuff that I found myself opening manually when I sit on my computer.\n-   `i3battery` - used by i3blocks to display battery information of a laptop\n-   `i3calendar` - used by i3blocks for the current date\n-   `i3cputemp` - used by i3blocks for some processor information\n-   `i3currentson` - used by i3blocks to display the currently played by Spotify song\n-   `i3ipadress` - used by i3blocks to display your local IP address\n-   `i3playerctrl` - used by i3blocks to display the status of the media player\n-   `i3ramusage` - used by i3blocks to display info about the RAM\n-   `i3resize` - used by i3-gaps to intuitively resize windows\n-   `i3spotifyupdate` - used as a daemon to gather information coming from Spotify and notify i3blocks\n-   `i3systeminfo` - used by i3blocks to bring together RAM and CPU info\n-   `i3volume` - used by i3blocks to display the current volume\n-   `i3weather` - used by i3blocks to display the current weather information\n-   `i3wifi` - used by i3blocks to display the current wifi status\n-   `i3xautolock` - used as daemon to lock the computer after certain amount of inactivity\n-   `lmc` - used by i3blocks control median and sound\n-   `lockscreen` - used by i3-gaps to lock the computer\n-   `networkmanager_dmenu` - used to easy manage network connections. Check out [here](https://github.com/firecat53/networkmanager-dmenu).\n-   `pathloader` - used by `.profile` to load paths from `.paths`\n-   `prompt` - used by i3-gaps as a generic way to prompt something by dmenu.\n-   `rofi-xrandr` - used for easily configuring two displays. Uses [xrandr](https://wiki.archlinux.org/index.php/xrandr).\n-   `samedir` - opens a new terminal in the same directory as the current one\n-   `setupxkbd` - sets up keyboard layout things\n-   `shortcuts` - sets up shortcuts for bash (in form of aliases), qutebrowser and ranger. Full credit goes to [Luke Smith](https://github.com/LukeSmithxyz/voidrice).\n-   `texclear` - deletes all files generated when compiling a *.tex* file\n-   `toggletouchpad` - disables the touchpad on a laptop\n-   `unix` - Find out yourself. This is\u0026#x2026; not for normies.\n-   `updateaptpack` - Updates `emacs_packages.txt` with the currently installed by Emacs packages\n-   `updateemacspack` - Updates `apt_packages.txt` with the currently installed packages on the system.\n\n\n### Emacs\n\nI\u0026rsquo;ve been using EMACS for a while now. Before my config was just a random snippets of code that I\u0026rsquo;ve found online. Now, it\u0026rsquo;s beautifully sorted random snippets of code that I\u0026rsquo;ve found online, all put together nicely on a formatted `.org` file. The `.emacs` file is there just to load [myinin.org](./.emacs.d/myinit.md). There, in literate programming style, is my actual *init* file. There are even some explanations around some of the the snippets and everything is categorized. If you use Emacs you can open the file and experience it in all it\u0026rsquo;s beauty. The whole Emacs configuration probably deserves its own repository but oh well. More information on the Emacs config \u0026#x2013; [EMACS.md](./.emacs.d/EMACS.md) . This is actually the configuration itself but exported to markdown file\n\n\n### Package sources\n\nFor my Debian system I use diffetent sources for the apt-packages from those the come with the system. My `sources.list` files are in the *package-sources* directory of the repository. Upon installation of the dot files hey\u0026#x2026;.the are still nice.\n\n\n## References\n\nFor my dotfiles I\u0026rsquo;ve extensively taken inspiration from:\n\n-   [Mathias Bynens](https://mathiasbynens.be/) and his [dotfile](https://github.com/mathiasbynens/dotfiles)\n-   [This](https://medium.com/@webprolific/getting-started-with-dotfiles-43c3602fd789) very good post on starting up with dotfiles\n-   Recently I\u0026rsquo;ve changed my Bash Prompt and made it pretty much like this [guy\u0026rsquo;s(KeizerDev)](https://github.com/KeizerDev/.bashrc) one.\n-   \u003cspan class=\"underline\"\u003eA LOT\u003c/span\u003e of the scripts were first taken form [Luke Smith\u0026rsquo;s](http://lukesmith.xyz/) [voidrice](https://github.com/LukeSmithxyz/voidrice). Also, go check out this [Youtube\u0026rsquo;s channel](https://www.youtube.com/c/lukesmithxyz) for some non-normie content.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalikar%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalikar%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalikar%2Fdotfiles/lists"}