1
0
mirror of https://github.com/frebib/dotfiles.git synced 2024-06-14 12:57:23 +00:00

104 Commits

Author SHA1 Message Date
fea0831c13 Unstaged changes
Signed-off-by: Joe Groocock <me@frebib.net>
2022-10-23 23:17:44 +00:00
ea5f537303 scripts/dpi: Constant blur/corner-radius scaling
Scale picom blur and corner radius according to a constant scale factor
much like we do for cursor sizes. This ideally would be defined
somewhere centrally, but this is better than nothing.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-10-23 10:59:37 +00:00
2907e24656 cursor: Switch to BreezeX Black
I still prefer Breeze-Obsidian, but the reality is that it's unsupported
and nobody even seems to have the source any more :(

Allow `dpi` script to scale cursor relative to display scale according
to a fixed "standard" size, which for BreezeX is around 28px to closely
match the scale of the Breeze-Obsidian 16px.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-10-23 10:24:28 +00:00
fa136cbd2a picom: Adjust shadow alignment/size
Picom can now accurately draw shadows (again?) so tweak them so they're
horizontally centred and slightly below the window so they look
aesthetically pleasing.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-08-31 20:43:26 +00:00
499b044fea picom: Remove --experimental-backends
They're now default and the legacy backends are the exceptional case.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-08-31 20:43:26 +00:00
14805b3f9a picom: Increase corner radius
Signed-off-by: Joe Groocock <me@frebib.net>
2022-08-31 20:43:20 +00:00
e03c93bf39 gtk: Force GTK 4.0 to use the GTK 3 theming
This non-compliant turd doesn't respect the config file, because of
course it doesn't. Enforce the theme with yet another messy environment
variable.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-08-31 20:43:12 +00:00
ba6173e0ee git: Dynamically identify the "default" branch
This broadly assumes that the "default" remote is called "origin", but
that's better than assuming that plus the default branch name.

Thanks to https://joshtronic.com/2020/08/09/how-to-get-the-default-git-branch/

Suggested-by: Chris Lane <chris@chrislane.com>
Signed-off-by: Joe Groocock <me@frebib.net>
2022-08-31 20:43:06 +00:00
dcfd191613 systemd: Add pipewire+wireplumber, remove pulseaudio
Gotta go fast. pipewire seems to be working pretty well so far.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-21 22:21:37 +00:00
db40ef08bb picom: Update to picom 9.1, enable rounded corners
As always, tweak some of the visuals. Tone down the shadow opacity to
make the non-rounded corner shadows less obvious. Hopefully I can undo
that a bit in the future.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-21 22:12:40 +00:00
839d972e95 systemd-run-i3: Add ExitType=cgroup to user units
systemd v250 added ExitType= which allows systemd to wait for all
processes in the cgroup to exit before terminating the unit, instead of
only the main pid. This has many uses, but for desktop applications in
particular it allows self-restarting (forking) applications to correctly
fork/restart and other background processes that may have been spawned
to continue when their forked parent inevitably exits first (like ssh
processes inside terminals).

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-21 21:46:28 +00:00
ece2eb878a picom: Avoid odd-looking shadows in Firefox
picom cannot and does not attempt to use the window geometry from the
non-rectangular menu+friend windows that Firefox displays which causes a
strange floating blur/shadow behind the menus. Avoid this by disabling
both blur and shadows on those pop-ups until picom can handle it better.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-21 21:44:39 +00:00
6f1569b35d alacritty: log at Warn and above
Info produces causes logging under normal use, which creates useless log
files in /tmp, which I don't need.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-21 21:42:48 +00:00
5035afc8b4 X11, dpi: reliably set xcursor size
Other minor tweaks to the dpi script to ensure everything gets updated
correctly.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-21 21:41:57 +00:00
650eb08a80 aliases: rm is always verbose
That way I can see when I've been an idiot and deleted something I
actually needed.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-21 21:35:00 +00:00
535697a31c aliases: Be consistent with abort/continue/skip aliases
Laziness prevails 🚀

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-04 11:32:27 +00:00
f520784d9b zsh: LESS with more usability
These defaults are heavily inspired by the default of $SYSTEMD_LESS
provided by systemd themselves.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-03-04 11:21:55 +00:00
ef4b739af1 element: Enable labs settings
Signed-off-by: Joe Groocock <me@frebib.net>
2022-02-21 21:48:19 +00:00
0ba6dc8e4b polybar: Update to upstream feat/units config
Fix a few things that changed along the way.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-02-21 20:44:17 +00:00
55e492cd8f vim: disable eol $ marker
This provides little value and causes clickable links inside Vim to take
the $ symbol with them into browsers, which outweighs the small gain.
Text is visibly more readable without it, too.

Signed-off-by: Joe Groocock <me@frebib.net>
2022-02-16 15:26:50 +00:00
19663fa4f1 polybar: Adjust padding to improve element distribution
This looks more aestetically pleasing to me, and is not so off-centre
between the bottom of the window and the bottom of the screen.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-12-03 09:49:46 +00:00
7e5b329e74 polybar, fontconfig: Update to Font Awesome 6
Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-30 22:12:30 +00:00
0116be881a rofi: Update configuration for >= 1.7.1
Fix theming and window size since the update had breaking changes.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-29 22:29:11 +00:00
90038f8795 zsh: Migrate zdharma -> zdharma-continuum
https://github.com/zdharma-continuum/zinit/wiki/Migration-to-zdharma-continuum
https://www.reddit.com/r/zsh/comments/qinb6j/httpsgithubcomzdharma_has_suddenly_disappeared_i/

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-25 11:12:41 +00:00
7775fb62e4 zsh: Disable zsh fast-syntax-highlighting chromas
This fixes `zi` being extremely slow in the shell.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-25 11:02:15 +00:00
a48288ad50 zsh: Simplify fish-like compressed working directory
Works the same, is simpler and less prone to doing the wrong thing,
hopefully...

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-25 11:00:40 +00:00
b519b48e83 ssh: Add systemd ssh@ unit for persistent master connections
These rely on SSH configuring ControlMaster and ControlSocket for the
host so the connection can be reused.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-25 10:00:49 +00:00
8e74101f3e git: Fetch GitHub pull request refs by default
I can't find a way to make this a wildcard that applies to all remotes,
so this adds the two most common remotes that I'm likely to use.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-23 11:21:45 +00:00
898190a99f git: Use fast-forward-only merge by default
Merge commits are nasty, so make sure they're only created explicitly
and never by default.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-23 11:16:08 +00:00
d771bf0448 environment: Re-enable PASSWORD_STORE_DIR override
gopass seems to be behaving itself more now.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-23 11:10:39 +00:00
634db612a1 dunst: Fix window geometry with new version
This more or less replicates the old behaviour with window placement
using the new configuration options.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-23 11:08:09 +00:00
a7778c30a7 i3: Add $mod+z otp selector
Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-23 11:05:34 +00:00
49554ca359 i3: Fix $mod+i "paste" with text starting with a dash
Shell escaping is the devil

Signed-off-by: Joe Groocock <me@frebib.net>
2021-11-23 11:04:38 +00:00
895d0ff0aa zsh: Print normal in RPROMPT in Vim mode
Change the cursor to an `_` too, to make it abundantly clear that the
mode has changed. Hopefully this stops me screwing up and accidentally
entering vim mode without realising.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-10-18 10:08:33 +00:00
7be83b7b70 zsh: Fix fzf-history-search over SSH
Reorder and remove duplicate keybinds

Signed-off-by: Joe Groocock <me@frebib.net>
2021-10-18 10:07:48 +00:00
a41314ca34 alacritty: Update deprecated transparency option
Signed-off-by: Joe Groocock <me@frebib.net>
2021-10-10 09:26:38 +00:00
3158db0946 aliases: docker compose is a docker subcommand
compose v2 does away with the docker-compose binary and provides 'docker
compose' directly.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-10-10 09:25:50 +00:00
e25953d913 aliases: fix gfrb rebasing on non-default origins
Add gfrbi for an interactive fetch-and-rebase.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-09-21 16:53:07 +00:00
a6f162b7e2 scripts/dpi: Add more xsettings configuration from xrdb
Read some standard xsettings values out of xrdb and set them in
xsettingsd. Use bash instead of sh to allow for `set -o pipefail`.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-08-01 19:18:15 +00:00
85ab256484 scripts/dpi: Clean-up, improvements and shellcheck-compliant
Fix all shellcheck warnings, mostly by adding double quotes around vars.
Re-order operations and run multiple jobs in parallel to speed up DPI
change speed.
Remove all use of bc, simple sh integer division is sufficient in all
cases.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-08-01 19:05:07 +00:00
d1c4112ee3 alacritty: Remove deprecated 'url' section
Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:19:10 +00:00
8c8048ebcb vim: Add several useful/common FileType configs
Unconditionally enable ColorColumn. Any vim without it is not worth
using anyway.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:15:57 +00:00
019a3f9c18 vim: Replace YouCompleteMe/syntastic with ale/deoplete
These seem to work better out of the box and don't have an awfully
obtuse setup process involving certain unnamed dynamic languages.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:14:10 +00:00
0ff266f257 picom: Disable vsync
This improves window resize and move performance and general
responsiveness a considerable amount on the laptop Intel iGPU.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:10:48 +00:00
d6f2800ddd fontconfig: disable hinting on sans-serif fonts
Hinting apparently makes Chrom{e,ium}/Electron display fonts horribly,
whilst everything else ever is fine with it on.
Re-organise and tidy up fontconfig slightly.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:08:58 +00:00
524e5132ba environment: add ~/.local/bin to $PATH
Python's pip amongst other things likes to put binaries in here.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:08:02 +00:00
dde4e776f5 aliases: git: add gbrl branch-list with fzf alias
Very useful for previewing each branch in an interactive manner.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:06:05 +00:00
1bd8081663 aliases: git: attempt to elide merge commits in glg
In theory this should give a much cleaner commit log without all of the
noise from merge commits in poorly maintained repos.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-31 00:04:30 +00:00
9224e953e2 Revert "X11: enable hardware video acceleration in firefox"
This reverts commit 3b34decb42.

Enabling EGL causes firefox to stop rendering when the compositor is
stopped or restarted. Whilst there are supposed performance
improvements, those are negated by bugs that make it unusable at the
current time.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-07-26 16:09:45 +00:00
a0d9149013 aliases: fix all shellcheck warnings
Most of these changes have no semantic bearing, but some of the warnings
specifically related to quoting fix some word-splitting and globbing
issues with certain scripts.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-06-05 15:24:46 +00:00
c1f65fc03d aliases: replace cdt alias with function
This adds an optional argument to `cdt` to allow specifying the
temporary directory prefix instead of the default `tmp`. This also
shortens the random character string from 10 (GNU mktemp) to 8.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-06-05 15:24:46 +00:00
92c8dbc019 aliases: consistently quote ls/directory aliases
Consistency is key.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-05-25 11:00:48 +00:00
315f6b6b9a aliases: remove unused global aliases
I used to use these occasionally, but now I increasingly find myself
typing the commands out in full. They really don't save much time at
all.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-05-25 10:59:34 +00:00
c1903f5726 aliases: remove ssh pseudo-tty override
Sometimes SSH needs to be called without a pty as it breaks some
non-interactive workflows, such as `docker save | ssh .. docker load`.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-05-25 09:59:40 +00:00
24dfc13c3f git: log/show dates in ISO8601 in UTC
Consistency is key. Timezones are the devil.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-05-25 09:58:32 +00:00
8f14e0d757 systemd: invoke xsettingsd without a shell
systemd will substitute variables in commands making the sh invocation
redundant.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-04-30 21:35:59 +01:00
d5668f82fe aliases: add gfrb for 'git fetch && git rebase'
Signed-off-by: Joe Groocock <me@frebib.net>
2021-04-29 11:32:18 +01:00
4607175b94 aliases: add grbi for 'git rebase -i'
Signed-off-by: Joe Groocock <me@frebib.net>
2021-04-29 11:30:35 +01:00
ff9feca14c aliases: replace dklrm with drmf
Recently I learnt that `docker rm -f` both stops and removes the
container in one go, without any races. It's much cleaner than the hack
from before so replace it outright.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-02-13 14:46:19 +00:00
6f655c20aa zsh: remove fzf-tab plugin
This plugin is more of a hindrance than a help, even though fzf is still
really useful; just not here.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-02-01 13:50:25 +00:00
9793eb491b zsh: remove unused x-bash-backward-kill-word
The standard backward-delete-word works just fine, so this is redundant

Signed-off-by: Joe Groocock <me@frebib.net>
2021-02-01 13:49:49 +00:00
8142cdf82f systemd: add missing WantedBy= properties to user units
This fixes some inconsistent and incorrect startup order of the
graphical and desktop targets. xprofile will now always run as part of
xorg.target, which is before all other X-related applications that
require those settings to be in place beforehand.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-02-01 13:44:12 +00:00
69787bd90f dpi: set cursor size with xsettings
Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-30 11:48:39 +00:00
3b34decb42 X11: enable hardware video acceleration in firefox
According to the wiki, setting this value helps a lot.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-24 11:37:37 +00:00
03690a5f9f X11: remove unused urxvt configuration
urxvt is a dated and broken terminal emulator. It fails to render simple
modern glyphs like emojis and powerline. There are much better
alternatives available now like Termite, Alacritty or Kitty.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-24 11:35:02 +00:00
00f7814f8e git: add missing git am/cherry-pick aliases
These are shorthands for continue and abort with both git am and
cherry-pick.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-24 11:30:19 +00:00
b1eecdbbda git: suppress detached-head warning. I-know-what-I-am-doing
git is not for the weak. Warnings are not for the knowing.
Shut up git.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-07 15:34:18 +00:00
1b3672b983 git: suppress default branch babble warning
Shut up and just make me a repo without complaining will you.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-07 15:34:18 +00:00
3e681a94b1 environment: override GEM_HOME to prevent ~/.gem
Note from the Arch Wiki:
    Make sure to remove gem: --user-install from /etc/gemrc

https://wiki.archlinux.org/index.php/XDG_Base_Directory#Ruby

Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-05 09:43:27 +00:00
ab7532e250 environment: move PATH additions to 20-xdg-overrides
Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-05 09:43:02 +00:00
3b78319653 aliases: limit dlg to last 1000 lines
This prevents the sometimes lengthy waits whilst Docker spools months or
years of container logs into the shell scrollback, shortly to be
discarded. It's rare that more than the most 1000 recent lines will be
required, and those should probably use more specific cli invocations.

Signed-off-by: Joe Groocock <me@frebib.net>
2021-01-04 15:38:34 +00:00
dae7f60002 alacritty: update to 0.7.0, fix keybinds
Upstream change: 67db9b228d

Signed-off-by: Joe Groocock <me@frebib.net>
2020-12-17 19:21:01 +00:00
e237f79831 systemd: add SyslogIdentifier for /bin/sh processes
These units appear in the journal with the identifier `sh` so set a
sensible identifier for them to aid in log readability

Signed-off-by: Joe Groocock <me@frebib.net>
2020-09-26 14:12:01 +01:00
8d0eedb617 rofi: float based on window class
Upstream changed the window naming behaviour so the window stopped
floating. 85279323e6

Signed-off-by: Joe Groocock <me@frebib.net>
2020-09-08 21:54:32 +01:00
f6b863adf3 zsh: add bash-insulter plugin
Should lighten the mood when I inevitibly fuck up typing a command.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 17:12:41 +01:00
f4b03038ee zsh: zshenv source all environment in a loop
source only accepts one argument, so it must be called once for each
environment file.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 17:04:05 +01:00
a2ad4853ed zsh: use ZDOTDIR over XDG_CONFIG_HOME
ZSH is programmed to prefer this ordering, so honor that in the ZSH
configuration as well.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 16:38:34 +01:00
ecb282cabb zsh: remove unused edit-command-line zmod
This was added previously for Ctrl+V for vim editing of the
command-line, but the key-bind was removed in
ce595c81b6 but this was forgotten.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 16:37:59 +01:00
6d33d4685c zsh: switch to zinit & zsh-fsh
These are significantly faster to load, and are actively maintained.
Functionality is almost identical from a usability perspective.
The primary motivation for this change is the several orders of
magnitude faster shell loading times, which should help with
productivity on overloaded and underpowered hardware.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 16:34:33 +01:00
5ace0bb7f4 zsh: trysource various ZSH plugins
These vary by OS/distribution and even between devices depending on what
is installed. Most of these are optional anyway so make a best-effort
attempt to load them.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 12:07:09 +01:00
c719fad76a zsh: skip loading environment if ZDOTDIR is set
Loading the environment on every shell invocation is slow. We can speed
up shell startup a little by skipping this for ever shell because it's
loaded on login by systemd.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 12:03:27 +01:00
9d34d3250b environment: force aspell to respect XDG directories
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 11:50:27 +01:00
cda9cb6570 environment: split XDG base directory overrides
Move environment variable overrides for non-XDG compliant applications
into it's own file. I expect this list will get a lot longer over time.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 11:49:52 +01:00
d3910bda18 ideavim: move .ideavimrc into $XDG_CONFIG_HOME/ideavim
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 11:42:16 +01:00
98990b8ac9 xournal: remove unused .xournal configuration
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 11:42:15 +01:00
4fc5fc0df6 environment: move .ts3client to $XDG_CONFIG_HOME
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 11:35:24 +01:00
3dff4ff428 environment: move .ICEauthority to $XDG_CACHE_HOME
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 11:18:30 +01:00
be88417d59 python: move .python_history to $XDG_CACHE_DIR/python
Courtesy of 89fd8cc648

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 11:18:22 +01:00
f16cd95a0f mimeapps: update GNOME .desktop names
Fixes using eog/evince as default image/pdf viewer applications with
xdg-open/gio open.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 02:23:18 +01:00
21f7a2b75c systemd: nm-applet requires NetworkManger to run
Require NetworkManager tmp files before attempting to start nm-applet,
else it will fail to start if NetworkManager is not actually running.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 02:22:04 +01:00
a912db8044 systemd: add gphoto2-ffmpeg user service
Streams 720p25 video from a gphoto2-compatible camera through ffmpeg
into /dev/video* for use as a generic video/camera device.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 02:21:01 +01:00
e0ff04168a systemd: assign default slices to user services
As per recommendations in the systemd documentation, assign session, app
or background slice allocations to the standard user services:
https://github.com/systemd/systemd/blob/master/docs/DESKTOP_ENVIRONMENTS.md#pre-defined-systemd-units

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-23 01:16:54 +01:00
ed2fa7076c picom: move picom.conf into XDG directory
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-21 20:05:34 +01:00
ba47b9b00d polybar: scale font & tray icons with dpi
This is using my hacked branch of polybar, but it works well enough.
Padding isn't properly scaled, though.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-19 23:00:59 +01:00
cdbe8ce855 systemd: parameterise wallpaper.service
Remove all invocations of 'feh' for setting wallpaper that are now
redundant as this service should handle setting the wallpaper in all
relevant situations.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-19 20:49:10 +01:00
03ae85dff5 i3: remove i3blocks references
i3blocks is long gone so these do nothing now

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-19 15:16:50 +01:00
ab4bb4e480 zsh: enabled extendedhistory
This saves timestamps and command durations for all history entries

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-19 12:28:13 +01:00
2cace82b29 systemd: move xdg-user-dirs-update.service to default.target
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-18 13:53:50 +01:00
39d5f2a370 systemd: require sys/class/bluetooth for blueman-applet
This should prevent the unit from failing when there is no bluetooth
device in the system.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-18 13:53:16 +01:00
09f36fa202 zsh: z-sy-hl redrawhook feature merged
Use master branch that contains the redrawhook feature and other fixes

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-18 13:29:07 +01:00
3f274253ff scripts/systemd-run-i3: bind applications to graphical session
When the graphical-session target exits, this should terminal all units
bound to it.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-18 13:17:55 +01:00
9a04e70e77 systemd: default launch systemd apps in app.slice
Unless specified, units will launch in `app.slice` under the assumption
that they are foreground user applications.

Update i3 configuration to remove redundant app.slice definition.

Conform to unit naming of app-{name}-{random}.service as documented in
https://github.com/systemd/systemd/blob/master/docs/DESKTOP_ENVIRONMENTS.md#pre-defined-systemd-units

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-18 12:49:31 +01:00
e2d1c57792 systemd: remove dependency on system bluetooth service
systemd user units cannot depend on systemd units as the systemd daemons
are independent processes and have no notion of each-others' services.

Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-11 18:53:49 +01:00
6c4767b01e systemd: re-apply wallpaper on xorg screen event
Signed-off-by: Joe Groocock <me@frebib.net>
2020-08-11 18:50:17 +01:00
70 changed files with 948 additions and 765 deletions

1
.gitignore vendored
View File

@ -8,6 +8,5 @@ bookmarks
.config/zsh/.zshrc.zwc .config/zsh/.zshrc.zwc
*.log *.log
.xournal/recent-files
.vim/bundle .vim/bundle
.vim/swapfiles .vim/swapfiles

View File

@ -1,171 +0,0 @@
# Xournal configuration file.
# This file is generated automatically upon saving preferences.
# Use caution when editing this file manually.
#
[general]
# the display resolution, in pixels per inch
display_dpi=96.00
# the initial zoom level, in percent
initial_zoom=169.98
# maximize the window at startup (true/false)
window_maximize=false
# start in full screen mode (true/false)
window_fullscreen=false
# the window width in pixels (when not maximized)
window_width=2120
# the window height in pixels
window_height=1374
# scrollbar step increment (in pixels)
scrollbar_speed=30
# the step increment in the zoom dialog box
zoom_dialog_increment=1
# the multiplicative factor for zoom in/out
zoom_step_factor=1.500
# continuous view (false = one page, true = continuous, horiz = horizontal)
view_continuous=true
# use XInput extensions (true/false)
use_xinput=true
# discard Core Pointer events in XInput mode (true/false)
discard_corepointer=false
# ignore events from other devices while drawing (true/false)
ignore_other_devices=true
# do not worry if device reports button isn't pressed while drawing (true/false)
ignore_btn_reported_up=true
# always map eraser tip to eraser (true/false)
use_erasertip=true
# always map touchscreen device to hand tool (true/false) (requires separate pen and touch devices)
touchscreen_as_hand_tool=true
# disable touchscreen device when pen is in proximity (true/false) (requires separate pen and touch devices)
pen_disables_touch=true
# name of touchscreen device for touchscreen_as_hand_tool
touchscreen_device_name=NTRG0001:01 1B96:1B05
# buttons 2 and 3 switch mappings instead of drawing (useful for some tablets) (true/false)
buttons_switch_mappings=false
# automatically load filename.pdf.xoj instead of filename.pdf (true/false)
autoload_pdf_xoj=false
# enable periodic autosaves (true/false)
autosave_enabled=true
# delay for periodic autosaves (in seconds)
autosave_delay=5
# default path for open/save (leave blank for current directory)
default_path=
# use pressure sensitivity to control pen stroke width (true/false)
pressure_sensitivity=true
# minimum width multiplier
width_minimum_multiplier=0.00
# maximum width multiplier
width_maximum_multiplier=1.25
# interface components from top to bottom
# valid values: drawarea menu main_toolbar pen_toolbar statusbar
interface_order=menu main_toolbar pen_toolbar drawarea statusbar
# interface components in fullscreen mode, from top to bottom
interface_fullscreen=main_toolbar pen_toolbar drawarea
# interface has left-handed scrollbar (true/false)
interface_lefthanded=false
# hide some unwanted menu or toolbar items (true/false)
shorten_menus=false
# interface items to hide (customize at your own risk!)
# see source file xo-interface.c for a list of item names
shorten_menu_items=optionsProgressiveBG optionsLeftHanded optionsButtonSwitchMapping
# highlighter opacity (0 to 1, default 0.5)
# warning: opacity level is not saved in xoj files!
highlighter_opacity=0.50
# auto-save preferences on exit (true/false)
autosave_prefs=true
# force PDF rendering through cairo (slower but nicer) (true/false)
poppler_force_cairo=false
# prefer xournal's own PDF code for exporting PDFs (true/false)
exportpdf_prefer_legacy=false
# export successive layers on separate pages in PDFs (true/false)
exportpdf_layers=false
# when attempting to open a non-existent file, treat it as a new file (true/false)
autocreate_new_xoj=false
[paper]
# the default page width, in points (1/72 in)
width=595.27
# the default page height, in points (1/72 in)
height=841.89
# the default paper color
color=white
# the default paper style (plain, lined, ruled, or graph)
style=lined
# apply paper style changes to all pages (true/false)
apply_all=false
# preferred unit (cm, in, px, pt)
default_unit=cm
# include paper ruling when printing or exporting to PDF (true/false)
print_ruling=true
# when creating a new page, duplicate a PDF or image background instead of using default paper (true/false)
new_page_duplicates_bg=true
# just-in-time update of page backgrounds (true/false)
progressive_bg=true
# bitmap resolution of PS/PDF backgrounds rendered using ghostscript (dpi)
gs_bitmap_dpi=144
# bitmap resolution of PDF backgrounds when printing with libgnomeprint (dpi)
pdftoppm_printing_dpi=150
[tools]
# selected tool at startup (pen, eraser, highlighter, selectregion, selectrect, vertspace, hand, image)
startup_tool=pen
# Use the pencil from cursor theme instead of a color dot (true/false)
pen_cursor=false
# default pen color
pen_color=black
# default pen thickness (fine = 1, medium = 2, thick = 3)
pen_thickness=2
# default pen is in ruler mode (true/false)
pen_ruler=false
# default pen is in shape recognizer mode (true/false)
pen_recognizer=false
# default eraser thickness (fine = 1, medium = 2, thick = 3)
eraser_thickness=2
# default eraser mode (standard = 0, whiteout = 1, strokes = 2)
eraser_mode=2
# default highlighter color
highlighter_color=yellow
# default highlighter thickness (fine = 1, medium = 2, thick = 3)
highlighter_thickness=2
# default highlighter is in ruler mode (true/false)
highlighter_ruler=false
# default highlighter is in shape recognizer mode (true/false)
highlighter_recognizer=false
# button 2 tool (pen, eraser, highlighter, text, selectregion, selectrect, vertspace, hand, image)
btn2_tool=eraser
# button 2 brush linked to primary brush (true/false) (overrides all other settings)
btn2_linked=true
# button 2 brush color (for pen or highlighter only)
btn2_color=white
# button 2 brush thickness (pen, eraser, or highlighter only)
btn2_thickness=2
# button 2 ruler mode (true/false) (for pen or highlighter only)
btn2_ruler=false
# button 2 shape recognizer mode (true/false) (pen or highlighter only)
btn2_recognizer=false
# button 2 eraser mode (eraser only)
btn2_erasermode=2
# button 3 tool (pen, eraser, highlighter, text, selectregion, selectrect, vertspace, hand, image)
btn3_tool=selectregion
# button 3 brush linked to primary brush (true/false) (overrides all other settings)
btn3_linked=true
# button 3 brush color (for pen or highlighter only)
btn3_color=white
# button 3 brush thickness (pen, eraser, or highlighter only)
btn3_thickness=0
# button 3 ruler mode (true/false) (for pen or highlighter only)
btn3_ruler=false
# button 3 shape recognizer mode (true/false) (pen or highlighter only)
btn3_recognizer=false
# button 3 eraser mode (eraser only)
btn3_erasermode=2
# thickness of the various pens (in points, 1 pt = 1/72 in)
pen_thicknesses=0.42;0.85;1.41;2.26;5.67
# thickness of the various erasers (in points, 1 pt = 1/72 in)
eraser_thicknesses=2.83;8.50;19.84
# thickness of the various highlighters (in points, 1 pt = 1/72 in)
highlighter_thicknesses=2.83;8.50;19.84
# name of the default font
default_font=Sans
# default font size
default_font_size=12.0

View File

@ -24,7 +24,7 @@
], ],
"bug_report_endpoint_url": "https://riot.im/bugreports/submit", "bug_report_endpoint_url": "https://riot.im/bugreports/submit",
"defaultCountryCode": "GB", "defaultCountryCode": "GB",
"showLabsSettings": false, "showLabsSettings": true,
"features": { "features": {
"feature_font_scaling": "labs", "feature_font_scaling": "labs",
"feature_pinning": "labs", "feature_pinning": "labs",

View File

@ -4,17 +4,20 @@
export TERMINAL="alacritty" export TERMINAL="alacritty"
export BROWSER="firefox" export BROWSER="firefox"
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel" export GTK_THEME="$(grep gtk-theme-name "${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini" | sed 's/.*\s*=\s*//')"
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/settings.ini" export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/settings.ini"
export QT_QPA_PLATFORMTHEME=qt5ct export QT_QPA_PLATFORMTHEME=qt5ct
export XDG_CURRENT_DESKTOP="GNOME" # Fixes xdg-open
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
# https://www.reddit.com/r/linux/comments/72mfv8/psa_for_firefox_users_set_moz_use_xinput21_to/ # https://www.reddit.com/r/linux/comments/72mfv8/psa_for_firefox_users_set_moz_use_xinput21_to/
export MOZ_USE_XINPUT2=1 # enable pixel-accurate scrolling in firefox export MOZ_USE_XINPUT2=1 # enable pixel-accurate scrolling in firefox
export XDG_CURRENT_DESKTOP="GNOME" # Fixes xdg-open
# Load Xorg resources and set the DPI # Load Xorg resources and set the DPI
xrdb -merge $XDG_CONFIG_HOME/X11/xresources xrdb -merge "$XDG_CONFIG_HOME/X11/xresources"
xrandr --dpi $(xrdb -query | grep -i xft.dpi | cut -d: -f2) #"$XDG_CONFIG_HOME/scripts/dpi" "$(xrdb -query | grep -i xft.dpi | cut -d: -f2 | xargs)"
setxkbmap -option caps:none setxkbmap -option caps:none
xset r rate 200 18 xset r rate 200 18

View File

@ -36,54 +36,5 @@ Xft.hinting: true
Xft.hintstyle: hintfull Xft.hintstyle: hintfull
Xft.lcdfilter: lcddefault Xft.lcdfilter: lcddefault
Xcursor.theme: Breeze_Obsidian Xcursor.size: 28
Xcursor.theme: BreezeX-Black
!!======================!!
!! RXVT-unicode setting !!
!!======================!!
urxvt.depth: 32
urxvt.internalBorder: 16
urxvt.blurRadius: 25
urxvt.saveLines: 10000
urxvt.preeditType: Root
urxvt.scrollBar: false
urxvt.jumpScroll: false
urxvt.scrollTtyOutput: false
urxvt.scrollWithBuffer: true
urxvt.scrollTtyKeypress: true
urxvt.altSendsEscape: true
xterm.metaSendsEscape: true
urxvt.termName: xterm-256color
urxvt.font: xft:Source Code Pro:style=regular:size=9
urxvt.imFont: xft:Source Code Pro:style=regular:size=9
urxvt.boldFont: xft:Source Code Pro:style=bold:size=9
urxvt.italicFont: xft:Source Code Pro:style=italic:size=9
urxvt.boldItalicFont: xft:Source Code Pro:style=bold,italic:size=9
urxvt.iso14755: false
urxvt.iso14755_52: false
urxvt.perl-ext-common: default,vtwheel,font-size
urxvt.url-launcher: /usr/bin/firefox
urxvt.matcher.button: 1
urxvt.keysym.C-Up: font-size:increase
urxvt.keysym.C-Down: font-size:decrease
urxvt.keysym.C-equal: font-size:reset
urxvt.keysym.C-slash: font-size:show
! special
*.foreground: #ECEFF1
*.background: #002B36
*.cursorColor: #5294E2
*.highlightColor: #5294E2
urxvt.background: [95]#383C4A
urxvt.scrollColor: #767B87
urxvt.dynamicColors: on
urxvt.highlightSelection: true
urxvt.colorMode: on

View File

@ -51,6 +51,12 @@ window:
# - buttonless: Title bar, transparent background, but no title bar buttons # - buttonless: Title bar, transparent background, but no title bar buttons
decorations: full decorations: full
# Background opacity
#
# Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque.
opacity: 0.8
# Startup Mode (changes require restart) # Startup Mode (changes require restart)
# #
# Values for `startup_mode`: # Values for `startup_mode`:
@ -259,6 +265,13 @@ colors:
# #
#indexed_colors: [] #indexed_colors: []
# Transparent cell backgrounds
#
# Whether or not `window.opacity` applies to all cell backgrounds or only to
# the default background. When set to `true` all cells will be transparent
# regardless of their background color.
transparent_background_colors: false
# Visual Bell # Visual Bell
# #
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once # Any time the BEL code is received, Alacritty "rings" the visual bell. Once
@ -285,12 +298,6 @@ colors:
# duration: 0 # duration: 0
# color: '#ffffff' # color: '#ffffff'
# Background opacity
#
# Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque.
background_opacity: 0.80
selection: selection:
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
@ -366,28 +373,6 @@ mouse:
# If this is `true`, the cursor is temporarily hidden when typing. # If this is `true`, the cursor is temporarily hidden when typing.
hide_when_typing: false hide_when_typing: false
url:
# URL launcher
#
# This program is executed when clicking on a text which is recognized as a URL.
# The URL is always added to the command as the last parameter.
#
# When set to `None`, URL launching will be disabled completely.
#
# Default:
# - (macOS) open
# - (Linux/BSD) xdg-open
# - (Windows) explorer
launcher:
program: xdg-open
args: []
# URL modifiers
#
# These are the modifiers that need to be held down for opening URLs when clicking
# on them. The available modifiers are documented in the key binding section.
#modifiers: None
# Mouse bindings # Mouse bindings
# #
# Mouse bindings are specified as a list of objects, much like the key # Mouse bindings are specified as a list of objects, much like the key
@ -599,31 +584,16 @@ key_bindings:
# (Windows, Linux, and BSD only) # (Windows, Linux, and BSD only)
- { key: V, mods: Control|Shift, action: Paste } - { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy } - { key: C, mods: Control|Shift, action: Copy }
- { key: F, mods: Control|Shift, action: SearchForward }
- { key: B, mods: Control|Shift, action: SearchBackward }
- { key: C, mods: Control|Shift, mode: Vi, action: ClearSelection }
- { key: Insert, mods: Shift, action: PasteSelection } - { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize } - { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: ResetFontSize } - { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Add, mods: Control|Shift, action: IncreaseFontSize } - { key: Plus, mods: Control, action: IncreaseFontSize }
- { key: Subtract, mods: Control|Shift, action: DecreaseFontSize } - { key: NumpadAdd, mods: Control, action: IncreaseFontSize }
- { key: Minus, mods: Control|Shift, action: DecreaseFontSize } - { key: Minus, mods: Control, action: DecreaseFontSize }
- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize }
# (Windows only)
#- { key: Return, mods: Alt, action: ToggleFullscreen }
# (macOS only)
#- { key: K, mods: Command, mode: ~Vi, chars: "\x0c" }
#- { key: Key0, mods: Command, action: ResetFontSize }
#- { key: Equals, mods: Command, action: IncreaseFontSize }
#- { key: Add, mods: Command, action: IncreaseFontSize }
#- { key: Minus, mods: Command, action: DecreaseFontSize }
#- { key: K, mods: Command, action: ClearHistory }
#- { key: V, mods: Command, action: Paste }
#- { key: C, mods: Command, action: Copy }
#- { key: H, mods: Command, action: Hide }
#- { key: M, mods: Command, action: Minimize }
#- { key: Q, mods: Command, action: Quit }
#- { key: W, mods: Command, action: Quit }
#- { key: N, mods: Command, action: SpawnNewInstance }
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
debug: debug:
# Display the time it takes to redraw each frame. # Display the time it takes to redraw each frame.
@ -641,7 +611,7 @@ debug:
# - Info # - Info
# - Debug # - Debug
# - Trace # - Trace
log_level: Info log_level: Warn
# Print all received window events. # Print all received window events.
#print_events: false #print_events: false

172
aliases
View File

@ -1,7 +1,7 @@
case "$(basename "$(readlink -f /proc/$$/exe)")" in case "$(basename "$(readlink -f /proc/$$/exe)")" in
zsh) thisfile="$(readlink -f "${(%):-%N}")";; zsh) thisfile="$(readlink -f "${(%):-%N}")";;
bash) thisfile="$(readlink -f "${BASH_SOURCE[0]}")";; bash) thisfile="$(readlink -f "${BASH_SOURCE[0]}")";;
*) thisfile="$(find /proc/$$/fd/ | xargs -n1 -r readlink -f | grep aliases | head -n1)";; *) thisfile="$(find /proc/$$/fd/ -print0 | xargs -0 -n1 -r readlink -f | grep aliases | head -n1)";;
esac esac
# Global aliases for ZSH # Global aliases for ZSH
@ -10,49 +10,32 @@ if alias -g 2>/dev/null; then
alias -g ....=../../.. alias -g ....=../../..
alias -g .....=../../../.. alias -g .....=../../../..
alias -g ......=../../../../.. alias -g ......=../../../../..
alias -g H='| head'
alias -g T='| tail'
alias -g G='| grep'
alias -g L="| less"
alias -g C="| wc -l"
alias -g S="| sort"
alias -g U="| uniq"
alias -g count="| wc -l"
alias -g NO="1> /dev/null" alias -g NO="1> /dev/null"
alias -g NE="2> /dev/null" alias -g NE="2> /dev/null"
alias -g NUL="&> /dev/null" alias -g NUL="&> /dev/null"
alias -g BG="&;disown" alias -g BG="&;disown"
alias -g COL="| column -t"
alias -g CLIP="| xclip -i -selection primary -f | xclip -i -selection clipboard"
fi fi
# File default aliases # File default aliases
if alias -s 2>/dev/null; then if alias -s 2>/dev/null; then
alias -s pdf="open" alias -s pdf="open"
alias -s zip="unzip -l"
alias -s rar="unrar l"
alias -s tar="tar tf"
alias -s gz="tar tf"
alias -s jar="java -jar" alias -s jar="java -jar"
alias -s git="git clone --recursive" alias -s git="git clone --recursive"
fi fi
alias ..la="cd ..;la"
alias ..ll="cd..;ll"
alias ..l="..ll"
alias l=ll alias l=ll
alias ls='ls --color=auto' alias ls='ls --color=auto'
alias ll="ls -lFh --group-directories-first" alias ll='ls -lFh --group-directories-first'
alias la="ls -lAFh --group-directories-first" alias la='ls -lAFh --group-directories-first'
alias lt='ls -lAFh --sort=time' alias lt='ls -lFh --sort=time'
alias lat='ls -lAFh --sort=time'
alias lsz='ls -lAFh --sort=size' alias lsz='ls -lAFh --sort=size'
alias al=la # No, I don't need the Mono Assembly Linker alias al=la # No, I don't need the Mono Assembly Linker
alias md="mkdir -p" alias md='mkdir -p'
alias rd="rmdir -p" alias rd='rmdir -p'
alias -- -='cd -' alias -- -='cd -'
alias cdt='cd `mktemp -d`' cdt() { cd "$(mktemp -d -t "${1:-tmp}.XXXXXXXX")"; }
alias svi=sudoedit alias svi=sudoedit
alias svim=sudoedit alias svim=sudoedit
@ -63,27 +46,26 @@ alias sudo='sudo '
alias open=xdg-open alias open=xdg-open
# Command rewrites # Command rewrites
alias rm='rm -i' alias rm='rm -iv'
alias mv='mv -i' alias mv='mv -i'
alias cp='cp -ir' alias cp='cp -ir'
alias scp='scp -r' alias scp='scp -r'
alias dd='dd status=progress' alias dd='dd status=progress'
alias ssh="ssh -tt" alias wget='wget --hsts-file=$XDG_DATA_HOME/wget/hsts-file'
alias wget="wget --hsts-file=$XDG_DATA_HOME/wget/hsts-file"
alias vi=vim alias vi=vim
alias grip='grip --user=frebib --pass=$GRIP_API_KEY' alias grip='grip --pass=$GRIP_API_KEY'
alias acme.sh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log' alias acme.sh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log'
alias acmesh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log' alias acmesh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log'
alias alpine-sdk='docker run -ti --rm \ alias alpine-sdk="docker run -ti --rm \
-e USER \ -e USER \
-e UID="$(id -u)" \ -e UID=\"\$(id -u)\" \
-e PWD \ -e PWD \
-e HOME \ -e HOME \
-w $PWD \ -w \$PWD \
-v $PWD:$PWD \ -v \$PWD:\$PWD \
-v ~/.abuild:$HOME/.abuild \ -v ~/.abuild:\$HOME/.abuild \
-v ~/.abuild/distfiles:/var/cache/distfiles \ -v ~/.abuild/distfiles:/var/cache/distfiles \
frebib/alpine-sdk:edge' frebib/alpine-sdk:edge"
alias abuild='alpine-sdk abuild' alias abuild='alpine-sdk abuild'
alias abuild-sign='alpine-sdk abuild-sign' alias abuild-sign='alpine-sdk abuild-sign'
alias apk='alpine-sdk apk' alias apk='alpine-sdk apk'
@ -107,9 +89,9 @@ vim --version 2>/dev/null | command grep -q +clientserver && \
alias vim="vim --servername vim -p" alias vim="vim --servername vim -p"
# Function aliases # Function aliases
env() { command env $@ | stripansi | sort; } env() { command env "$@" | stripansi | sort; }
mcd(){ mkdir -p -- $@ && cd -- $@; } mcd(){ mkdir -p -- "$@" && cd -- "$@"; }
randstr() { tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w $1 | head -n 1; } randstr() { tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w "$1" | head -n 1; }
# System aliases # System aliases
alias sc="systemctl" alias sc="systemctl"
@ -122,6 +104,7 @@ alias kl='killall -s 9'
alias chx='chmod +x' alias chx='chmod +x'
# Git Aliases # Git Aliases
alias git='TZ=UTC git'
alias g=git alias g=git
alias ginit='git init' alias ginit='git init'
alias gignore='$EDITOR .gitignore' alias gignore='$EDITOR .gitignore'
@ -129,7 +112,7 @@ alias gitc='$EDITOR $XDG_CONFIG_HOME/git/config'
alias ggignore='$EDITOR $XDG_CONFIG_HOME/git/gitignore' alias ggignore='$EDITOR $XDG_CONFIG_HOME/git/gitignore'
alias gcl="git clone --recursive" alias gcl="git clone --recursive"
alias gco="git checkout" alias gco="git checkout"
alias gcom="git checkout master" alias gcom="git checkout \"\$(git defbranch)\""
alias ga="git add" alias ga="git add"
alias gap="git add -p" alias gap="git add -p"
alias gau="git add -u" alias gau="git add -u"
@ -138,7 +121,7 @@ alias gaa="ga -A"
alias grm="git rm" alias grm="git rm"
alias gc="git commit -s" alias gc="git commit -s"
alias gcm="git commit -s -em" alias gcm="git commit -s -em"
alias gca="git commit -s --amend --date=\"$(date -R)\"" alias gca="git commit -s --amend --date=\"\$(date -R)\""
alias gcn="git commit -s --no-edit" alias gcn="git commit -s --no-edit"
alias gcan="gca -s --no-edit" alias gcan="gca -s --no-edit"
alias gcam="gca -s -m" alias gcam="gca -s -m"
@ -148,20 +131,36 @@ alias gm="git merge"
alias gma="git merge --abort" alias gma="git merge --abort"
alias grb="git rebase" alias grb="git rebase"
alias grbi="grb -i"
alias grba="grb --abort" alias grba="grb --abort"
alias grbc="grb --continue" alias grbc="grb --continue"
alias grbsk="grb --skip" alias grbsk="grb --skip"
alias grbsh="grb --show-current" alias grbsh="grb --show-current"
alias grbom="git rebase origin/master" alias grbom="git rebase \"origin/\$(git defbranch)\""
gfrb() { remote="${1%/*}"; git fetch "$remote" && git rebase "$@"; }
gfrbi() { remote="${1%/*}"; git fetch "$remote" && git rebase -i "$@"; }
alias gam="git am"
alias gama="git am --abort"
alias gamc="git am --continue"
alias gamsk="git am --skip"
alias gcp="git cherry-pick" alias gcp="git cherry-pick"
alias gcpa="git cherry-pick --abort"
alias gcpc="git cherry-pick --continue"
alias gcpsk="git cherry-pick --skip"
alias grv="git revert"
alias grva="git revert --abort"
alias grvc="git revert --continue"
alias grvsk="git revert --skip"
alias gf="git fetch" alias gf="git fetch"
alias gp="git push" alias gp="git push"
alias gpf="gp --force" alias gpf="gp --force"
alias gpsu="git push --set-upstream" alias gpsu="git push --set-upstream"
alias gpoH="git push origin HEAD" alias gpoH="git push origin HEAD"
alias gpsuom="git push --set-upstream origin master" alias gpsuom="git push --set-upstream origin \"\$(git defbranch)\""
alias gpall="git remote | xargs -L1 git push" alias gpall="git remote | xargs -L1 git push"
alias gl="git pull --rebase" alias gl="git pull --rebase"
alias glp="gl && gp" alias glp="gl && gp"
@ -169,18 +168,18 @@ alias gd="git diff --patch-with-stat"
alias gdni="gd --no-index" alias gdni="gd --no-index"
alias gds="gd --staged" alias gds="gd --staged"
alias gsh="git show --format=fuller --patch-with-stat" alias gsh="git show --format=fuller --patch-with-stat"
alias glg="git log --color --format=fuller --stat" alias glg="git log --color --format=fuller --stat --no-merges --graph"
alias glgp="git log --color --format=fuller --patch-with-stat" alias glgp="git log --color --format=fuller --patch-with-stat --no-merges --graph"
alias glog="git log --color --oneline --decorate --graph" alias glog="git log --color --oneline --decorate --graph"
alias grst="git reset" alias grst="git reset"
alias gundo="git reset --keep @~1" alias gundo="git reset --keep @~1"
alias gclean="git clean" alias gclean="git clean"
alias gbr="git branch" alias gbr="git branch"
alias gbrl="git for-each-ref --sort=committerdate refs/heads/ --format=\"%(refname:short)\" | fzf -x --ansi --multi --preview-window=right:70% --preview=\"git log --format=fuller --stat --color=always {} | head -n\$((\$(tput lines)*10))\""
alias gtg="git tag" alias gtg="git tag"
alias gbl="git blame" alias gbl="git blame"
alias gr="git remote" alias gr="git remote"
alias grv="git revert"
alias gra="gr add" alias gra="gr add"
alias grr="gr rm" alias grr="gr rm"
alias grao="gra origin" alias grao="gra origin"
@ -197,7 +196,7 @@ alias d=docker
alias dps="docker ps --format='table {{.ID}}\t{{.Image}}\t{{.Label \"org.label-schema.version\"}}\t{{.Networks}}\t{{.RunningFor}}\t{{.Status}}\t{{.Names}}' | sed '1s/version/VERSION/'" alias dps="docker ps --format='table {{.ID}}\t{{.Image}}\t{{.Label \"org.label-schema.version\"}}\t{{.Networks}}\t{{.RunningFor}}\t{{.Status}}\t{{.Names}}' | sed '1s/version/VERSION/'"
alias dpsa="docker ps -a --format='table {{.ID}}\t{{.Image}}\t{{.Label \"org.label-schema.version\"}}\t{{.Networks}}\t{{.RunningFor}}\t{{.Status}}\t{{.Names}}' | sed '1s/version/VERSION/'" alias dpsa="docker ps -a --format='table {{.ID}}\t{{.Image}}\t{{.Label \"org.label-schema.version\"}}\t{{.Networks}}\t{{.RunningFor}}\t{{.Status}}\t{{.Names}}' | sed '1s/version/VERSION/'"
alias dnets="docker network ls -q | xargs docker inspect | jq '.[] | select(.Name != \"host\" and .Name != \"none\") | [.] | map(.Name + \"\t\" + (.IPAM.Config | map(.Subnet) | join(\"\t\")))[]' -r | sort -V -k2,3 | column -t" alias dnets="docker network ls -q | xargs docker inspect | jq '.[] | select(.Name != \"host\" and .Name != \"none\") | [.] | map(.Name + \"\t\" + (.IPAM.Config | map(.Subnet) | join(\"\t\")))[]' -r | sort -V -k2,3 | column -t"
daddrs() { docker inspect ${1:-bridge} | jq '.[0].Containers | map(.Name + "\t" + .IPv4Address + "\t" + .IPv6Address)[]' -r | sort -V -k2,3 | column -t; } daddrs() { docker inspect "${1:-bridge}" | jq '.[0].Containers | map(.Name + "\t" + .IPv4Address + "\t" + .IPv6Address)[]' -r | sort -V -k2,3 | column -t; }
alias din='docker inspect' alias din='docker inspect'
alias drm='docker rm' alias drm='docker rm'
alias drmi='docker rmi' alias drmi='docker rmi'
@ -206,30 +205,32 @@ alias dbl='docker build --pull'
alias dbl.='docker build --pull .' alias dbl.='docker build --pull .'
alias drun='docker run -ti' alias drun='docker run -ti'
alias dkl='docker kill' alias dkl='docker kill'
dklrm() { docker kill $@ ; docker rm $@; } alias drmf='docker rm -f'
alias dst='docker stop' alias dst='docker stop'
alias drst='docker restart' alias drst='docker restart'
alias dnet='docker network' alias dnet='docker network'
alias dvol='docker volume' alias dvol='docker volume'
alias dlg='docker logs -f' alias dc='docker compose'
alias dlg='docker logs --tail=1000 -f'
alias dalpine='docker run -ti --rm spritsail/alpine /bin/sh' alias dalpine='docker run -ti --rm spritsail/alpine /bin/sh'
alias drm-stopped='docker container prune' alias drm-stopped='docker container prune'
alias drmi-untag='docker image prune' alias drmi-untag='docker image prune'
alias dprune='docker system prune -f' alias dprune='docker system prune -f'
dsh() { do_dsh 2 exec $@; return $?; } dsh() { do_dsh 2 exec "$@"; return $?; }
_dsh() { __docker_complete_running_containers $@; } _dsh() { __docker_complete_running_containers "$@"; }
drsh() { do_dsh 4 run --rm --entrypoint= $@; return $?; } drsh() { do_dsh 4 run --rm --entrypoint= "$@"; return $?; }
_drsh() { __docker_container_subcommand $@; } _drsh() { __docker_container_subcommand "$@"; }
do_dsh() { do_dsh() {
local minargs=$1 local minargs=$1
shift shift
if [ $# -lt $minargs ]; then if [ $# -lt "$minargs" ]; then
# shellcheck disable=SC2154
echo "Usage: ${funcstack[2]} [user@]container [program [args]]" >&2 echo "Usage: ${funcstack[2]} [user@]container [program [args]]" >&2
return 64 return 64
fi fi
local dowhat="$1" local dowhat="$1"
local docker_args=() local docker_args=("$dowhat" -ti)
shift shift
while [ "${1:0:1}" = '-' ]; do while [ "${1:0:1}" = '-' ]; do
@ -241,68 +242,73 @@ do_dsh() {
shift shift
done done
local user="$(echo "$1" | cut -d'@' -f1 -s)" local user
local prog="${@:2:$#}" user="$(echo "$1" | cut -d@ -f1 -s)"
local usercmd=""
declare -a prog
prog=("${@:2:$#}")
if [ -z "$user" ]; then if [ -z "$user" ]; then
host="$1" host="$1"
else else
host=`echo $1 | cut -d'@' -f2 -s` host="$(cut -d@ -f2 -s <<< "$1")"
usercmd="--user=$user" docker_args+=("--user=$user")
fi fi
if [ "$dowhat" = 'exec' -a -z "$(docker ps -q -f name="$host")" <&- ]; then if [ "$dowhat" = exec ] && [ -z "$(docker ps -q -f name="$host" <&-)" ]; then
echo "No such container $host" >&2 echo "No such container $host" >&2
return 5 return 5
fi fi
if [ "$dowhat" = run ]; then
docker image pull "$host"
fi
if [ -z "$prog" ]; then if [ ${#prog[@]} = 0 ]; then
shell_args=() shell_args=("$dowhat")
if [ "$dowhat" = 'run' ]; then if [ "$dowhat" = 'run' ]; then
shell_args=(--rm --entrypoint=) shell_args+=(--rm --entrypoint=)
fi fi
for shell in bash sh; do for shell in bash sh; do
shell_path="$(set -o pipefail; docker $dowhat ${shell_args[@]} "$host" which "$shell" <&- | sed 's|[\r\n]||g')" shell_path="$(set -o pipefail; docker "${shell_args[@]}" "$host" which "$shell" <&- | sed 's|[\r\n]||g')"
retval=$? retval=$?
if [ $retval -eq 0 ]; then if [ $retval -eq 0 ]; then
prog="$shell_path" prog=("$shell_path")
break break
elif [ $retval -ge 125 ]; then elif [ $retval -ge 125 ]; then
return return
fi fi
done done
if [ -z "$prog" ]; then if [ ${#prog[@]} = 0 ]; then
echo "Warning: No shell found in path.. trying /bin/sh" >&2 echo "Warning: No shell found in path.. trying /bin/sh" >&2
prog=/bin/sh prog=(/bin/sh)
fi fi
fi fi
docker $dowhat ${docker_args[@]} -ti $usercmd $host $(xargs <<< $prog) docker "${docker_args[@]}" "$host" "${prog[@]}"
} }
alias dc='docker-compose'
alias dm='docker-machine' alias dm='docker-machine'
dmc() { eval $(docker-machine env $1); } dmc() { eval "$(docker-machine env "$1")"; }
# ZFS aliases # ZFS aliases
alias zfs='sudo zfs' alias zfs='sudo zfs'
alias zpool='sudo zpool' alias zpool='sudo zpool'
alias zp=zpool alias zp=zpool
zl() { (set -o pipefail; command zfs list $@ | grep -Ev 'docker/[0-9a-f]{64}' | column -t -R 2,3,4); return $?; } zl() { (set -o pipefail; command zfs list "$@" | grep -Ev 'docker/[0-9a-f]{64}' | column -t -R 2,3,4); return $?; }
_zl() { _zfs "list $@"; } _zl() { _zfs "list $*"; }
# General Aliases # General Aliases
alias ssha='eval `ssh-agent` ; ssh-add' alias ssha="eval \"\$(ssh-agent)\"; ssh-add"
alias aliases="$EDITOR $thisfile ; exec zsh" # shellcheck disable=SC2139
alias vimrc="$EDITOR $VIMRC" alias aliases="\$EDITOR $thisfile ; exec zsh"
alias zshrc="$EDITOR ${ZDOTDIR:-$HOME}/.zshrc ; exec zsh" alias vimrc="\$EDITOR \$VIMRC"
alias gitrc="$EDITOR $XDG_CONFIG_HOME/git/config" alias zshrc="\$EDITOR \${ZDOTDIR:-\$HOME}/.zshrc ; exec zsh"
alias xinitrc="$EDITOR $XDG_CONFIG_HOME/X11/xinitrc" alias gitrc="\$EDITOR \$XDG_CONFIG_HOME/git/config"
alias xresources="$EDITOR $XDG_CONFIG_HOME/X11/xresources ; xrdb merge $XDG_CONFIG_HOME/X11/xresources" alias xinitrc="\$EDITOR \$XDG_CONFIG_HOME/X11/xinitrc"
alias sshc="$EDITOR ~/.ssh/config" alias xresources="\$EDITOR \$XDG_CONFIG_HOME/X11/xresources ; xrdb merge \$XDG_CONFIG_HOME/X11/xresources"
alias dotfiles="cd $XDG_CONFIG_HOME" alias sshc="\$EDITOR ~/.ssh/config"
alias i3c="$EDITOR $XDG_CONFIG_HOME/i3/config; systemctl --user reload i3" alias dotfiles="cd \$XDG_CONFIG_HOME"
alias polybarc="$EDITOR $XDG_CONFIG_HOME/polybar/config; systemctl --user reload polybar@i3bar" alias i3c="\$EDITOR \$XDG_CONFIG_HOME/i3/config; systemctl --user reload i3"
alias polybarc="\$EDITOR \$XDG_CONFIG_HOME/polybar/config.ini; systemctl --user reload polybar@i3bar"
alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'" alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'"

View File

@ -51,21 +51,16 @@
# Ignore newlines '\n' in notifications. # Ignore newlines '\n' in notifications.
ignore_newline = no ignore_newline = no
# The geometry of the window: # dynamic width from 0 to 400
# [{width}]x{height}[+/-{x}+/-{y}] # width = (0, 400)
# The geometry of the message window. # constant width of 400
# The height is measured in number of notifications everything else width = (320, 360)
# in pixels. If the width is omitted but the height is given
# ("-geometry x2"), the message window expands over the whole screen
# (dmenu-like). If width is 0, the window expands to the longest
# message displayed. A positive x is measured from the left, a
# negative from the right side of the screen. Y is measured from
# the top and down respectevly.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
# 53 = 30 + 23 (bar-height) # Position the notification in the top right corner
geometry = "360x5-30+30" origin = top-right
# Offset from the origin
offset = 30x30
# Shrink window if it's smaller than the width. Will be ignored if # Shrink window if it's smaller than the width. Will be ignored if
# width is 0. # width is 0.
@ -74,7 +69,7 @@
# The transparency of the window. Range: [0; 100]. # The transparency of the window. Range: [0; 100].
# This option will only work if a compositing windowmanager is # This option will only work if a compositing windowmanager is
# present (e.g. xcompmgr, compiz, etc.). # present (e.g. xcompmgr, compiz, etc.).
transparency = 15 transparency = 20
# Don't remove messages, if the user is idle (no mouse or keyboard input) # Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds. # for longer than idle_threshold seconds.

View File

@ -9,26 +9,6 @@ XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
EDITOR="vim" EDITOR="vim"
VISUAL="vim" VISUAL="vim"
# Override paths for non-compliant programs PATH="${PATH}:/sbin:/usr/sbin:${HOME}/.local/bin:${XDG_CONFIG_HOME}/scripts"
# https://wiki.archlinux.org/index.php/XDG_Base_Directory_support
ADOTDIR="$XDG_DATA_HOME/zsh/antigen"
CARGO_HOME="$XDG_DATA_HOME/cargo"
GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
GOPATH="$XDG_DATA_HOME/go"
NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
#PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
PYTHONHISTFILE="$XDG_DATA_HOME/python/histfile"
RUSTUP_HOME="$XDG_DATA_HOME/rustup"
TERMINFO="$XDG_DATA_HOME/terminfo"
TERMINFO_DIRS="$XDG_DATA_HOME/terminfo:/usr/share/terminfo"
VIMDIR="$XDG_CONFIG_HOME/vim"
VIMRC="$VIMDIR/vimrc"
VIMINIT=":so $VIMRC"
WEECHAT_HOME="$XDG_CONFIG_HOME/weechat"
XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
ZDOTDIR="$XDG_CONFIG_HOME/zsh"
PATH="${PATH}:/sbin:/usr/sbin:${XDG_CONFIG_HOME}/scripts:${GOPATH}/bin"
# vim: ft=sh # vim: ft=sh

View File

@ -0,0 +1,27 @@
# Override paths for non-compliant programs
# https://wiki.archlinux.org/index.php/XDG_Base_Directory_support
ASPELL_CONF="per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; personal $XDG_CONFIG_HOME/aspell/en.pws; repl $XDG_CONFIG_HOME/aspell/en.prepl"
CARGO_HOME="$XDG_DATA_HOME/cargo"
GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
GEM_HOME="$XDG_DATA_HOME/gem"
GEM_SPEC_CACHE="$XDG_CACHE_HOME/gem"
GOPATH="$XDG_DATA_HOME/go"
ICEAUTHORITY="$XDG_CACHE_HOME/ICEauthority"
NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME/npm/npmrc"
PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
PYTHONSTARTUP="$XDG_CONFIG_HOME/python/startup"
RUSTUP_HOME="$XDG_DATA_HOME/rustup"
TERMINFO="$XDG_DATA_HOME/terminfo"
TERMINFO_DIRS="$XDG_DATA_HOME/terminfo:/usr/share/terminfo"
TS3_CONFIG_DIR="$XDG_CONFIG_HOME/teamspeak3"
VIMDIR="$XDG_CONFIG_HOME/vim"
VIMRC="$VIMDIR/vimrc"
VIMINIT=":so $VIMRC"
WEECHAT_HOME="$XDG_CONFIG_HOME/weechat"
XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
ZDOTDIR="$XDG_CONFIG_HOME/zsh"
PATH="${PATH}:${GOPATH}/bin:${GEM_HOME}/ruby/3.0.0/bin"
# vim: ft=sh

View File

@ -6,25 +6,44 @@
<edit name="family" mode="prepend" binding="strong"> <edit name="family" mode="prepend" binding="strong">
<string>Noto Sans</string> <string>Noto Sans</string>
<string>Noto Color Emoji</string> <string>Noto Color Emoji</string>
<string>FontAwesome 5 Pro Light</string> <string>FontAwesome 6 Pro Light</string>
</edit> </edit>
<edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
<edit mode="assign" name="hinting"><bool>false</bool></edit>
</match> </match>
<match> <match>
<test qual="any" name="family"><string>serif</string></test> <test qual="any" name="family"><string>serif</string></test>
<edit name="family" mode="prepend" binding="strong"> <edit name="family" mode="prepend" binding="strong">
<string>Noto Serif</string> <string>Noto Serif</string>
<string>Noto Color Emoji</string> <string>Noto Color Emoji</string>
<string>FontAwesome 5 Pro Light</string> <string>FontAwesome 6 Pro Light</string>
</edit> </edit>
</match> </match>
<match> <match>
<test qual="any" name="family"><string>monospace</string></test> <test qual="any" name="family"><string>monospace</string></test>
<edit name="family" mode="prepend" binding="strong"> <edit name="family" mode="prepend" binding="strong">
<string>Source Code Pro</string> <string>Source Code Pro</string>
<string>Noto Color Emoji</string> <string>Noto Color Emoji</string>
<string>FontAwesome 5 Pro Light</string> <string>FontAwesome 6 Pro Light</string>
</edit> </edit>
</match> </match>
<match>
<test qual="all" name="family" compare="eq"><string>Noto Sans</string></test>
<edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
</match>
<match>
<test qual="all" name="family" compare="eq"><string>Source Code Pro</string></test>
<edit name="antialias" mode="assign_replace"><bool>false</bool></edit>
<edit name="hintstyle" mode="assign_replace"><const>hintfull</const></edit>
<edit name="lcdfilter" mode="assign_replace"><const>lcddefault</const></edit>
<edit name="rgba" mode="assign_replace"><const>rgb</const></edit>
</match>
<alias> <alias>
<family>SF Mono</family> <family>SF Mono</family>
<accept> <accept>
@ -32,13 +51,8 @@
</accept> </accept>
</alias> </alias>
<match target="font"> <match>
<test qual="all" name="family" compare="eq"><string>Noto Sans</string></test> <edit name="antialias" mode="assign"><bool>true</bool></edit>
<edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
</match>
<match target="font">
<test qual="all" name="family" compare="eq"><string>Source Code Pro</string></test>
<edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
<edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit> <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
<edit name="rgba" mode="assign"><const>rgb</const></edit> <edit name="rgba" mode="assign"><const>rgb</const></edit>
</match> </match>

82
fsh/fish.ini Normal file
View File

@ -0,0 +1,82 @@
[base]
default = 12
unknown-token = red,bold
commandseparator = cyan
redirection = cyan,bold
here-string-tri = yellow
here-string-text = 18
here-string-var = cyan,bg:18
exec-descriptor = yellow,bold
comment = 7
correct-subtle = 12
incorrect-subtle = red
subtle-separator = green
subtle-bg = bg:18
secondary =
recursive-base =
[command-point]
reserved-word = yellow
subcommand = yellow
alias = blue
suffix-alias = green
global-alias = blue,bold
builtin = blue
function = blue
command = blue
precommand = blue
hashed-command = green
single-sq-bracket = green
double-sq-bracket = green
double-paren = yellow
[paths]
path = cyan
pathseparator = cyan
path-to-dir = magenta,underline
globbing = red
globbing-ext = 13
[brackets]
paired-bracket = bg:blue
bracket-level-1 = green,bold
bracket-level-2 = yellow,bold
bracket-level-3 = cyan,bold
[arguments]
single-hyphen-option = 12
double-hyphen-option = 12
back-quoted-argument = none
single-quoted-argument = yellow
double-quoted-argument = yellow
dollar-quoted-argument = yellow
[in-string]
; backslash in $'...'
back-dollar-quoted-argument = cyan
; backslash or $... in "..."
back-or-dollar-double-quoted-argument = cyan
[other]
variable = 113
assign = green
assign-array-bracket = green
history-expansion = blue,bold
[math]
mathvar = blue,bold
mathnum = magenta
matherr = red
[for-loop]
forvar = none
fornum = magenta
; operator
foroper = yellow
; separator
forsep = yellow,bold
[case]
case-input = green
case-parentheses = yellow
case-condition = bg:blue

View File

@ -5,9 +5,11 @@
[core] [core]
autocrlf = input autocrlf = input
excludesfile = /home/frebib/.config/git/gitignore excludesfile = /home/frebib/.config/git/gitignore
pager = diff-highlight | $PAGER pager = delta --diff-so-fancy --color-only
[init]
defaultBranch = master
[interactive] [interactive]
diffFilter = diff-highlight diffFilter = delta --diff-so-fancy --color-only
[commit] [commit]
gpgsign = true gpgsign = true
[fetch] [fetch]
@ -17,8 +19,16 @@
[pull] [pull]
rebase = true rebase = true
prune = true prune = true
[merge]
ff = only
[rebase] [rebase]
autoStash = true autoStash = true
[remote "origin"]
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
[remote "upstream"]
fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*
[log]
date = iso8601-local
[format] [format]
pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset
[alias] [alias]
@ -27,9 +37,12 @@
count = !echo $(pwd) && git rev-list HEAD --count count = !echo $(pwd) && git rev-list HEAD --count
unpushed = !git log --oneline @{u}..HEAD unpushed = !git log --oneline @{u}..HEAD
leaders = !git shortlog -s -n --all --no-merges leaders = !git shortlog -s -n --all --no-merges
defbranch = !git symbolic-ref refs/remotes/origin/HEAD | sed \"s@^refs/remotes/origin/@@\"
rbranch = for-each-ref --sort='committerdate' --format="%20%20%(refname:short)" refs/heads/
[advice] [advice]
statusHints = false statusHints = false
pushUpdateRejected = false pushUpdateRejected = false
detachedHead = false
[sendemail] [sendemail]
from = Joe Groocock <me@frebib.net> from = Joe Groocock <me@frebib.net>
smtpserver = smtp.zoho.com smtpserver = smtp.zoho.com

View File

@ -1,11 +1,8 @@
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
gtk-theme-name="Arc-Dark" gtk-theme-name="Arc-Dark"
gtk-icon-theme-name="Xenlism-Wildfire" gtk-icon-theme-name="Xenlism-Wildfire"
gtk-font-name="Noto Sans 9" gtk-font-name="sans 9"
gtk-cursor-theme-name="Breeze_Obsidian" gtk-cursor-theme-name="BreezeX-Black"
gtk-cursor-theme-size=0 gtk-cursor-theme-size=28
gtk-toolbar-style=GTK_TOOLBAR_BOTH gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1 gtk-button-images=1

View File

@ -2,9 +2,9 @@
gtk-theme-name=Arc-Dark gtk-theme-name=Arc-Dark
gtk-icon-theme-name=Xenlism-Wildfire gtk-icon-theme-name=Xenlism-Wildfire
gtk-application-prefer-dark-theme=true gtk-application-prefer-dark-theme=true
gtk-font-name=Noto Sans 9 gtk-font-name=sans 9
gtk-cursor-theme-name=Breeze_Obsidian gtk-cursor-theme-name=BreezeX-Black
gtk-cursor-theme-size=0 gtk-cursor-theme-size=28
gtk-toolbar-style=GTK_TOOLBAR_BOTH gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1 gtk-button-images=1

1
gtk-4.0/settings.ini Symbolic link
View File

@ -0,0 +1 @@
../gtk-3.0/settings.ini

View File

@ -107,8 +107,6 @@ client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-co
client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $bg-color client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $bg-color
client.urgent $urgent-bg-color $urgent-bg-color $text-color $bg-color client.urgent $urgent-bg-color $urgent-bg-color $text-color $bg-color
exec_always --no-startup-id feh --no-fehbg --no-xinerama --bg-fill $DOTFILES/lakesidesunrise.jpg
# Window rules # Window rules
for_window [class="Pinentry"] floating enable for_window [class="Pinentry"] floating enable
for_window [class="Pavucontrol"] floating enable for_window [class="Pavucontrol"] floating enable
@ -117,7 +115,7 @@ for_window [class="floating-term" instance="termite"] floating enable
for_window [class="Alacritty" instance="floating-term"] floating enable for_window [class="Alacritty" instance="floating-term"] floating enable
for_window [class="^jetbrains-.+$" title="win0"] floating enable for_window [class="^jetbrains-.+$" title="win0"] floating enable
for_window [window_role="floating-term"] floating enable for_window [window_role="floating-term"] floating enable
for_window [title="^rofi$"] floating enable for_window [class="^Rofi$"] floating enable
new_window none new_window none
new_float none new_float none
@ -132,28 +130,29 @@ popup_during_fullscreen smart
bindsym $mod+Shift+j reload bindsym $mod+Shift+j reload
bindsym --release $mod+x exec xkill bindsym --release $mod+x exec xkill
bindsym $mod+c exec notify-send "Try again" "You meant \\\$mod+b" bindsym $mod+c exec notify-send "Try again" "You meant \\\$mod+b"
bindsym $mod+b exec systemd-run-i3 -s app -c firefox bindsym $mod+b exec systemd-run-i3 -n firefox
bindsym $mod+Return exec systemd-run-i3 -s app -n alacritty bindsym $mod+Return exec systemd-run-i3 -n alacritty
bindsym $mod+Ctrl+Return exec systemd-run-i3 -s app -n alacritty --class floating bindsym $mod+Ctrl+Return exec systemd-run-i3 -n alacritty --class floating
bindsym $mod+Shift+Return exec systemd-run-i3 -s app -n alacritty --working-directory "$(xcwd)" bindsym $mod+Shift+Return exec systemd-run-i3 -n alacritty --working-directory "$(xcwd)"
bindsym $mod+Ctrl+Shift+Return exec systemd-run-i3 -s app -n alacritty --class floating --working-directory "$(xcwd)" bindsym $mod+Ctrl+Shift+Return exec systemd-run-i3 -n alacritty --class floating --working-directory "$(xcwd)"
bindsym $mod+v exec systemd-run-i3 -s app -n alacritty -e sh -c "($SHELL -c $EDITOR || :) && $SHELL" bindsym $mod+v exec systemd-run-i3 -n alacritty -e sh -c "($SHELL -c $EDITOR || :) && $SHELL"
bindsym $mod+Ctrl+v exec systemd-run-i3 -s app -n alacritty --class floating -e sh -c "($SHELL -c $EDITOR || : ) && $SHELL" bindsym $mod+Ctrl+v exec systemd-run-i3 -n alacritty --class floating -e sh -c "($SHELL -c $EDITOR || : ) && $SHELL"
bindsym $mod+l exec dm-tool switch-to-greeter bindsym $mod+l exec dm-tool switch-to-greeter
bindsym $mod+space exec "pkill rofi; rofi -show run -sidebar-mode -terminal i3-sensible-terminal -normal-window -run-command 'systemd-run-i3 -s app -n {cmd}'" bindsym $mod+space exec "pkill rofi; rofi -show run -sidebar-mode -terminal i3-sensible-terminal -normal-window -run-command 'systemd-run-i3 -n {cmd}'"
bindsym $mod+Shift+p exec rofi-pass --root $(grep path ~/.config/gopass/config.yml | sed -E 's|^.*fs\+file://||g' | tr '\n' ':') | sed 's/:$//g' bindsym $mod+Shift+p exec systemd-run-i3 -n rofi-rbw
bindsym $mod+Shift+e exec "pkill rofi; rofi -show emoji -modi emoji -normal-window" bindsym $mod+Shift+e exec "pkill rofi; rofi -show emoji -modi emoji -normal-window"
bindsym $mod+Shift+i exec rofi-fontawesome bindsym $mod+Shift+i exec rofi-fontawesome
bindsym --release Print exec screenshot bindsym --release Print exec screenshot --clip
bindsym --release $mod+Print exec screenshot --clip bindsym --release $mod+Print exec screenshot
bindsym --release Shift+Print exec screenshot --active bindsym --release Shift+Print exec screenshot --active
bindsym --release $mod+Shift+Print exec screenshot --active --clip bindsym --release $mod+Shift+Print exec screenshot --active --clip
bindsym $mod+Shift+x exec systemd-run-i3 -s app -n i3-sensible-terminal --class floating-term --hold -e /bin/echo "$(xprop -id $(xdotool getactivewindow))" bindsym $mod+Shift+x exec systemd-run-i3 -n i3-sensible-terminal --class floating-term --hold -e /bin/echo "$(xprop -id $(xdotool getactivewindow))"
bindsym $mod+$alt+space exec systemd-run-i3 -s background -n ~/.config/i3/cycleaudio.py && pkill -RTMIN+10 i3blocks bindsym $mod+$alt+space exec systemd-run-i3 -s background -n ~/.config/i3/cycleaudio.py
bindsym $mod+numbersign exec systemd-run-i3 -s app -n i3-sensible-terminal --hold -e sh -c 'xclip -o | gpg --decrypt 2>&1' bindsym $mod+numbersign exec systemd-run-i3 -n i3-sensible-terminal --hold -e sh -c 'xclip -o | gpg --decrypt 2>&1'
bindsym $mod+r exec bash -c 'pwgen -snc 32 1 | tee >(xargs notify-send Generated\ password\:) | xclip -i -r' bindsym $mod+r exec bash -c 'pwgen -snc 32 1 | tee >(xargs notify-send Generated\ password\:) | xclip -i -r'
bindsym $mod+g exec systemd-run-i3 -s app -n notify-send -c transfer "$(gist -PRpc)" bindsym $mod+g exec systemd-run-i3 -n bash -xc 'xclip -o | gh gist create -d Paste - 2>&1 | grep -vE "^[-✓] Creat(ing|ed) gist" | tee >(xclip -i >&2 >/dev/null) | xargs -I% --null -r notify-send -c transfer -- %'
bindsym --release $mod+i exec systemd-run-i3 -s background -n sh -c 'sleep 0.5 && xdotool getactivewindow type --delay 250 "$(xclip -o -selection clipboard)"' bindsym --release $mod+i exec systemd-run-i3 -s background -n sh -c 'sleep 0.5 && xdotool getactivewindow type --delay 10 -- "$(xclip -o -selection clipboard)"'
bindsym $mod+z exec otp | rofi -dmenu -p otp | xargs otp
# Media player controls # Media player controls
bindsym XF86AudioPlay exec --no-startup-id playerctl -a play-pause bindsym XF86AudioPlay exec --no-startup-id playerctl -a play-pause
@ -164,7 +163,7 @@ bindsym XF86AudioPrev exec --no-startup-id playerctl -a previous
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1000 bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1000
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1000 bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1000
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86MonBrightnessUp exec light -A 5 && pkill -RTMIN+12 i3blocks bindsym XF86MonBrightnessUp exec light -A 5
bindsym XF86MonBrightnessDown exec light -U 5 && pkill -RTMIN+12 i3blocks bindsym XF86MonBrightnessDown exec light -U 5
# vim:ft=i3 # vim:ft=i3

View File

@ -11,7 +11,7 @@ case $option in
power\ off) systemctl poweroff;; power\ off) systemctl poweroff;;
reboot) systemctl reboot;; reboot) systemctl reboot;;
windows) windows)
windows=`efibootmgr | grep -Po -m1 'Boot\K(\d{4}).*Windows.*' | head -c4` windows="$(efibootmgr | grep -Po -m1 'Boot\K(\d{4}).*Windows.*' | head -c4)"
sudo efibootmgr -n $windows sudo efibootmgr -n $windows
reboot;; systemctl reboot;;
esac esac

55
ideavim/ideavimrc Normal file
View File

@ -0,0 +1,55 @@
noremap d h
noremap h j
noremap t k
noremap n l
noremap D H
noremap H J
noremap T K
noremap N L
noremap gh gj
noremap gt gk
" I work with tabs every now and then. No, I don't have a mnemonic, so
" stfu.
noremap gj gt
noremap gJ gT
" Window movement, equally important
noremap <C-w>d <C-w>h
noremap <C-w>h <C-w>j
noremap <C-w>t <C-w>k
noremap <C-w>n <C-w>l
nnoremap <C-w><C-d> <C-w><C-h>
nnoremap <C-w><C-h> <C-w><C-j>
nnoremap <C-w><C-t> <C-w><C-k>
nnoremap <C-w><C-n> <C-w><C-l>
nnoremap <C-d> <C-w>h
nnoremap <C-h> <C-w>j
nnoremap <C-t> <C-w>k
nnoremap <C-n> <C-w>l
" Account for tag jumping
nnoremap <C-j> <C-t>
" Remappings for the D key
noremap k d
noremap K D
" Remappings for the T key
noremap j t
"noremap J T
" Remapping for the L key
noremap l n
noremap L N
" General purpose help; the originals remain for convenience
noremap - 0
noremap _ $
" Fold-related keybindings
noremap zh zj
noremap zt zk

View File

@ -1,27 +1,27 @@
[Default Applications] [Default Applications]
# eog for images # eog for images
image/bmp=eog.desktop image/bmp=org.gnome.eog.desktop
image/gif=eog.desktop image/gif=org.gnome.eog.desktop
image/jpeg=eog.desktop image/jpeg=org.gnome.eog.desktop
image/jpg=eog.desktop image/jpg=org.gnome.eog.desktop
image/pjpeg=eog.desktop image/pjpeg=org.gnome.eog.desktop
image/png=eog.desktop image/png=org.gnome.eog.desktop
image/svg+xml-compressed=eog.desktop image/svg+xml-compressed=org.gnome.eog.desktop
image/svg+xml=eog.desktop image/svg+xml=org.gnome.eog.desktop
image/tiff=eog.desktop image/tiff=org.gnome.eog.desktop
image/x-bmp=eog.desktop image/x-bmp=org.gnome.eog.desktop
image/x-gray=eog.desktop image/x-gray=org.gnome.eog.desktop
image/x-icb=eog.desktop image/x-icb=org.gnome.eog.desktop
image/x-ico=eog.desktop image/x-ico=org.gnome.eog.desktop
image/x-png=eog.desktop image/x-png=org.gnome.eog.desktop
image/x-portable-anymap=eog.desktop image/x-portable-anymap=org.gnome.eog.desktop
image/x-portable-bitmap=eog.desktop image/x-portable-bitmap=org.gnome.eog.desktop
image/x-portable-graymap=eog.desktop image/x-portable-graymap=org.gnome.eog.desktop
image/x-portable-pixmap=eog.desktop image/x-portable-pixmap=org.gnome.eog.desktop
# evince for pdfs # evince for pdfs
application/pdf=evince.desktop application/pdf=org.gnome.Evince.desktop
# vim for textual files # vim for textual files
application/x-shellscript=vim.desktop application/x-shellscript=vim.desktop
@ -29,7 +29,7 @@ text/english=vim.desktop
text/plain=vim.desktop text/plain=vim.desktop
text/x-makefile=vim.desktop text/x-makefile=vim.desktop
# Chromium for web/html # Firefox for web/html
text/html=firefox.desktop text/html=firefox.desktop
x-scheme-handler/about=firefox.desktop x-scheme-handler/about=firefox.desktop
x-scheme-handler/http=firefox.desktop x-scheme-handler/http=firefox.desktop

View File

@ -1,104 +0,0 @@
# Logging
log-level = "info";
#log-file = "/home/frebib/.local/share/picom.log";
# Shadow
shadow = true;
shadow-radius = 24;
shadow-offset-x = -24;
shadow-offset-y = -24;
shadow-opacity = 0.6;
# shadow-red = 0.0;
# shadow-green = 0.0;
# shadow-blue = 0.0;
shadow-exclude = [
"class_g = 'slop'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"class_g = 'firefox' && argb",
"name = 'Notification'",
"name = 'cpt_frame_window'",
"_GTK_FRAME_EXTENTS@:c"
];
# shadow-exclude = "n:e:Notification";
# shadow-exclude-reg = "x10+0+0";
xinerama-shadow-crop = true;
# Opacity
frame-opacity = 1.0;
# active-opacity = 0.8;
inactive-opacity = 0.6;
inactive-opacity-override = true;
# inactive-dim = 0.2;
# inactive-dim-fixed = true;
opacity-rule = [
"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];
# Blurring
blur:
{
method = "dual_kawase";
strength = 8;
};
blur-background-frame = true;
blur-background-fixed = true;
blur-background-exclude = [
"class_g = 'Peek'",
"class_g = 'Onboard'",
"class_g = 'slop'",
"class_g = 'Polybar'",
"class_g = 'firefox' && argb",
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
# Fading
fading = true;
fade-delta = 10;
fade-in-step = 0.04
fade-out-step = 0.06;
no-fading-openclose = false;
no-fading-destroyed-argb = false;
# fade-exclude = [ ];
# Other
backend = "glx";
mark-wmwin-focused = true;
mark-ovredir-focused = true;
use-ewmh-active-win = true;
detect-rounded-corners = true;
detect-client-opacity = true;
refresh-rate = 0;
vsync = true;
# sw-opti = true;
# unredir-if-possible = true;
# unredir-if-possible-delay = 5000;
# unredir-if-possible-exclude = [ ];
focus-exclude = [
"i:ai:chromium",
"class_g = 'firefox'",
"class_g = 'zoom'"
];
detect-transient = true;
detect-client-leader = true;
invert-color-include = [ ];
# resize-damage = 1;
# GLX backend
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
xrender-sync-fence = true;
use-damage = true;
# Window type settings
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.8; }
dropdown_menu = { opacity = 0.8; }
};

152
picom/picom.conf Normal file
View File

@ -0,0 +1,152 @@
# Logging
log-level = "info";
#log-file = "/home/frebib/.local/share/picom.log";
# Shadow
shadow = true;
shadow-radius = 30;
shadow-offset-x = -30;
shadow-offset-y = -24;
shadow-opacity = 0.4;
shadow-color = "#000000";
shadow-exclude = [
"class_g = 'slop'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'firefox' && argb && (window_type = 'utility' || window_type = 'popup_menu')",
"name = 'Notification'",
"name = 'cpt_frame_window'",
"_GTK_FRAME_EXTENTS@:c"
];
# shadow-exclude = "n:e:Notification";
# shadow-exclude-reg = "x10+0+0";
# shadow-ignore-shaped = true;
xinerama-shadow-crop = true;
# Opacity
frame-opacity = 1.0;
active-opacity = 1.0;
inactive-opacity = 0.5;
inactive-opacity-override = true;
# inactive-dim = 0.2;
# inactive-dim-fixed = true;
opacity-rule = [
"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];
# Blurring
blur:
{
method = "dual_kawase";
strength = 12;
};
blur-background-frame = true;
blur-background-fixed = true;
blur-background-exclude = [
"class_g = 'Peek'",
"class_g = 'Onboard'",
"class_g = 'slop'",
"class_g = 'Polybar'",
"class_g = 'firefox' && argb && (window_type = 'utility' || window_type = 'popup_menu')",
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
];
# Corners
corner-radius = 9;
# Fading
fading = true;
fade-delta = 10;
fade-in-step = 0.035;
fade-out-step = 0.06;
no-fading-openclose = false;
no-fading-destroyed-argb = false;
# fade-exclude = [ ];
# Focus
focus-exclude = [
"i:ai:chromium",
"class_g = 'firefox'",
"class_g = 'zoom'",
"class_g = 'guvcview'",
"class_g = 'Entangle'",
"class_g = 'obs'",
"class_g = 'parsecd'",
"class_g = 'discord'",
"class_g = 'steam_app_271590'"
];
transition-length = 350;
transition-pow-x = 0.3;
transition-pow-y = 0.3;
size-transition = true;
# Other
# https://github.com/yshui/picom/blob/next/picom.sample.conf#L203
backend = "glx";
vsync = true;
mark-wmwin-focused = true;
mark-ovredir-focused = true;
detect-rounded-corners = true;
detect-client-opacity = true;
use-ewmh-active-win = true;
# unredir-if-possible = true;
# unredir-if-possible-delay = 5000;
# unredir-if-possible-exclude = [ ];
detect-transient = true;
detect-client-leader = true;
invert-color-include = [ ];
resize-damage = 1;
# GLX backend
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
# xrender-sync-fence = true;
# no-use-damage = false;
use-damage = true;
# Window type settings
wintypes: {
tooltip = {
opacity = 0.75;
full-shadow = false;
blur-background = false;
}
dock = {
# Prevents polybar getting a forehead-shadow
shadow = false;
}
dnd = {
# Prevents dragged text in a browser getting blur/shadow
shadow = false;
blur-background = false;
}
popup_menu = {
opacity = 0.8;
}
dropdown_menu = {
opacity = 0.8;
}
};
#animations = true;
#animation-clamping = false;
#animation-dampening = 1.0;
#animation-window-mass = 0.125;
#animation-unmap = "fade-out";
#animation-for-unmap-window = "zoom";
#animation-for-open-window = "auto";
#animation-workspace-in = "slide-left";
#animation-workspace-out = "slide-left";
#animation-for-workspace-switch-in = "auto";
#animation-for-workspace-switch-out = "auto";
#animation-for-transient-window = "zoom";
# vim: ft=conf noet

View File

@ -1,5 +1,5 @@
[colours] [colours]
background = transparent background = #0000
text = #eceff1 text = #eceff1
icon = #147a82 icon = #147a82
warning = #ffcb00 warning = #ffcb00
@ -10,25 +10,23 @@ urgent = #e53935
format-foreground = ${colours.text} format-foreground = ${colours.text}
format-background = ${colours.background} format-background = ${colours.background}
format-spacing = 0 format-spacing = 0
format-margin = 2.5 format-margin = 3
format-offset = 0 format-offset = 0
screenchange-reload = true screenchange-reload = true
[bar/i3bar] [bar/i3bar]
monitor = ${env:MONITOR:HDMI-0}
dpi = ${xrdb:Xft.dpi:96} dpi = ${xrdb:Xft.dpi:96}
fixed-center = false fixed-center = false
enable-ipc = true enable-ipc = true
width = 100% width = 100%
#offset-x = 18px
height = 16pt height = 16pt
bottom = true bottom = true
radius = 0 radius = 0
font-0 = sans:pixelsize=9;2 font-0 = sans:pixelsize=9;2pt
font-1 = FontAwesome5ProLight:pixelsize=10;2 font-1 = FontAwesome6ProLight:pixelsize=10;2pt
foreground = ${colours.text} foreground = ${colours.text}
background = ${colours.background} background = ${colours.background}
@ -39,7 +37,7 @@ padding-right = 2pt
border-size = 0 border-size = 0
border-left-size = 16pt border-left-size = 16pt
border-right-size = 16pt border-right-size = 16pt
border-bottom-size = 8pt border-bottom-size = 10pt
line-size = 0 line-size = 0
line-colour = #f00 line-colour = #f00
@ -47,14 +45,14 @@ line-colour = #f00
modules-left = i3 modules-left = i3
modules-center = modules-center =
# modules-right = volume updates weather xkeyboard wlan gateway eth memory cpu xbacklight battery cputemp gputemp date # modules-right = volume updates weather xkeyboard wlan gateway eth memory cpu xbacklight battery cputemp gputemp date
modules-right = volume updates weather wlan gateway eth memory cpu xbacklight battery cputemp gputemp date modules-right = volume updates weather wlan eth memory cpu xbacklight battery cputemp gputemp date
tray-position = right tray-position = right
tray-detached = false tray-detached = false
tray-background = ${colours.background} tray-background = ${colours.background}
#tray-offset-x = -20 #tray-offset-x = -20
#tray-offset-y = 0 #tray-offset-y = 0
tray-maxsize = 16 tray-maxsize = 16pt
tray-padding = 8pt tray-padding = 8pt
tray-scale = 1.0 tray-scale = 1.0
@ -189,10 +187,10 @@ ramp-signal-foreground = ${colours.icon}
[module/eth] [module/eth]
type = internal/network type = internal/network
interface = eth0 interface = lan
interval = 3.0 interval = 10.0
label-connected = %local_ip% label-connected = %local_ip% & %local_ip6%
format-connected-prefix = " " format-connected-prefix = " "
format-connected-prefix-foreground = ${colours.icon} format-connected-prefix-foreground = ${colours.icon}
format-connected-underline = ${colours.background} format-connected-underline = ${colours.background}
@ -269,7 +267,7 @@ ramp-capacity-1-foreground = ${colours.warning}
[module/cputemp] [module/cputemp]
type = internal/temperature type = internal/temperature
hwmon-path = /sys/devices/platform/nct6775.656/hwmon/hwmon1/temp2_input hwmon-path = /sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp2_input
base-temperature = 25 base-temperature = 25
format = <ramp> <label> format = <ramp> <label>

24
python/startup Normal file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env python
import atexit
import os
import readline
xdg_cache_home = os.environ['XDG_CACHE_HOME']
if xdg_cache_home is None or xdg_cache_home == "":
xdg_cache_home = os.path.join(os.path.expanduser("~"), ".cache")
python_cache_dir = os.path.join(xdg_cache_home, "python")
if not os.path.isdir(python_cache_dir):
os.mkdir(python_cache_dir)
histfile = os.path.join(python_cache_dir, "history")
try:
readline.read_history_file(histfile)
readline.set_history_length(10000)
except FileNotFoundError:
pass
atexit.register(readline.write_history_file, histfile)

View File

@ -8,7 +8,7 @@ window {
border: 0.3em; border: 0.3em;
border-color: #2f343f; border-color: #2f343f;
padding: 0.8em; padding: 0.8em;
background-color: rgba(56, 60, 74, 0.95); background-color: rgba(56, 60, 74, 0.9);
transparency: "real"; transparency: "real";
} }

View File

@ -1,15 +1,12 @@
configuration { configuration {
theme: "arc-dark";
font: "sans 14"; font: "sans 14";
dpi: 0; dpi: 0;
width: 35;
lines: 10;
/* show-icons: true; */ /* show-icons: true; */
separator-style: "solid"; separator-style: "solid";
modi: "window,run,ssh"; modi: "window,run,ssh";
kb-row-tab: "Shift-Tab"; /* kb-row-tab: "Shift-Tab"; */
kb-row-select: "Tab"; /* kb-row-select: "Tab"; */
terminal: "i3-sensible-terminal"; terminal: "i3-sensible-terminal";
matching: "glob"; matching: "glob";
@ -142,4 +139,15 @@ configuration {
/* me-accept-custom: "Control+MouseDPrimary";*/ /* me-accept-custom: "Control+MouseDPrimary";*/
} }
@theme "arc-dark"
window {
width: 700;
}
listview {
lines: 10;
columns: 1;
}
/* vim: ft=css sw=2 */ /* vim: ft=css sw=2 */

View File

@ -10,5 +10,3 @@ xrandr --output $BOTTOM_LEFT --primary --mode 1920x1080 --pos 0x1080 --rotate no
--output $TOP_LEFT --mode 1920x1080 --pos 0x0 --rotate inverted \ --output $TOP_LEFT --mode 1920x1080 --pos 0x0 --rotate inverted \
--output $TOP_RIGHT --mode 1920x1080 --pos 1920x0 --rotate inverted \ --output $TOP_RIGHT --mode 1920x1080 --pos 1920x0 --rotate inverted \
--output $BOTTOM_RIGHT --mode 1920x1080 --pos 1920x1080 --rotate normal --output $BOTTOM_RIGHT --mode 1920x1080 --pos 1920x1080 --rotate normal
feh --no-fehbg --no-xinerama --bg-fill $DOTFILES/lakesidesunrise.jpg

View File

@ -15,5 +15,3 @@ MODENAME=${MODELINE%% *}
xrandr --newmode $MODELINE 2>/dev/null || true xrandr --newmode $MODELINE 2>/dev/null || true
xrandr --addmode $OUTPUT $MODENAME 2>/dev/null || true xrandr --addmode $OUTPUT $MODENAME 2>/dev/null || true
xrandr --output $OUTPUT --mode $MODENAME xrandr --output $OUTPUT --mode $MODENAME
feh --no-fehbg --no-xinerama --bg-fill $DOTFILES/lakesidesunrise.jpg

View File

@ -1,28 +1,69 @@
#!/bin/sh #!/bin/bash
set -e set -eu
# Based on https://github.com/vincentbernat/awesome-configuration/blob/master/bin/xsettingsd-setup # Based on https://github.com/vincentbernat/awesome-configuration/blob/master/bin/xsettingsd-setup
CONF_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
dpi=$1 BLUR_STRENGTH=12
CURSOR_SIZE=28
CORNER_RADIUS=9
if [ -z "$1" ]; then xrdbget() {
>&2 printf "Usage\n\t%s: <dpi>" "$(basename "$0")" set -o pipefail
xrdb -query | grep -i -m1 "$1" | sed 's/^.*:\s//g' || echo "$2"
}
xsetting_bool() {
case "$1" in
true) echo 1;;
false) echo 0;;
default) echo -1;;
*) echo -1;;
esac
}
if [ -z "$1" ] || [ "$1" -gt 200 ] || [ "$1" -lt 96 ]; then
>&2 printf "Usage\n\t%s: value\n\n value\t Value must be within 96-200 inclusive\n" "$(basename "$0")"
exit 1 exit 1
fi fi
CONF_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/xsettingsd" dpi=$1
mkdir -p "$CONF_DIR" scale=$(( dpi/96 ))
cursor=$(( (dpi*CURSOR_SIZE)/96 ))
# Build xsettingsd.local # Update picom scale
sed -i -e "s/strength =.*$/strength = $(( (dpi*BLUR_STRENGTH)/96 ));/" \
-e "s/corner-radius =.*$/corner-radius = $(( (dpi*CORNER_RADIUS)/96 ));/" \
"$CONF_DIR/picom/picom.conf" &
# Build xsettingsd.conf
mkdir -p "$CONF_DIR/xsettingsd"
{ {
cat $CONF_DIR/xsettingsd.conf 2>/dev/null || true cat "$CONF_DIR/xsettingsd.local" 2>/dev/null || :
echo Xft/DPI $(( $dpi*1024 )) echo "Xcursor/size $cursor"
echo Gdk/WindowScalingFactor $(( $dpi/96 )) echo "Gtk/CursorThemeSize $cursor"
echo Gdk/UnscaledDPI $(( $dpi*1024/($dpi/96) )) echo "Gtk/CursorThemeName \"$(xrdbget Xcursor.theme Adwaita)\""
} > $CONF_DIR/xsettingsd.local echo "Xft/HintStyle \"$(xrdbget Xft.hintstyle hintfull)\""
echo "Xft/Hinting $(xsetting_bool "$(xrdbget Xft.hinting default)")"
echo "Xft/RGBA \"$(xrdbget Xft.rgba rgb)\""
echo "Xft/DPI $(( dpi*1024 ))"
echo "Gdk/WindowScalingFactor $scale"
echo "Gdk/UnscaledDPI $(( dpi*1024/scale ))"
} > "$CONF_DIR/xsettingsd/xsettingsd.conf"
echo Xft.dpi: $dpi | xrdb -merge xrdb -merge <<EOF &
xrandr --dpi $dpi Xft.dpi: $dpi
Xcursor.size: $cursor
EOF
xrandr --dpi "$dpi" &
systemctl --user reload-or-restart xsettingsd &
wait
systemctl --user reload-or-restart xsettingsd systemctl --user reload \
systemctl --user --no-block reload i3 polybar@i3bar i3 \
polybar@i3bar &
systemctl --user restart \
dunst &
wait

42
scripts/otp Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
while getopts "on:" o; do
case "${o}" in
o)
stdout=1;;
n)
caller="${OPTARG}"
;;
*)
exec ykman oath accounts list
;;
esac
done
shift $((OPTIND-1))
if [ $# -lt 1 ]; then
exec ykman oath accounts list
fi
if [ -n "$caller" ]; then
notif="$(notify-send -p "Touch your Yubikey" "$caller is requesting otp for $1")"
fi
ykman oath accounts code -s "$1" 2>&1 |
while read -r x; do
if grep -Pqw '[0-9]{6}' <<< "$x"; then
if [ -z "$stdout" ]; then
echo "$x" | tee >(xclip -i)
xdotool type "$x"
else
echo "$x"
fi
fi
if [ -z "$stdout" ]; then
notify-send "$x";
fi
done
if [ -n "$notif" ]; then
notify-send -r "$notif" -t 1000 "Touch your Yubikey" "otp generated for $caller"
fi

View File

@ -59,7 +59,7 @@ function notify() {
function display() { function display() {
update=$'\tUpdate Font Awesome cache' update=$'\tUpdate Font Awesome cache'
fontawesome=$(grep -v '#\|^[[:space:]]*$' "$FONTAWESOME_FILE"; printf "$update\n") fontawesome=$(grep -v '#\|^[[:space:]]*$' "$FONTAWESOME_FILE"; printf "$update\n")
line=$(echo "$fontawesome" | rofi -dmenu -i -p fontawesome -normal-window -kb-custom-1 Ctrl+c -kb-row-tab '' -kb-row-select Tab $@) line=$(echo "$fontawesome" | rofi -dmenu -i -p fontawesome -normal-window -kb-custom-1 Ctrl+c -kb-row-tab '' $@)
exit_code=$? exit_code=$?
if [ "${line[@]}" == "$update" ]; then if [ "${line[@]}" == "$update" ]; then

View File

@ -1,12 +1,12 @@
#!/bin/bash -e #!/bin/bash -e
rand=$(tr -dc 'a-f0-9' < /dev/urandom | head -c 16) slice=app
rand=$(tr -dc 'a-f0-9' < /dev/urandom | head -c 8)
args=() args=()
while getopts "u:s:e:d:cnw" opt while getopts "s:e:d:cnw" opt
do case "$opt" in do case "$opt" in
u) args+=("--unit=$OPTARG-$rand");; s) slice="$OPTARG";;
s) args+=("--slice=$OPTARG");;
e) args+=("--setenv=$OPTARG");; e) args+=("--setenv=$OPTARG");;
d) args+=("--working-directory=$OPTARG");; d) args+=("--working-directory=$OPTARG");;
c) args+=("--scope");; c) args+=("--scope");;
@ -17,4 +17,11 @@ do case "$opt" in
done done
shift $((OPTIND-1)) shift $((OPTIND-1))
exec systemd-run --user --collect --unit="$1-$rand" ${args[@]} -- "$@" exec systemd-run \
--user \
--collect \
--slice="$slice" \
--unit="$slice-$1-$rand" \
--property=BindsTo=graphical-session.target \
--property=ExitType=cgroup \
"${args[@]}" -- "$@"

13
ssh/askpass Executable file
View File

@ -0,0 +1,13 @@
#!/bin/sh -e
if [ -z "$SSH_HOST" ]; then
>&2 echo 'Missing SSH_HOST variable'
exit 1
fi
case "$SSH_HOST" in
*)
echo 'Unknown SSH host'
exit 1
;;
esac

View File

@ -1,12 +1,13 @@
[Unit] [Unit]
Description=Bluetooth Applet Description=Bluetooth Applet
After=graphical-session.target bluetooth.service After=graphical-session.target
Requires=graphical-session.target bluetooth.service Requires=graphical-session.target
ConditionPathExists=/sys/class/bluetooth
[Service] [Service]
Type=simple
ExecStart=/usr/bin/blueman-applet ExecStart=/usr/bin/blueman-applet
Restart=on-failure Restart=on-failure
Slice=background.slice
[Install] [Install]
WantedBy=desktop.target WantedBy=desktop.target

View File

@ -0,0 +1 @@
/usr/lib/systemd/user/pipewire.service

View File

@ -1 +0,0 @@
/usr/lib/systemd/user/redshift.service

View File

@ -0,0 +1 @@
/home/frebib/.config/systemd/user/wallpaper.service

View File

@ -0,0 +1,5 @@
[Service]
Slice=session.slice
[Install]
WantedBy=graphical-session.target

View File

@ -0,0 +1,16 @@
[Unit]
Description=GPhoto2 capture with ffmpeg encoding
[Service]
Type=simple
ExecStartPre=gphoto2 --abilities
ExecStart=/bin/sh -c 'exec gphoto2 --set-config /main/capturesettings/continuousaf=1 --set-config /main/capturesettings/focusmode="AI Servo" --set-config /main/imgsettings/whitesbalance=Tungsten --capture-movie --stdout --set-config viewfinder=0 | ffmpeg -i - -f rawvideo -vf "crop=iw:iw*9/16" -pix_fmt yuv420p -threads 0 -s:v 1280x720 -r 25 -f v4l2 /dev/video%i'
ExecStop=/bin/kill $MAINPID
ExecStop=-/usr/bin/gphoto2 --set-config viewfinder=0
Restart=always
RestartSec=5
SyslogIdentifier=gphoto-ffmpeg
Slice=app.slice
[Install]
WantedBy=default.target

View File

@ -0,0 +1,15 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Current graphical user session
Documentation=man:systemd.special(7)
Requires=basic.target xorg.target
RefuseManualStart=yes
StopWhenUnneeded=yes

View File

@ -1 +0,0 @@
/home/frebib/.config/systemd/user/autocutsel-primary.service

View File

@ -1 +0,0 @@
/home/frebib/.config/systemd/user/autocutsel.service

View File

@ -0,0 +1 @@
/home/frebib/.config/systemd/user/redshift.service

View File

@ -1 +0,0 @@
/home/frebib/.config/systemd/user/xautolock.service

View File

@ -6,8 +6,9 @@ After=xprofile.service xorg.target
[Service] [Service]
ExecStart=/usr/bin/i3 ExecStart=/usr/bin/i3
ExecReload=/usr/bin/i3-msg reload ExecReload=/usr/bin/i3-msg restart
Restart=always Restart=always
Slice=session.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=graphical-session.target

View File

@ -2,11 +2,13 @@
Description=NetworkManager Applet Description=NetworkManager Applet
After=graphical-session.target NetworkManager.service After=graphical-session.target NetworkManager.service
Requires=graphical-session.target Requires=graphical-session.target
ConditionPathExists=/run/NetworkManager
[Service] [Service]
Type=simple Type=simple
ExecStart=/usr/bin/nm-applet ExecStart=/usr/bin/nm-applet
Restart=on-failure Restart=on-failure
Slice=background.slice
[Install] [Install]
WantedBy=desktop.target WantedBy=desktop.target

View File

@ -4,11 +4,10 @@ Requires=graphical-session.target
After=graphical-session.target After=graphical-session.target
[Service] [Service]
Type=simple
ExecStart=/usr/bin/nextcloud --background ExecStart=/usr/bin/nextcloud --background
ExecReload=/bin/kill -HUP $MAINPID ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure Restart=on-failure
Slice=app.slice
[Install] [Install]
WantedBy=desktop.target WantedBy=desktop.target

View File

@ -6,6 +6,7 @@ After=xorg.target
[Service] [Service]
ExecStart=/usr/bin/parcellite -n ExecStart=/usr/bin/parcellite -n
Slice=session.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=graphical-session.target

View File

@ -4,9 +4,9 @@ Requires=graphical-session.target
After=dbus.service graphical-session.target xorg.target After=dbus.service graphical-session.target xorg.target
[Service] [Service]
Type=simple ExecStart=/usr/bin/picom --dbus
ExecStart=/usr/bin/picom --experimental-backends --dbus
Restart=always Restart=always
Slice=session.slice
[Install] [Install]
WantedBy=desktop.target WantedBy=desktop.target

View File

@ -0,0 +1 @@
/usr/lib/systemd/user/wireplumber.service

View File

@ -0,0 +1 @@
/usr/lib/systemd/user/wireplumber.service

View File

@ -1,13 +1,13 @@
[Unit] [Unit]
Description=Polybar Description=Polybar bar %i
Requires=graphical-session.target Requires=graphical-session.target
After=graphical-session.target pulseaudio.socket i3.service After=graphical-session.target pulseaudio.socket i3.service
[Service] [Service]
Type=simple
ExecStart=/usr/bin/polybar --reload --log=warning %i ExecStart=/usr/bin/polybar --reload --log=warning %i
ExecReload=/usr/bin/polybar-msg cmd restart -p $MAINPID ExecReload=/usr/bin/polybar-msg -p $MAINPID cmd restart
Restart=always Restart=always
Slice=session.slice
[Install] [Install]
WantedBy=desktop.target WantedBy=desktop.target

View File

@ -0,0 +1,13 @@
[Unit]
Description=Redshift display colour temperature adjustment
Documentation=http://jonls.dk/redshift/
Requires=xorg.target
ConditionPathExists=/usr/bin/redshift
[Service]
Slice=session.slice
ExecStart=/usr/bin/redshift
Restart=always
[Install]
WantedBy=graphical-session.target

View File

@ -0,0 +1 @@
/usr/lib/systemd/user/pipewire.socket

View File

@ -1 +0,0 @@
/usr/lib/systemd/user/pulseaudio.socket

View File

@ -8,6 +8,7 @@ Type=simple
ExecStart=/usr/bin/solaar --debug --restart-on-wake-up --window=hide ExecStart=/usr/bin/solaar --debug --restart-on-wake-up --window=hide
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
Slice=background.slice
[Install] [Install]
WantedBy=desktop.target WantedBy=desktop.target

13
systemd/user/ssh@.service Normal file
View File

@ -0,0 +1,13 @@
[Unit]
Description=SSH persistent connection to %i
[Service]
Type=forking
Slice=ssh.slice
Environment=SSH_ASKPASS=%E/ssh/askpass
Environment=SSH_HOST=%i
ExecStart=/usr/bin/ssh -fNT %i
Restart=on-failure
[Install]
WantedBy=ssh.target

View File

@ -0,0 +1,16 @@
[Unit]
Description=Apply wallpaper on screen-change event
Requires=graphical-session.target
After=graphical-session.target
[Service]
Environment=FEH_OPTIONS="--no-fehbg --no-xinerama"
Environment=WALLPAPER=/home/frebib/pictures/lakesidesunrise.jpg
ExecStartPre=/bin/sh -c "exec feh $FEH_OPTIONS --bg-fill $WALLPAPER"
ExecStart=/bin/sh -c "xev -root -event randr 2>&1 | while awk -v RS=\\n\\n '{exit;}'; do echo 'Applying wallpaper'; feh $FEH_OPTIONS --bg-fill $WALLPAPER; done"
Restart=always
SyslogIdentifier=wallpaper
Slice=session.slice
[Install]
WantedBy=desktop.target

View File

@ -7,6 +7,7 @@ After=xorg.target
ExecStart=/usr/bin/xautolock -time 5 -locker 'dm-tool switch-to-greeter' -detectsleep -resetsaver -secure ExecStart=/usr/bin/xautolock -time 5 -locker 'dm-tool switch-to-greeter' -detectsleep -resetsaver -secure
KillMode=process KillMode=process
Restart=on-failure Restart=on-failure
Slice=session.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=graphical-session.target

View File

@ -4,6 +4,7 @@ Description=XBindKeys
[Service] [Service]
ExecStart=/usr/bin/xbindkeys -n -f $XDG_CONFIG_HOME/X11/xbindkeysrc ExecStart=/usr/bin/xbindkeys -n -f $XDG_CONFIG_HOME/X11/xbindkeysrc
KillMode=process KillMode=process
Slice=session.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=graphical-session.target

View File

@ -1,12 +1,14 @@
[Unit] [Unit]
Description=Load Xorg configuration Description=Load Xorg configuration
# this is a bit weird, but I guess it works
PartOf=xorg.target PartOf=xorg.target
After=xorg.target
[Service] [Service]
Type=oneshot Type=oneshot
RemainAfterExit=yes RemainAfterExit=yes
ExecStart=/bin/sh -c '. $XDG_CONFIG_HOME/X11/xprofile; systemctl --user import-environment' ExecStart=/bin/sh -c '. $XDG_CONFIG_HOME/X11/xprofile; systemctl --user import-environment'
SyslogIdentifier=xprofile
Slice=session.slice
[Install] [Install]
WantedBy=xorg.target WantedBy=xorg.target

View File

@ -4,9 +4,10 @@ Requires=xorg.target
After=xorg.target After=xorg.target
[Service] [Service]
ExecStart=/bin/sh -c 'xsettingsd -c $XDG_CONFIG_HOME/xsettingsd/xsettingsd.local' ExecStart=xsettingsd -c ${XDG_CONFIG_HOME}/xsettingsd/xsettingsd.conf
ExecReload=/bin/kill -s HUP $MAINPID ExecReload=/bin/kill -s HUP $MAINPID
Restart=always Restart=always
Slice=session.slice
[Install] [Install]
WantedBy=graphical-session.target WantedBy=graphical-session.target

View File

@ -1,6 +1,6 @@
# This file is written by xdg-user-dirs-update # This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're # If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run # interested in. All local changes will be retained on the next run.
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped # Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an # homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported. # absolute path. No other format is supported.

104
vim/vimrc
View File

@ -39,15 +39,23 @@ set updatetime=500 " reduce delay from 4s default
let mapleader="\<space>" let mapleader="\<space>"
" ALE config
let g:ale_completion_enabled = 1
let g:ale_open_list = 1
augroup CloseLoclistWindowGroup
autocmd!
autocmd QuitPre * if empty(&buftype) | lclose | endif
augroup END
" Autosave settings " Autosave settings
function! SaveIfExist() function! SaveIfExist()
if @% != "" && filereadable(@%) && !&readonly && &modified if @% != "" && filereadable(@%) && !&readonly && &modified
SyntasticCheck
write write
endif endif
endfunction endfunction
set autowrite set autowrite
autocmd CursorHold,CursorHoldI,InsertLeave,FocusGained,FocusLost * call SaveIfExist() autocmd InsertLeave <buffer> :write
" Search options " Search options
set hlsearch set hlsearch
@ -63,14 +71,11 @@ set splitright " Vertical split to right of current.
" Whitespace highlight settings " Whitespace highlight settings
set list set list
set listchars=eol:$,space,tab:>-,trail:◦,extends:▶,precedes:◀ set listchars=space,tab:>-,trail:◦,extends:▶,precedes:◀
highlight SpecialKey ctermfg=8 highlight SpecialKey ctermfg=8
if exists('+colorcolumn') set cc=+1
highlight ColorColumn ctermbg=8 highlight ColorColumn ctermbg=8
autocmd filetype c,h,cpp,hpp set colorcolumn=81
autocmd filetype c,h,cpp,hpp match ErrorMsg '\%>80v.\+'
endif
" Highlight line and column of cursor " Highlight line and column of cursor
set cul cuc set cul cuc
@ -85,9 +90,6 @@ endif
call plug#begin('$XDG_CONFIG_HOME/vim/plug') call plug#begin('$XDG_CONFIG_HOME/vim/plug')
Plug 'Valloric/YouCompleteMe'
Plug 'scrooloose/syntastic'
Plug 'scrooloose/nerdtree', { 'on': 'NERTreeToggle' }
Plug 'tpope/vim-sensible' Plug 'tpope/vim-sensible'
Plug 'tpope/vim-fugitive' Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-rhubarb' Plug 'tpope/vim-rhubarb'
@ -103,6 +105,13 @@ Plug 'vim-airline/vim-airline-themes'
Plug 'lervag/vimtex' Plug 'lervag/vimtex'
Plug 'JamshedVesuna/vim-markdown-preview' Plug 'JamshedVesuna/vim-markdown-preview'
Plug 'junegunn/fzf.vim' Plug 'junegunn/fzf.vim'
" Completion and linting
Plug 'dense-analysis/ale'
Plug 'Shougo/deoplete.nvim'
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
" Syntax Highlighting " Syntax Highlighting
@ -111,18 +120,41 @@ Plug 'PotatoesMaster/i3-vim-syntax'
Plug 'puppetlabs/puppet-syntax-vim' Plug 'puppetlabs/puppet-syntax-vim'
Plug 'saltstack/salt-vim' Plug 'saltstack/salt-vim'
Plug 'arrufat/vala.vim' Plug 'arrufat/vala.vim'
Plug 'Glench/Vim-Jinja2-Syntax'
Plug 'pearofducks/ansible-vim'
Plug 'jvirtanen/vim-hcl'
Plug 'hashivim/vim-terraform'
call plug#end() call plug#end()
" Change to dvorak-mapped keys " Change to dvorak-mapped keys
let g:use_dvorak = 1 let g:use_dvorak = 1
" YouCompleteMe config " Deoplete config
let g:ycm_confirm_extra_conf = 0 call deoplete#custom#option({
if !exists('g:ycm_semantic_triggers') \ 'camel_case': v:true,
let g:ycm_semantic_triggers = {} \ })
endif " Use ALE as completion sources for all code.
let g:ycm_semantic_triggers.tex = g:vimtex#re#youcompleteme "call deoplete#custom#option('sources', {
"\ '_': ['ale'],
"\})
call deoplete#enable()
" Vim-Airline config
let g:Powerline_symbols = 'fancy'
let g:airline_powerline_fonts = 1
let g:airline_theme='solarized'
let g:airline#extensions#tabline#enabled = 1
" ALE integration
let g:airline#extensions#ale#enabled = 1
" vim-markdown plugin
let vim_markdown_preview_toggle=0
let vim_markdown_preview_browser='Chromium'
let vim_markdown_preview_use_xdg_open=1
let vim_markdown_preview_github=1
" LaTeX config
"let g:vimtex_view_method='zathura' "let g:vimtex_view_method='zathura'
let g:tex_flavor='xelatex' let g:tex_flavor='xelatex'
let g:vimtex_indent_enabled = 0 " auto-indentation is wrong and annoying let g:vimtex_indent_enabled = 0 " auto-indentation is wrong and annoying
@ -136,35 +168,6 @@ augroup vimtex
autocmd BufWritePost tex silent VimtexCompile autocmd BufWritePost tex silent VimtexCompile
augroup END augroup END
" Vim-Airline config
let g:Powerline_symbols = 'fancy'
let g:airline_powerline_fonts = 1
let g:airline_theme='solarized'
let g:airline#extensions#tabline#enabled = 1
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
" vim-markdown plugin
let vim_markdown_preview_toggle=0
let vim_markdown_preview_browser='Chromium'
let vim_markdown_preview_use_xdg_open=1
let vim_markdown_preview_github=1
" Syntastic configuration
let g:syntastic_enable_highlighting = 1
let g:syntastic_enable_signs=1
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
" Tagbar configuration " Tagbar configuration
let g:tagbar_width = 50 let g:tagbar_width = 50
let g:tagbar_compact = 1 let g:tagbar_compact = 1
@ -304,6 +307,11 @@ cmap w!! w !sudo tee > /dev/null %
map Q <nop> map Q <nop>
autocmd FileType markdown setlocal ts=2 sts=2 sw=2 et autocmd FileType c setlocal noet
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et indentkeys-=<:> autocmd filetype c,h,cpp,hpp set colorcolumn=81
autocmd FileType gitcommit setlocal cc=72 et sw=4 autocmd filetype c,h,cpp,hpp match ErrorMsg '\%>80v.\+'
autocmd FileType jinja setlocal sts=2 sw=2 et
autocmd FileType markdown setlocal sts=2 sw=2 et
autocmd FileType yaml setlocal sts=2 sw=2 et indentkeys-=<:>
autocmd FileType gitcommit setlocal tw=72 et sw=4

View File

@ -1,5 +1,11 @@
# Assume environment is already loaded if ZDOTDIR is set.
# This speeds up starting zsh if it's not required. Attempt
# to load the environment if it's absent, though, in case
# ZDOTDIR is overriden and .zshrc is not in ~
if [ -z "$ZDOTDIR" ]; then
set -o allexport set -o allexport
. ~/.config/environment.d/*.conf for f in "$HOME"/.config/environment.d/*.conf; do . "$f"; done
set +o allexport set +o allexport
fi
# vim: ft=sh # vim: ft=sh

View File

@ -1,5 +1,5 @@
# Config and cache directory paths # Config and cache directory paths
ZSH_DIR="$XDG_CONFIG_HOME/zsh" ZSH_DIR="${ZDOTDIR:-$XDG_CONFIG_HOME/zsh}"
LOG_DIR="$XDG_DATA_HOME/logs" LOG_DIR="$XDG_DATA_HOME/logs"
HISTFILE="$XDG_DATA_HOME/zsh/history" HISTFILE="$XDG_DATA_HOME/zsh/history"
HISTSIZE=999999 HISTSIZE=999999
@ -16,9 +16,10 @@ if exists tty && tty -s; then
fi fi
# Configure less and add colours # Configure less and add colours
export LESS="-RI --mouse --wheel-lines=3" export LESS="-nRIFRSXM --mouse --wheel-lines=3"
export PAGER="less" export PAGER="less"
export MANPAGER="less -+N" export MANPAGER="less -+N"
export SYSTEMD_LESS="$LESS"
export SYSTEMD_PAGER="less $LESS" export SYSTEMD_PAGER="less $LESS"
# Disable histfile # Disable histfile
export LESSHISTFILE=- export LESSHISTFILE=-
@ -42,7 +43,7 @@ if exists tput; then
fi fi
# Set some useful ZSH/Bash options # Set some useful ZSH/Bash options
setopt sharehistory histignorealldups histignorespace histreduceblanks setopt sharehistory extendedhistory histignorealldups histignorespace histreduceblanks
setopt pathdirs autocd autopushd extendedglob nullglob alwaystoend interactivecomments dvorak setopt pathdirs autocd autopushd extendedglob nullglob alwaystoend interactivecomments dvorak
zstyle ':completion:*:sudo|_::' environ PATH="/sbin:/usr/sbin:$PATH" HOME="/root" zstyle ':completion:*:sudo|_::' environ PATH="/sbin:/usr/sbin:$PATH" HOME="/root"
@ -52,29 +53,30 @@ zstyle ':completion:*' menu select
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}" zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
zstyle ':compinstall' filename "${ZDOTDIR:-~}/.zshrc" zstyle ':compinstall' filename "${ZDOTDIR:-~}/.zshrc"
# Pre-load vi-mode edit-command-line before antigen plugins are loaded
autoload -z edit-command-line
zle -N edit-command-line
export WORDCHARS='*?_[]~=&;!#$%^(){}' export WORDCHARS='*?_[]~=&;!#$%^(){}'
x-bash-backward-kill-word(){ WORDCHARS='' zle kill-word; }
zle -N x-bash-backward-kill-word
# Load antigen & plugins declare -A ZINIT
ANTIGEN_LOG="$LOG_DIR/antigen-$(date -u --iso-8601=seconds | cut -d+ -f1).log" ZINIT[HOME_DIR]="$XDG_CACHE_HOME/zsh/zinit"
antigen_src="$ADOTDIR/antigen.zsh" ZINIT[BIN_DIR]="${ZINIT[HOME_DIR]}/bin"
if [ ! -f "$antigen_src" ]; then ZINIT[PLUGINS_DIR]="${ZINIT[HOME_DIR]}/plugins"
git clone https://github.com/zsh-users/antigen.git "$ADOTDIR" if [ ! -e "${ZINIT[HOME_DIR]}" ]; then
git clone https://github.com/zdharma-continuum/zinit.git "${ZINIT[HOME_DIR]}"
fi fi
source "$antigen_src" source "${ZINIT[HOME_DIR]}"/zinit.zsh
antigen bundle zsh-users/zsh-completions zinit wait lucid for \
antigen bundle zsh-users/zsh-autosuggestions atinit"ZINIT[COMPINIT_OPTS]=-C;zicompinit;zicdreplay" \
antigen bundle zsh-users/zsh-syntax-highlighting@feature/redrawhook atload"FAST_HIGHLIGHT[chroma-zinit]=" \
antigen bundle mafredri/zsh-async zdharma-continuum/fast-syntax-highlighting \
antigen bundle agkozak/zsh-z blockf \
zsh-users/zsh-completions \
atload"!_zsh_autosuggest_start" \
zsh-users/zsh-autosuggestions
antigen apply zinit light agkozak/zsh-z
zinit ice lucid ver'master' wait'0a' pick'src/bash.command-not-found'
zinit light hkbakke/bash-insulter
# Vim mode! # Vim mode!
bindkey -v bindkey -v
@ -89,15 +91,16 @@ bindkey "^[[7~" beginning-of-line
bindkey "^[[8~" end-of-line bindkey "^[[8~" end-of-line
bindkey "^[[3~" delete-char bindkey "^[[3~" delete-char
bindkey "^[[3;3~" delete-word bindkey "^[[3;3~" delete-word
bindkey '^[^[[3~' x-bash-backward-kill-word
bindkey '^[^[[3^' x-bash-backward-kill-word
bindkey '^[[A' fzf-history-widget # Up (fzf)
bindkey '^[[B' fzf-history-widget # Down (fzf)
bindkey '^F' fzf-file-widget # Ctrl+F file search (fzf)
bindkey "^F" fzf-file-widget bindkey "^F" fzf-file-widget # Ctrl+F file search (fzf)
bindkey "^[[A" fzf-history-widget # Up (fzf)
bindkey "^[[B" fzf-history-widget # Down (fzf)
bindkey "${terminfo[kcuu1]}" fzf-history-widget # Up (fzf)
bindkey "${terminfo[kcud1]}" fzf-history-widget # Down (fzf)
# Backspace across newlines when in vi-mode
bindkey -v '^?' backward-delete-char
bindkey -M vicmd "^W" backward-delete-word bindkey -M vicmd "^W" backward-delete-word
bindkey -M vicmd d vi-backward-char bindkey -M vicmd d vi-backward-char
bindkey -M vicmd h vi-down-line-or-history bindkey -M vicmd h vi-down-line-or-history
bindkey -M vicmd t vi-up-line-or-history bindkey -M vicmd t vi-up-line-or-history
@ -107,63 +110,28 @@ bindkey -M vicmd K vi-kill-eol
bindkey -M vicmd j vi-find-next-char-skip bindkey -M vicmd j vi-find-next-char-skip
bindkey -M vicmd l vi-repeat-search bindkey -M vicmd l vi-repeat-search
# Backspace across newlines when in vi-mode # Disable all fsh chromas, fixes `zi` being slow
bindkey -v '^?' backward-delete-char FAST_HIGHLIGHT=()
ZSH_AUTOSUGGEST_USE_ASYNC=true ZSH_AUTOSUGGEST_USE_ASYNC=true
ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=128 ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=128
ZSH_AUTOSUGGEST_CLEAR_WIDGETS=("${(@)ZSH_AUTOSUGGEST_CLEAR_WIDGETS:#(up|down)-line-or-history}") ZSH_AUTOSUGGEST_CLEAR_WIDGETS=("${(@)ZSH_AUTOSUGGEST_CLEAR_WIDGETS:#(up|down)-line-or-history}")
default='fg=12'
prog='fg=blue'
ZSH_HIGHLIGHT_STYLES=()
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets root line)
ZSH_HIGHLIGHT_STYLES[root]='bg=red'
ZSH_HIGHLIGHT_STYLES[default]=$default
ZSH_HIGHLIGHT_STYLES[arg0]=$prog
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=yellow'
ZSH_HIGHLIGHT_STYLES[alias]=$prog
ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=green'
ZSH_HIGHLIGHT_STYLES[builtin]='fg=4'
ZSH_HIGHLIGHT_STYLES[function]=$prog
ZSH_HIGHLIGHT_STYLES[command]=$prog
ZSH_HIGHLIGHT_STYLES[precommand]='fg=4'
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green'
ZSH_HIGHLIGHT_STYLES[path]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[path_separator]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=208'
ZSH_HIGHLIGHT_STYLES[globbing]='fg=red'
ZSH_HIGHLIGHT_STYLES[comment]='fg=7'
ZSH_HIGHLIGHT_STYLES[history-expansion]=$default
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=$default
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=$default
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=magenta'
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow'
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=yellow'
ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[assign]='fg=green'
ZSH_HIGHLIGHT_STYLES[redirection]='fg=cyan,bold'
source "$XDG_CONFIG_HOME/aliases" source "$XDG_CONFIG_HOME/aliases"
# Load some manual plugins # Load some manual plugins
source "$ZSH_DIR/plugins/sudo.zsh" source "$ZSH_DIR/plugins/sudo.zsh"
source "$ZSH_DIR/plugins/fish-theme.zsh" source "$ZSH_DIR/plugins/fish-theme.zsh"
source "$ZSH_DIR/plugins/git-rprompt.zsh" source "$ZSH_DIR/plugins/git-rprompt.zsh"
[ -f '/usr/share/fzf/key-bindings.zsh' ] && source /usr/share/fzf/key-bindings.zsh
[ -f '/usr/share/doc/pkgfile/command-not-found.zsh' ] && source /usr/share/doc/pkgfile/command-not-found.zsh
# Completion initialisation trysource() { for f in "$@"; do source "$f" 2>/dev/null && return; done; }
autoload -U compinit bashcompinit trysource /usr/share/fzf/key-bindings.zsh \
/usr/share/doc/fzf/examples/key-bindings.zsh
trysource /usr/share/doc/pkgfile/command-not-found.zsh # pkgfile on Arch
if command -v kubectl >/dev/null 2>&1; then
autoload -Uz compinit
compinit compinit
bashcompinit source <(kubectl completion zsh)
# gopass completion
if exists gopass; then
source <(gopass completion bash)
fi fi

View File

@ -1,9 +1,19 @@
# ZSH Theme emulating the Fish shell's default prompt. # ZSH Theme emulating the Fish shell's default prompt.
_fishy_collapsed_wd() { _fishy_collapsed_wd() {
pwd | sed -E 's|^'$HOME'|~|;s|(.*)/|\1%|;s|((^\|/)\.?[^/%]{1})[^/%]*|\1|g;s|(.*)%|\1/|' pwd | sed -E 's|^'$HOME'|~|;s|([\.~]?[^/]{1})[^/]*/|\1/|g'
} }
function zle-line-init zle-keymap-select {
case $KEYMAP in
vicmd) printf '\e[3 q';; # block cursor
*) printf '\e[2 q';; # less visible cursor
esac
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
# Required for dynamic prompt # Required for dynamic prompt
setopt prompt_subst setopt prompt_subst
@ -11,4 +21,8 @@ local user_color='green'; [ $UID -eq 0 ] && user_color='red'
PROMPT="%n@%m %F{$user_color}\$(_fishy_collapsed_wd)%f%(!.#.>) " PROMPT="%n@%m %F{$user_color}\$(_fishy_collapsed_wd)%f%(!.#.>) "
PROMPT2='%F{red}\ %f' PROMPT2='%F{red}\ %f'
RPROMPT='%F{red}%(?.. %?)%f' RPROMPT='%F{cyan}${${KEYMAP/vicmd/ normal}/(main|viins)/}%f%(?.. %F{red}%?%f)'
# Disable trailing space
# https://superuser.com/questions/655607/removing-the-useless-space-at-the-end-of-the-right-prompt-of-zsh-rprompt
ZLE_RPROMPT_INDENT=0