{"id":13836731,"url":"https://github.com/protesilaos/dotfiles","last_synced_at":"2025-04-11T10:58:06.614Z","repository":{"id":41508603,"uuid":"330596737","full_name":"protesilaos/dotfiles","owner":"protesilaos","description":"Configuration files for Emacs, tiling window managers, and related for Linux. Managed with GNU Stow.","archived":false,"fork":false,"pushed_at":"2025-04-10T05:08:33.000Z","size":23432,"stargazers_count":230,"open_issues_count":2,"forks_count":22,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-10T06:27:30.531Z","etag":null,"topics":["dotfiles","emacs","gnu","linux"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","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/protesilaos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2021-01-18T08:09:37.000Z","updated_at":"2025-04-10T05:08:36.000Z","dependencies_parsed_at":"2024-01-03T07:26:40.770Z","dependency_job_id":"6b938aec-68af-4aa2-847a-4fe408951456","html_url":"https://github.com/protesilaos/dotfiles","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protesilaos%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protesilaos%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protesilaos%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/protesilaos%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/protesilaos","download_url":"https://codeload.github.com/protesilaos/dotfiles/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248381641,"owners_count":21094524,"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":["dotfiles","emacs","gnu","linux"],"created_at":"2024-08-04T15:00:53.361Z","updated_at":"2025-04-11T10:58:06.589Z","avatar_url":"https://github.com/protesilaos.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"# My Emacs and other configurations for Linux\n\nThis is the set of files that powers my day-to-day computing experience.\nGNU Emacs is its centrepiece, with other programs providing ancillary\nfunctionalities.  In some cases, such as with the configurations for\nVim, all relevant files are carried over from my pre-Emacs days and are\nmaintained as a contingency plan or in case I need to revisit some old\nsetup.\n\n## Do not track my dotfiles (rolling, unstable, and untested)\n\n_Ceci n'est pas une distribution Emacs._\n\nThis repo functions as a laboratory of experimentation for my computing\nenvironment.  What I do with Emacs or any other program in the GNU/Linux\nmilieu that forms part of my dotfiles is only meant to work for me.  As\nsuch, I offer no support whatsoever to those tracking this repository\nand may introduce breaking changes without prior notice.\n\nThis is all to say that **you understand the risks associated with\ntracking an ever-changing project that does not enjoy widespread testing\nand whose target audience is only me**.  If you are fine with that and\nare willing to assume responsibility for any possible breakage, then\nplease feel welcome to follow along.  You can always open an issue here\nor contribute any fixes, if you will.\n\n## Emacs setup\n\nI do not recommend you reproduce my Emacs setup because I do not\ndesign it as a distribution for other people. If you insist though,\nthe files are in the `emacs` directory. Add them to your home\ndirectory with:\n\n```sh\n/path/to/prot-dotfiles $ stow -t \"$HOME\" emacs\n```\n\nThis will create symlinks to my configuration files inside the\n`~/.emacs.d` directory.  My custom libraries are in the directory\n`prot-lisp` while the configuration modules (where we tweak variables,\nassign key bindings, etc.) are in the directory `prot-emacs-modules`.\n\nThe modules are loaded from the `init.el`.  Each module defines the\npackages to install/load.  **My setup auto-installs packages**.  This\nwill happen the first time you start up Emacs.\n\nRead the file `prot-emacs.org` for further information on the anatomy\nof my Emacs setup.\n\nIf you make changes to the dotfiles, such as by moving things around,\nrun stow again with the `-R` flag:\n\n```sh\n/path/to/prot-dotfiles $ stow -t \"$HOME\" -R emacs\n```\n\n## Window managers\n\nMy tiling window managers for Xorg are bspwm, herbstluftwm, and i3 (in\nno particular order). They are all configured to be almost the same:\nthey share settings for the wallpaper, system panel, theme, keyboard\nlayout, and display compositor. All settings are in the `xorg-twm`\ndirectory (\"twm\" stands for \"tiling window manager\"). What\ndifferentiates the window managers is their individual features.\n\n+ **bspwm:** I have been using it for years and consider it top-notch.\n  It is minimal, stable, and scriptable.  Use this if you prefer\n  automatic tiling.  It does not have layout features out-of-the-box,\n  such as a tabbed layout: it can place windows in tiles or float\n  them.\n\n+ **herbstluftwm (hlwm):** herbstluftwm prioritises manual tiling\n  methods. It has the concept of \"frames\", which are rectangles that\n  include regular app windows. Each frame has its own dimensions are\n  layout. For example, it is possible to have a frame where windows\n  are vertically layed out one below the other and another frame with\n  a tabbed layout. What makes this even more appealing, is the ease\n  with which a workspace can be preconfigured (or dymanically\n  adjusted) to a given arrangement of frames and their layouts. I\n  think herbstluftwm is optimal for screens wider than the the regular\n  1920x1080. Otherwise, the manual tiling method adds cognitive load\n  that the user does not have while using bspwm.\n\n+ **i3 (or i3wm):** The first tiling window manager I ever used (circa\n  2017). The reason I abandoned it back in the day in favour of bspwm\n  is because its default tiling method requires manual intervention to\n  change the split direction. On a small laptop monitor, I prefer this\n  to be done automatically, hence bspwm. Though on a wide monitor, I\n  typically keep the split direction constant. i3 has the concept of\n  the \"container\" (same as the herbstluftwm \"frame\"), which can be set\n  to stacked, tabbed, or tiled layouts. As such, i3 is somewhere\n  between bspwm and herbstluftwm. Choose according to your needs.\n\nCheck the `xtwm-key-binding-cheatsheet.md` file for an overview of\ntheir key bindings.\n\nWhen I have a video call or record a video of my desktop session, I\nalways use herbstluftwm because of its ability to support virtual\nmonitors.  Otherwise I oscillate between bspwm and i3, depending on\nthe machine I am using.\n\nWhat about Wayland? I have experimented with it on GNOME where it\nworks fine. I even have some configurations for tiling compositors,\nbut am not happy with those. The Wayland ecosystem is not ready yet\nfor my use-case: I am missing something like sxhkd and certain\napplications do not work properly on it, such screen sharing. I will\ncheck again some time over the medium term, as Wayland seems\ninevitable.\n\n## Copying\n\nUnless otherwise noted, all code herein is distributed under the terms\nof the GNU General Public License Version 3 or later.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotesilaos%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprotesilaos%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprotesilaos%2Fdotfiles/lists"}