{"id":16707131,"url":"https://github.com/expandingman/dotfiles","last_synced_at":"2025-04-10T05:15:36.384Z","repository":{"id":82272061,"uuid":"84108927","full_name":"ExpandingMan/dotfiles","owner":"ExpandingMan","description":"REPO DEPRECATED, go to https://gitlab.com/expandingman/dotfiles","archived":false,"fork":false,"pushed_at":"2020-11-13T00:06:52.000Z","size":368,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"deprecate-github","last_synced_at":"2025-04-10T05:15:30.980Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ExpandingMan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-03-06T18:53:27.000Z","updated_at":"2022-05-24T14:18:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"550bec1e-9e57-4606-b372-f1d241c12225","html_url":"https://github.com/ExpandingMan/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/ExpandingMan%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpandingMan%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpandingMan%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ExpandingMan%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ExpandingMan","download_url":"https://codeload.github.com/ExpandingMan/dotfiles/tar.gz/refs/heads/deprecate-github","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161279,"owners_count":21057555,"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":[],"created_at":"2024-10-12T19:37:41.781Z","updated_at":"2025-04-10T05:15:36.360Z","avatar_url":"https://github.com/ExpandingMan.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⛔GITHUB REPO DEPRECATED ⛔\nFor a\n[multitude](https://www.eff.org/deeplinks/2020/11/riaa-abuses-dmca-take-down-popular-tool-downloading-online-video) [of](https://about.gitlab.com/features/) [reasons](https://en.wikipedia.org/wiki/Censorship_of_GitHub)\nI have decided to stop using github where possible.  (I will of course continue to be\ninvolved with projects which still reside here.)\n\nPlease see my [dotfiles repo on gitlab](https://gitlab.com/ExpandingMan/dotfiles)!\n\n\n# dotfiles\nThe intention is to make it pretty easy to reproduce my linux installs with only what is in this repository.\n\nNote that a lot of helpful information on which programs to use can be found at\n[privacytools.io](https://www.privacytools.io).\n\nA useful list of applications and plugins with vim-like control bindings can be found at\n[Big Pile of Vim-Like](https://vim.reversed.top/).\n\n## Installer\nI've made myself a simple installer program in Julia, which can be found in this\nrepository under `Installer`.  Enter this with `install.sh`.\n\n![installer](Videos/installer.gif)\n\n## Distro\nFor the most part everything described here should be more-or-less distro agnostic, but it'll probably be easiest on Arch branches.  Currently the one known\nmajor headache on Ubuntu is that on Ubuntu one has to compile `polybar`.  This is a big pain because `polybar` depends on `libxcb` and in the Ubuntu repos that\nlibrary is split into about a billion different packages, so you'll be spending a good amount of time figuring out which ones you need.\n\n## Prompt\nI use [prezto](https://github.com/sorin-ionescu/prezto) which runs on `zsh`.  It has lots of useful features, is easy to configure and actually reasonably fast.\nNote that tough it must be loaded in `.zshrc` there is separate configuration in `.zpreztorc`.\n\n## Applications\nHere is a list of some useful applications that I would like to remember exist\n\n### [`alacritty`](https://github.com/alacritty/alacritty)\nThe ultimate terminal emulator.  Highly configurable, GPU enabled and written in Rust.\nSee the `.config/alacritty/alacritty.yml` config.\n\n### [`qutebrowser`](https://wiki.archlinux.org/index.php/Qutebrowser)\nA vim-like browser.  Configuration for it in this repo.  The major disadvantage is of\ncourse the lack of add-ons.  Note that I have switched entirely from `qutebrowser` to\nFirefox+tridactyl because I could no longer survive without the Firefox add-on ecosystem.\n\n### `arandr`\nThis is pretty crucial for `i3`.  `arandr` is a simple GUI that lets you arrange the layout of your display output and change resolutions.  `arandr` works by\ngenerating a 1-line script containing the necessary `xrandr` command.  To make this script execute whenever `i3` starts you can just put a line in your\n`config`.\n\n### [`rofi`](https://github.com/davatorium/rofi)\nThis is for launching applications and terminal sessions.\n\n### [`autorandr`](https://github.com/phillipberndt/autorandr)\nThis can detect your display configuration and apply saved settings.  It is also useful for manually saving profiles.\n\n### `compton`\nThis is a window compositor that runs in window managers such as `i3`. It needs to be launched during `i3` init (see `i3` conf).  There are settings in the\n`compton.conf` that disable the transparency of tabs (so you don't see through to all your tabs) but this will only work in `i3-gaps`.\n\n### [`ranger`](https://wiki.archlinux.org/index.php/Ranger)\nThis is a simple file browser a bit like from the DOS days.  The main usefulness of this is that you can use it to preview all sorts of things including images\nright in the terminal.  Note that you should use the config files found in this repo, and you may need `w3m` installed for previews to work.\n\n### `nmcli`\nThis is a command line interface for the network manager.  Note also that `nmtui` opens a little DOS-like menu that lets you open connections to new wifi\nnetworks.  Typically I will use `nmcli` to manage my wifi, e.g. `nmcli connection up tristero5`.\n\n### `inxi`\nThis is a very useful tool for telling you about your hardware configuration.  For example, `inxi -G` tells you about your graphics setup.\n\n### `sensors`\nJust what it sounds like, shows output of system sensors.  Gives temperatures and fan speeds where available.\n\n### `scrot`\nThis is a nice utility for taking screenshots.  Note that my `i3` keybindings for this by default are `Print` for taking a full screenshot, `$mod+Print` for\njust the current window, and `Shift+Print` for a little box that you can select with the mouse.  The output will be put in `~/Pictures/screenshots`.\n\n### `amixer`\nThis is for controlling audio output, usually the OS will use this by default.  I need to make keybindings within `i3` at some point. In the meantime, you can\nincrease or decrease volume with `amixer set Master x%±`.\n\n### `alsamixer`\nThis is a TUI for controlling audio devices.  Best way to control volumes of individual devices such as headphones and mics.  See also `pavucontrol` for a full\nGUI, sometimes it's easier for things like USB headsets.\n\n### [`mpv`](https://wiki.archlinux.org/index.php/Mpv)\nA really nice minimalistic media player.\n\n### `pacui`\nAn amazing little `pacman` utility for browsing things like dependency trees, file locations and config files.  Also see `pacli`.\n\n### `mps-youtube`\nBinary called `mpsyt`, this is a nice way of browsing YouTube from the command line and watching videos with VLC, mpv or another player.\n\n### `zathura`\nVim-like PDF viewer.  On Arch, be sure to install `zathura-pdf-mupdf`.\n\n### `neomutt`\nSee hideous website [here](https://neomutt.org/).  This is a vim-like mail client I'm considering setting up.\n\n### [`bpytop`](https://github.com/aristocratos/bpytop)\nThis is the coolest version of `top` that I've seen.  It even has the dracula theme\nbuilt-in.  Get it with `pip install bpytop`.\n\n### [`kmon`](https://github.com/orhun/kmon)\nA TUI kernel monitor.  This is really useful because it shows a lot of stuff which is\notherwise hard to find.\n\n\n### Required\nThe following are required for my default setup\n- `i3-gaps` (equivalently `i3` should work just fine) ([here](https://gist.github.com/boreycutts/6417980039760d9d9dac0dd2148d4783) is a brief guide for\n    installing on Debian)\n- `polybar`\n- `rofi`\n- `feh`\n- `autorandr`\n- `ttf-font-awesome` (these are icon fonts used by the `polybar`)\n- `nvim` (my default editor I use for everything)\n\n## Directory Structure\nCurrently the only non-standard directories that will be expected by something are\n- `~/Pictures/backgrounds/` (by `feh` for backgrounds)\n- `~/Pictures/screenshots/` (by `scrot` for screenshots)\n\n\n## Colors and Appearance\nCurrently I'm using the [dracula](https://github.com/dracula/dracula-theme) everywhere mostly because it's *unbelievably well-supported* and, unlike many color\nschemes, actually has good enough contrast for me to be happy with it in vim.  I'd basically describe it as \"neon that doesn't look too 80's\".  The dracula\ncolors are currently hard-coded into my `init.vim` (via the `dracula.vim` package), `i3/config` and `polybar/config`, which is certainly not ideal.  The only\nplace a user would need to change the colors manually is on the terminal itself.  I use\nthe `alacritty` terminal, so terminal colors are defined in\n`~/.config/alacritty/alacritty.yml`.\n\nSee this [useful color configurator](https://thomashunter.name/i3-configurator/) for `i3`.\n\n### Backgrounds\nIt is expected that you keep your backgrounds in `$HOME/Pictures/backgrounds`.  The `.fehbg` will randomly assign them when the session starts (called by `i3`).\nI like to use a huge number of different backgrounds, the only rule is that they all be somehow \"sci-fi\" themed (especially spaceships!).\n\n### Fonts\n[Hack](https://github.com/source-foundry/Hack).  Should have good unicode support, but the\nway fonts get patched seems to work out much better in Arch than Debian.\n- Arch Package: `ttf-hack`\n- Debian Package: `fonts-hack`\n\n### Future Plans\nThe current situation with the colors is highly unsatisfactory.  There are some nice tools for assigning colors using images as references using clustering of\nthe pixels such as [pywal](https://github.com/dylanarapas/pywal) but frankly the results don't often look very nice, especially for doing real work.  At some\npoint I'm going to carefully create my own color scheme (I've found that this is much harder than it sounds).  I will fork the aforementioned dracula repos and\ninsert my colors.  Hopefully I will come up with some way to clean up the process a bit when I do so.\n\nMy new colors will probably be some sort of bluish thing with cyan and orange highlights.\n\n\n## Manjaro `i3` Dotfiles\nThe dot files for the Manjaro `i3` community setup can be found\n[here](https://gitlab.manjaro.org/profiles-and-settings/desktop-settings/tree/master/community/i3/skel).  This is probably a good starting point for a great\nmany things.  More generally, default Manjaro desktop settings can be found at https://gitlab.manjaro.org/profiles-and_settings/desktop-settings .\n\n## Julia\nI use [Julia](https://julialang.org) extensively, in the long run I expect it to be much more intimately intertwined with this setup.  Note that for now the\nJulia binaries are expected to be in `/opt/julia/bin` (at some point I will have more permanent system-wide environment variables).  You can use `$mod+F1` to\nlaunch a new Julia REPL.\n\n\n## Web\nSlowly mankind frees itself from the oppressive Tyranny of Google.  A few programs are\navailable which turns some of their own tactics (i.e. aggregation) against them:\n- [Invidious](https://invidio.us) ([repo](https://github.com/omarroth/invidious)) is an\n    alternative front-end to YouTube.\n- [Nitter](https://nitter.net) is an alternative front-end to Twitter (I despise twitter,\n    but sometimes interesting people post useful things there).\n- [Invidation](https://addons.mozilla.org/en-US/firefox/addon/invidition/) is a Firefox\n    plugin for re-directing YouTube and twitter links to invidious and nitter.  (Note that\n    by default this also passes lots of parameters in the URL that will override your\n    invidious settings, but these can be disabled in settings.)\n\n### Firefox Add-Ons\n- [Privacy Badger](https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/):\n    Tracking blocker from EFF.\n- [uBlock Origin](https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/): The best\n    ad blocker.\n- [Invidition](https://addons.mozilla.org/en-US/firefox/addon/invidition/): Plugin for\n    re-directing YouTube and twitter links to invidious and nitter (mentioned above).\n- [CanvasBlocker](https://addons.mozilla.org/en-US/firefox/addon/canvasblocker/): Plugin\n    for blocking some fingerprinting.\n- [User-Agent Switcher](https://addons.mozilla.org/en-US/firefox/addon/uaswitcher/):\n    Plugin for managing user agent strings.\n- [LessPass](https://addons.mozilla.org/en-US/firefox/addon/lesspass/): Stateless password\n    generation.\n- [Tridactyl](https://addons.mozilla.org/en-US/firefox/addon/tridactyl-vim/): Vim-like\n    functionality in firefox.  Almost on-par with qutebrowser, but is a bit fragile.\n    Configs are found in this repo.\n\n\n## How-To\nHere is a list of useful things that I often forget how to do:\n\n### Useful Linux Stuff\n- [Beej's Guide to Unix IPC](https://beej.us/guide/bgipc/html/single/bgipc.html)\n- [Beej's Guide to Network Programming](https://beej.us/guide/bgnet/)\n- [GNU on\n    Pipes](https://www.gnu.org/software/libc/manual/html_node/Pipes-and-FIFOs.html#Pipes-and-FIFOs)\n- [GNU on\n    Sockets](https://www.gnu.org/software/libc/manual/html_node/Sockets.html#Sockets)\n\n\n### Screen and Power Management\n- `xset s $NSECONDS`: Sets the timer for the screen to be deactivated to `$NSECONDS`.\n\n### Disks\n- `sudo fdisk -l`: Lists mounted disk volumes.  Useful for finding, for example USB flash drives.\n- `dd bs=4M if=name_of_iso_file.iso of=/dev/sdX`: Write an ISO file to the drive at `/dev/sdX`.  (Unmount drive with `umount` first.)\n\n### Libraries\n- `ldconfig -p`: Lists all libraries in library paths. For example do `ldconfig -p | grep libsdl` to find SDL libraries.\n- `ldd`: Lists all the libraries that the binary links to.\n- `objdump -p`: Lists all libraries that a binary links to among other things. Note you can also do `ldd` but this may result in code execution.\n\n### Display Servers\n- You can start a new X windows session from one of the other terminals (i.e.\n    `ctrl-alt-Fn` by doing `startx` from that terminal.\n- Wayland is actually a protocol that's implemented by the desktop environments, so there\n    is no equivalent to `startx`.  You can try running it from e.g. GNOME by doing\n    `gnome-session --session gnome-wayland`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpandingman%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpandingman%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpandingman%2Fdotfiles/lists"}