Compare commits

..

10 Commits

23 changed files with 107 additions and 554 deletions

View File

@ -1,3 +1,5 @@
# shellcheck shell=bash
# shellcheck disable=SC1090
[[ -f ~/.bashrc ]] && . ~/.bashrc
export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"

View File

@ -1,6 +1,8 @@
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
export INPUTRC="$XDG_CONFIG_HOME"/readline/inputrc
source /etc/os-release
# Aliases {{{

3
.bin/fzf-ssh Executable file
View File

@ -0,0 +1,3 @@
#!/usr/bin/env bash
ssh "$(ssh-hosts | fzf)"

12
.bin/save-ssh-host Executable file
View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
selected_hosts="$(ssh-hosts | fzf -m)"
for host in $selected_hosts; do
echo "Saving $host"
directories="$(ssh "$host" ls | fzf -m)"
for directory in $directories; do
echo "Saving $host:$directory"
ssh "$host" "(tar cvzf - ~/$directory)" > "${host}_${directory}.tar.gz"
done
done

48
.bin/screen-temperature Executable file
View File

@ -0,0 +1,48 @@
#!/usr/bin/env python
import sys
import subprocess
DEFAULT_TEMPERATURE = 3500
try:
with open('/tmp/temperature', 'r') as temp_file:
current_temperature = int(temp_file.read())
except FileNotFoundError:
current_temperature = DEFAULT_TEMPERATURE
# If no argument is given print the current temperature
if len(sys.argv) == 1:
print(current_temperature)
sys.exit(0)
elif len(sys.argv) != 2:
print("""
Usage:
screen-temperature
print current temperature
screen-temperature <temperature>
set screen temperature to <temperature>
screen-temperature <+|-><temperature>
increase or decrease screen temperature by <temperature>
""")
sys.exit(1)
temperature_change = sys.argv[1]
if temperature_change.startswith("+"):
new_temperature = current_temperature + int(temperature_change[1:])
elif temperature_change.startswith("-"):
new_temperature = current_temperature - int(temperature_change[1:])
else:
new_temperature = int(temperature_change)
try:
subprocess.run(["redshift", "-O", str(new_temperature), "-P"], check=True)
with open('/tmp/temperature', 'w') as temp_file:
temp_file.write(str(new_temperature) + '\n')
except subprocess.CalledProcessError:
print("Error: could not set screen temperature.")
sys.exit(1)

5
.bin/ssh-hosts Executable file
View File

@ -0,0 +1,5 @@
#!/usr/bin/env bash
ssh_hosts=$(grep -E 'Host [a-z0-9\-]*$' ~/.ssh/config | awk '{print $2}')
echo "$ssh_hosts"

View File

@ -1,13 +0,0 @@
# Atom config
Quick and dirty Atom config for live-coding (Tidalcycles, Hydra.js).
## Setup
Note: by default Atom uses `$HOME/.atom` as its config directory, to use
`$HOME/.config/atom` add a global environment variable `ATOM_HOME`
E.g. for arch you can add `export ATOM_HOME=$HOME/.config/atom` to the
following file
`/etc/profile.d/atom.sh`

View File

@ -1,52 +0,0 @@
"*":
"atom-package-deps":
ignored: [
"linter-ui-default"
]
core:
autoHideMenuBar: true
disabledPackages: [
"linter-glslify"
"github"
"spell-check"
"background-tips"
"wrap-guide"
"whitespace"
"welcome"
"markdown-preview"
"tabs"
"git-diff"
"go-to-line"
"image-view"
"language-coffee-script"
"language-git"
"autocomplete-glsl"
"autocomplete-atom-api"
"autocomplete-css"
"autocomplete-html"
"autocomplete-plus"
"autocomplete-snippets"
"notifications"
]
telemetryConsent: "no"
themes: [
"one-dark-ui"
"dun-syntax"
]
editor:
fontFamily: "Iosevka Term SS08"
fontSize: 21
scrollPastEnd: true
"exception-reporting":
userId: "6f9fc289-7b3c-4490-937e-5e58e9765c5e"
"linter-ui-default":
showPanel: true
"prettier-atom":
formatOnSaveOptions:
enabled: true
"status-bar":
isVisible: false
tabs:
alwaysShowTabBar: false
welcome:
showOnStartup: false

View File

@ -1 +0,0 @@
atom.commands.dispatch(document.querySelector('atom-workspace'), 'atom-hydra:toggle')

View File

@ -1,13 +0,0 @@
'atom-text-editor.vim-mode-plus:not(.insert-mode)':
'space s h': 'window:focus-pane-on-left'
'space s l': 'window:focus-pane-on-right'
'space s k': 'window:focus-pane-above'
'space s j': 'window:focus-pane-below'
'space s v': 'pane:split-right-and-copy-active-item'
'space s s': 'pane:split-down-and-copy-active-item'
'space q': 'core:close'
's': 'unset!'
'space p': 'fuzzy-finder:toggle-file-finder'
'atom-text-editor':
'ctrl-b': 'tree-view:toggle'

View File

@ -1,8 +0,0 @@
atom-hydra@0.3.6
autocomplete-glsl@0.2.3
dun-syntax@0.6.0
linter@3.4.0
linter-glslify@1.0.0
linter-ui-default@3.4.1
platformio-ide-terminal@2.10.1
vim-mode-plus@1.36.7

View File

@ -1,133 +0,0 @@
// The ui-variables file is provided by base themes provided by Atom.
//
// See https://github.com/atom/atom-dark-ui/blob/master/styles/ui-variables.less
// for a full listing of what's available.
@import "ui-variables";
&.hydra-flash {
// color: @text-color-selected;
// background-color: @background-color-selected;
// color: #000;
background: rgba(255, 255, 255, 0.5) !important;
//background: #0f0 !important;
}
&.evalFlash {
// color: @text-color-selected;
// background-color: @background-color-selected;
// color: #000;
background: rgba(255, 255, 255, 0.8) !important;
//background: #0f0 !important;
}
.hydra,
.hydra canvas {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
background: black;
}
body.hydra-enabled {
&,
atom-workspace,
.header *,
.footer *,
atom-workspace-axis,
atom-workspace-axis
:not(.cursor):not(autocomplete-suggestion-list):not(atom-overlay):not(span):not(.region),
atom-workspace *:before,
atom-workspace *:after {
background: transparent; /*!important;*/
border: none !important;
text-shadow: 0 1px 1px black;
box-shadow: none !important;
}
.line > span {
background: rgba(0, 0, 0, 0.6);
}
.cursor {
width: 0 !important;
box-shadow: 0 0 3px #0ff !important;
border-left: 4px solid #0ff !important;
}
autocomplete-suggestion-list,
atom-overlay {
background: rgba(0, 0, 0, 0.9) !important;
}
.region {
background: rgba(0, 255, 255, 0.4) !important;
z-index: 9 !important;
}
.selected:before {
background: #0005 !important;
border-left: 8px #8888 solid !important;
}
/* transparent background for file tabs */
li.texteditor.tab{
background: rgba(0, 0, 0, 0.0)!important;
}
}
/*.evalFlash > span {
background-color: rgba(255, 255, 255, 0.9);
}
//styles from tidal-atom
atom-text-editor.editor .line {
transition: background-color .8s ease-out;
-webkit-transition: background-color .8s ease-out;
background-color: rgba(0, 0, 0, 0.6);
// &.line-green {
// background-color: @green-color;
// }
//
// &.line-blue {
// background-color: @blue-color;
// }
&.line-error {
background-color: fadeout(@background-color-error, 95%);
border: 1px solid fadeout(@background-color-error, 50%);
}
&.line-highlight {
background-color: @background-color-highlight;
}
&.eval-success {
color: @text-color-success;
background-color: fadeout(@background-color-success, 50%);
}
&.eval-error,
&.eval-syntax-error {
color: @text-color-error;
background-color: @background-color-error;
}
}*/
.elegante {
background-color: #f00;
font-family: fantasy;
}
/*
atom-panel div.tidalcycles.console {
height: 100px;
padding: 3px 10px;
font-size: 14px;
overflow: scroll;
font-family: Consolas, monospace;
.error{
color: @text-color-error;
}
}
*/

View File

@ -1,322 +0,0 @@
@import "syntax-variables";
@import "ui-variables";
// Cursor style
// =========================
.cursor-base () {
border: none;
background: none;
opacity: 0.5;
}
.underline-cursor(@bottom-width: 0.2em) {
.cursor-base();
border-bottom-width: @bottom-width;
border-bottom-style: solid;
border-bottom-color: @syntax-cursor-color;
}
atom-text-editor.vim-mode-plus.normal-mode,
atom-text-editor.vim-mode-plus.visual-mode,
atom-text-editor.vim-mode-plus.operator-pending-mode,
atom-text-editor.vim-mode-plus.insert-mode.replace {
&.is-focused,
&.vim-mode-plus-input-focused,
&.vim-mode-plus-search-input-focused {
.cursor {
.cursor-base();
background-color: @syntax-cursor-color; // block-cursor
}
}
&.vim-mode-plus-input-focused.hide-cursor {
.cursor { opacity: 0; }
.cursors.blink-off .cursor { opacity: 0; }
}
}
atom-text-editor.vim-mode-plus.operator-pending-mode {
&.is-focused,
&.vim-mode-plus-search-input-focused {
.cursor { .underline-cursor(0.6em); }
.cursors.blink-off .cursor { opacity: 0; }
}
}
atom-text-editor.vim-mode-plus.insert-mode.replace {
&.is-focused {
.cursor {
.underline-cursor(0.3em);
opacity: 0.8;
}
}
}
// vim-mode-plus-input-focused for surround, f, F, t, T, r etc.
atom-text-editor.vim-mode-plus.normal-mode,
atom-text-editor.vim-mode-plus.visual-mode,
atom-text-editor.vim-mode-plus.operator-pending-mode, {
&.vim-mode-plus-input-focused {
.cursor { .underline-cursor(); }
}
}
atom-text-editor.vim-mode-plus-input-char-waiting {
&.is-focused { .cursor { .underline-cursor(); } }
}
// Flash ranges e.g. flashing yanked range.
// =========================
.flash-animation (@animation-name, @color) {
@keyframes @animation-name {
from { background-color: @color; }
to { background-color: transparent; }
}
}
.flash (@animation-name; @duration) {
animation-name: @animation-name;
animation-duration: @duration;
animation-iteration-count: 1;
}
@flash-base-color: contrast(@syntax-background-color, darken(@syntax-selection-color, 3%), lighten(@syntax-selection-color, 3%));
@flash-search-color: fadeout(darken(@syntax-selection-flash-color, 10%), 20%);
@flash-added-color: fadeout(darken(@syntax-color-added, 10%), 50%);
@flash-removed-color: fadeout(@syntax-color-removed, 50%);
// flashOnOperate
.flash-animation(flash-operator, @flash-base-color);
.flash-animation(flash-operator-occurrence, @flash-added-color);
.flash-animation(flash-operator-remove-occurrence, @flash-removed-color);
// flashOnUndoRedo
.flash-animation(flash-undo-redo, @flash-base-color);
.flash-animation(flash-undo-redo-multiple-changes, @flash-added-color);
.flash-animation(flash-undo-redo-multiple-deletes, @flash-removed-color);
// flashOnSearch
.flash-animation(flash-search, @flash-search-color);
.flash-animation(flash-screen, @flash-base-color);
atom-text-editor .vim-mode-plus-flash {
// flashOnOperate
&.operator .region { .flash(flash-operator, 0.5s); }
&.operator-long .region { .flash(flash-operator, 0.8s); }
&.operator-occurrence .region { .flash(flash-operator-occurrence, 0.8s); }
&.operator-remove-occurrence .region { .flash(flash-operator-remove-occurrence, 0.8s); }
// flashOnUndoRedo
&.undo-redo .region { .flash(flash-undo-redo, 0.5s); }
&.undo-redo-multiple-changes .region { .flash(flash-undo-redo-multiple-changes, 0.5s); }
&.undo-redo-multiple-deletes .region { .flash(flash-undo-redo-multiple-deletes, 0.5s); }
// flashOnSearch
&.search .region { .flash(flash-search, 1.0s); z-index: 1; }
&.screen .region { .flash(flash-screen, 0.3s); }
// demo-mode pkg integration to stop flash while demo-mode's hover is active
&.operator-demo .region { background: @flash-base-color; }
&.operator-long-demo .region { background: @flash-base-color; }
&.operator-occurrence-demo .region { background: @flash-added-color; }
&.operator-remove-occurrence-demo .region { background: @flash-removed-color; }
&.undo-redo-demo .region { background: @flash-base-color; }
&.undo-redo-multiple-changes-demo .region { background: @flash-added-color; }
&.undo-redo-multiple-deletes-demo .region { background: @flash-removed-color; }
}
// Hover Counter
// =========================
.vim-mode-plus-hover {
display: block;
color: @text-color-highlight;
background-color: @base-background-color;
border-radius: @component-border-radius;
box-shadow: 0 0 1px @syntax-text-color;
margin-top: -3.0em;
margin-left: -0.3em;
padding-left: 0.2em;
padding-right: 0.2em;
text-align: center;
&.first { background-color: @background-color-info; }
&.last { background-color: @background-color-error; }
}
atom-text-editor[mini].vim-mode-plus-input {
background-color: inherit;
font-weight: normal;
color: @text-color;
line-height: 1.28;
cursor: default;
white-space: nowrap;
padding-left: 10px;
height: 0px !important;
width: 0px !important;
overflow: hidden !important;
border: none !important;
padding: 0 !important;
display: block !important;
position: fixed !important;
top: -10px !important;
left: -10px !important;
}
// Search
// =========================
// input
.vim-mode-plus-search-container {
display: flex;
> div {
padding: @component-padding/2 @component-padding;
border: none;
}
.editor-container { width: 100%; }
}
atom-text-editor[mini].vim-mode-plus-search {
border: none;
color: @text-color;
cursor: default;
&.is-focused { box-shadow: none; }
&::before {
font-size: 1.2em;
padding-right: 0.5em;
content: "/";
}
&.backwards::before { content: "?"; }
}
@search-match-base: @syntax-result-marker-color;
@search-match: hsla(hue(@search-match-base), saturation(@search-match-base), lightness(@search-match-base), 0.4);
@search-match-first: fadeout(@syntax-color-renamed, 60%);
@search-match-last: fadeout(@syntax-color-removed, 60%);
@search-match-border-current: hsla(hue(@search-match-base), saturation(@search-match-base), lightness(@search-match-base), 1.0);
@search-match-border-first: syntax-color-renamed;
@search-match-border-last: syntax-color-removed;
atom-text-editor:not(.silent) {
.vim-mode-plus-search-match {
.region { background-color: @search-match; }
&.first .region { background-color: @search-match-first; }
&.last .region { background-color: @search-match-last; }
}
}
@keyframes flash-find-char {
from { border-color: @syntax-color-function; }
to { border-color: transparent; }
}
// highlight
.round-box {
box-sizing: border-box;
border-radius: @component-border-radius;
}
atom-text-editor {
.vim-mode-plus-search-match {
.region {
.round-box();
border: 2px solid transparent;
transition: border-color 0.2s;
}
&.current .region {
border-color: @search-match-border-current;
transition-duration: 0.1s;
}
&.first.current .region {
border-color: search-match-border-first;
}
&.last.current .region {
border-color: @search-match-border-last;
}
}
.vim-mode-plus-highlight-search .region {
.round-box();
border: 1px solid fadeout(@syntax-text-color, 70%);
background-color: @syntax-selection-color;
}
.vim-mode-plus-persistent-selection .region {
background-color: @syntax-selection-color;
}
.vim-mode-plus-target-range .region {
background-color: @syntax-selection-color;
}
.vim-mode-plus-occurrence-base .region {
box-sizing: border-box;
border-bottom-width: 2px;
border-bottom-style: dotted;
z-index: 1;
border-color: @syntax-color-modified;
}
.vim-mode-plus-find-char {
.region {
box-sizing: border-box;
border-width: 0px;
border-bottom-width: 2px;
border-style: solid;
}
&.pre-confirm .region {
border-color: @syntax-color-modified;
&.current { border-bottom-width: 5px; }
}
&.post-confirm .region {
.flash(flash-find-char, 2.0s);
&.long { animation-duration: 4.0s; }
}
}
}
// Maximize Pane
// =========================
atom-workspace.vim-mode-plus--pane-maximized {
atom-dock.left { display: none; }
atom-dock.right { display: none; }
atom-dock.bottom { display: none; }
atom-pane-container {
position: relative;
atom-pane-axis:not(.vim-mode-plus--active-pane-axis) { display: none; }
atom-pane {
.item-views { background: @syntax-background-color !important; }
display: none;
&.vim-mode-plus--active-pane {
display: flex;
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
z-index: 100;
}
}
}
&.vim-mode-plus--hide-tab-bar { .tab-bar { display: none; } }
&.vim-mode-plus--hide-status-bar { .status-bar { display: none; } }
&.vim-mode-plus--pane-centered {
atom-text-editor:not(.mini) {
margin-left: 20%;
atom-text-editor {
// Some package embed another text-editor into normal text-editor by using block decoration.
// But we don't want this editor in editor centered again.
// E.g. git-diff-details, inline-git-diff
margin-left: 0%;
}
}
}
}
// SelectList Highlight matched text
// =========================
.vim-mode-plus-select-list .list-group .character-match {
color: @text-color-highlight;
font-weight: bold;
}
.demo-mode-container {
.kind {
color: @text-color-selected;
}
}

View File

@ -6,3 +6,10 @@ mode 3840x2160
pos 0x0
primary
rate 60.00
x-prop-max_bpc 8
x-prop-non_desktop 0
x-prop-scaling_mode None
x-prop-tearfree auto
x-prop-underscan off
x-prop-underscan_hborder 0
x-prop-underscan_vborder 0

View File

@ -1,8 +1,25 @@
output eDP
off
output HDMI-A-0
crtc 0
mode 3840x2160
pos 0x0
primary
rate 60.00
x-prop-max_bpc 8
x-prop-non_desktop 0
x-prop-scaling_mode None
x-prop-tearfree auto
x-prop-underscan off
x-prop-underscan_hborder 0
x-prop-underscan_vborder 0
output eDP
crtc 1
mode 1920x1080
pos 960x2160
rate 60.00
x-prop-max_bpc 16
x-prop-non_desktop 0
x-prop-scaling_mode None
x-prop-tearfree auto
x-prop-underscan off
x-prop-underscan_hborder 0
x-prop-underscan_vborder 0

View File

@ -1 +0,0 @@
$HOME/.bin/set-wacom-draw-area

View File

@ -1,3 +1,5 @@
#!/usr/bin/env bash
for i in ~/.mozilla/firefox/*.*default*
do ln -s user.js "$i/user.js"
do ln -s "$XDG_CONFIG_HOME"/firefox/user.js "$i/user.js"
done

View File

@ -11,4 +11,5 @@
*
*/
user_pref('browser.download.dir', '/home/h/dl')
// Set default download directory
user_pref("browser.download.dir", "/home/h/dl");

View File

@ -13,4 +13,3 @@ K add video-pan-y 0.01
J add video-pan-y -0.01
m cycle mute
s subs

View File

@ -48,8 +48,6 @@ local user_opts = {
seekrangeseparate = true, -- wether the seekranges overlay on the bar-style seekbar
seekrangealpha = 210, -- transparency of seekranges
seekbarkeyframes = true, -- use keyframes when dragging the seekbar
title = "${media-title}", -- string compatible with property-expansion
-- to be shown as OSC title
tooltipborder = 1, -- border of tooltip in bottom/topbar
tooltipfontsize = 17.5,
tooltipseekbar = false, -- following cursor bar over the playback seekbar

View File

@ -16,7 +16,7 @@ set-option -sg escape-time 10
set -g status-left ''
set -g status-right ''
bind r source-file ~/.tmux.conf # reload tmux conf
bind r source-file ~/.config/tmux/tmux.conf # reload tmux conf
# Keybindings

View File

@ -252,9 +252,9 @@ pause = spawn "playerctl pause"
brighten, dim, warm, cool, resetTemp :: X ()
brighten = spawn "brightnessctl set 20+"
dim = spawn "brightnessctl set 20-"
warm = spawn "echo $(($(cat /tmp/temperature) + 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"
cool = spawn "echo $(($(cat /tmp/temperature) - 50)) > /tmp/temperature && redshift -O $(cat /tmp/temperature) -P && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"
resetTemp = spawn "echo 3000 > /tmp/temperature && redshift -x"
warm = spawn "screen-temperature +50 && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"
cool = spawn "screen-temperature -50 && notify < /tmp/temperature -h string:x-canonical-private-synchronous:anything"
resetTemp = spawn "screen-temperature 3000"
-- }}}