Skip to content

Latest commit

 

History

History
1504 lines (1141 loc) · 126 KB

CHANGELOG.md

File metadata and controls

1504 lines (1141 loc) · 126 KB

0.1.0

Release Date: 2020-04-05 Project Board Milestone

Historical Background

Back on January 7 2017, this repository was created in order to open source my dotfiles that were stored and managed in a private repository on my server back then. The intention was to allow other to learn and use these files or even contribute back even though most of the time preferences and configurations are shaped for personal use. I also liked the great idea of the “GitHub does dotfiles“ project and the fact that a public repository makes it way easier for me to setup and bootstrap a new system without the requirement to configure and connect to my VPN before being able to clone and use my dotfiles.

Since then this repository changed a lot regarding the structure and data, forming my “digital source-of-truth“ for my systems. The main targets hosts were illuvigaq (later on renamed to igloo) and archbook where the later was replaced with iceowl later on by switching from Arch Linux running on a MacBook Pro 11,2 (2016) to macOS on a new MacBook Pro 15,2 (2018). Even though updates are documented and merged through an organized workflow, the repository was more like a constantly changing and moving kind of cache to keep the dotfiles reasonably maintainable and in sync between the systems.

The goal was to use the files in daily business, improve up on these usage experiences and finally persist the configurations into this repository. This is the way this repository was used for almost over 3 years and it worked reasonably well, but there are plans for a refactoring of the structure and workflow. In order to clarify this goal release version 0.1.0 is going to set a imaginary marker line in the repository history to persist and document the current repository state.

The following sections provide detailed documentations about all the snowblocks, snowflakes and everything else that has been done to build up the current dotfile state.

Repository Structure

Bootstrap script — #1 (⊶ b516e30a)

↠ Implemented the bootstrap shell script to run snowsaw with the following configurations:

  • SNOWSAW_DIR=.snowsaw — Path to the snowsaw submodule.
  • SNOWSAW_BIN=.bin/snowsaw — Path to the snowsaw binary.
  • SNOWBLOCKS_BASE_DIR_NAME=snowblocks — Name of the base snowblock directory.
  • SNOWBLOCKSDIR=. — Relative path of the current working directory the bootstrap script runs in.

The actual execution command "${SNOWSAW_DIR}/${SNOWSAW_BIN}" -s "${SNOWBLOCKSDIR}" allows to add additional options by passing parameters through via "${@}".

MIT license migration — #59 ⇄ #60 (⊶ 11c003ec)

↠ Before the project code was licensed under the Apache 2.0 license. This often causes problems when developers want to use the project or code parts of it in another project licensed under a less restricted license. The project migrated to the MIT license which is more open, unrestricted and the most used license for open source projects like React which has also recently been re-licensed.

Updated copyright comment header — #123 (⊶ 2e4d6946)

↠ Before some files still used a “hard-coded“ copyright year that has now been changed to use the <YEAR_OF_BIRTH>-present pattern in order to prevent unnecessary overhead on each year change. Also the copyright email for „Sven Greb“ was invalid and has been updated to the valid address.

Snowblocks

Git — #2 (⊶ fd43bdac)

↠ Initially snwoblocks/git for Git provided the following files & directories linked to their destination:

  • gitconfig~/.git-commit-msg
  • gitignore~/.gitignore
  • gitconfig_auth~/.gitconfig_auth (initially not tracked by Git but only created and linked locally)
  • git-commit-msg~/.git-commit-msg

Over the time the git snowblock evolved through the following changes:

  1. Conditional configuration inclusion #23 ⇄ #27 (⊶ 427e6cb5) ↠ The new conditional configuration includes Git feature was introduced in version 2.13 provides a comfortable way to automatically load different configurations based on the current path of the repository. Many path specific projects have been added to to allow to split the main- and job authentication configurations. Also see the following related changes:

    • Conditional configuration includes for "gitlab" and "incubator" #97 ⇄ #101 (⊶ eca02520) ↠ Added conditional configuration includes for the gitlab and incubator directories using the default main Git configuration.
    • New conditional authentication configuration include #120 (⊶ 36970049) ↠ Ensured all communikey projects are configured to use the svengreb Git user a new conditional include for the ~/code/github/repositories/communicode/ path(s).
    • New conditional authentication config include #171 (⊶ 631ab5f1) ↠ Ensured all projects by @svengreb are committed with the correct Git credentials a new conditional include for the ~/yggdrasil/svengreb/ path has been added.
  2. Simplified branch printing aliases #25 ⇄ #28 (⊶ 427e6cb5) ↠ The branch printing aliases b and the extended aliases bum and bm have been simplified by removing unnecessary flags:

    • The --list flag is used to list branches matching a specific pattern.
    • Removed -v/-vv/--verbose which shows the commit SHA1 and subject line after each branch.
  3. Improved logging alias formats #24 ⇄ #29 (⊶ a316d775) ↠ The defined ASCII colors codes for the output have been changed to adapt to the terminal colors theme/scheme. The format has also been simplified and minimized/reduced to relevant information except the extended ll and llf aliases. Added the new shorthand aliases lf and llf were added for a flattened output without topic commits from merges and adapted the style to the existing lnew and lch aliases. The lr alias is now superfluous and has been removed due to the new ll and llf aliases which include the relative date of a commit.

  4. Long GPG keyid format for Git configuration #50 ⇄ #54 (⊶ a4065f5d) ↠ The GPG keyid-format has been changed from short to long.

  5. Adapted Git commit message template to style guide #51 ⇄ #55 (⊶ 272d1bff) ↠ The Git commit message template content was outdated and has been updated to adapt to the new Git Style Guide.

  6. Transparent Git encryption using GPG #64 ⇄ #69 (⊶ 32c24ceb) → Replaced by #113 ⇄ #114 later on! ↠ Added a global .gitattributes file and configured the global .gitconfig file to apply a transparent git encryption with smudge and clean filters using GPG. In the .gitattributes file, a filter for all *.igloocrypt file extensions was set. The .gitconfig now includes the filter configuration by using gpg for the encryption and decryption, processing files just before they‘re checked out and just before they’re staged. Also see GitHub Gist “Transparent Git encryption with smudge & clean filters using GPG“ for more details. 6.1 Migration to git-crypt #113 ⇄ #114 (⊶ 4bb0d48e) ↠ In #64 the concept was described as a simpler and cleaner solution instead of adding a using a tool like git-crypt with the reason that this would make the encryption usage dependent on an external tool and also commits additional files to the repository like the .git-crypt folder in the root of the repository. It was also documented that such tools are really useful and necessary when the repository is used by many collaborator, but only adds overhead for personal dotfile repositories. Anyway, the transparent Git encryption introduced to GPG encrypt specific files using the smudge and clean filters only worked reasonably well with various problems, e.g. caused files to be flagged as „dirty“ (modified) after checkout even if there have been no changes. The pure Git builtin solution with filters was chosen to prevent dependence to external tools, but the latest release versions of Git causing more and more problems due to changes in the behavior e.g. how git diff works (also causing diff-so-fancy to be broken). Therefore the previously implemented solution has been removed again and, against contrary to the opinion in #64, migrated to use git-crypt instead. Even if this added additional files to the repository as well as the external dependency to the tool itself, git-crypt is a stable and production proven concept that works safely and allows to really use a transparent encryption. After playing around and testing git-crypt locally the resulting migration steps were as follows:

    • 1 Deleted the custom git-diff-igloocrypt script.
    • 2 Removed the custom [diff "igloocrypt"] section from the gitconfig file.
    • 3 Removed the custom filter "igloocrypt" from the gitconfig file.
    • 4 Updated the filter and diff custom global Git attributes handler for all *.igloocrypt files to the new git-crypt setup.
    • 5 Decrypted all *.igloocrypt files and backup them up outside the repository.
    • 6 Deleted all *.igloocrypt files within the repository.
    • 7 Initialized git-crypt for the repository: git-crypt init (default key).
    • 8 Added the main Arctic Ice Studio GPG key: git-crypt add-gpg-user -n <ID> (-n flag prevents automatic commit of generated files).
    • 9 Committed the newly generated .git-crypt folder.
    • 10 Unlocked the repository: git-crypt unlock.
    • 11 Added all backed up *.igloocrypt files back into the repository.
    • 12 Ensured all *.igloocrypt are tracked to be encrypted: git-crypt status.
    • 13 Committed all *.igloocrypt files.
    • 14 Validated the encryption works by locking the repository again: git-crypt lock.
  7. Revised commit message template #26 (⊶ 8eee3520) ↠ The Git commit message template contained an deprecated format and have been rewritten from scratch to match the new Arctic Ice Studio Git Style Guide.

  8. diff-so-fancy compatible format-patch alias #84 ⇄ #87 (⊶ b9437b57) ↠ Added a new fp ("format patch") alias to fix a output problem when using diff-so-fancy with the the format-patch command which also prints the ANSI color sequences. This is now prevented by using the --no-color option of git diff. The alias now also contains the --patch-with-stat option to add additional patch stats like the total amount of changed/removed lines.

  9. diff-so-fancy for git add interactive/patch mode #63 ⇄ #91 (⊶ 82d8cfd9) ↠ Git 2.14.0 includes a restructuring of diff-highlight (contrib/) for a easier reuse by diff-so-fancy. diff-so-fancy for the git add interactive/patch mode is now used for the interactive.diffFilter configuration. Also the so-fancy/diff-so-fancy#35 (comment) for more details. Also see the following related changes:

    fatal: mismatched output from interactive.diffFilter
    hint: Your filter must maintain a one-to-one correspondence
    hint: between its input and output lines.
    

    NOTE: Downgrading to a compatible Git version is not an option because versions <2.17.1 are effected by CVE-2018-11233 and and 11235. To fix this problem for interactive patch mode the filter was temporary changed to the official diff-highlight tool bundled with Git.

    [interactive]
    -  diffFilter = diff-so-fancy
    +  diffFilter = diff-highlight
  10. Host specific and encrypted user configurations #93 ⇄ #94 (⊶ 1b564fc5) ↠ The gitconfig_auth file was previously linked for all hosts and were limited to the hosts igloo and archbook. Also the gitconfig_auth_job file was ignored and has been added in encrypted .igloocrypt format to the snowblock. Also see the following related changes:

    • Fixed invalid file symlink targets for Git authentication configurations #116 (⊶ 6cb11653) ↠ The Git authentication configurations were updated to be encrypted, but the targets for the symlinks configured within the snowblock.json have not been updated to match this change.
  11. Autocorrect command typos #150⇄ #157 (⊶ 19a89e2a) ↠ The help.autocorrect configuration allows to run auto-corrected commands with a specified delay time (seconds) after the info message has been shown. This has been added and set to a value of 10 (1 second).

  12. Git alias to list commits ahead/behind tracking branch #180 (⊶ 545df096) ↠ Before only the lnew alias was available to list commits behind ORIG_HEAD which only worked after a solved merge conflict. This was not very useful and has been replaced by two new aliases:

    • lahead — Lists all commits the current branch is ahead of the tracked origin branch that have not been pushed yet.
    • lbehind — Lists all ahead commits of the tracked origin branch that are not merged into the current branch yet.
  13. Fixed invalid exit code handling for IntelliJ mergetool #206 (⊶ 81734203) ↠ When using IntelliJ as mergetool and setting mergetool.intellij.trustExitCode to true, the mergetool.intellij.cmd gets called for all files immediately. After IntelliJ gets closed for the first processed file, all other calls will error because the temporary files passed to idea merge as parameters are not valid anymore causing the app to exit. The problem was that Git is not able to interpret or track started IntelliJ process and fails to listen for the exit code, causing the calls to be fired immediately. This problem was narrowed down to macOS while it works fine for Linux systems. See the official Git documentation about the mergetool command for more details. To fix the problem the mergetool.intellij.trustExitCode option was set to false and mergetool.intellij.prompt to true to force Git to wait for the user to confirm the merge is completed and the app window has been closed before continuing with the next queued file. The only impact is that it requires to press y or n after solving a conflict instead of only closing the app window and waiting for it to reopen again for the next file. This is also limited to macOS so the impact is very small compared to the broken state when not applying the fix. In order to dynamically apply the configurations only for macOS systems a [include] block is used and set the path to a additional file that will only be linked by snowsaw for macOS based hosts. Note that the include statement/block must be placed at the bottom of the main Git configuration file in order to override the initial/default block!

  14. Git alias for squash merging #208 (⊶ 78ccf4c7) ↠ Before only the m alias was available to merge the specified branch in non-fast-forward mode. To do a "squash" merge a new ms alias has been added using the default fast-forward mode.

  15. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

Vim — #3 (⊶ 3e5b053c)

↠ Initially snwoblocks/vim for Vim provided the following files & directories linked to their destination:

  • vimrc~/.vimrc

Over the time the vim snowblock evolved through the following changes:

  1. Paste toggle key mapping #16 (⊶ 57e84f59) ↠ Added <F3> key as toggle for the pastetoggle option.

  2. Automatically wrap left and right #22 ⇄ #30 (⊶ 60895adc) ↠ Allowed to move the cursor to the previous/next line after reaching first/last character in the line using the the left < and > arrow keys in normal-, insert- (<,>) and visual mode ([,]) or the h and l keys. This is configured through the whichwrap variable. See :help whichwrap for more details.

  3. Key mapping to move current line and selected block #21 ⇄ #31 (⊶ ed36f3b9) ↠ Added a key mapping that allows to easily move the current line or selected block(s) using the Ctrl and the up and down keys. The moved line/block adapts to the new indentation and is available in the NORMAL, INSERT and VISUAL modes.

  4. Auto toggle sign column #32 ⇄ #33 (⊶ e08a7767) ↠ Vim 8 introduced a new option to configure the state of the sign column to be always visible (yes), always hidden (no) or to automatically toggle (auto) when signs are available to display. This improvement is related to the warning message added to airblade/vim-gitgutter@dc73a81 which also advises to remove the custom option g:gitgutter_sign_column_always = 1 and use set signcolumn = auto instead, described by the plugin owner in airblade/vim-gitgutter#431 (comment). Also see :help signcolumn for more details.

  5. Remap syntax highlighting function #36 ⇄ #39 (⊶ 474b9b90) ↠ The <C-S-P> mapping for the function to show the syntax highlighting groups for the current cursor position collided with the AUR package plotinus-git which provides a searchable command palette in every modern GTK+ application. Is uses the commonly known Control + Shift + P key mapping. The terminal emulator Tilix is a GTK3 application so the command bar is available and has a higher priority as the mapping for the function. The key mapping for the function was changed to use the K key instead of P.

  6. Enable 24bit true color support #37 ⇄ #40 (⊶ 54c35959) ↠ The termguicolors option has been added to enable support for 24bit true colors. This is necessary to use the Nord Vim Custom Comment Brightness theme feature which makes use of HEX defined colors.NOTE: This change has been made obsolete later due to the deprecation of the comment contrast option in Nord Vim through the following change: Comment Color Brightness arcticicestudio/nord-vim#145arcticicestudio/nord-vim#146 (⊶ arcticicestudio/nord-vim@9e0249ca)

  7. Markdown plugin plasticboy/vim-markdown #38 ⇄ #41 (⊶ c2d9cb4a) ↠ The plasticboy/vim-markdown plugin extends the syntax highlighting support and provides additional features compared to the default syntax definitions. Also see the following related changes:

    • Remove Markdown plugin plasticboy/vim-markdown" #129 (⊶ ff85c3d0) ↠ Removed the plasticboy/vim-markdown plugin (added in #38) again. The default Markdown syntax has been updated and now also supports many (non-standard) Markdown extensions while the plugin causes some compatibility problems.
  8. Replace unmaintained vim-coloresque plugin #42 ⇄ #46 (⊶ c70a440a) ↠ The gko/vim-coloresque was not actively developed anymore and conflicted with other plugins and has therefore been replaced with the active fork ap/vim-css-color.

  9. Add vim-livedown plugin #45 ⇄ #47 (⊶ 39480637) ↠ The shime/vim-livedown plugin adds support for Livedown (Live Markdown Previews) for Vim. It requires the livedown NPM package to be globally available!

  10. JSX syntax highlighting and indentation plugin #44 ⇄ #48 (⊶ e940c244) ↠ The mxw/vim-jsx plugin adds syntax highlighting and indenting support for JSX. It is not a standalone JavaScript plugin and must be used with a base JS highlighter and integrates with the currently used and recommended pangloss/vim-javascript plugin (vim-jsx's "official" dependency). The g:jsx_ext_required configuration has been set to 0 to also enable JSX syntax highlighting in .js files.

  11. Remove default enabled "list" option #72 ⇄ #73 (⊶ 6c823718) ↠ Before the list option was enabled by default, but has been disabled due to problems when using copy & paste within Vim with OS- or terminal emulator specific functionalities.

  12. "NERD Commenter" plugin #71 ⇄ #75 (⊶ 4ab5c4be) ↠ Added the NERD Commenter plugin that configures hotkeys to dynamically comment with language syntax awareness. The NERDSpaceDelims config has been enabled to automatically add spaces after comment delimiters.

  13. macOS compatibility for line- and block movement keymappings #172 (⊶ 59a5cc50) ↠ The key mappings implemented in #31 worked fine on Linux systems, but conflicted with a global (non-modifiable) system key mapping on macOS. Therefore a condition check for the currently running environment is now used to set other specific key mappings for macOS and Linux.

Bash — #4 (⊶ 0b664c78)

↠ Initially snwoblocks/bash for Bash provided the following files & directories linked to their destination:

  • bootstrap~/.bash_profile
  • bootstrap~/.bashrc

Over the time the bash snowblock evolved through the following changes:

  1. Fixed invalid logging directory creation #5 (⊶ 374f7b7b) ↠ Removed the remaining code fragment from the old bash framework version causing a /.log directory can not be created: Permission denied error message during the bootstrap process. The __snowblock_bash::setup_history() function now also only creates the .log directory if it does not exists yet to avoid possible errors.

  2. dircolors color theme #6 (⊶ 6ab88b9d) ↠ Added a dircolors package configuration to load the ~/.dir_colors color theme on initialization.

  3. Fix invalid filename for local igloo environment configuration #7 (⊶ 250bb72e) ↠ The local untracked environment configuration file igloo.local was not sourced caused by the wrong filename igloo.env.local in the igloo environment configuration file.

  4. Java package specific environment variable _JAVA_AWT_WM_NONREPARENTING #8 (⊶ ccdf6144) ↠ The environment variable _JAVA_AWT_WM_NONREPARENTING has been placed in the specific java package configuration instead of the main igloo environment configuration file.

  5. Optimized base dir- and module name detection functions #9 (⊶ c3e9a792) ↠ The functions to initialize the $SNOWBLOCK_BASH_BASE_DIR environment variable and to get the name of the currently running module were unnecessary complicated, unstable and contained duplicated code.

  6. Renamed environment illuvigaq to igloo #10 (⊶ f0856f32) ↠ The illuvigaq environment has been finally renamed to igloo. The env configuration illuvigaq symlinked to igloo is not used anymore.

  7. sudo package configuration #12 (⊶ d605816d) ↠ Added a package configuration for sudo. The SUDO_PROMPT environment variable has been set to highlight the word "sudo" with a light background and a dark front followed by $USER@$HOSTNAME colorized with bluish Nord colors. Also see the following related changes:

    • Core alias sudo for alias expansion #15 (⊶ dad96f29) ↠ Added a new sudo core alias to fix alias expansion when running a user alias via sudo. bash only checks the first word of a command for an alias, any words after that are not checked. That means in a command like sudo pacman, only the first word (sudo) is checked by bash for an alias while pacman is ignored. This can be changed by adding a space to the end of the alias value so bash checks the next word after the alias. Snippet of the official bash manual:

      The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. If the last character of the alias value is blank, then the next command word following the alias is also checked for alias expansion

      More information and this alias can also be found in the Arch Linux Wiki for sudo.

  8. Core alias for Spring Boot Remote Debugging via Maven #13 (⊶ 0aecbe39) ↠ Added a new sbrd core alias to remote debug Spring Boot applications. JDK 5 or higher should use the-agentlib option instead of -Xdebug -Xrunjdwp (Java Debug Wire Protocol): -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999" Arguments can be appended via -Drun.jvmArguments and commands for Maven to run the Spring Boot Application via mvn spring-boot:run: mvn spring-boot:run -Drun.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999"

  9. Auto-detect installed Ruby version for PATH concatenation #17 (⊶ 6b0f8e2b) ↠ Before all Ruby gem paths (~/.gem/ruby/*/bin) for each version had to be added to the $PATH_RUBY_GEMS variable in the igloo env config manually. This has been changed to detect installed versions, add it to an array and append it to the $PATH_RUBY_GEMS variable separated with a colon (:).

  10. gulp package configuration #18 (⊶ 6b0f856f) ↠ Added a package configuration for gulp to enable shell completions provided by gulp. Also see the following related changes:

    • Removed gulp package configuration #145 (⊶ 83bbc253) ↠ Gulp was not used anymore and has therefore been replaced with Webpack or by simply using scripts or npm scripts. Therefore the gulp package configuration has been removed. This also improves the shell startup time since the auto-completion script of gulp is not sourced anymore.
  11. Cleaned up Java package config docs #19 (⊶ 2696ed05) ↠ Updated references, remove unnecessary double quotes and cleaned up indentations.

  12. Removed local Ruby and NPM modules from PATH #52 ⇄ #56 (⊶ 900a6b2e) ↠ Global Ruby- and NPM packages should be installed to the default paths instead of customized paths to increase the overall compatibility and adapt to general conventions. The PATH_NPM_PACKAGES and PATH_RUBY_GEMS variables were therefore obsolete and have been removed from PATH.

  13. Add GRADLE_OPTS #86 ⇄ #89 (⊶ bffaf260) ↠ Created a package configuration for Gradle to set and export global default options using the GRADLE_OPTS environment variable. It includes

    • org.gradle.daemon=true - Enable to always use the Gradle daemon to run builds. Since Gradle 3.0, the daemon is enabled by default and is recommended for running Gradle.
    • org.gradle.console=rich - Always colorize console output.
  14. Alias for file/directory mode bits (attributes) in octal notation format #86 ⇄ #88 (⊶ d20e4d20) ↠ Added a new lsm ("list modes") alias for the stat command to show file/directory mode bits (attributes) in the octal notation format.

  15. Using diff-so-fancy without Git #61 ⇄ #90 (⊶ 08cbbc4c) ↠ diff-so-fancy has been designed to work within Git controlled directories. To allow to use it to compare files that are not controlled by Git the --no-index option of git-diff can be used. The implemented script pipes the output to less using the options

    • -R, --RAW-CONTROL-CHARS to only display ANSI "color" escape sequences in "raw" form.
    • -F, --quit-if-one-screen to automatically exit if the entire file can be displayed on the first screen.
    • -X, --no-init to disable sending the termcap (de)initialization strings to the terminal to avoid unnecessary operations like clearing the screen.
    • -x2, --tabs=n to use two tab stops. Also see so-fancy/diff-so-fancy#220 (comment) for more details.
  16. Removed custom ATOM_HOME path #98 ⇄ #102 (⊶ 78042d83) ↠ The ATOM_HOME environment variable was assigned to a custom path for the configuration folder of Atom instead of using the default ~/.atom. The reason was that the folder was located in a kind of "global application configuration collection folder" on another drive mounted on system start. This has now been deprecated and changed to use the default paths of the installed applications. The ~/.atom folder is now used for Atom which is located on the main SSD drive instead of using a symlink to the external drive. This change also comes with a great performance boost as the read/write capacity of the external drive HDD was of course way slower than the SSD.

  17. Source local ~/.bin for binaries #99 ⇄ #103 (⊶ 13d4ec36) ↠ If a local ~/.bin folder exists it is now added to PATH to make all included binaries (executable scripts) available.

  18. Shortcut alias for trash-cli #100 ⇄ #104 (⊶ eb5dedb8) ↠ Added a new t shortcut alias for trash-cli to quickly move files and folders into the trash.

  19. Alias for taskwarrior #126 (⊶ 12dc9609) ↠ Renamed the previously used t alias of trash-cli to trm to use it for taskwarrior instead.

  20. Alias for timewarrior #127 (⊶ 0cdb1dd2) ↠ Added new shortcut aliases for timewarrior:

    • tw = tw summary - Shortcut to show the summary.
    • tws = timew :ids - Shortcut to show IDs by default (depends on alias.tw).
  21. Package configuration and alias for Buku #128 (⊶ 68e0289a) ↠ Buku provides the BUKU_COLORS environment variable to allow users to define a custom color scheme. It follows the same principle like the LSCOLORS environment variables of the BSD ls command. The five letters represent the colors in ordered form of

    • index
    • title
    • url
    • description/comment/note
    • tag See the GitHub repository wiki page about how to customize colors for more details about available letters and their meaning. Next to this a shortcut alias bk has been added to simplify the command usage.
  22. Environment and auto-completion for iceowl host (macOS support) #146, #131 (⊶ ac9f7bf7) ↠ Added a new environment configuration for the new iceowl host. Also imported the auto-completion scripts bundled with the Homebrew git and bash forumlas.

  23. Alias for IINA #147 (⊶ 17158a75) ↠ Added a new macOS specific iina alias for IINA to ensure the MPV specific flags --mpv-config-dir and --mpv-watch-later-directory are always used which contain the paths to the MPV configuration files and the watch-later folder of the --save-position-on-quit feature. This ensures the watch-later state/position files are always synced with igloosync to ensure consitency with other synced hosts like igloo.

  24. Shorthand script to open files, paths or URLs #169 (⊶ dedfd67b) ↠ Most OS provide builtin tools to open a file, path or URL with the associated application based on the MIME type. To use a uniform command for it a new script open has been implemented. When running on Linux it'll use the XDG compliant tool xdg-open from xdg-utils while it'll pass through the parameters to the builtin application also called open when run on macOS.

  25. Basic Go environment setup #181 (⊶ ef8c84d4) ↠ I started to use Go as my main programming language almost 3 years for everything from CLIs, high performant and lightweight backends/microservices with performance and intercompatibility in mind as well as for daily tools. Go comes with a fantastic toolchain that also doesn't require a lot of necessary setups, therefore this basic setup is enough to work efficiently in combination with the awesome IntelliJ Go plugin, a minimal setup for Vim with the govim plugin and a basic integration for Go in VS Code. I've used the following basic setup:

    • Defined the GOPATH environment variable to point to the custom location at $HOME/.go. Even though I only use Go Modules this is required for backwards compatibility, the toolchain as well as the resulting binaries in $GOPATH/bin
    • Added $GOPATH/bin to $PATH for all hosts.
  1. Mage package configuration #192 (⊶ 39069bef) ↠ Added a package configuration for Mage, a make/rake-like build tool using Go allowing to write plain-old go functions that'll automatically be used as Makefile-like runnable targets. See the official documentation about environment variables for more information.

    • MAGEFILE_CACHE — Changed the path of the directory for the magefile build cache from the default location $HOME/.magefile to /tmp/.magefiles since there is no need to persist the cache across system restarts.
  2. Fixed determing the exit status of last shell command #207 (⊶ 6f483af3) by @xulongwu4 ↠ The exit status of the last shell command was not determined at the very beginning of the compile_prompt function which caused a wrong code output.

pacman — #14 (⊶ fa6909c8)

↠ Initially snwoblocks/pacman for pacman provided the following files & directories linked to their destination:

  • makepkg.conf~/.makepkg.conf
  • pacman.conf.igloo, pacman.conf.archbook~/.pacman.conf

The initial implementation also included

  • a package configuration for pacaur to set the AURDEST environment variable.
  • the new STORE_PKGS environment variable added to the igloo and archbook environment configurations.
  • the shorthand pacman --config <PATH_TO_CONFIG> shell alias.
  • pacman configurations for the hosts igloo and archbook.

Over the time the pacman snowblock evolved through the following changes:

  1. Everyone loves candies! #34 ⇄ #35 (⊶ be4d52e0) ↠ Enabled pacman's candy eating mode for progress bars via ILoveCandy config boolean. See conf.c in pacman's source code for more details.

  2. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

  1. Removed ignored pacman packages #49 ⇄ #53 (⊶ b853ec8c) ↠ Before the harfbuzz, harfbuzz-icu and gdk-pixbuf2 packages were added to the pacman ignore list to fix the harfbuzz + Infinality issue which caused broken font rendering & boot failures on most systems due to incompatibility with the updated freetype2 package, which superseded the infinality-bundle. These packages have now been removed from the ignore list against since the issues have already been fixed some days after the issue occurred. Also see the following related changes:
    • Removed ignored pacman packages for archbook host #53 (⊶ 880b3fac) ↠ #53 only removed the ignored packages for the igloo host which has now also been ported for archbook.

systemd — #58 (⊶ ab4513b0)

↠ Initially snwoblocks/systemd for systemd provided user service and units to

  • automount the sync gocryptfs volume located in the Dropbox folder receiving the password stored in the GNOME keyring via secret-tool (libsecret). The service unit is named igloosync-dropbox.
  • automatically run a instance of the ssh-agent using $SSH_AUTH_SOCK and let systemd manage the $SSH_AGENT_PID environment variable.

This includes a documentation to describe the requirements for the igloosync-dropbox.service file providing information

  • about how to create the required gocryptfs password stored- and received via secret-tool.
  • about how to configure wiki-fuse (libfuse) with the /etc/fuse.conf file to allow non-root users to specify the allow_other or allow_root mount options which overrides the security measure restricting file access to the filesystem owner, so that all users (including root) can access the files. This is necessary to access the files of the mounted gocryptfs volume with applications that are run via sudo. It is used in the pacman snowblock for the local package repository to prevent a Permission Denied exception when running pacman (e.g. sudo pacman -Sy) if the gocryptfs volume is not mounted with the -allow_other option. Please note that libfuse has a unresolved security bug when using the allow_other mount option as described in the official documentation, but is of little concern if the filesystem is accessible only to the mounting user which is the case since these are dotfiles for a personal system:

No other user (including root) can access the contents of the mounted filesystem (though this can be relaxed by allowing the use of the allow_other and allow_root mount options in /etc/fuse.conf)

If you intend to use the allow_other mount options, be aware that FUSE has an unresolved security bug: if the default_permissions mount option is not used, the results of the first permission check performed by the file system for a directory entry will be re-used for subsequent accesses as long as the inode of the accessed entry is present in the kernel cache - even if the permissions have since changed, and even if the subsequent access is made by a different user. This is of little concern if the filesystem is accessible only to the mounting user (which has full access to the filesystem anyway), but becomes a security issue when other users are allowed to access the filesystem (since they can exploit this to perform operations on the filesystem that they do not actually have permissions for).

This bug needs to be fixed in the Linux kernel and has been known since 2006 but unfortunately no fix has been applied yet. If you depend on correct permission handling for FUSE file systems, the only workaround is to use default_permissions (which does not currently support ACLs), or to completely disable caching of directory entry attributes.

The target paths ~/.config/systemd/user for all unit files will be created by snowsaw if they doesn't exist yet.

The igloosync-dropbox.service unit file is only linked for the igloo and archbook hosts while the ssh-agent.service file will be linked by default.

Over the time the system snowblock evolved through the following changes:

  1. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

XDG — #74 ⇄ #78 (⊶ 89b68775)

↠ Initially snwoblocks/xdg for XDG/freedesktop.org specifications provided the following files & directories linked to their destination:

  • user-dirs.conf~/.config/user-dirs.conf
  • user-dirs.dirs~/.config/user-dirs.dirs
  • user-dirs.locale~/.config/user-dirs.locale
  • bookmarks~/.config/gtk-3.0/bookmarks
  • applications/atom.desktop~/.local/share/applications/atom.desktop
  • applications/evolution.desktop~/.local/share/applications/evolution.desktop
  • applications/gpick.desktop~/.local/share/applications/gpick.desktop
  • applications/gtkhash.desktop~/.local/share/applications/gtkhash.desktop
  • applications/intellij-idea-ce.desktop~/.local/share/applications/intellij-idea-ce.desktop
  • applications/intellij-idea-u.desktop~/.local/share/applications/intellij-idea-u.desktop
  • applications/minecraft.desktop~/.local/share/applications/minecraft.desktop
  • applications/org.gnome.gedit.desktop~/.local/share/applications/org.gnome.gedit.desktop
  • applications/org.gnome.Nautilus.desktop~/.local/share/applications/org.gnome.Nautilus.desktop
  • applications/org.gnome.Screenshot.desktop~/.local/share/applications/org.gnome.Screenshot.desktop
  • applications/pycharm-community.desktop~/.local/share/applications/pycharm-community.desktop
  • applications/shotwell-viewer.desktop~/.local/share/applications/shotwell-viewer.desktop
  • applications/webstorm.desktop~/.local/share/applications/webstorm.desktop
  • autostart/dropbox.desktop~/.local/share/autostart/dropbox.desktop
  • autostart/plank.desktop~/.local/share/autostart/plank.desktop
  • settings.ini~/.config/gtk-3.0/settings.ini

This includes freedesktop's xdg specifications for

Over the time the xdg snowblock evolved through the following changes:

  1. Removed GNOME Nautilus .desktop file #105 (⊶ 7125312e) ↠ The custom org.gnome.Nautilus.desktop file isn't necessary anymore since the the missing MIME type handler has been added in the upstream which is necessary to open Nautilus from within other applications to e.g. show a project folder in the file system.

  2. Updated and removed obsolete application desktop files #118 (⊶ f2dffb76) ↠ Some XDG application .desktop files were not required anymore because the latest upstream versions have been adapted and improved to match the custom configurations:

    • JetBrains IntelliJ IDEA Ultimate Edition binary /opt/intellij-idea-ultimate-edition/bin/idea.sh is now linked to /usr/bin/idea and /usr/bin/intellij-idea-ultimate-edition. The desktop file is now uniformly named /usr/share/applications/jetbrains-idea.desktop.
    • JetBrains IntelliJ IDEA Community Edition binary /opt/intellij-idea-community-edition/bin/idea.sh is now linked to /usr/bin/idea. The desktop file is now named uniform /usr/share/applications/jetbrains-idea.desktop.
    • JetBrains Webstorm binary /opt/webstorm/bin/webstorm.sh is now linked to /usr/bin/webstorm and the desktop file is now named uniform /usr/share/applications/jetbrains-webstorm.desktop.
    • JetBrains Pycharm Community Edition binary /opt/pycharm-community-edition/bin/pycharm.sh is now linked to /usr/bin/pycharm, but the desktop file is still named /usr/share/applications/pycharm.desktop.
    • Atom 1.28 included an upgrade to Electron 2.0 and now ships with an standalone launcher(/usr/lib/atom/atom) instead of using the Electron binary (electron <BINARY_PATH>).
  3. Custom JetBrains IntelliJ IDEA Ultimate editor desktop launcher #203 (⊶ d4f474eb) ↠ IntelliJ IDEA version 2019.1.3 came with a new “hardcoded“ icon so the .desktop launcher required a customization to use the correct icon theme name.

  4. Custom KeePassXC desktop launcher #204 (⊶ 6d86a967) ↠ KeePassXC supports GTK3 out-of-the-box, but unfortunately doesn't adapted to the current system theme and icon them making the UI looking really unpleasant and outdated. To use a modern style the app now starts with the QT_QPA_PLATFORMTHEME environment variable set to gtk2 to ensure the app respects the Qt5 style overrides.

  5. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

cower — #65 ⇄ #79 (⊶ 503561de)

↠ Initially snwoblocks/cower for cower (rewritten as auracle) provided the following files & directories linked to their destination:

  • config~/.config/cower/config

htop — #68 ⇄ #80 (⊶ 952d502b)

↠ Initially snwoblocks/htop for htop provided the following files & directories linked to their destination:

  • htoprc~/.config/htop/htoprc

plank — #81 ⇄ #82 (⊶ 97e2182b)

↠ Initially snwoblocks/plank for plank provided the following files & directories linked to their destination:

  • igloo/launchers~/.config/plank/igloo/launchers
  • archbook/launchers~/.config/plank/archbook/launchers
  • themes~/.config/plank/themes/igloo

This includes application launchers for the host specific igloo and archbook profiles and a minimal, non-obstructive theme called igloo with a transparent background and no shadow- and glow effects.

Over the time the plank snowblock evolved through the following changes:

  1. Removed GNOME Nautilus .desktop file #118 (⊶ 7125312e) ↠ See the changelog section of XDG for more details.

  2. Custom JetBrains IntelliJ IDEA Ultimate editor desktop launcher #203 (⊶ d4f474eb) ↠ See the changelog section of XDG for more details.

  3. Removed Google Chrome from desktop app launcher #205 (⊶ 1c969ff9) ↠ Since the re-switch to Firefox in #139, Google Chrome is only used for compatibility tests for projects like web apps and websites (React, Gatsby.js etc.) as well as private session when using web apps especially build for Google Chrome's APIs/web capabilities.

  4. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

tilix — #70 ⇄ #83 (⊶ 5c12e6cd)

↠ Initially snwoblocks/tilix for Tilix provided the following files & directories linked to their destination:

  • bookmarks.json.igloocrypt~/.config/tilix/bookmarks.json

Also includes a dconf dump of the current system configurations. See gnunn1/tilix#571 for more details.

Over the time the tilix snowblock evolved through the following changes:

  1. Updated and extended bookmarks #119 (⊶ 962bc284) ↠ Updated some paths of bookmarks that were not up-to-date and added some that were missing.

  2. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

tmux — #66 ⇄ #92 (⊶ 56595bde)

↠ Initially snwoblocks/tmux for tmux provided the following files & directories linked to their destination:

  • tmux.conf~/.tmux.conf

If the tmux plugin manager tpm doesn't exist it will be downloaded automatically. Also see the “tmux“ Arch Linux Wiki page for more details.

NPM — #95 ⇄ #96 (⊶ a916aa17)

↠ Initially snwoblocks/npm for NPM provided the following files & directories including

  • the .npmrc configuration file to define the npm init options
    • init-author-name
    • init-author-email
    • init-author-url
    • init-version
    • init-license
  • the package-lock option with false to disable the generation of the package-lock.json file.
  • the save-exact option to always save the exact dependency versions in the package.json.

Over the time the npm snowblock evolved through the following changes:

  1. Enable NPM's package-lock feature #142 (⊶ 22635a83) ↠ The package-lock.json file was disabled in the global npmrc file since it hasn't been used due to a various problems regarding merge conflicts and unintended transitive dependency updates on each npm install. These problems have been fixed in later NPM release versions. This allows to use this feature again to ensure stable and reproducible builds.

  2. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

atom — #106 (⊶ 528383c5)

↠ Initially snwoblocks/atom for Atom provided the following files & directories linked to their destination:

  • config.cson~/.atom/config.cson
  • keymap.cson~/.atom/keymap.cson
  • project-folder.cson~/.atom/project-folder.cson
  • packages.cson~/.atom/packages.cson

This includes

Support for the package-sync package is provided through the packages.cson file including all installed packages. The project-folder.cson configuration file for the project-folder package contains all necessary group entries.

Over the time the atom snowblock evolved through the following changes:

  1. Color Profile #115 (⊶ dc4d22d6) ↠ Atom 1.28 introduced support for custom ICC color profiles based on the upgrade to Electron 2.x which in turn is based on the latest Chrome version. This version includes changes to the color rendering and now respects the color profile configured in the OS settings. Due to this change for many users the colors appear to be pale. To bring back the previous (more stronger) color rendering Atoms Core → „Color Profile“ has been changed from „Use color profile configured in the operating system“ to „Use sRGB color profile“.

    With OS color profile
    With sRGB color profile
  1. Rust support: language-rust package #121 (⊶ 11ca4319) ↠ Added support for Rust via the language-rust community package.

  2. New project paths #122 (⊶ bb196345) ↠ Added groups for the new project paths:

    • communikey: ~/code/github/repositories/communicode/*
    • NPM: ~/yggdrasil/npm/*
    • snowsaw: ~/yggdrasil/snowsaw
  3. Include default package configuration keys #124 (⊶ 7554efce) ↠ Before the configuration keys were initialized with the default value were not added to user's ~/.atom/config.cson. To ensure the same Atom setup even when some default values are changed these have been included in the config.cson. This also includes keys for all core and community packages.

  4. Atom IDE #151 ⇄ #158 (⊶ 39707355) ↠ Added the Atom IDE base package atom-ide-ui and the ide-typescript package for JavaScript (Babel, ES6, React etc.) and Typescript.

  5. Atom IDE - Don't show debugger when setting breakpoints #166 (⊶ 360f7140) ↠ By default, when setting a breakpoint the debugger was shown automatically. Sometimes this was not the desired goal (e.g. by accidentally setting a breakpoint) and has been disabled.

  6. Keymap to move caret to the end/start of the current line #167 (⊶ 360fb8b1) ↠ To simply move the caret to the end/start of the current line instead of using the end and pos keys a new mapping has been added for Linux based OS:

    • Move to the end of the current line: Ctrl (super) + alt +
    • Move to the start of the current line: Ctrl (super) + alt + The default mappings + + / for macOS are already provided by default.

taskwarrior — #107 (⊶ c6534e63)

↠ Initially snwoblocks/taskwarrior for Taskwarrior provided the following files & directories linked to their destination:

  • taskrc~/.taskrc
  • nord.theme~/.task/nord.theme

This includes the key=value based .taskrc configuration file and a Nord based color theme to be included in .taskrc.

  • Context — The context feature is used to separate all public projects and private/job related tasks.
  • UDA (User Defined Attributes) — The UDA feature is used to create custom attributes to add a assignee, a estimation value and the GitHub issue ID to a task.
  • Reports — The reports feature is used to extend and optimize the task output. The custom report should be set to default.command to replace the default next report.
  • Aliases — The config contains aliases to align with the alias workflow of other snowblocks like bash and Git. This improves the usability, because there are several commands that start with the same characters making it slower to be used with the auto completion:
    • a ➡️ add
    • bd ➡️ burndown.daily
    • cx ➡️ context
    • e ➡️ edit
    • ls ➡️ list
    • mod ➡️ modify
  • Alternative workflows — The Taskwarrior workflow is changed later on to use multiple databases per use-case like e.g. one database per project to make better use of the features like projects, tags and context with finer grained filters.

Over the time the taskwarrior snowblock evolved through the following changes:

  1. Time tracking hooks #108 (⊶ 2e541f5e) ↠ Created two hooks to track the duration a task was active. Both hooks are written in Python 3 and require a Taskwarrior version >=2.4.

    • With totalactivetime UDA — The first hook makes use of a new UDA called totalactivetime of type duration which stores the total time in seconds. Every time a task gets stopped the value gets added to the old value. To simplify the communication with the Taskwarrior Hook v2 API the hook uses the taskw Python package which provides the bindings for Python. Note: This requires taskw as a direct dependency and must be installed on the target system! The package is available from the AUR.
    • Taskwarrior integration — The second hook is a fork from the official Taskwarrior on-modify.taskwarrior hook. It comes bundled with Taskwarrior, but can not be used via symlink, because the file is owned by the root user which prevents the script from being executed when symlinked. The usage of the hook is also documented in the official Timewarrior docs.
  2. taskopen integration #110 (⊶ 759fdc69) ↠ Integrated taskopen by adding the main .taskopenrc configuration file and aliases to simply adding notes (an) and open (o) task notes/annotations.

  3. More than one active task #117 (⊶ 8d013adc) ↠ The default Taskwarrior limit of active tasks is one. However, there are many use cases where multiple active tasks must be used, e.g. when working on an GitHub issue and the associated PR which are both handled in separate tasks or when working on tasks that are dependent on other tasks. The limited has therefore been increased to allow to use Taskwarrior for such use cases without having to deal with limitation errors.

  4. taskopen workaround support for macOS #134,#131,#110 (⊶ 47af7adc) ↠ The management of installed Perl modules on macOS is not as simple and well thought through like the concept of package managers on Linux systems, e.g. via pacman on Arch Linux. There are problems when is comes to configuring the runtime path the modules have been installed to even when using the most popular module manager called cpanminus. This causes the Taskwarrior plugin taskopen fail to load because the Perl core module JSON can't be found and loaded. As a workaround a custom script has been implemented to create and open a attached note of an task:

    1. Use the _get function of the Taskwarrior DOM API to extract any stored piece of information of an task. This allows to receive the UUID of an task.
    2. Create a custom on (open note) Taskwarrior alias to run the implemented custom script via the execute command.

    The logic of the script follows the same like taskopen uses for default notes:

    • Use the UUID of an task as the note filename.
    • Simply pass the file to an editor (in this case Atom) which will…
    • …create a new file if it doesn't exist yet.
    • …open the file if it already exists.

    Note that this script is not limited to macOS but can also be used for any other Linux host! It is only necessary to use it on macOS due to the problems described above.

  5. Link whole Taskwarrior "hooks" and "scripts" folders #201 (⊶ 961293ba) ↠ Instead of linking single files from the hooks and scripts Taskwarrior folders both folders are now linked directly.

  6. Use single VS Code instance to open task notes #202 (⊶ e9c04c6f) ↠ When opening a task note, it is now made sure to add it to the already opened VS Code instance instead of opening a new one by using VS Code's reuse-window CLI flag.

  7. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

timewarrior — #109 (⊶ 15688f30)

↠ Initially snwoblocks/timewarrior for Timewarrior provided the following files & directories linked to their destination:

  • timewarrior.cfg.archbook, timewarrior.cfg.igloo~/.timewarrior/timewarrior.cfg
  • nord.theme~/.timewarrior/nord.theme

This includes the timewarrior.cfg configuration files for the igloo and archbook hosts as well as a Nord based color theme that is imported imported in the timewarrior.cfg file. The default day reports should include the month name and week number.

Over the time the timewarrior snowblock evolved through the following changes:

  1. Timewarrior config for iceowl (macOS support) #144,#131 (⊶ c1fdba9e) ↠ Created a new configuration for the new iceowl host due to the usage of absolute paths in the configuration previous files of Timewarrior. This requires a configuration per host, e.g. for different paths to the used color theme.

  2. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

GPG — #130 (⊶ 1f3815e7)

↠ Initially snwoblocks/gpg for GPG provided the following files & directories linked to their destination:

  • gpg.conf~/.gnupg/gpg.conf

This includes the gpg.conf configuration file and the gpg-agent.conf file for the gpg-agent.

launchd — #133, #131, #58 (⊶ 6cf24792)

↠ Initially snwoblocks/launchd for launchd (FreeBSD Wiki) provided the following files & directories linked to their destination:

  • com/arcticicestudio/igloo/launchd/igloosync/com.arcticicestudio.igloo.launchd.igloosync-dropbox.plist~/Library/LaunchAgents/com.arcticicestudio.igloo.launchd.igloosync-dropbox.plist
  • com/arcticicestudio/igloo/launchd/igloosync/igloosync-dropbox.sh~/Library/LaunchAgents/igloosync-dropbox.sh

This includes a user agent defining a job to auto-mount the sync gocryptfs volume located in the Dropbox folder receiving the password stored in the macOS Keychain via the macOS builtin system CLI tool security. The documentation describes the requirements for the com.arcticicestudio.igloo.launchd.igloosync agent. It contains information about dependencies and how to create the required gocryptfs password stored- and received via the macOS builtin system CLI tool security.

Note that this is a macOS specific snowblock and therefore the com.arcticicestudio.igloo.launchd.igloosync-dropbox.plist agent file is only linked for the currently only macOS host iceowl.

See the knowledge base at launchd.info for more details as well as the available man pages launchd(1), launchd.plist(5) and security(1).

Docker — #136, #131 (⊶ 0876c2c9)

↠ Initially snwoblocks/docker for Docker provided the following files & directories linked to their destination:

  • config.iceowl.json~/.docker/config.json

This includes config-<HOST>.json configuration files where <HOST> is the name of the target host. The iceowl host has the credsStore field with the osxkeychain value to ensure the macOS Keychain is used to store tokens instead of saving them as plain text into the config file.

pip — #141, #131 (⊶ f5d6ff48)

↠ Initially snwoblocks/pip for pip provided the following files & directories linked to their destination:

  • pip.conf~/.config/pip/pip.conf
  • requirements.iceowl.txt~/.config/pip/requirements.txt

This includes the requirements.txt file to track installed packages and their versions and the pip.conf file for user specific configurations. See the documentation about the requirements.txt file format for more details.

Firefox — #139 (⊶ 505e3407)

↠ Initially snwoblocks/firefox for Firefox and Firefox Developer Edition provided the following files & directories linked to their destination:

  • chrome~/.mozilla/firefox/igloo/chrome, ~/Library/Application Support/Firefox/Profiles/igloo/chrome
  • containers.json~/.mozilla/firefox/igloo/containers.json, ~/Library/Application Support/Firefox/Profiles/igloo/containers.json
  • ignore-dev-edition-profile~/.mozilla/firefox/ignore-dev-edition-profile, ~/Library/Application Support/Firefox/ignore-dev-edition-profile
  • profiles.iceowl.ini~/Library/Application Support/Firefox/profiles.ini
  • profiles.igloo.ini~/.mozilla/firefox/profiles.ini
  • user.js~/.mozilla/firefox/igloo/user.js, ~/Library/Application Support/Firefox/igloo/user.js

This includes…

  • …the user.js file to define and persist almost all preferences for a profile.

  • …the profiles.ini file to configure the name and path of the main profile igloo.

  • …the ignore-dev-edition-profile file to fix Bugzilla bug 1098986 that causes Firefox Developer Edition to use the internal default profile regardless of whether another customized profile has been set as default. The problem can be fixed by creating the file within the Firefox application data folder.

  • …the chrome folder with the userChrome.css and userContent.css files to change the Firefox's UI components design and elements within the content.

  • …the containers.json file of the Firefox Multi-Account Containers to persist the configured containers.

  • …the documentation about the setup, tips & tricks and various configurations.

See pyllyukko/user.js for another Firefox user.js configuration file designed to harden browser settings and make it more secure as well as ghacks-user.js which is an ongoing comprehensive user.js template for configuring and hardening Firefox privacy, security and anti-fingerprinting.

Over the time the firefox snowblock evolved through the following changes:

  1. Disable third-party APIs for more privacy #153 ⇄ #160 (⊶ e622889b) ↠ To improve the privacy some more third-party APIs have been disabled:

    • Set browser.aboutHomeSnippets.updateUrl to "" — Disables third-party API requests on new tab page for snippets widget.
    • Set browser.newtabpage.directory.source to "" — Also improves the privacy by removing requests against third-party APIs.
  2. Fixed tabs not rendered in titlebar #154 ⇄ #161 (⊶ 9c6a97d1) ↠ The browser.tabs.drawInTitlebar key is set to false which caused the tabs to being rendered in the titlebar.

  3. Disabled fullscreen warning popup #155 ⇄ #162 (⊶ 924d4953) ↠ The fullscreen warning popup has been disabled by setting the full-screen-api.warning.timeout key to 0.

  4. Disabled fullscreen warning popup #156 ⇄ #163 (⊶ c7c1f898) ↠ Moved the badge of the test pilot addon Firefox Color into the overflow menu.

  5. Disabled “Find As You Type“ #164 (⊶ e82e8821) ↠ The “Find As You Type“ feature (UI path: PreferencesGeneralBrowsingSearch for text when you start typing) has been disabled. It allows to search the current site as soon as a key is pressed instead of requiring to press Ctrl/ + f. This is a great accessibility improvement, but unfortunately this often collides with page features like hotkeys e.g. when pressing r on Octobox to sync the latest notifications or any other site using such features.

  6. Always open bookmarks in a new tab in the background #165 (⊶ 6826f9cb) ↠ By default, opening a bookmark from the sidebar uses the current active tab. The browser.tabs.loadBookmarksInTabs has been set to true to always open bookmarks in a new tab in the background.

  7. Fixed invalid path for Firefox user.js file on macOS #175 (⊶ eb222438) ↠ The path for the custom Firefox user.js file file was invalid for macOS hosts. It did not contain the Profiles directory causing a symlink to a path where the file won't be read by Firefox.

  8. “light“ as default UI theme #224 (⊶ a02a48a1) ↠ The builtin “light“ UI theme is now used by default with the “normal“ density. The theme is provided by the bundled firefox-compact-light@mozilla.org extension.

  9. Disable automatic crash report sending #217 ⇄ #229 (⊶ 82bee46a) ↠ To improve the privacy and security the automatic sending of crash reports has been disabled by setting browser.tabs.crashReporting.sendReport to false.

  10. "Standard" option for "Enhanced Tracking Protection" browser privacy preferences #218 ⇄ #230 (⊶ 379c9659) ↠ The Standard option for the Enhanced Tracking Protection (stats are available at about:protections) preference comes with good defaults configuration and is therefore used instead of the Custom option to also prevent sites from breaking due to cookie blocking.

  11. “Simple Tab Groups“ add-on #219 ⇄ #231 (⊶ b279caa1) ↠ The Simple Tab Groups add-on allows to „create, modify, and quickly change tab groups” and is a port of one of the best Firefox extensions that were available before Firefox Quantum. To adapt it the add-on icon has been added to the top bar for quick access and the add-on preferences adjusted.

  12. Enabled more about:debugging options by default #220 ⇄ #232 (⊶ 3f92ab9f) ↠ The about:debugging page allows to debug processes, tabs and local add-ons. These options are disabled by default and has therefore been enabled in order to extend the ways to debug features.

  13. Automatic page reload for touch simulation in responsive design mode #222 ⇄ #234 (⊶ 95655f18) ↠ When using the Responsive Design Mode and the touch simulation gets activated it requires the page to reload in order to work properly. Firefox provides an option to automatically run this task and has now been enabled by default.

  14. Disable automatic execution pause on script exceptions #221 ⇄ #233 (⊶ 7e0d3175) ↠ When the DevTools are opened and an exceptions occurs in any running script, the debugger will be opened and the execution paused. This is kind of annoying for third-party scripts or when the actual goal is not to debug scripts at all and has therefore been disabled.

  15. Show CSS grid line numbers #223 ⇄ #235 (⊶ 25e05122) ↠ To allow to better design and debug CSS grids the Firefox DevTools can visually show the grid line numbers. This option is disabled by default and has therefore been enabled.

  16. “Inter“ as base sans-serif typeface #225 ⇄ #236 (⊶ 8ea0ef06) ↠ It is currently required to manually configure the sans-serif typeface based on the running OS due to licensing and the availability of specific font families on different operating systems. Since I use the fantastic Inter typeface family for almost all UI, text and designs it has now also been set as default sans-serif typeface. Inter is open source and therefore system independent and is installed in all of my systems/habitats.

  17. “Soft“ and USB WebAuthn development options #226 ⇄ #237 (⊶ 87e6b1d0) ↠ In order to allow and simplify the development and testing of WebAuthn based apps and websites, the security options must be set to allow “soft tokens“. Also see the section about requirements for testing of the Mozilla “Security/QA/TestPlans/Web Authentication“ wiki page for more details.

  18. Disable password generation suggestion for password fields #227 ⇄ #238 (⊶ d8905100) ↠ Firefox comes with generally great security features like Firefox Lockwise, but the suggestion to generate a new random password when focusing a password field is kind of annoying and not necessary due to the usage of a password manager that includes a password generator. It has therefore been disabled.

  19. Enable “legacy“ user profile customizations #228 ⇄ #239 (⊶ d664ea09) ↠ As of Firefox version 69, the userChrome.css and userContent.css files are not loaded by default anymore in order to improve the performance during browser startup. Also see the documentation about Firefox breaking changes of userChrome.css. To achieve the previous behavior, the option to load such “legacy“ files has been enabled again.

Jetbrains — #137 (⊶ 2fa3d1d5)

↠ Initially snwoblocks/jetbrains for JetBrains IDEs and products provided the following files & directories linked to their destination:

  • codestyles/arctic-codestyle.xml~/.IntelliJIdea2018.2/codestyles/arctic-codestyle.xml, ~/Library/Preferences/IntelliJIdea2018.2/codestyles/arctic-codestyle.xml
  • inspection/arctic-inspections.xml~/.IntelliJIdea2018.2/inspection/arctic-inspections.xml, ~/Library/Preferences/IntelliJIdea2018.2/inspection/arctic-inspections.xml
  • keymaps/arctic-keymap.macos.xml~/.IntelliJIdea2018.2/keymaps/arctic-inspections.xml, ~/Library/Preferences/IntelliJIdea2018.2/keymaps/arctic-keymap.macos.xml
  • options/code.style.schemes.xml~/.IntelliJIdea2018.2/options/code.style.schemes.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/code.style.schemes.xml
  • options/colors.scheme.xml~/.IntelliJIdea2018.2/options/colors.scheme.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/colors.scheme.xml
  • options/customization.xml~/.IntelliJIdea2018.2/options/customization.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/customization.xml
  • options/editor.codeinsight.xml~/.IntelliJIdea2018.2/options/editor.codeinsight.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/editor.codeinsight.xml
  • options/editor.xml~/.IntelliJIdea2018.2/options/editor.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/editor.xml
  • options/ide.general.xml~/.IntelliJIdea2018.2/options/ide.general.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/ide.general.xml
  • options/keymap.xml~/.IntelliJIdea2018.2/options/keymap.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/keymap.xml
  • options/laf.xml~/.IntelliJIdea2018.2/options/laf.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/laf.xml
  • options/options.xml~/.IntelliJIdea2018.2/options/options.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/options.xml
  • options/project.default.xml~/.IntelliJIdea2018.2/options/project.default.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/project.default.xml
  • options/ui.lnf.xml~/.IntelliJIdea2018.2/options/ui.lnf.xml, ~/Library/Preferences/IntelliJIdea2018.2/options/ui.lnf.xml
  • disabled_plugins.txt~/.IntelliJIdea2018.2/disabled_plugins.txt, ~/Library/Preferences/IntelliJIdea2018.2/disabled_plugins.txt

These are important configurations for all used JetBrains IDEs and products which are currently IntelliJ (Ultimate Edition) and GoLand. For details about the paths see the documentation about directories used by the IDE to store settings, caches, plugins and logs.

It includes…

  • …the code style XMl configuration file stored in the codestyles folder.
  • …the inspections XMl configuration file stored in the inspections folder.
  • …the keymaps XMl configuration files for Linux and macOS stored in the keymaps folder. See the keymap reference for a visual presentation of the default mappings.
  • …the preferences XMl configuration files stored in the options folder:
    • code.style.schemes.xml - settings of the currently used code style.
    • colors.scheme.xml - settings of the currently used color scheme.
    • customization.xml and project.default.xml - settings of the customized menus and toolbars.
    • editor.codeinsight.xml - settings of various automatic code transformations.
    • keymap.xml - the currently used keymap.
    • laf.xml and ui.lnf.yml - settings of the currently used UI theme.
    • all other customized preferences defined in the various categories: editor.xml, ide.general.xml and options.xml
  • …the list of disabled plugins stored in the disabled_plugins.txt file.

Since JetBrains uses a naming scheme for user configuration folders based on the product major/minor version it is necessary to update the snowblock as soon as the product gets updated to adapt to the new version string. Due to this naming scheme for the target path of previous targets should be kept for the clean and link tasks to ensure these are cleaned up after updating to a new product version.

Over the time the jetbrains snowblock evolved through the following changes:

  1. IntelliJ 2018.3.5 #182 (⊶ 7e270eb0) ↠ Before the target version was IntelliJ 2018.2 which has been updated to the latest version IntelliJ 2018.3.5. This includes new configurations as well as the obligatory adjustment for the correct target paths ~/.IntelliJIdea2018.3 (Linux) and ~/Library/Preferences/IntelliJIdea2018.3 (macOS).

  2. IntelliJ IDEA 2019.1 #193 (⊶ d5ac5d06) ↠ Updated the previously used target version IntelliJ 2018.3 to the latest version IntelliJ 2019.1. This includes the obligatory adjustment for the correct target paths ~/.IntelliJIdea2018.3 (Linux) and ~/Library/Preferences/IntelliJIdea2018.3 (macOS). Also removed the disabled CVS and TFS plugins since they are no longer officially supported and not bundled with IntelliJ IDEA anymore.

  3. No Go package clipboard detection #194 (⊶ a3d062a5) ↠ Disabled the detection of Go packages fom the clipbaord, e.g. GitHub URLs, to avoid the noise of notifications/popups that asks to install the package as well as improving privacy during the usage of JetBrains products. There is absolute no need to go get since Go 1.11+ is used with Go Modules.

  4. goimports for Go import auto formatting #195 (⊶ 8a02ae76) ↠ To improve the formatting and adhere to Arctic Ice Studio's Go code style `goimports is now used to automatically format imports:

    • Only use one import declaration.
    • Use of the -local flag to put imports local imports after 3rd-party packages.
    • Move all stdlib imports into one group.
    • Sort all imports.
  5. IntelliJ IDEA 2019.2 #211 (⊶ 007a3c8c) ↠ Updated the previously used target version IntelliJ 2019.1 to the latest version IntelliJ 2019.2. This includes the obligatory adjustment for the correct target paths ~/.IntelliJIdea2019.1 (Linux) and ~/Library/Preferences/IntelliJIdea2019.1 (macOS). Also see JetBrains “What's New“ page for a summary of the largest changes and features.

  6. Fixed invalid JetBrains symlink target parent paths on Linux hosts #212 (⊶ 86a06411) ↠ On macOS the JetBrains configuration files are placed right into the main IntelliJIdea2019.2 directory while on Linux based systems the folder consists of the sub-folders cache, config and system that can also be configured in the idea64.properties file. Before the target path was also the main ~/.IntellihJIdea2019.2 directory, but files must be linked into the nested config folder instead.

  7. IntelliJ IDEA 2019.3 #216 (⊶ 2623363e) ↠ Updated the previously used target version IntelliJ 2019.2 to the latest version IntelliJ 2019.3. This includes the obligatory adjustment for the correct target paths ~/.IntelliJIdea2019.2 (Linux) and ~/Library/Preferences/IntelliJIdea2019.2 (macOS). Also see JetBrains “What's New“ page for a summary of the largest changes and features.

Visual Studio Code — #179 (⊶ 8cebb084)

↠ Initially snowblocks/visual-studio-code for Visual Studio Code provided the following files & directories linked to their destination:

  • css~/.vscode/css
  • workspaces~/.vscode/workspaces
  • keybindings.json~/.config/Code/User/keybindings.json, ~/Library/Application Support/Code/User/keybindings.json
  • locale.json~/.config/Code/User/locale.json, ~/Library/Application Support/Code/User/locale.json
  • projects.json~/.vscode/projects.json
  • settings.json~/.config/Code/User/settings.json, ~/Library/Application Support/Code/User/settings.json

#179 documents the migration from Atom to Visual Studio Code. I've used Atom since it came out some years ago and it has always been a great editor and IDE for web development as well as main editor for documents, but Visual Studio Code evolved a lot during the last year.

Compared to Atom there are many features and improvements that I've really liked to see for Atom. Even though it can be extended and modified a lot there are limitations due to Atom's core in aspects like performance, stability and overall development features like auto-completion and language-awareness.

Visual Studio Code feels more “language-native“ when it comes to e.g. intelligent auto-completion, the integration of linters and language specific tools. It comes with support for a lot of languages out-of-the-box™ like JavaScript/TypeScript, CSS/HTML and has basic support for native languages like Go or Rust.

The change was not easy for me since I've customized and developed Atom to fit all of development needs, but after some testing time I had to admit that the UX of Visual Studio Code feels way better now.

I made sure that all my beloved Atom packages are also available as Visual Studio Code extensions (same code base) or an equivalent alternative before actually started the migration.

Therefore the initial setup now includes…

  • …core and extension settings.
  • …custom keybindings.
  • …locale configurations.
  • …a list of all installed extensions.
  • …CSS stylesheets to customize some that'll be loaded by the “Custom CSS and JS Loader“ extension.
  • …workspace files.

The initial setup comes with the following extensions:

Over the time the visual-studio-code snowblock evolved through the following changes:

  1. “Code Spell Checker“ extension #183 (⊶ 898aa45d) ↠ The Code Spell Checker extension checks for errors and also allows to include user-defined dictionaries. The initial commit added custom dictionaries with some common words as well as project and identity related words.

  2. Vim script syntax highlighting #184 (⊶ 2bf7227a) ↠ Added the vscode-viml-syntax extension for syntax highlighting in all Vim script files.

  3. “Soft“ word wrap for Markdown and MDX documents #185 (⊶ 4e990f15) ↠ Enabled “soft“ word wrapping to improve the readability of long sentences and paragraphs in Markdown and MDX documents.

  4. File associations for Brewfile ##186 (⊶ 140a7476) ↠ The Brewfile of Homebrew was not detected as Ruby syntax so a association has therefore been added to map it to the ruby syntax type.

  5. File associations for vimrc #191 (⊶ 330357d6) ↠ The vimrc of Vim was not detected as Vim script syntax so a association has therefore been added to map it to the viml syntax type provided by the vscode-viml-syntax extension that was added in #184.

  6. Prettier plugin as default formatter #197 (⊶ b4546935) ↠ As of Visual Studio Code version 1.33.x a notification is shown when there are multiple formatter found for the file type in the currently active editor. Since Prettier supports most languages and is the de-factor standard tool the Prettier plugin has been set as editor default. When there are unsupported languages or languages like Go which come with their own toolchain (gofmt, goimports etc.) the default formatter can be overridden through the languages-specific settings scopes.

  7. Reset zoom level back to 1 #198 (⊶ 259537d5) ↠ The UI window zoom level (window.zoomLevel) was set to 0.5 due to some configurations changes made to the global system resolution (4k rendering), but has now been changed back to the default value (1).

  8. MDX extension #199 (⊶ 9a0ac072) ↠ Added support for many MDX features, syntax highlighting and bracket matching through the MDX extension by Matija Marohnić.

  9. Switched icon theme #196 (⊶ f0682871) ↠ Before the Material Icon Theme by Mattia Astorino was used because it provided slick folder icons with customizeable colors and a large set of file type icons with a flat style and pale/contrast-lowered colors making it a great match to my Nord theme. With the latest update the icons were changed to use bright contrast colors while the folder icons changed in a bad way too. Therefore I've decided to give the popular Material Icon Theme by Philipp Kief another try (last time it had the same style like the current theme after the latest update and way less customization options). It turned out the theme is more advanced in almost all points and provided a good UX and style:

    • Even larger amount of supported file types.
    • Multiple theme style accents.
    • Customizable folder and file icon colors through the material-icon-theme.saturation option to reduce the file color contrast and the material-icon-theme.folders.color & material-icon-theme.folders.theme options for the folders!
    • Arrows of folders can be hidden. Overall the theme full fills all my requirements and is therefore now used as default theme.
  10. Hide action buttons of sidebar panel headers #200 (⊶ f77869b5) ↠ In #179 the “Custom CSS and JS Loader“ extension was introduced to use custom CSS stylesheets including styles to hide menu buttons from the editor. To hide the button of sidebar panel headers another selector has been added.

  11. Disabled breadcrumb navigation #209 (⊶ 21f8c343) ↠ As of Visual Studio Code version 1.35 the breadcrumb navigation is enabled by default. They have been disabled again to unclutter the UI.

  12. Disabled indent guides in tree widget (Explorer) #210 (⊶ 5cecacc2) ↠ As of Visual Studio Code version 1.36 the tree widget support visual indent guide lines are enabled by default. They have been disabled again to unclutter the UI.

  13. Render whitespace characters only for selected text #213 (⊶ d8a81414) ↠ Updated to the new selection value for the editor.renderWhitespace field introduced in Visual Studio Code 1.37 that allows to only render whitespace characters on selected text.

  14. Hide NPM Scripts Explorer #214 (⊶ 673e844e) ↠ Previously the builtin NPM Script Explorer was hidden by default, but is visible by default as of Visual Studio Code 1.37 which was justified by the fact that it was „difficult to discover“.

  15. Incremental naming of copied files/folders #215 (⊶ a5093282) ↠ As of Visual Stusio Code 1.37 the automatic incremental naming for copied files that include numbers has been (silently) removed, but than added back as explorer improvement in version 1.38 with two configuration options to either add a copy suffix or use a smart strategy. The second one adds a number at the end and if some number is already part of the name, it tries to increase that number. This reflects the behavior from VS Code versions <1.38 and has therefore been set.

Snowflakes

systemd — #76 ⇄ #77 (⊶ 1eb5ffc9)

↠ Created the new systemd snowflake that includes

See systemd.special(7) and systemd.sleep(8) for more details.

Over the time the systemd snowflake evolved through the following changes:

  1. Replaced/Updated archbook with new iceowl host #143, #131 (⊶ c08ca24c) ↠ There were various snowblock/snowflake configurations that contained the archbook host which doesn't exist anymore and has been replaced in most cases with the new iceowl host. In cases where the snowblock/snowflake is only targeted for Linux the archbook host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.

buku — #138 (⊶ 38ec12d7)

↠ Initially snowflakes/buku for buku provided the bookmarks of the used database exported as HTML file to allow to simply import it using Firefox as well as shell script that can be used to bootstrap a database.

The files are igloocrypt encrypted because they include sensitive data for private SSH servers as well as jo related bookmarks.

Over the time the buku snowflake evolved through the following changes:

  1. Bookmarks September 2018 #152 ⇄ #159 (⊶ f021edf0) ↠ The regular bookmark update for September 2018.

    → Added

    • React Top-Level API - The official docs of the React Top-Level API
    • Modular Scale - A web app to calculate modular font scales
    • Type Scale - Another web app to calculate modular font scales
    • Cypress - ast, easy and reliable testing for anything that runs in a browser.
    • Let's Encrypt - A free, automated, and open Certificate Authority.
    • Firefox Monitor - Firefox Monitor arms you with tools to keep your personal information safe. Find out what hackers already know about you and learn how to stay a step ahead of them.
    • Have I Been Pwned - Check if you have an account that has been compromised in a data breach.
    • React Patterns - Collection of good React patterns.
    • Hacktoberfest - The yearly open source hackathon by Digital Ocean.
    • BitPaper - A collaborative whiteboard web app
    • React Lifecycle Methods Diagram - A web app to visualize the React Lifecycle Methods also mentioned in the official React docs.
    • oEmbed - Specification for a format for allowing an embedded representation of a URL on third party sites.

    → Updated

    • Atomic Design by Brad Frost
      • Removed the /table-of-contents path from the URL
      • Added new tags: css-in-js, workflow
  2. Bookmarks October 2018 #168 (⊶ dd80df52) ↠ The regular bookmark update for October 2018.

    → Added

    • Expo - A free and open source toolchain built around React Native to help you build native iOS and Android projects using JavaScript and React.
    • unpkg - A fast, global content delivery network for everything on npm to quickly and easily load any file from any package using a URL.
    • My Ocotocat - Take a break from your build and create an Octocat that’s all you, from whisker tip to tail.
    • Open Collective - A new form of association, transparent by design. A group of people with a shared mission that operates in full transparency. Everyone can see how they receive or spend money.
    • node.green - Node.js ECMAScript compatibility tables.
    • Create React App - Set up a modern web app by running one command.
    • date-fn - Modern JavaScript date utility library that provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js.
    • Centering in CSS: A Complete Guide
  3. Bookmarks November 2018 #170 (⊶ 4807c565) ↠ The regular bookmark update for November 2018.

    → Added

    • web.dev — Let's build the future of the web. With actionable guidance and analysis, web.dev helps developers like you learn and apply the web's modern capabilities to your own sites and apps.
    • squoosh.app — Squoosh is an image compression web app that allows you to dive into the advanced options provided by various image compressors.
    • Contributor Covenant — A Code of Conduct for Open Source Projects
    • Eva Icons — Eva Icons is a pack of more than 480 beautifully crafted Open Source icons for common actions and items.
    • Feather Icons — Simply beautiful open source icons
    • CommonMark — A strongly defined, highly compatible specification of Markdown
    • Overreacted — Personal blog by Dan Abramov, React core team developer.
    • JSON-LD — A JSON-based Serialization for Linked Data. JSON-LD organizes and connects it, creating a better Web.

    → Updated

    • AUR: Updated the outdated keyword search URL from https://aur.archlinux.org?K=%s to https://aur.archlinux.org/packages/?O=0&K=%s.

Homebrew — #140, #131 (⊶ 43fd982e)

↠ Initially snowflakes/homebrew for Homebrew added a Brewfile and a documentation that includes instructions how to…

  • …update to the latest Homebrew version.
  • …upgrade all outdated formulas, casks and taps.
  • …bootstrap the Brewfile with Homebrew Bundle.

Over the time the homebrew snowflake evolved through the following changes:

  1. “Google Chrome“ cask #148 (⊶ 2b0286dc) ↠ The google-chrome cask has been added that is used for web development with DevTools features only available in Chrome (e.g. Lighthouse) and to test and compare possible browser differences.

  2. “Gifski“ (desktop ap) and “ImageOptim“ #149 (⊶ 7508e641) ↠ The Gifski desktop app has been added for simple and fast conversion as well as the ImageOptim cask and imageoptim-cli formula to optimize images.

  3. Brewfile Update Januar 2019 #173 (⊶ 60274c38) ↠ The regular batch update for new, changed and deleted Homebrew formulas/casks/taps.

    → Added

    • cabextract — OSS tool to extract Microsoft cabinet files (.cab)
    • nq — A UNIX CLI queue utility that allows to create very lightweight job queue systems which require no setup, maintenance, supervision, or any long-running processes.
    • wallpaper — Allows to manage the desktop wallpaper on macOS from the CLI
    • Spectrum — The desktop app of Spectrum
    • Visual Studio Code — Code editing. Redefined. Free. Open source. Runs everywhere.

    → Updated

  4. hostess formula #174 (⊶ 0e8f37f9) ↠ Added the formula for hostess, an idempotent command-line utility for managing your /etc/hosts file.

  5. gotop formula #176 (⊶ 5a449b47) ↠ Added the formula for gotop, a terminal based graphical activity monitor inspired by gtop and vtop. The formula is available through the cjbassi/gotop tap.

  6. dive formula #177 (⊶ fed546f5) ↠ Added the formula for dive, a tool for exploring a Docker image, layer contents, and discovering ways to shrink your Docker image size. The formula is available through the wagoodman/dive tap.

  7. streamlink formula #178 (⊶ c8dfabe7) ↠ Added the formula for streamlink, a CLI for extracting streams from various websites to a video player of your choosing by using FFMPEG and youtube-dl.

  8. Remove dep formula #187 (⊶ 6c0a0414) ↠ Since Go 1.11 with Go Modules dep is deprecated and not necessary anymore.

  9. Fixed typo in gnu-which formula name #188 (⊶ 9c2d48df) ↠ Fixed thae typo in the formula name of gnu-which that is currently stored as gnu-witch.

  10. Kubernetes and Helm #189 (⊶ d8a79830) ↠ Added Kubernetes and Helm.

  11. Protocol Buffers #190 (⊶ b3b43e3f) ↠ Added Protocol Buffers to develop and build with gRPC.

iTerm2 — #135, #131, #70 (⊶ 3573a2a2)

↠ Initially snowflakes/iterm2 for iTerm2 has been created as replacement for Tilix that is designed for GTK based Linux distributions. The snowflake contains the exported JSON file of the created igloo profile.

udev — #111 ⇄ #112 (⊶ 8e47b174)

↠ Initially snwoflakes/udev for udev a custom rule with mappings for the Logitech R400 Presenter optimized for presentations made with the React library Spectacle and the Code Slide extension. The documentation contains detailed information about the functionality as well as install & usage instructions for udev custom rules.

Visual Studio Code — #179 (⊶ 8cebb084)

↠ Initially snowflakes/visual-studio-code for Visual Studio Code provided the extensions.json file that contains the IDs of all currently used Visual Studio Code extesnions. See the “Snowblocks“ → “Visual Studio Code“ section of this changelog for the release version 0.1.0 for more details.

Project Initialization

Release Date: 2017-01-07