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 (⊶ b516e30)
↠ 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 basesnowblock
directory.SNOWBLOCKSDIR=.
— Relative path of the current working directory thebootstrap
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 (⊶ 11c003e)
↠ 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 (⊶ 2e4d694)
↠ 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 (⊶ fd43bda)
↠ 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:
-
Conditional configuration inclusion #23 ⇄ #27 (⊶ 427e6cb)
↠ The new conditional configurationincludes
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 (⊶ eca0252)
↠ Added conditional configurationincludes
for thegitlab
andincubator
directories using the default main Git configuration. - New conditional authentication configuration
include
#120 (⊶ 3697004)
↠ Ensured all communikey projects are configured to use thesvengreb
Git user a new conditional include for the~/code/github/repositories/communicode/
path(s). - New conditional authentication config
include
#171 (⊶ 631ab5f)
↠ Ensured all projects by @svengreb are committed with the correct Git credentials a new conditionalinclude
for the~/yggdrasil/svengreb/
path has been added.
- Conditional configuration includes for "gitlab" and "incubator" #97 ⇄ #101 (⊶ eca0252)
-
Simplified branch printing aliases #25 ⇄ #28 (⊶ 427e6cb)
↠ The branch printing aliasesb
and the extended aliasesbum
andbm
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.
- The
-
Improved logging alias formats #24 ⇄ #29 (⊶ a316d77)
↠ 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 extendedll
andllf
aliases.
Added the new shorthand aliaseslf
andllf
were added for a flattened output without topic commits from merges and adapted the style to the existinglnew
andlch
aliases. Thelr
alias is now superfluous and has been removed due to the newll
andllf
aliases which include the relative date of a commit. -
Long GPG
keyid
format for Git configuration #50 ⇄ #54 (⊶ a4065f5)
↠ The GPGkeyid-format
has been changed fromshort
tolong
. -
Adapted Git commit message template to style guide #51 ⇄ #55 (⊶ 272d1bf)
↠ The Git commit message template content was outdated and has been updated to adapt to the new Git Style Guide. -
Transparent Git encryption using GPG #64 ⇄ #69 (⊶ 32c24ce)
→ Replaced by #113 ⇄ #114 later on!
↠ Added a global.gitattributes
file and configured the global.gitconfig
file to apply a transparent git encryption withsmudge
andclean
filters using GPG.
In the.gitattributes
file, a filter for all*.igloocrypt
file extensions was set. The.gitconfig
now includes the filter configuration by usinggpg
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 withsmudge
&clean
filters using GPG“ for more details.
6.1 Migration togit-crypt
#113 ⇄ #114 (⊶ 4bb0d48)
↠ 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 thesmudge
andclean
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. howgit diff
works (also causingdiff-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 testinggit-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 thegitconfig
file. - 3 Removed the custom filter
"igloocrypt"
from thegitconfig
file. - 4 Updated the
filter
anddiff
custom global Git attributes handler for all*.igloocrypt
files to the newgit-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
.
- 1 Deleted the custom
-
Revised commit message template #26 (⊶ 8eee352)
↠ 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. -
diff-so-fancy
compatibleformat-patch
alias #84 ⇄ #87 (⊶ b9437b5)
↠ Added a newfp
("format patch") alias to fix a output problem when using diff-so-fancy with the theformat-patch
command which also prints the ANSI color sequences. This is now prevented by using the--no-color
option ofgit diff
.
The alias now also contains the--patch-with-stat
option to add additional patch stats like the total amount of changed/removed lines. -
diff-so-fancy
forgit add
interactive/patch mode #63 ⇄ #91 (⊶ 82d8cfd)
↠ Git 2.14.0 includes a restructuring ofdiff-highlight
(contrib/) for a easier reuse by diff-so-fancy.diff-so-fancy
for thegit add
interactive/patch mode is now used for theinteractive.diffFilter
configuration. Also the so-fancy/diff-so-fancy#35 (comment) for more details.
Also see the following related changes:- Temporary replace
diff-so-fancy
with bundleddiff-highlight
#125 (⊶ 535cb0a)
→ See so-fancy/diff-so-fancy#35 and so-fancy/diff-so-fancy#296 for more details.
↠ The reason are incompatibility problems of diff-so-fancy with the latest Git versions caused by changes in the diff logic.
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
- Temporary replace
-
Host specific and encrypted user configurations #93 ⇄ #94 (⊶ 1b564fc)
↠ Thegitconfig_auth
file was previously linked for all hosts and were limited to the hostsigloo
andarchbook
. Also thegitconfig_auth_job
file was ignored and has been added in encrypted.igloocrypt
format to the snowblock.
Also see the following related changes: -
Autocorrect command typos #150⇄ #157 (⊶ 19a89e2)
↠ Thehelp.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 of10
(1 second). -
Git alias to list commits ahead/behind tracking branch #180 (⊶ 545df09)
↠ Before only thelnew
alias was available to list commits behindORIG_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.
-
Fixed invalid exit code handling for IntelliJ
mergetool
#206 (⊶ 8173420)
↠ When using IntelliJ asmergetool
and settingmergetool.intellij.trustExitCode
totrue
, themergetool.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 toidea 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 themergetool
command for more details.
To fix the problem themergetool.intellij.trustExitCode
option was set tofalse
andmergetool.intellij.prompt
totrue
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 pressy
orn
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 theinclude
statement/block must be placed at the bottom of the main Git configuration file in order to override the initial/default block! -
Git alias for squash merging #208 (⊶ 78ccf4c)
↠ Before only them
alias was available to merge the specified branch in non-fast-forward mode. To do a "squash" merge a newms
alias has been added using the default fast-forward mode. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 3e5b053)
↠ 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:
-
Paste toggle key mapping #16 (⊶ 57e84f5)
↠ Added<F3>
key as toggle for the [pastetoggle
][vimdoc-opts#pastetoggle] option. -
Automatically wrap left and right #22 ⇄ #30 (⊶ 60895ad)
↠ 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 thewhichwrap
variable. See:help whichwrap
for more details. -
Key mapping to move current line and selected block #21 ⇄ #31 (⊶ ed36f3b)
↠ 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 theNORMAL
,INSERT
andVISUAL
modes. -
Auto toggle sign column #32 ⇄ #33 (⊶ e08a776)
↠ 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 optiong:gitgutter_sign_column_always = 1
and useset signcolumn = auto
instead, described by the plugin owner in airblade/vim-gitgutter#431 (comment). Also see:help signcolumn
for more details. -
Remap syntax highlighting function #36 ⇄ #39 (⊶ 474b9b9)
↠ 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. -
Enable 24bit true color support #37 ⇄ #40 (⊶ 54c3595)
↠ Thetermguicolors
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#145 ⇄ arcticicestudio/nord-vim#146 (⊶ arcticicestudio/nord-vim@9e0249ca) -
Markdown plugin
plasticboy/vim-markdown
#38 ⇄ #41 (⊶ c2d9cb4)
↠ 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 (⊶ ff85c3d)
↠ 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.
- Remove Markdown plugin plasticboy/vim-markdown" #129 (⊶ ff85c3d)
-
Replace unmaintained vim-coloresque plugin #42 ⇄ #46 (⊶ c70a440)
↠ 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. -
Add
vim-livedown
plugin #45 ⇄ #47 (⊶ 3948063)
↠ The shime/vim-livedown plugin adds support for Livedown (Live Markdown Previews) for Vim.
It requires thelivedown
NPM package to be globally available! -
JSX syntax highlighting and indentation plugin #44 ⇄ #48 (⊶ e940c24)
↠ 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).
Theg:jsx_ext_required
configuration has been set to0
to also enable JSX syntax highlighting in.js
files. -
Remove default enabled "list" option #72 ⇄ #73 (⊶ 6c82371)
↠ Before thelist
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. -
"NERD Commenter" plugin #71 ⇄ #75 (⊶ 4ab5c4b)
↠ Added the NERD Commenter plugin that configures hotkeys to dynamically comment with language syntax awareness.
TheNERDSpaceDelims
config has been enabled to automatically add spaces after comment delimiters. -
macOS compatibility for line- and block movement keymappings #172 (⊶ 59a5cc5)
↠ 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 (⊶ 0b664c7)
↠ 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:
-
Fixed invalid logging directory creation #5 (⊶ 374f7b7)
↠ 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. -
dircolors
color theme #6 (⊶ 6ab88b9)
↠ Added adircolors
package configuration to load the~/.dir_colors
color theme on initialization. -
Fix invalid filename for local
igloo
environment configuration #7 (⊶ 250bb72)
↠ The local untracked environment configuration fileigloo.local
was not sourced caused by the wrong filenameigloo.env.local
in theigloo
environment configuration file. -
Java package specific environment variable
_JAVA_AWT_WM_NONREPARENTING
#8 (⊶ ccdf614)
↠ The environment variable_JAVA_AWT_WM_NONREPARENTING
has been placed in the specificjava
package configuration instead of the mainigloo
environment configuration file. -
Optimized base dir- and module name detection functions #9 (⊶ c3e9a79)
↠ 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. -
Renamed environment
illuvigaq
toigloo
#10 (⊶ f0856f3)
↠ Theilluvigaq
environment has been finally renamed toigloo
. The env configurationilluvigaq
symlinked toigloo
is not used anymore. -
sudo
package configuration #12 (⊶ d605816)
↠ Added a package configuration forsudo
. TheSUDO_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 (⊶ dad96f2)
↠ Added a newsudo
core alias to fix alias expansion when running a user alias viasudo
.
bash only checks the first word of a command for an alias, any words after that are not checked. That means in a command likesudo pacman
, only the first word (sudo
) is checked by bash for an alias whilepacman
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 expansionMore information and this alias can also be found in the Arch Linux Wiki for
sudo
.
-
-
Core alias for Spring Boot Remote Debugging via Maven #13 (⊶ 0aecbe3)
↠ Added a newsbrd
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 viamvn spring-boot:run
:mvn spring-boot:run -Drun.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9999"
-
Auto-detect installed Ruby version for
PATH
concatenation #17 (⊶ 6b0f8e2)
↠ Before all Ruby gem paths (~/.gem/ruby/*/bin
) for each version had to be added to the$PATH_RUBY_GEMS
variable in theigloo
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 (:
). -
gulp
package configuration #18 (⊶ 6b0f856f)
↠ Added a package configuration for gulp to enable shell completions provided bygulp
.
Also see the following related changes:- Removed
gulp
package configuration #145 (⊶ 83bbc25)
↠ 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 ofgulp
is not sourced anymore.
- Removed
-
Cleaned up Java package config docs #19 (⊶ 2696ed0)
↠ Updated references, remove unnecessary double quotes and cleaned up indentations. -
Removed local Ruby and NPM modules from
PATH
#52 ⇄ #56 (⊶ 900a6b2)
↠ 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.
ThePATH_NPM_PACKAGES
andPATH_RUBY_GEMS
variables were therefore obsolete and have been removed fromPATH
. -
Add
GRADLE_OPTS
#86 ⇄ #89 (⊶ bffaf26)
↠ Created a package configuration for Gradle to set and export global default options using theGRADLE_OPTS
environment variable. It includesorg.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.
-
Alias for file/directory mode bits (attributes) in octal notation format #86 ⇄ #88 (⊶ d20e4d2)
↠ Added a newlsm
("list modes") alias for thestat
command to show [file/directory mode bits (attributes)][wiki-fs_perms] in the octal notation format. -
Using
diff-so-fancy
without Git #61 ⇄ #90 (⊶ 08cbbc4)
↠ 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 ofgit-diff
can be used.
The implemented script pipes the output toless
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.
-
Removed custom
ATOM_HOME
path #98 ⇄ #102 (⊶ 78042d8)
↠ TheATOM_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. -
Source local
~/.bin
for binaries #99 ⇄ #103 (⊶ 13d4ec3)
↠ If a local~/.bin
folder exists it is now added toPATH
to make all included binaries (executable scripts) available. -
Shortcut alias for
trash-cli
#100 ⇄ #104 (⊶ eb5dedb)
↠ Added a newt
shortcut alias for [trash-cli][trash-cli] to quickly move files and folders into the trash. -
Alias for
taskwarrior
#126 (⊶ 12dc960)
↠ Renamed the previously usedt
alias of [trash-cli][trash-cli] totrm
to use it for [taskwarrior][] instead. -
Alias for
timewarrior
#127 (⊶ 0cdb1dd)
↠ Added new shortcut aliases for [timewarrior][]:tw
=tw summary
- Shortcut to show the summary.tws
=timew :ids
- Shortcut to show IDs by default (depends onalias.tw
).
-
Package configuration and alias for Buku #128 (⊶ 68e0289)
↠ Buku provides theBUKU_COLORS
environment variable to allow users to define a custom color scheme. It follows the same principle like theLSCOLORS
environment variables of the BSDls
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 aliasbk
has been added to simplify the command usage.
-
Environment and auto-completion for
iceowl
host (macOS support) #146, #131 (⊶ ac9f7bf)
↠ Added a new environment configuration for the newiceowl
host. Also imported the auto-completion scripts bundled with the Homebrew git and bash forumlas. -
Alias for IINA #147 (⊶ 17158a7)
↠ Added a new macOS specificiina
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 withigloosync
to ensure consitency with other synced hosts likeigloo
. -
Shorthand script to open files, paths or URLs #169 (⊶ dedfd67)
↠ 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 scriptopen
has been implemented.
When running on Linux it'll use the XDG compliant toolxdg-open
from [xdg-utils][] while it'll pass through the parameters to the builtin application also calledopen
when run on macOS. -
Basic Go environment setup #181 (⊶ ef8c84d)
↠ 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 thegovim
plugin and a basic integration for [Go in VS Code][vscode-docs-go].
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.
- Defined the
-
Mage package configuration #192 (⊶ 39069be)
↠ 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.
-
Fixed determing the exit status of last shell command #207 (⊶ 6f483af) by @xulongwu4
↠ The exit status of the last shell command was not determined at the very beginning of thecompile_prompt
function which caused a wrong code output.
pacman — #14 (⊶ fa6909c)
↠ 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 theAURDEST
environment variable. - the new
STORE_PKGS
environment variable added to theigloo
andarchbook
environment configurations. - the shorthand
pacman --config <PATH_TO_CONFIG>
shell alias. - pacman configurations for the hosts
igloo
andarchbook
.
Over the time the pacman
snowblock evolved through the following changes:
-
Everyone loves candies! #34 ⇄ #35 (⊶ be4d52e)
↠ Enabled pacman's candy eating mode for progress bars viaILoveCandy
config boolean. Seeconf.c
in pacman's source code for more details. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
host has been removed to make it independent from the host. They can be updated when a new Linux host might be introduced.
- Removed ignored pacman packages #49 ⇄ #53 (⊶ b853ec8)
↠ Before theharfbuzz
,harfbuzz-icu
andgdk-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 updatedfreetype2
package, which superseded theinfinality-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:
systemd — #58 (⊶ ab4513b)
↠ 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 viasecret-tool
(libsecret
). The service unit is namedigloosync-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 viasecret-tool
. - about how to configure [wiki-fuse][] (libfuse) with the
/etc/fuse.conf
file to allow non-root users to specify theallow_other
orallow_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 mountedgocryptfs
volume with applications that are run viasudo
. It is used in thepacman
snowblock for the local package repository to prevent a Permission Denied exception when runningpacman
(e.g.sudo pacman -Sy
) if thegocryptfs
volume is not mounted with the-allow_other
option. Please note thatlibfuse
has a unresolved security bug when using theallow_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
andallow_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:
- Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 89b6877)
↠ 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
- user-specific
.desktop
application files. - user-specific autostart
.desktop
files. - XDG user directories configurations and document templates.
- XDG bookmarks
Over the time the xdg
snowblock evolved through the following changes:
-
Removed GNOME Nautilus
.desktop
file #105 (⊶ 7125312)
↠ The customorg.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. -
Updated and removed obsolete application desktop files #118 (⊶ f2dffb7)
↠ 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>
).
- JetBrains IntelliJ IDEA Ultimate Edition binary
-
Custom JetBrains IntelliJ IDEA Ultimate editor desktop launcher #203 (⊶ d4f474e)
↠ 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. -
Custom KeePassXC desktop launcher #204 (⊶ 6d86a96)
↠ 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 theQT_QPA_PLATFORMTHEME
environment variable set togtk2
to ensure the app respects the Qt5 style overrides. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 503561d)
↠ Initially snwoblocks/cower
for cower (rewritten as auracle) provided the following files & directories linked to their destination:
config
→~/.config/cower/config
htop — #68 ⇄ #80 (⊶ 952d502)
↠ Initially snwoblocks/htop
for htop provided the following files & directories linked to their destination:
htoprc
→~/.config/htop/htoprc
plank — #81 ⇄ #82 (⊶ 97e2182)
↠ 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:
-
Removed GNOME Nautilus
.desktop
file #118 (⊶ 7125312)
↠ See the changelog section of XDG for more details. -
Custom JetBrains IntelliJ IDEA Ultimate editor desktop launcher #203 (⊶ d4f474e)
↠ See the changelog section of XDG for more details. -
Removed Google Chrome from desktop app launcher #205 (⊶ 1c969ff)
↠ 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. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 5c12e6c)
↠ 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:
-
Updated and extended bookmarks #119 (⊶ 962bc28)
↠ Updated some paths of bookmarks that were not up-to-date and added some that were missing. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 56595bd)
↠ 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][tmux-docs-autodown].
Also see the “tmux“ Arch Linux Wiki page for more details.
NPM — #95 ⇄ #96 (⊶ a916aa1)
↠ Initially snwoblocks/npm
for NPM provided the following files & directories including
- the
.npmrc
configuration file to define thenpm init
optionsinit-author-name
init-author-email
init-author-url
init-version
init-license
- the
package-lock
option withfalse
to disable the generation of thepackage-lock.json
file. - the
save-exact
option to always save the exact dependency versions in thepackage.json
.
Over the time the npm
snowblock evolved through the following changes:
-
Enable NPM's package-lock feature #142 (⊶ 22635a8)
↠ Thepackage-lock.json
file was disabled in the globalnpmrc
file since it hasn't been used due to a various problems regarding merge conflicts and unintended transitive dependency updates on eachnpm install
. These problems have been fixed in later NPM release versions. This allows to use this feature again to ensure stable and reproducible builds. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 528383c)
↠ 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
- the main CSON based condifuration file
- the keymapping configuration file
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:
-
Color Profile #115 (⊶ dc4d22d)
↠ 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“.
-
Rust support:
language-rust
package #121 (⊶ 11ca431)
↠ Added support for Rust via the language-rust community package. -
New project paths #122 (⊶ bb19634)
↠ Added groups for the new project paths:- communikey:
~/code/github/repositories/communicode/*
- NPM:
~/yggdrasil/npm/*
- snowsaw:
~/yggdrasil/snowsaw
- communikey:
-
Include default package configuration keys #124 (⊶ 7554efc)
↠ 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 theconfig.cson
. This also includes keys for all core and community packages. -
Atom IDE #151 ⇄ #158 (⊶ 3970735)
↠ Added the Atom IDE base package atom-ide-ui and the ide-typescript package for JavaScript (Babel, ES6, React etc.) and Typescript. -
Atom IDE - Don't show debugger when setting breakpoints #166 (⊶ 360f714)
↠ 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. -
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 (⊶ c6534e6)
↠ 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][taskwarrior-docs-conf] file and a Nord based color theme to be included in .taskrc
.
- Context — The [context][taskwarrior-docs-cx] feature is used to separate all public projects and private/job related tasks.
- UDA (User Defined Attributes) — The [UDA][taskwarrior-docs-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][taskwarrior-docs-r] feature is used to extend and optimize the task output. The custom report should be set to
default.command
to replace the defaultnext
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:
-
Time tracking hooks #108 (⊶ 2e541f5)
↠ 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 calledtotalactivetime
of typeduration
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][taskwarrior-docs-hooks2] 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][timewarrior-hook-on-modify]. It comes bundled with Taskwarrior, but can not be used via symlink, because the file is owned by theroot
user which prevents the script from being executed when symlinked.
The usage of the hook is also [documented in the official Timewarrior docs][taskwarrior-docs-tw_int].
- With
-
taskopen integration #110 (⊶ 759fdc6)
↠ Integrated [taskopen][] by adding the main [.taskopenrc
configuration][taskopen#conf] file and aliases to simply adding notes (an
) and open (o
) task notes/annotations. -
More than one active task #117 (⊶ 8d013ad)
↠ 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. -
taskopen workaround support for macOS #134,#131,#110 (⊶ 47af7ad)
↠ 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 moduleJSON
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:- Use the [
_get
][taskwarrior-doc-api-_get] function of the [Taskwarrior DOM API][taskwarrior-doc-dom-api] to extract any stored piece of information of an task. This allows to receive the [UUID of an task][taskwarrior-doc-ids]. - Create a custom
on
(open note) [Taskwarrior alias][taskwarrior-doc-alias] to run the implemented custom script via theexecute
command.
The logic of the script follows the same like taskopen uses for default notes:
- Use the [UUID of an task][taskwarrior-doc-ids] 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.
- Use the [
-
Link whole Taskwarrior "hooks" and "scripts" folders #201 (⊶ 961293b)
↠ Instead of linking single files from thehooks
andscripts
Taskwarrior folders both folders are now linked directly. -
Use single VS Code instance to open task notes #202 (⊶ e9c04c6)
↠ 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'sreuse-window
CLI flag. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 15688f3)
↠ 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][timewarrior-docs-conf] files for the igloo
and archbook
hosts as well as a Nord based [color theme][timewarrior-docs-themes] 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:
-
Timewarrior config for iceowl (macOS support) #144,#131 (⊶ c1fdba9)
↠ Created a new configuration for the newiceowl
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. -
Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 1f3815e)
↠ 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 (⊶ 6cf2479)
↠ 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 (⊶ 0876c2c)
↠ 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 (⊶ f5d6ff4)
↠ 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 (⊶ 505e340)
↠ 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 profileigloo
. -
…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 theuserChrome.css
anduserContent.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:
-
Disable third-party APIs for more privacy #153 ⇄ #160 (⊶ e622889)
↠ 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.
- Set
-
Fixed tabs not rendered in titlebar #154 ⇄ #161 (⊶ 9c6a97d)
↠ Thebrowser.tabs.drawInTitlebar
key is set tofalse
which caused the tabs to being rendered in the titlebar. -
Disabled fullscreen warning popup #155 ⇄ #162 (⊶ 924d495)
↠ The fullscreen warning popup has been disabled by setting thefull-screen-api.warning.timeout
key to0
. -
Disabled fullscreen warning popup #156 ⇄ #163 (⊶ c7c1f89)
↠ Moved the badge of the test pilot addon Firefox Color into the overflow menu. -
Disabled “Find As You Type“ #164 (⊶ e82e882)
↠ The “Find As You Type“ feature (UI path: Preferences → General → Browsing → Search 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. -
Always open bookmarks in a new tab in the background #165 (⊶ 6826f9c)
↠ By default, opening a bookmark from the sidebar uses the current active tab. Thebrowser.tabs.loadBookmarksInTabs
has been set totrue
to always open bookmarks in a new tab in the background. -
Fixed invalid path for Firefox
user.js
file on macOS #175 (⊶ eb22243)
↠ The path for the custom Firefoxuser.js
file file was invalid for macOS hosts. It did not contain theProfiles
directory causing a symlink to a path where the file won't be read by Firefox. -
“light“ as default UI theme #224 (⊶ a02a48a)
↠ The builtin “light“ UI theme is now used by default with the “normal“ density. The theme is provided by the bundled[email protected]
extension. -
Disable automatic crash report sending #217 ⇄ #229 (⊶ 82bee46)
↠ To improve the privacy and security the automatic sending of crash reports has been disabled by settingbrowser.tabs.crashReporting.sendReport
tofalse
. -
"Standard" option for "Enhanced Tracking Protection" browser privacy preferences #218 ⇄ #230 (⊶ 379c965)
↠ The Standard option for the Enhanced Tracking Protection (stats are available atabout: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. -
“Simple Tab Groups“ add-on #219 ⇄ #231 (⊶ b279caa)
↠ 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. -
Enabled more
about:debugging
options by default #220 ⇄ #232 (⊶ 3f92ab9)
↠ Theabout: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. -
Automatic page reload for touch simulation in responsive design mode #222 ⇄ #234 (⊶ 95655f1)
↠ 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. -
Disable automatic execution pause on script exceptions #221 ⇄ #233 (⊶ 7e0d317)
↠ 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. -
Show CSS grid line numbers #223 ⇄ #235 (⊶ 25e0512)
↠ 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. -
“Inter“ as base sans-serif typeface #225 ⇄ #236 (⊶ 8ea0ef0)
↠ 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. -
“Soft“ and USB WebAuthn development options #226 ⇄ #237 (⊶ 87e6b1d)
↠ 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“][webauthn.bin.coffee-ff58].
Also see the section about requirements for testing of the Mozilla “Security/QA/TestPlans/Web Authentication“ wiki page for more details. -
Disable password generation suggestion for password fields #227 ⇄ #238 (⊶ d890510)
↠ 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. -
Enable “legacy“ user profile customizations #228 ⇄ #239 (⊶ d664ea0)
↠ As of Firefox version 69, theuserChrome.css
anduserContent.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 ofuserChrome.css
][userchrome-ff_changes_chrome].
To achieve the previous behavior, the option to load such “legacy“ files has been enabled again.
Jetbrains — #137 (⊶ 2fa3d1d)
↠ 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
andproject.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
andui.lnf.yml
- settings of the currently used UI theme.- all other customized preferences defined in the various categories:
editor.xml
,ide.general.xml
andoptions.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:
-
IntelliJ 2018.3.5 #182 (⊶ 7e270eb)
↠ 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). -
IntelliJ IDEA 2019.1 #193 (⊶ d5ac5d0)
↠ 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][wiki-tfs] plugins since they are no longer officially supported and not bundled with IntelliJ IDEA anymore. -
No Go package clipboard detection #194 (⊶ a3d062a)
↠ 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 togo get
since Go 1.11+ is used with Go Modules. -
goimports
for Go import auto formatting #195 (⊶ 8a02ae7)
↠ 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.
-
IntelliJ IDEA 2019.2 #211 (⊶ 007a3c8)
↠ 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. -
Fixed invalid JetBrains symlink target parent paths on Linux hosts #212 (⊶ 86a0641)
↠ On macOS the JetBrains configuration files are placed right into the mainIntelliJIdea2019.2
directory while on Linux based systems the folder consists of the sub-folderscache
,config
andsystem
that can also be configured in theidea64.properties
file.
Before the target path was also the main~/.IntellihJIdea2019.2
directory, but files must be linked into the nestedconfig
folder instead. -
IntelliJ IDEA 2019.3 #216 (⊶ 2623363)
↠ 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 (⊶ 8cebb08)
↠ Initially snowblocks/visual-studio-code
for [Visual Studio Code][vscode] 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][vscode].
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“][vscode-ext-be5invis.custom-css] extension.
- …workspace files.
The initial setup comes with the following extensions:
- Nord
- file-icons
- Prettier
- ESLint
- Markdown Preview Enhanced
- Babel JavaScript
- vscode-styled-components
- Path Intellisense
- Go
- Docker
- YAML
- EditorConfig
- Projects+
- Polacode
- Custom CSS and JS Loader
- Rust (rls)
- GraphQL
Over the time the visual-studio-code
snowblock evolved through the following changes:
-
“Code Spell Checker“ extension #183 (⊶ 898aa45)
↠ The [Code Spell Checker][vscode-ext-code-streetsidesoftware.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. -
Vim script syntax highlighting #184 (⊶ 2bf7227)
↠ Added the [vscode-viml-syntax][vscode-ext-dunstontc.viml] extension for syntax highlighting in all Vim script files. -
“Soft“ word wrap for Markdown and MDX documents #185 (⊶ 4e990f1)
↠ Enabled “soft“ word wrapping to improve the readability of long sentences and paragraphs in Markdown and MDX documents. -
File associations for
Brewfile
##186 (⊶ 140a747)
↠ TheBrewfile
of Homebrew was not detected as Ruby syntax so a association has therefore been added to map it to theruby
syntax type. -
File associations for
vimrc
#191 (⊶ 330357d)
↠ The [vimrc
][vimdoc-start#rc] of [Vim][] was not detected as Vim script syntax so a association has therefore been added to map it to theviml
syntax type provided by the [vscode-viml-syntax][vscode-ext-dunstontc.viml] extension that was added in #184. -
Prettier plugin as default formatter #197 (⊶ b454693)
↠ 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][vscode-ext-esbenp.prettier-vscode] 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. -
Reset zoom level back to 1 #198 (⊶ 259537d)
↠ The UI window zoom level (window.zoomLevel
) was set to0.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
). -
MDX extension #199 (⊶ 9a0ac07)
↠ Added support for many MDX features, syntax highlighting and bracket matching through the [MDX extension][vscode-ext-silvenon.mdx] by Matija Marohnić. -
Switched icon theme #196 (⊶ f068287)
↠ Before the [Material Icon Theme][vscode-ext-equinusocio.vsc-material-theme-icons] 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][vscode-ext-arcticicestudio.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][vscode-ext-pkief.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 thematerial-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.
-
Hide action buttons of sidebar panel headers #200 (⊶ f77869b)
↠ In #179 the [“Custom CSS and JS Loader“][vscode-ext-be5invis.vscode-custom-css] 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. -
Disabled breadcrumb navigation #209 (⊶ 21f8c34)
↠ As of Visual Studio Code version 1.35 the [breadcrumb navigation is enabled by default][vscode-rln-1.35#breadcrumbs]. They have been disabled again to unclutter the UI. -
Disabled indent guides in tree widget (Explorer) #210 (⊶ 5cecacc)
↠ As of Visual Studio Code version 1.36 the [tree widget support visual indent guide lines][vscode-rln-1.36#tree_indent_guides] are enabled by default. They have been disabled again to unclutter the UI. -
Render whitespace characters only for selected text #213 (⊶ d8a8141)
↠ Updated to the newselection
value for theeditor.renderWhitespace
field introduced in Visual Studio Code [1.37][vscode-rln-1.37#whitespace_select] that allows to only render whitespace characters on selected text. -
Hide NPM Scripts Explorer #214 (⊶ 673e844)
↠ Previously the builtin NPM Script Explorer was hidden by default, but is visible by default as of Visual Studio Code [1.37][vscode-rln-1.37#npm_script_expl] which was justified by the fact that it was „difficult to discover“. -
Incremental naming of copied files/folders #215 (⊶ a509328)
↠ As of Visual Stusio Code [1.37][vscode-rln-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][vscode-rln-1.38#explo_impr] with two configuration options to either add acopy
suffix or use asmart
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 (⊶ 1eb5ffc)
↠ Created the new [systemd][] snowflake that includes
- documentations about how to fix the instantaneous MacBook Pro (11,x) suspend wakeup problem after the lid has been closed.
- documentation about how to configure the lid close behavior.
- a custom suspend service implementation and documentation.
- a
system-sleep
hook implementation and documentation.
See systemd.special(7) and systemd.sleep(8) for more details.
Over the time the systemd
snowflake evolved through the following changes:
- Replaced/Updated
archbook
with newiceowl
host #143, #131 (⊶ c08ca24)
↠ There were various snowblock/snowflake configurations that contained thearchbook
host which doesn't exist anymore and has been replaced in most cases with the newiceowl
host. In cases where the snowblock/snowflake is only targeted for Linux thearchbook
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 (⊶ 38ec12d)
↠ 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:
-
Bookmarks September 2018 #152 ⇄ #159 (⊶ f021edf)
↠ 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][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
- Removed the
-
Bookmarks October 2018 #168 (⊶ dd80df5)
↠ 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
-
Bookmarks November 2018 #170 (⊶ 4807c56)
↠ 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][twitter-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
tohttps://aur.archlinux.org/packages/?O=0&K=%s
.
Homebrew — #140, #131 (⊶ 43fd982)
↠ 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:
-
“Google Chrome“ cask #148 (⊶ 2b0286d)
↠ 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. -
“Gifski“ (desktop ap) and “ImageOptim“ #149 (⊶ 7508e64)
↠ 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. -
Brewfile Update Januar 2019 #173 (⊶ 60274c3)
↠ 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][vscode] — Code editing. Redefined. Free. Open source. Runs everywhere.
→ Updated
- cabextract — OSS tool to extract Microsoft cabinet files (
-
hostess
formula #174 (⊶ 0e8f37f)
↠ Added the formula for hostess, an idempotent command-line utility for managing your/etc/hosts
file. -
gotop
formula #176 (⊶ 5a449b4)
↠ Added the formula for gotop, a terminal based graphical activity monitor inspired by gtop and [vtop][vtop].
The formula is available through thecjbassi/gotop
tap. -
dive
formula #177 (⊶ fed546f)
↠ 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 thewagoodman/dive
tap. -
streamlink
formula #178 (⊶ c8dfabe)
↠ 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. -
Remove
dep
formula #187 (⊶ 6c0a041)
↠ Since Go 1.11 with Go Modulesdep
is deprecated and not necessary anymore. -
Fixed typo in
gnu-which
formula name #188 (⊶ 9c2d48d)
↠ Fixed thae typo in the formula name ofgnu-which
that is currently stored asgnu-witch
. -
Kubernetes and Helm #189 (⊶ d8a7983)
↠ Added Kubernetes and Helm. -
Protocol Buffers #190 (⊶ b3b43e3)
↠ Added Protocol Buffers to develop and build with gRPC.
iTerm2 — #135, #131, #70 (⊶ 3573a2a)
↠ 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 (⊶ 8e47b17)
↠ 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 (⊶ 8cebb08)
↠ Initially snowflakes/visual-studio-code
for [Visual Studio Code][vscode] 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.
The full changelog is available here
[...