Updated dotfiles
This commit is contained in:
parent
473e31cfb6
commit
0c457db7cc
31 changed files with 4072 additions and 298 deletions
13
.gitignore
vendored
13
.gitignore
vendored
|
|
@ -72,3 +72,16 @@ prismis/
|
|||
|
||||
# Git config (contains personal email/name)
|
||||
git/
|
||||
.env
|
||||
|
||||
# OPSEC - machine-specific configs that reveal infrastructure/workflow
|
||||
systemd-user/
|
||||
kde/
|
||||
applications/
|
||||
autostart/
|
||||
vicinae/
|
||||
whispertux/
|
||||
|
||||
# SSH keys (public or private)
|
||||
*.pub
|
||||
id_*
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
decorations = "None"
|
||||
import = ["/home/folke/projects/tokyonight.nvim/extras/alacritty/tokyonight_storm.yml"]
|
||||
[general]
|
||||
live_config_reload = true
|
||||
# import = [] # Add theme files here if needed
|
||||
|
||||
[window]
|
||||
decorations = "None"
|
||||
|
||||
[colors]
|
||||
draw_bold_text_with_bright_colors = true
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
# ---- TMUX-RECON bash.bash ----
|
||||
|
||||
# source custom aliases if exists
|
||||
[ -f ~/.aliases.sh ] && source ~/.aliases.sh
|
||||
|
||||
# add .scripts to path
|
||||
export PATH="$HOME/.scripts:$PATH"
|
||||
|
||||
# zoxide (if installed)
|
||||
if command -v zoxide &> /dev/null; then
|
||||
eval "$(zoxide init bash)"
|
||||
fi
|
||||
|
||||
# fzf (if installed)
|
||||
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
|
||||
|
||||
# Custom prompt options or PS1 here if desired
|
||||
52
ghostty/.config/ghostty/bloom.glsl
Normal file
52
ghostty/.config/ghostty/bloom.glsl
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// source: https://gist.github.com/qwerasd205/c3da6c610c8ffe17d6d2d3cc7068f17f
|
||||
// credits: https://github.com/qwerasd205
|
||||
// Golden spiral samples, [x, y, weight] weight is inverse of distance.
|
||||
const vec3[24] samples = {
|
||||
vec3(0.1693761725038636, 0.9855514761735895, 1),
|
||||
vec3(-1.333070830962943, 0.4721463328627773, 0.7071067811865475),
|
||||
vec3(-0.8464394909806497, -1.51113870578065, 0.5773502691896258),
|
||||
vec3(1.554155680728463, -1.2588090085709776, 0.5),
|
||||
vec3(1.681364377589461, 1.4741145918052656, 0.4472135954999579),
|
||||
vec3(-1.2795157692199817, 2.088741103228784, 0.4082482904638631),
|
||||
vec3(-2.4575847530631187, -0.9799373355024756, 0.3779644730092272),
|
||||
vec3(0.5874641440200847, -2.7667464429345077, 0.35355339059327373),
|
||||
vec3(2.997715703369726, 0.11704939884745152, 0.3333333333333333),
|
||||
vec3(0.41360842451688395, 3.1351121305574803, 0.31622776601683794),
|
||||
vec3(-3.167149933769243, 0.9844599011770256, 0.30151134457776363),
|
||||
vec3(-1.5736713846521535, -3.0860263079123245, 0.2886751345948129),
|
||||
vec3(2.888202648340422, -2.1583061557896213, 0.2773500981126146),
|
||||
vec3(2.7150778983300325, 2.5745586041105715, 0.2672612419124244),
|
||||
vec3(-2.1504069972377464, 3.2211410627650165, 0.2581988897471611),
|
||||
vec3(-3.6548858794907493, -1.6253643308191343, 0.25),
|
||||
vec3(1.0130775986052671, -3.9967078676335834, 0.24253562503633297),
|
||||
vec3(4.229723673607257, 0.33081361055181563, 0.23570226039551587),
|
||||
vec3(0.40107790291173834, 4.340407413572593, 0.22941573387056174),
|
||||
vec3(-4.319124570236028, 1.159811599693438, 0.22360679774997896),
|
||||
vec3(-1.9209044802827355, -4.160543952132907, 0.2182178902359924),
|
||||
vec3(3.8639122286635708, -2.6589814382925123, 0.21320071635561041),
|
||||
vec3(3.3486228404946234, 3.4331800232609, 0.20851441405707477),
|
||||
vec3(-2.8769733643574344, 3.9652268864187157, 0.20412414523193154)
|
||||
};
|
||||
|
||||
float lum(vec4 c) {
|
||||
return 0.299 * c.r + 0.587 * c.g + 0.114 * c.b;
|
||||
}
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
||||
vec2 uv = fragCoord.xy / iResolution.xy;
|
||||
|
||||
vec4 color = texture(iChannel0, uv);
|
||||
|
||||
vec2 step = vec2(1.414) / iResolution.xy;
|
||||
|
||||
for (int i = 0; i < 24; i++) {
|
||||
vec3 s = samples[i];
|
||||
vec4 c = texture(iChannel0, uv + s.xy * step);
|
||||
float l = lum(c);
|
||||
if (l > 0.2 && lum(color) < 0.75) {
|
||||
color += l * s.z * c * 0.12; // reduced from 0.2 to balance glow intensity
|
||||
}
|
||||
}
|
||||
|
||||
fragColor = clamp(color, 0.0, 1.12); // smooth highlighting
|
||||
}
|
||||
|
|
@ -1,50 +1,69 @@
|
|||
# Fonts
|
||||
font-family = "Fira Code"
|
||||
font-family-bold = "Fira Code"
|
||||
font-family-italic = "Maple Mono"
|
||||
font-family-bold-italic = "Maple Mono"
|
||||
font-family = "Symbols Nerd Font Mono"
|
||||
font-size = 10
|
||||
adjust-underline-position = 4
|
||||
# This is the configuration file for Ghostty.
|
||||
#
|
||||
# This template file has been automatically created at the following
|
||||
# path since Ghostty couldn't find any existing config files on your system:
|
||||
#
|
||||
# /home/e/.config/ghostty/config
|
||||
#
|
||||
# The template does not set any default options, since Ghostty ships
|
||||
# with sensible defaults for all options. Users should only need to set
|
||||
# options that they want to change from the default.
|
||||
#
|
||||
# Run `ghostty +show-config --default --docs` to view a list of
|
||||
# all available config options and their default values.
|
||||
#
|
||||
# Additionally, each config option is also explained in detail
|
||||
# on Ghostty's website, at https://ghostty.org/docs/config.
|
||||
|
||||
# Mouse
|
||||
mouse-hide-while-typing = true
|
||||
# mouse-scroll-multiplier = 1
|
||||
# Config syntax crash course
|
||||
# ==========================
|
||||
# # The config file consists of simple key-value pairs,
|
||||
# # separated by equals signs.
|
||||
# font-family = Iosevka
|
||||
# window-padding-x = 2
|
||||
#
|
||||
# # Spacing around the equals sign does not matter.
|
||||
# # All of these are identical:
|
||||
# key=value
|
||||
# key= value
|
||||
# key =value
|
||||
# key = value
|
||||
#
|
||||
# # Any line beginning with a # is a comment. It's not possible to put
|
||||
# # a comment after a config option, since it would be interpreted as a
|
||||
# # part of the value. For example, this will have a value of "#123abc":
|
||||
# background = #123abc
|
||||
#
|
||||
# # Empty values are used to reset config keys to default.
|
||||
# key =
|
||||
#
|
||||
# # Some config options have unique syntaxes for their value,
|
||||
# # which is explained in the docs for that config option.
|
||||
# # Just for example:
|
||||
# resize-overlay-duration = 4s 200ms
|
||||
|
||||
# Theme
|
||||
theme = /home/folke/projects/tokyonight.nvim/extras/ghostty/tokyonight_night
|
||||
cursor-invert-fg-bg = true
|
||||
background-opacity = 0.9
|
||||
window-theme = ghostty
|
||||
background-opacity = .95
|
||||
background-blur = 15
|
||||
|
||||
# keybindings
|
||||
keybind = clear
|
||||
keybind = ctrl+shift+h=goto_split:left
|
||||
keybind = ctrl+shift+j=goto_split:bottom
|
||||
keybind = ctrl+shift+k=goto_split:top
|
||||
keybind = ctrl+shift+l=goto_split:right
|
||||
keybind = super+shift+t=new_tab
|
||||
keybind = super+shift+h=previous_tab
|
||||
keybind = super+shift+l=next_tab
|
||||
keybind = super+shift+comma=move_tab:-1
|
||||
keybind = super+shift+period=move_tab:1
|
||||
keybind = super+shift+c=copy_to_clipboard
|
||||
keybind = super+shift+v=paste_from_clipboard
|
||||
keybind = super+shift+enter=new_split:auto
|
||||
keybind = super+shift+i=inspector:toggle
|
||||
keybind = super+shift+m=toggle_split_zoom
|
||||
keybind = super+shift+r=reload_config
|
||||
keybind = super+shift+s=write_screen_file:open
|
||||
keybind = super+shift+w=close_surface
|
||||
keybind = global:ctrl+grave_accent=toggle_quick_terminal
|
||||
|
||||
# Window
|
||||
gtk-single-instance = true
|
||||
gtk-tabs-location = bottom
|
||||
gtk-wide-tabs = false
|
||||
window-padding-y = 2,0
|
||||
window-padding-balance = true
|
||||
window-decoration = false
|
||||
custom-shader = ~/.config/ghostty/bloom.glsl
|
||||
#custom-shader = ~/.config/ghostty/crt.glsl
|
||||
#custom-shader = ~/.config/ghostty/starfield.glsl
|
||||
|
||||
# Other
|
||||
copy-on-select = clipboard
|
||||
shell-integration-features = cursor,sudo,no-title
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/bloom.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/galaxy.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/glitchy.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/glow-rgbsplit-twitchy.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/in-game-crt.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/matrix-hallway.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/negative.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/sparks-from-fire.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/starfield-colors.glsl
|
||||
#custom-shader = ~/.config/ghostty/ghostty-shaders/starfield.glsl
|
||||
|
||||
|
||||
keybind = shift+enter=text:\x1b\r
|
||||
|
||||
# Use zsh as default shell
|
||||
command = /usr/bin/zsh
|
||||
|
|
|
|||
50
ghostty/.config/ghostty/config.default
Normal file
50
ghostty/.config/ghostty/config.default
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
# Fonts
|
||||
font-family = "Fira Code"
|
||||
font-family-bold = "Fira Code"
|
||||
font-family-italic = "Maple Mono"
|
||||
font-family-bold-italic = "Maple Mono"
|
||||
font-family = "Symbols Nerd Font Mono"
|
||||
font-size = 10
|
||||
adjust-underline-position = 4
|
||||
|
||||
# Mouse
|
||||
mouse-hide-while-typing = true
|
||||
# mouse-scroll-multiplier = 1
|
||||
|
||||
# Theme
|
||||
# theme = /home/folke/projects/tokyonight.nvim/extras/ghostty/tokyonight_night
|
||||
cursor-invert-fg-bg = true
|
||||
background-opacity = 0.9
|
||||
window-theme = ghostty
|
||||
|
||||
# keybindings
|
||||
keybind = clear
|
||||
keybind = ctrl+shift+h=goto_split:left
|
||||
keybind = ctrl+shift+j=goto_split:bottom
|
||||
keybind = ctrl+shift+k=goto_split:top
|
||||
keybind = ctrl+shift+l=goto_split:right
|
||||
keybind = super+shift+t=new_tab
|
||||
keybind = super+shift+h=previous_tab
|
||||
keybind = super+shift+l=next_tab
|
||||
keybind = super+shift+comma=move_tab:-1
|
||||
keybind = super+shift+period=move_tab:1
|
||||
keybind = super+shift+c=copy_to_clipboard
|
||||
keybind = super+shift+v=paste_from_clipboard
|
||||
keybind = super+shift+enter=new_split:auto
|
||||
keybind = super+shift+i=inspector:toggle
|
||||
keybind = super+shift+m=toggle_split_zoom
|
||||
keybind = super+shift+r=reload_config
|
||||
keybind = super+shift+s=write_screen_file:open
|
||||
keybind = super+shift+w=close_surface
|
||||
|
||||
# Window
|
||||
gtk-single-instance = true
|
||||
gtk-tabs-location = bottom
|
||||
gtk-wide-tabs = false
|
||||
window-padding-y = 2,0
|
||||
window-padding-balance = true
|
||||
window-decoration = true
|
||||
|
||||
# Other
|
||||
copy-on-select = clipboard
|
||||
shell-integration-features = cursor,sudo,no-title
|
||||
310
ghostty/.config/ghostty/crt.glsl
Normal file
310
ghostty/.config/ghostty/crt.glsl
Normal file
|
|
@ -0,0 +1,310 @@
|
|||
// source: https://gist.github.com/qwerasd205/c3da6c610c8ffe17d6d2d3cc7068f17f
|
||||
// credits: https://github.com/qwerasd205
|
||||
//==============================================================
|
||||
//
|
||||
// [CRTS] PUBLIC DOMAIN CRT-STYLED SCALAR by Timothy Lottes
|
||||
//
|
||||
// [+] Adapted with alterations for use in Ghostty by Qwerasd.
|
||||
// For more information on changes, see comment below license.
|
||||
//
|
||||
//==============================================================
|
||||
//
|
||||
// LICENSE = UNLICENSE (aka PUBLIC DOMAIN)
|
||||
//
|
||||
//--------------------------------------------------------------
|
||||
// This is free and unencumbered software released into the
|
||||
// public domain.
|
||||
//--------------------------------------------------------------
|
||||
// Anyone is free to copy, modify, publish, use, compile, sell,
|
||||
// or distribute this software, either in source code form or as
|
||||
// a compiled binary, for any purpose, commercial or
|
||||
// non-commercial, and by any means.
|
||||
//--------------------------------------------------------------
|
||||
// In jurisdictions that recognize copyright laws, the author or
|
||||
// authors of this software dedicate any and all copyright
|
||||
// interest in the software to the public domain. We make this
|
||||
// dedication for the benefit of the public at large and to the
|
||||
// detriment of our heirs and successors. We intend this
|
||||
// dedication to be an overt act of relinquishment in perpetuity
|
||||
// of all present and future rights to this software under
|
||||
// copyright law.
|
||||
//--------------------------------------------------------------
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
|
||||
// KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
||||
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
//--------------------------------------------------------------
|
||||
// For more information, please refer to
|
||||
// <http://unlicense.org/>
|
||||
//==============================================================
|
||||
|
||||
// This shader is a modified version of the excellent
|
||||
// FixingPixelArtFast by Timothy Lottes on Shadertoy.
|
||||
//
|
||||
// The original shader can be found at:
|
||||
// https://www.shadertoy.com/view/MtSfRK
|
||||
//
|
||||
// Modifications have been made to reduce the verbosity,
|
||||
// and many of the comments have been removed / reworded.
|
||||
// Additionally, the license has been moved to the top of
|
||||
// the file, and can be read above. I (Qwerasd) choose to
|
||||
// release the modified version under the same license.
|
||||
|
||||
// The appearance of this shader can be altered
|
||||
// by adjusting the parameters defined below.
|
||||
|
||||
// "Scanlines" per real screen pixel.
|
||||
// e.g. SCALE 0.5 means each scanline is 2 pixels.
|
||||
// Recommended values:
|
||||
// o High DPI displays: 0.33333333
|
||||
// - Low DPI displays: 0.66666666
|
||||
#define SCALE 0.33333333
|
||||
|
||||
// "Tube" warp
|
||||
#define CRTS_WARP 1
|
||||
|
||||
// Darkness of vignette in corners after warping
|
||||
// 0.0 = completely black
|
||||
// 1.0 = no vignetting
|
||||
#define MIN_VIN 0.5
|
||||
|
||||
// Try different masks
|
||||
// #define CRTS_MASK_GRILLE 1
|
||||
// #define CRTS_MASK_GRILLE_LITE 1
|
||||
// #define CRTS_MASK_NONE 1
|
||||
#define CRTS_MASK_SHADOW 1
|
||||
|
||||
// Scanline thinness
|
||||
// 0.50 = fused scanlines
|
||||
// 0.70 = recommended default
|
||||
// 1.00 = thinner scanlines (too thin)
|
||||
#define INPUT_THIN 0.75
|
||||
|
||||
// Horizonal scan blur
|
||||
// -3.0 = pixely
|
||||
// -2.5 = default
|
||||
// -2.0 = smooth
|
||||
// -1.0 = too blurry
|
||||
#define INPUT_BLUR -2.75
|
||||
|
||||
// Shadow mask effect, ranges from,
|
||||
// 0.25 = large amount of mask (not recommended, too dark)
|
||||
// 0.50 = recommended default
|
||||
// 1.00 = no shadow mask
|
||||
#define INPUT_MASK 0.65
|
||||
|
||||
float FromSrgb1(float c) {
|
||||
return (c <= 0.04045) ? c * (1.0 / 12.92) :
|
||||
pow(c * (1.0 / 1.055) + (0.055 / 1.055), 2.4);
|
||||
}
|
||||
vec3 FromSrgb(vec3 c) {
|
||||
return vec3(
|
||||
FromSrgb1(c.r), FromSrgb1(c.g), FromSrgb1(c.b));
|
||||
}
|
||||
|
||||
vec3 CrtsFetch(vec2 uv) {
|
||||
return FromSrgb(texture(iChannel0, uv.xy).rgb);
|
||||
}
|
||||
|
||||
#define CrtsRcpF1(x) (1.0/(x))
|
||||
#define CrtsSatF1(x) clamp((x),0.0,1.0)
|
||||
|
||||
float CrtsMax3F1(float a, float b, float c) {
|
||||
return max(a, max(b, c));
|
||||
}
|
||||
|
||||
vec2 CrtsTone(
|
||||
float thin,
|
||||
float mask) {
|
||||
#ifdef CRTS_MASK_NONE
|
||||
mask = 1.0;
|
||||
#endif
|
||||
|
||||
#ifdef CRTS_MASK_GRILLE_LITE
|
||||
// Normal R mask is {1.0,mask,mask}
|
||||
// LITE R mask is {mask,1.0,1.0}
|
||||
mask = 0.5 + mask * 0.5;
|
||||
#endif
|
||||
|
||||
vec2 ret;
|
||||
float midOut = 0.18 / ((1.5 - thin) * (0.5 * mask + 0.5));
|
||||
float pMidIn = 0.18;
|
||||
ret.x = ((-pMidIn) + midOut) / ((1.0 - pMidIn) * midOut);
|
||||
ret.y = ((-pMidIn) * midOut + pMidIn) / (midOut * (-pMidIn) + midOut);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
vec3 CrtsMask(vec2 pos, float dark) {
|
||||
#ifdef CRTS_MASK_GRILLE
|
||||
vec3 m = vec3(dark, dark, dark);
|
||||
float x = fract(pos.x * (1.0 / 3.0));
|
||||
if (x < (1.0 / 3.0)) m.r = 1.0;
|
||||
else if (x < (2.0 / 3.0)) m.g = 1.0;
|
||||
else m.b = 1.0;
|
||||
return m;
|
||||
#endif
|
||||
|
||||
#ifdef CRTS_MASK_GRILLE_LITE
|
||||
vec3 m = vec3(1.0, 1.0, 1.0);
|
||||
float x = fract(pos.x * (1.0 / 3.0));
|
||||
if (x < (1.0 / 3.0)) m.r = dark;
|
||||
else if (x < (2.0 / 3.0)) m.g = dark;
|
||||
else m.b = dark;
|
||||
return m;
|
||||
#endif
|
||||
|
||||
#ifdef CRTS_MASK_NONE
|
||||
return vec3(1.0, 1.0, 1.0);
|
||||
#endif
|
||||
|
||||
#ifdef CRTS_MASK_SHADOW
|
||||
pos.x += pos.y * 3.0;
|
||||
vec3 m = vec3(dark, dark, dark);
|
||||
float x = fract(pos.x * (1.0 / 6.0));
|
||||
if (x < (1.0 / 3.0)) m.r = 1.0;
|
||||
else if (x < (2.0 / 3.0)) m.g = 1.0;
|
||||
else m.b = 1.0;
|
||||
return m;
|
||||
#endif
|
||||
}
|
||||
|
||||
vec3 CrtsFilter(
|
||||
vec2 ipos,
|
||||
vec2 inputSizeDivOutputSize,
|
||||
vec2 halfInputSize,
|
||||
vec2 rcpInputSize,
|
||||
vec2 rcpOutputSize,
|
||||
vec2 twoDivOutputSize,
|
||||
float inputHeight,
|
||||
vec2 warp,
|
||||
float thin,
|
||||
float blur,
|
||||
float mask,
|
||||
vec2 tone
|
||||
) {
|
||||
// Optional apply warp
|
||||
vec2 pos;
|
||||
#ifdef CRTS_WARP
|
||||
// Convert to {-1 to 1} range
|
||||
pos = ipos * twoDivOutputSize - vec2(1.0, 1.0);
|
||||
|
||||
// Distort pushes image outside {-1 to 1} range
|
||||
pos *= vec2(
|
||||
1.0 + (pos.y * pos.y) * warp.x,
|
||||
1.0 + (pos.x * pos.x) * warp.y);
|
||||
|
||||
// TODO: Vignette needs optimization
|
||||
float vin = 1.0 - (
|
||||
(1.0 - CrtsSatF1(pos.x * pos.x)) * (1.0 - CrtsSatF1(pos.y * pos.y)));
|
||||
vin = CrtsSatF1((-vin) * inputHeight + inputHeight);
|
||||
|
||||
// Leave in {0 to inputSize}
|
||||
pos = pos * halfInputSize + halfInputSize;
|
||||
#else
|
||||
pos = ipos * inputSizeDivOutputSize;
|
||||
#endif
|
||||
|
||||
// Snap to center of first scanline
|
||||
float y0 = floor(pos.y - 0.5) + 0.5;
|
||||
// Snap to center of one of four pixels
|
||||
float x0 = floor(pos.x - 1.5) + 0.5;
|
||||
|
||||
// Inital UV position
|
||||
vec2 p = vec2(x0 * rcpInputSize.x, y0 * rcpInputSize.y);
|
||||
// Fetch 4 nearest texels from 2 nearest scanlines
|
||||
vec3 colA0 = CrtsFetch(p);
|
||||
p.x += rcpInputSize.x;
|
||||
vec3 colA1 = CrtsFetch(p);
|
||||
p.x += rcpInputSize.x;
|
||||
vec3 colA2 = CrtsFetch(p);
|
||||
p.x += rcpInputSize.x;
|
||||
vec3 colA3 = CrtsFetch(p);
|
||||
p.y += rcpInputSize.y;
|
||||
vec3 colB3 = CrtsFetch(p);
|
||||
p.x -= rcpInputSize.x;
|
||||
vec3 colB2 = CrtsFetch(p);
|
||||
p.x -= rcpInputSize.x;
|
||||
vec3 colB1 = CrtsFetch(p);
|
||||
p.x -= rcpInputSize.x;
|
||||
vec3 colB0 = CrtsFetch(p);
|
||||
|
||||
// Vertical filter
|
||||
// Scanline intensity is using sine wave
|
||||
// Easy filter window and integral used later in exposure
|
||||
float off = pos.y - y0;
|
||||
float pi2 = 6.28318530717958;
|
||||
float hlf = 0.5;
|
||||
float scanA = cos(min(0.5, off * thin) * pi2) * hlf + hlf;
|
||||
float scanB = cos(min(0.5, (-off) * thin + thin) * pi2) * hlf + hlf;
|
||||
|
||||
// Horizontal kernel is simple gaussian filter
|
||||
float off0 = pos.x - x0;
|
||||
float off1 = off0 - 1.0;
|
||||
float off2 = off0 - 2.0;
|
||||
float off3 = off0 - 3.0;
|
||||
float pix0 = exp2(blur * off0 * off0);
|
||||
float pix1 = exp2(blur * off1 * off1);
|
||||
float pix2 = exp2(blur * off2 * off2);
|
||||
float pix3 = exp2(blur * off3 * off3);
|
||||
float pixT = CrtsRcpF1(pix0 + pix1 + pix2 + pix3);
|
||||
|
||||
#ifdef CRTS_WARP
|
||||
// Get rid of wrong pixels on edge
|
||||
pixT *= max(MIN_VIN, vin);
|
||||
#endif
|
||||
|
||||
scanA *= pixT;
|
||||
scanB *= pixT;
|
||||
|
||||
// Apply horizontal and vertical filters
|
||||
vec3 color =
|
||||
(colA0 * pix0 + colA1 * pix1 + colA2 * pix2 + colA3 * pix3) * scanA +
|
||||
(colB0 * pix0 + colB1 * pix1 + colB2 * pix2 + colB3 * pix3) * scanB;
|
||||
|
||||
// Apply phosphor mask
|
||||
color *= CrtsMask(ipos, mask);
|
||||
|
||||
// Tonal control, start by protecting from /0
|
||||
float peak = max(1.0 / (256.0 * 65536.0),
|
||||
CrtsMax3F1(color.r, color.g, color.b));
|
||||
// Compute the ratios of {R,G,B}
|
||||
vec3 ratio = color * CrtsRcpF1(peak);
|
||||
// Apply tonal curve to peak value
|
||||
peak = peak * CrtsRcpF1(peak * tone.x + tone.y);
|
||||
// Reconstruct color
|
||||
return ratio * peak;
|
||||
}
|
||||
|
||||
float ToSrgb1(float c) {
|
||||
return (c < 0.0031308 ? c * 12.92 : 1.055 * pow(c, 0.41666) - 0.055);
|
||||
}
|
||||
vec3 ToSrgb(vec3 c) {
|
||||
return vec3(
|
||||
ToSrgb1(c.r), ToSrgb1(c.g), ToSrgb1(c.b));
|
||||
}
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
|
||||
float aspect = iResolution.x / iResolution.y;
|
||||
fragColor.rgb = CrtsFilter(
|
||||
fragCoord.xy,
|
||||
vec2(1.0),
|
||||
iResolution.xy * SCALE * 0.5,
|
||||
1.0 / (iResolution.xy * SCALE),
|
||||
1.0 / iResolution.xy,
|
||||
2.0 / iResolution.xy,
|
||||
iResolution.y,
|
||||
vec2(1.0 / (50.0 * aspect), 1.0 / 50.0),
|
||||
INPUT_THIN,
|
||||
INPUT_BLUR,
|
||||
INPUT_MASK,
|
||||
CrtsTone(INPUT_THIN, INPUT_MASK)
|
||||
);
|
||||
|
||||
// Linear to SRGB for output.
|
||||
fragColor.rgb = ToSrgb(fragColor.rgb);
|
||||
}
|
||||
1
ghostty/.config/ghostty/ghostty-shaders
Submodule
1
ghostty/.config/ghostty/ghostty-shaders
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit a17573fb254e618f92a75afe80faa31fd5e09d6f
|
||||
135
ghostty/.config/ghostty/starfield.glsl
Normal file
135
ghostty/.config/ghostty/starfield.glsl
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
// transparent background
|
||||
const bool transparent = false;
|
||||
|
||||
// terminal contents luminance threshold to be considered background (0.0 to 1.0)
|
||||
const float threshold = 0.15;
|
||||
|
||||
// divisions of grid
|
||||
const float repeats = 30.;
|
||||
|
||||
// number of layers
|
||||
const float layers = 21.;
|
||||
|
||||
// star colors
|
||||
const vec3 white = vec3(1.0); // Set star color to pure white
|
||||
|
||||
float luminance(vec3 color) {
|
||||
return dot(color, vec3(0.2126, 0.7152, 0.0722));
|
||||
}
|
||||
|
||||
float N21(vec2 p) {
|
||||
p = fract(p * vec2(233.34, 851.73));
|
||||
p += dot(p, p + 23.45);
|
||||
return fract(p.x * p.y);
|
||||
}
|
||||
|
||||
vec2 N22(vec2 p) {
|
||||
float n = N21(p);
|
||||
return vec2(n, N21(p + n));
|
||||
}
|
||||
|
||||
mat2 scale(vec2 _scale) {
|
||||
return mat2(_scale.x, 0.0,
|
||||
0.0, _scale.y);
|
||||
}
|
||||
|
||||
// 2D Noise based on Morgan McGuire
|
||||
float noise(in vec2 st) {
|
||||
vec2 i = floor(st);
|
||||
vec2 f = fract(st);
|
||||
|
||||
// Four corners in 2D of a tile
|
||||
float a = N21(i);
|
||||
float b = N21(i + vec2(1.0, 0.0));
|
||||
float c = N21(i + vec2(0.0, 1.0));
|
||||
float d = N21(i + vec2(1.0, 1.0));
|
||||
|
||||
// Smooth Interpolation
|
||||
vec2 u = f * f * (3.0 - 2.0 * f); // Cubic Hermite Curve
|
||||
|
||||
// Mix 4 corners percentages
|
||||
return mix(a, b, u.x) +
|
||||
(c - a) * u.y * (1.0 - u.x) +
|
||||
(d - b) * u.x * u.y;
|
||||
}
|
||||
|
||||
float perlin2(vec2 uv, int octaves, float pscale) {
|
||||
float col = 1.;
|
||||
float initScale = 4.;
|
||||
for (int l; l < octaves; l++) {
|
||||
float val = noise(uv * initScale);
|
||||
if (col <= 0.01) {
|
||||
col = 0.;
|
||||
break;
|
||||
}
|
||||
val -= 0.01;
|
||||
val *= 0.5;
|
||||
col *= val;
|
||||
initScale *= pscale;
|
||||
}
|
||||
return col;
|
||||
}
|
||||
|
||||
vec3 stars(vec2 uv, float offset) {
|
||||
float timeScale = -(iTime + offset) / layers;
|
||||
float trans = fract(timeScale);
|
||||
float newRnd = floor(timeScale);
|
||||
vec3 col = vec3(0.);
|
||||
|
||||
// Translate uv then scale for center
|
||||
uv -= vec2(0.5);
|
||||
uv = scale(vec2(trans)) * uv;
|
||||
uv += vec2(0.5);
|
||||
|
||||
// Create square aspect ratio
|
||||
uv.x *= iResolution.x / iResolution.y;
|
||||
|
||||
// Create boxes
|
||||
uv *= repeats;
|
||||
|
||||
// Get position
|
||||
vec2 ipos = floor(uv);
|
||||
|
||||
// Return uv as 0 to 1
|
||||
uv = fract(uv);
|
||||
|
||||
// Calculate random xy and size
|
||||
vec2 rndXY = N22(newRnd + ipos * (offset + 1.)) * 0.9 + 0.05;
|
||||
float rndSize = N21(ipos) * 100. + 200.;
|
||||
|
||||
vec2 j = (rndXY - uv) * rndSize;
|
||||
float sparkle = 1. / dot(j, j);
|
||||
|
||||
// Set stars to be pure white
|
||||
col += white * sparkle;
|
||||
|
||||
col *= smoothstep(1., 0.8, trans);
|
||||
return col; // Return pure white stars only
|
||||
}
|
||||
|
||||
void mainImage(out vec4 fragColor, in vec2 fragCoord)
|
||||
{
|
||||
// Normalized pixel coordinates (from 0 to 1)
|
||||
vec2 uv = fragCoord / iResolution.xy;
|
||||
|
||||
vec3 col = vec3(0.);
|
||||
|
||||
for (float i = 0.; i < layers; i++) {
|
||||
col += stars(uv, i);
|
||||
}
|
||||
|
||||
// Sample the terminal screen texture including alpha channel
|
||||
vec4 terminalColor = texture(iChannel0, uv);
|
||||
|
||||
if (transparent) {
|
||||
col += terminalColor.rgb;
|
||||
}
|
||||
|
||||
// Make a mask that is 1.0 where the terminal content is not black
|
||||
float mask = 1 - step(threshold, luminance(terminalColor.rgb));
|
||||
|
||||
vec3 blendedColor = mix(terminalColor.rgb, col, mask);
|
||||
|
||||
// Apply terminal's alpha to control overall opacity
|
||||
fragColor = vec4(blendedColor, terminalColor.a);
|
||||
}
|
||||
|
|
@ -32,10 +32,6 @@ language-servers = ["vscode-html-language-server"]
|
|||
name = "css"
|
||||
language-servers = ["vscode-css-language-server"]
|
||||
|
||||
[[language]]
|
||||
name = "dockerfile"
|
||||
language-servers = ["docker-langserver"]
|
||||
|
||||
[[language]]
|
||||
name = "go"
|
||||
language-servers = ["gopls"]
|
||||
|
|
@ -59,7 +55,7 @@ file-types = ["tex", "sty", "cls", "dtx"]
|
|||
roots = ["main.tex", ".latexmkrc", "body-osr.md"]
|
||||
comment-token = "%"
|
||||
indent = { tab-width = 2, unit = " " }
|
||||
language-server = { command = "texlab" }
|
||||
language-servers = ["texlab"]
|
||||
|
||||
[language.auto-pairs]
|
||||
'(' = ')'
|
||||
|
|
|
|||
111
scripts/radio
111
scripts/radio
|
|
@ -1,111 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Script Name: radio
|
||||
# Description: Internet radio station wrapper with curated stations
|
||||
# Source: Inspired by https://evanhahn.com/scripts-i-wrote-that-i-use-all-the-time/
|
||||
# Usage: radio <station-name>
|
||||
# radio list
|
||||
|
||||
# Check for mpv
|
||||
if ! command -v mpv &>/dev/null; then
|
||||
echo "Error: mpv not found. Install with: sudo apt install mpv" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Curated radio stations
|
||||
declare -A stations=(
|
||||
# Rock & Metal
|
||||
["metal"]="http://listen.181fm.com/181-greatoldies_128k.mp3|Heavy Metal & Hard Rock"
|
||||
["rock"]="http://listen.181fm.com/181-rock_128k.mp3|Classic Rock"
|
||||
|
||||
# Cyberpunk / Synthwave / Darkwave
|
||||
["cyberpunk"]="https://stream.nightride.fm/nightride.mp3|Nightride FM - Synthwave/Retrowave/Outrun"
|
||||
["darksynth"]="https://stream.nightride.fm/darksynth.mp3|Darksynth/Cyberpunk/Synthmetal"
|
||||
["chillsynth"]="https://stream.nightride.fm/chillsynth.mp3|Chillsynth/Chillwave/Instrumental"
|
||||
["datawave"]="https://stream.nightride.fm/datawave.mp3|Glitchy Synthwave/IDM"
|
||||
["spacesynth"]="https://stream.nightride.fm/spacesynth.mp3|Spacesynth/Space Disco"
|
||||
["horrorsynth"]="https://stream.nightride.fm/horrorsynth.mp3|Horrorsynth/Witch House"
|
||||
["industrial"]="https://stream.nightride.fm/ebsm.mp3|Industrial/EBM/Midtempo"
|
||||
|
||||
# Electronic / Techno
|
||||
["techno"]="http://stream.laut.fm/technobase|Techno Base - Coding Beats"
|
||||
["dnb"]="https://stream.nightride.fm/rektfm.mp3|Drum & Bass/Dubstep/Techno/Trance"
|
||||
["lofi"]="https://stream.nightride.fm/chillsynth.mp3|Lo-Fi Chill Beats"
|
||||
|
||||
# Meditation / Ambient / Relaxation
|
||||
["meditation"]="https://streaming.radionomy.com/-zenoflm-|Zen FM - Meditation & Relaxation"
|
||||
["ambient"]="https://somafm.com/dronezone130.pls|SomaFM Drone Zone - Ambient"
|
||||
["sleep"]="https://somafm.com/deepspaceone130.pls|SomaFM Deep Space One"
|
||||
["nature"]="https://streaming.radionomy.com/NatureSoundsRelaxation|Nature Sounds"
|
||||
|
||||
# Classical
|
||||
["classical"]="https://stream.live.vc.bbcmedia.co.uk/bbc_radio_three|BBC Radio 3 - Classical"
|
||||
["piano"]="http://stream.laut.fm/piano-classics|Piano Classics"
|
||||
)
|
||||
|
||||
# List available stations
|
||||
if [[ $# -eq 0 ]] || [[ "$1" == "list" ]]; then
|
||||
echo "📻 Available Radio Stations:"
|
||||
echo ""
|
||||
echo "🤘 ROCK & METAL:"
|
||||
echo " radio metal - Heavy Metal & Hard Rock"
|
||||
echo " radio rock - Classic Rock"
|
||||
echo ""
|
||||
echo "🌃 CYBERPUNK / SYNTHWAVE:"
|
||||
echo " radio cyberpunk - Nightride FM (Synthwave/Retrowave)"
|
||||
echo " radio darksynth - Darksynth/Cyberpunk/Synthmetal"
|
||||
echo " radio chillsynth - Chillsynth/Chillwave"
|
||||
echo " radio datawave - Glitchy Synthwave/IDM"
|
||||
echo " radio spacesynth - Spacesynth/Space Disco"
|
||||
echo " radio horrorsynth- Horrorsynth/Witch House"
|
||||
echo " radio industrial - Industrial/EBM"
|
||||
echo ""
|
||||
echo "🎧 ELECTRONIC / TECHNO:"
|
||||
echo " radio techno - Techno Base (Coding Beats)"
|
||||
echo " radio dnb - Drum & Bass/Dubstep/Trance"
|
||||
echo " radio lofi - Lo-Fi Chill Beats"
|
||||
echo ""
|
||||
echo "🧘 MEDITATION / AMBIENT:"
|
||||
echo " radio meditation - Zen FM"
|
||||
echo " radio ambient - SomaFM Drone Zone"
|
||||
echo " radio sleep - Deep Space Ambient"
|
||||
echo " radio nature - Nature Sounds"
|
||||
echo ""
|
||||
echo "🎹 CLASSICAL:"
|
||||
echo " radio classical - BBC Radio 3"
|
||||
echo " radio piano - Piano Classics"
|
||||
echo ""
|
||||
exit 0
|
||||
fi
|
||||
|
||||
station="$1"
|
||||
|
||||
# Check if station exists
|
||||
if [[ -z "${stations[$station]:-}" ]]; then
|
||||
echo "Error: Station '$station' not found" >&2
|
||||
echo "Run 'radio list' to see available stations" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Parse station URL and description
|
||||
IFS='|' read -r url description <<< "${stations[$station]}"
|
||||
|
||||
echo "📻 Tuning in to: $description"
|
||||
echo "🔊 Playing... (Ctrl+C to stop)"
|
||||
echo ""
|
||||
|
||||
# Play with mpv (only fallback to VLC if mpv is not installed or stream fails to start)
|
||||
if ! command -v mpv &>/dev/null; then
|
||||
echo "mpv not found. Trying VLC..." >&2
|
||||
if command -v vlc &>/dev/null; then
|
||||
vlc "$url" 2>/dev/null
|
||||
exit $?
|
||||
else
|
||||
echo "Error: Neither mpv nor VLC is installed" >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# mpv will return non-zero for user interruption (Ctrl+C), which is normal
|
||||
mpv --no-video --volume=50 "$url"
|
||||
1554
tmux/.tmux.conf
Normal file
1554
tmux/.tmux.conf
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -297,7 +297,10 @@ tmux_conf_theme_status_left_fg="$tmux_conf_theme_colour_4,$tmux_conf_theme_colou
|
|||
tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_1,$tmux_conf_theme_colour_1,$tmux_conf_theme_colour_0"
|
||||
|
||||
# right
|
||||
tmux_conf_theme_status_right=" #[fg=#00afff,bg=#080808]#{prefix_highlight} #[fg=#00afff,bg=#080808]#{mouse} #[fg=#e4e4e4,bg=#080808]Online: #[fg=#5fff00,bg=#080808]#{online_status} #[fg=#f7931a,bg=#080808] #{kripto} #[fg=#5fff00,bg=#080808]%R #[fg=#e4e4e4,bg=#080808] %a %d %b #[fg=#e4e4e4,bg=#d70000,bold] #{?#{==:#{username},root},!, #{username}} #[fg=#e4e4e4,bg=#d70000,bold]#{?username_ssh, @ #{username_ssh},} #[fg=#080808,bg=#e4e4e4,bold] #{hostname} "
|
||||
tmux_conf_theme_status_right=" #[fg=#00afff,bg=#080808]#{prefix_highlight} #[fg=#00afff,bg=#080808]#{mouse} #[fg=#e4e4e4,bg=#080808]Online: #[fg=#5fff00,bg=#080808]#{online_status} #[fg=#e4e4e4,bg=#080808]#(~/.tmux/scripts/tmux-vpn-status/vpn-status.sh) VPN #[fg=#f7931a,bg=#080808] #{kripto} #[fg=#5fff00,bg=#080808]%R #[fg=#e4e4e4,bg=#080808] %a %d %b #[fg=#e4e4e4,bg=#d70000,bold] #{?#{==:#{username},root},!, #{username}} #[fg=#e4e4e4,bg=#d70000,bold]#{?username_ssh, @ #{username_ssh},} #[fg=#080808,bg=#e4e4e4,bold] #{hostname} "
|
||||
|
||||
# backup - working
|
||||
# tmux_conf_theme_status_right=" #[fg=#00afff,bg=#080808]#{prefix_highlight} #[fg=#00afff,bg=#080808]#{mouse} #[fg=#e4e4e4,bg=#080808]Online: #[fg=#5fff00,bg=#080808]#{online_status} #[fg=#f7931a,bg=#080808] #{kripto} #[fg=#5fff00,bg=#080808]%R #[fg=#e4e4e4,bg=#080808] %a %d %b #[fg=#e4e4e4,bg=#d70000,bold] #{?#{==:#{username},root},!, #{username}} #[fg=#e4e4e4,bg=#d70000,bold]#{?username_ssh, @ #{username_ssh},} #[fg=#080808,bg=#e4e4e4,bold] #{hostname} "
|
||||
#tmux_conf_theme_status_right_attr="bold,bold,bold,bold,bold,bold,bold,bold,bold"
|
||||
|
||||
# tmux_conf_theme_status_right="
|
||||
|
|
@ -634,7 +637,7 @@ set -g @fzf-open-bind 'u'
|
|||
# bind-key -T prefix u run-shell '~/.tmux/plugins/tmux-fzf-open/setup.tmux'
|
||||
set -g @fzf-open-open-cmd "brave-browser"
|
||||
|
||||
|
||||
set -g status-right "#(~/.tmux/scripts/tmux-vpn-status/vpn-status.sh) | %H:%M %d-%b-%y"
|
||||
|
||||
# ---- End My Customizations ----
|
||||
##################################
|
||||
|
|
|
|||
39
tmux/.tmux/scripts/tmux-vpn-status/vpn-status.sh
Executable file
39
tmux/.tmux/scripts/tmux-vpn-status/vpn-status.sh
Executable file
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
# VPN status for tmux statusline
|
||||
# Check for VPN connection via multiple methods:
|
||||
# 1. ProtonVPN GUI (uses NetworkManager with pvpn- prefix or WireGuard)
|
||||
# 2. Old WireGuard config (protonvpn interface)
|
||||
# 3. Any active VPN connection via NetworkManager
|
||||
|
||||
# Method 1: Check for ProtonVPN GUI WireGuard interface (pvpn-* or proton*)
|
||||
if ip link 2>/dev/null | grep -qE "pvpn-|proton" | grep -qE "state UP"; then
|
||||
echo "🛡️"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Method 2: Check for any wireguard interface that's UP
|
||||
if ip link 2>/dev/null | grep -E "wireguard|wg[0-9]+" | grep -qE "state UP"; then
|
||||
echo "🛡️"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Method 3: Check NetworkManager for active VPN connections
|
||||
if nmcli -t -f TYPE,STATE connection show --active 2>/dev/null | grep -qE "vpn:activated|wireguard:activated"; then
|
||||
echo "🛡️"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Method 4: Check old protonvpn interface (legacy)
|
||||
if ip link show protonvpn 2>/dev/null | grep -qE "<.*UP.*>"; then
|
||||
echo "🛡️"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Method 5: Check if default route goes through a VPN-like interface
|
||||
if ip route show default 2>/dev/null | grep -qE "pvpn-|proton|wg[0-9]+|tun[0-9]+"; then
|
||||
echo "🛡️"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# No VPN detected
|
||||
echo "❌"
|
||||
8
tmux/.tmux/scripts/vpn-status-interactive.sh
Executable file
8
tmux/.tmux/scripts/vpn-status-interactive.sh
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
# Alternative: Check via ip addr instead of wg show (no sudo needed)
|
||||
|
||||
if ip addr show protonvpn 2>/dev/null | grep -q "state UP"; then
|
||||
echo "🛡️"
|
||||
else
|
||||
echo "❌"
|
||||
fi
|
||||
9
tmux/.tmux/scripts/vpn-status.sh
Executable file
9
tmux/.tmux/scripts/vpn-status.sh
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
# VPN status for tmux statusline
|
||||
# Check WireGuard ProtonVPN connection via ip link (no sudo needed)
|
||||
|
||||
if ip link show protonvpn 2>/dev/null | grep -qE "<.*UP.*>"; then
|
||||
echo "🛡️"
|
||||
else
|
||||
echo "❌"
|
||||
fi
|
||||
Binary file not shown.
|
|
@ -2,260 +2,253 @@
|
|||
"com.github.igorvaryvoda.ulauncher-perplexity": {
|
||||
"id": "com.github.igorvaryvoda.ulauncher-perplexity",
|
||||
"url": "https://github.com/IgorVaryvoda/ulauncher-perplexity",
|
||||
"updated_at": "2025-03-16T12:59:43.265383",
|
||||
"updated_at": "2025-11-12T01:01:14.411833",
|
||||
"last_commit": "7320f7b1499417ad31d920688e600b80d8454f6d",
|
||||
"last_commit_time": "2024-12-10T15:31:41"
|
||||
},
|
||||
"com.github.iboyperson.ulauncher-system": {
|
||||
"id": "com.github.iboyperson.ulauncher-system",
|
||||
"url": "https://github.com/iboyperson/ulauncher-system",
|
||||
"updated_at": "2025-03-16T13:02:08.080929",
|
||||
"updated_at": "2025-11-12T01:01:16.918329",
|
||||
"last_commit": "7dedd992709fa2297735cddf852404144d4da47c",
|
||||
"last_commit_time": "2023-11-14T16:53:20"
|
||||
},
|
||||
"com.github.mikebarkmin.ulauncher-obsidian": {
|
||||
"id": "com.github.mikebarkmin.ulauncher-obsidian",
|
||||
"url": "https://github.com/mikebarkmin/ulauncher-obsidian",
|
||||
"updated_at": "2025-03-16T13:02:43.173879",
|
||||
"updated_at": "2025-11-12T01:01:18.864415",
|
||||
"last_commit": "a419cdc5e73453e4b284bb4905448ca60e4a3864",
|
||||
"last_commit_time": "2023-09-12T10:42:25"
|
||||
},
|
||||
"com.github.ulauncher.ulauncher-timer": {
|
||||
"id": "com.github.ulauncher.ulauncher-timer",
|
||||
"url": "https://github.com/ulauncher/ulauncher-timer",
|
||||
"updated_at": "2025-03-16T13:02:56.333635",
|
||||
"updated_at": "2025-11-12T01:01:20.875288",
|
||||
"last_commit": "2d3fe82fe1e38670e6eb8887cd2a4b4d1c2baa79",
|
||||
"last_commit_time": "2023-03-25T08:07:41"
|
||||
},
|
||||
"com.github.hillaryychan.ulauncher-fzf": {
|
||||
"id": "com.github.hillaryychan.ulauncher-fzf",
|
||||
"url": "https://github.com/hillaryychan/ulauncher-fzf",
|
||||
"updated_at": "2025-03-16T13:03:21.728964",
|
||||
"last_commit": "e8137dae6448041fc53ae418263501b068857073",
|
||||
"last_commit_time": "2023-05-16T12:35:35"
|
||||
"updated_at": "2025-11-12T01:01:22.765478",
|
||||
"last_commit": "fad638127b2583d64ef3dac3cf3e94508e0b506a",
|
||||
"last_commit_time": "2025-11-10T10:12:48"
|
||||
},
|
||||
"com.github.beajeanm.ulauncher-windows-switcher": {
|
||||
"id": "com.github.beajeanm.ulauncher-windows-switcher",
|
||||
"url": "https://github.com/beajeanm/ulauncher-windows-switcher",
|
||||
"updated_at": "2025-03-16T13:03:57.628011",
|
||||
"updated_at": "2025-11-12T01:21:35.888712",
|
||||
"last_commit": "e746afcd1ae971294f983dadb6ad2c90a730ec39",
|
||||
"last_commit_time": "2022-08-04T22:59:46"
|
||||
},
|
||||
"com.github.nastuzzisamy.ulauncher-youtube-search": {
|
||||
"id": "com.github.nastuzzisamy.ulauncher-youtube-search",
|
||||
"url": "https://github.com/NastuzziSamy/ulauncher-youtube-search",
|
||||
"updated_at": "2025-03-16T13:04:51.043356",
|
||||
"updated_at": "2025-11-12T01:21:37.836629",
|
||||
"last_commit": "fe855811358b2f15ec6ed69ca18e20639874fa28",
|
||||
"last_commit_time": "2021-03-27T11:29:18"
|
||||
},
|
||||
"com.github.luispabon.ulauncher-virtualbox": {
|
||||
"id": "com.github.luispabon.ulauncher-virtualbox",
|
||||
"url": "https://github.com/luispabon/ulauncher-virtualbox",
|
||||
"updated_at": "2025-03-16T13:06:10.014115",
|
||||
"updated_at": "2025-11-12T01:21:41.117924",
|
||||
"last_commit": "d8f495df3c7f41ee8493b207d17f06fc0372c84e",
|
||||
"last_commit_time": "2020-09-23T01:29:15"
|
||||
},
|
||||
"com.github.ralcaidev.ulauncher-extension-list": {
|
||||
"id": "com.github.ralcaidev.ulauncher-extension-list",
|
||||
"url": "https://github.com/ralcaidev/ulauncher-extension-list",
|
||||
"updated_at": "2025-03-16T13:07:24.585415",
|
||||
"updated_at": "2025-11-12T01:21:43.143563",
|
||||
"last_commit": "27d65fae4abc036e37a09792c8244287017dbc73",
|
||||
"last_commit_time": "2022-11-10T16:06:26"
|
||||
},
|
||||
"com.github.brpaz.ulauncher-faker": {
|
||||
"id": "com.github.brpaz.ulauncher-faker",
|
||||
"url": "https://github.com/brpaz/ulauncher-faker",
|
||||
"updated_at": "2025-03-16T13:08:41.037197",
|
||||
"last_commit": "58832c94acc671a9f603ea7fbf5d4405110bb902",
|
||||
"last_commit_time": "2021-12-12T15:46:10"
|
||||
},
|
||||
"com.github.ultiblog.ulauncher-password-generator": {
|
||||
"id": "com.github.ultiblog.ulauncher-password-generator",
|
||||
"url": "https://github.com/Ultiblog/ULauncher-Password-Generator",
|
||||
"updated_at": "2025-03-16T13:56:55.395064",
|
||||
"updated_at": "2025-11-12T01:21:47.471889",
|
||||
"last_commit": "de08e6b3ce1c58e4f2b23321702ba40fa2110f73",
|
||||
"last_commit_time": "2022-11-11T12:05:05"
|
||||
},
|
||||
"com.github.zachatrocity.ulauncher-ollama": {
|
||||
"id": "com.github.zachatrocity.ulauncher-ollama",
|
||||
"url": "https://github.com/zachatrocity/ulauncher-ollama",
|
||||
"updated_at": "2025-05-02T01:42:52.911306",
|
||||
"updated_at": "2025-11-12T01:21:50.721477",
|
||||
"last_commit": "1cb33ac391dc5650c8d1970c30249c159687853f",
|
||||
"last_commit_time": "2024-06-07T05:20:43"
|
||||
},
|
||||
"com.github.pymustafa.ulauncher-shortn": {
|
||||
"id": "com.github.pymustafa.ulauncher-shortn",
|
||||
"url": "https://github.com/PyMustafa/ulauncher-shortn",
|
||||
"updated_at": "2025-05-02T01:43:35.640643",
|
||||
"updated_at": "2025-11-12T01:21:53.738885",
|
||||
"last_commit": "29caf53983cad40a4f28a6d0b743f6ec7fbc4d6b",
|
||||
"last_commit_time": "2024-08-20T13:13:07"
|
||||
},
|
||||
"com.github.singhrobinkumar.ulauncher-brave-profiles": {
|
||||
"id": "com.github.singhrobinkumar.ulauncher-brave-profiles",
|
||||
"url": "https://github.com/SinghRobinKumar/ulauncher-brave-profiles",
|
||||
"updated_at": "2025-05-02T01:47:33.174079",
|
||||
"updated_at": "2025-11-12T01:21:56.178581",
|
||||
"last_commit": "6156a248e086eadc58e5e7445b56b38498120a5a",
|
||||
"last_commit_time": "2023-08-23T05:33:06"
|
||||
},
|
||||
"com.github.devkleber.ulauncher-open-link": {
|
||||
"id": "com.github.devkleber.ulauncher-open-link",
|
||||
"url": "https://github.com/DevKleber/ulauncher-open-link",
|
||||
"updated_at": "2025-05-03T22:04:15.599598",
|
||||
"updated_at": "2025-11-12T01:21:58.809049",
|
||||
"last_commit": "de9b7e6144d974c06a7f218596a2db80b667fd5b",
|
||||
"last_commit_time": "2023-12-29T17:33:50"
|
||||
},
|
||||
"com.github.ahaasler.ulauncher-tmux": {
|
||||
"id": "com.github.ahaasler.ulauncher-tmux",
|
||||
"url": "https://github.com/ahaasler/ulauncher-tmux",
|
||||
"updated_at": "2025-05-03T22:08:36.345314",
|
||||
"updated_at": "2025-11-12T01:22:00.645012",
|
||||
"last_commit": "dd631a2e5a1d8bf2ab21095b43afe068443f02b9",
|
||||
"last_commit_time": "2021-06-05T16:42:59"
|
||||
},
|
||||
"com.github.seqizz.ulauncher-tmux-attach": {
|
||||
"id": "com.github.seqizz.ulauncher-tmux-attach",
|
||||
"url": "https://github.com/seqizz/ulauncher-tmux-attach",
|
||||
"updated_at": "2025-05-03T22:27:52.092854",
|
||||
"updated_at": "2025-11-12T01:22:02.604396",
|
||||
"last_commit": "b6a84559e128ceaa8255d4c08feead8604efecfe",
|
||||
"last_commit_time": "2021-04-14T05:49:52"
|
||||
},
|
||||
"com.github.brpaz.ulauncher-raindrop": {
|
||||
"id": "com.github.brpaz.ulauncher-raindrop",
|
||||
"url": "https://github.com/brpaz/ulauncher-raindrop",
|
||||
"updated_at": "2025-05-03T22:36:56.580319",
|
||||
"updated_at": "2025-11-12T01:22:04.918216",
|
||||
"last_commit": "b5bdbc9915930a1da320728696576462737cb812",
|
||||
"last_commit_time": "2022-10-15T09:38:30"
|
||||
},
|
||||
"com.github.kalligator.ulauncher-gemini-direct": {
|
||||
"id": "com.github.kalligator.ulauncher-gemini-direct",
|
||||
"url": "https://github.com/kalligator/ulauncher-gemini-direct",
|
||||
"updated_at": "2025-05-04T00:13:05.568104",
|
||||
"last_commit": "b0d8986644e2f28bdf4f9fa492675118fecf322f",
|
||||
"last_commit_time": "2025-04-28T18:20:32"
|
||||
"updated_at": "2025-11-12T01:22:07.504573",
|
||||
"last_commit": "dd44c7032e60764f9da393427339d922170b2e1b",
|
||||
"last_commit_time": "2025-09-20T12:18:05"
|
||||
},
|
||||
"com.github.seofernando25.ulauncher-gpt": {
|
||||
"id": "com.github.seofernando25.ulauncher-gpt",
|
||||
"url": "https://github.com/SeoFernando25/ulauncher-gpt",
|
||||
"updated_at": "2025-05-04T00:20:50.025070",
|
||||
"last_commit": "2d51ff40fcbd501e64034f3c7be1cd35abc47d6b",
|
||||
"last_commit_time": "2023-04-14T22:57:18"
|
||||
"updated_at": "2025-11-12T01:22:09.658181",
|
||||
"last_commit": "3b0f87aa58ad0d2bcb46011bc6fa0e75e912be37",
|
||||
"last_commit_time": "2025-09-16T01:43:11"
|
||||
},
|
||||
"com.github.tuanpham-dev.ulauncher-better-calculator": {
|
||||
"id": "com.github.tuanpham-dev.ulauncher-better-calculator",
|
||||
"url": "https://github.com/tuanpham-dev/ulauncher-better-calculator",
|
||||
"updated_at": "2025-10-17T00:21:49.364925",
|
||||
"updated_at": "2025-11-12T01:22:11.537539",
|
||||
"last_commit": "48f0592a2a8ac9ec2589a06b562141e1a2d9b25f",
|
||||
"last_commit_time": "2023-04-24T13:55:30"
|
||||
},
|
||||
"com.github.troublor.ulauncher-numconverter": {
|
||||
"id": "com.github.troublor.ulauncher-numconverter",
|
||||
"url": "https://github.com/Troublor/ulauncher-numconverter",
|
||||
"updated_at": "2025-05-04T00:25:02.819859",
|
||||
"updated_at": "2025-11-12T01:22:13.535666",
|
||||
"last_commit": "98d5e01d82671eedc98c000053980ae7ceb4ea28",
|
||||
"last_commit_time": "2021-09-29T13:19:39"
|
||||
},
|
||||
"com.github.tchar.ulauncher-albert-calculate-anything": {
|
||||
"id": "com.github.tchar.ulauncher-albert-calculate-anything",
|
||||
"url": "https://github.com/tchar/ulauncher-albert-calculate-anything",
|
||||
"updated_at": "2025-05-04T01:31:51.665044",
|
||||
"updated_at": "2025-11-12T01:22:16.271370",
|
||||
"last_commit": "037965a44e6f6f496e7ad71ec1651b9edfcde32d",
|
||||
"last_commit_time": "2024-05-29T21:57:26"
|
||||
},
|
||||
"com.github.frdrk.ulauncher-dead-simple-convert": {
|
||||
"id": "com.github.frdrk.ulauncher-dead-simple-convert",
|
||||
"url": "https://github.com/frdrk/ulauncher-dead-simple-convert",
|
||||
"updated_at": "2025-05-04T01:10:44.910294",
|
||||
"updated_at": "2025-11-12T01:22:18.489577",
|
||||
"last_commit": "c0821e83b6c1d5a4984ef72c82e54eb21d0149ac",
|
||||
"last_commit_time": "2023-10-03T11:40:03"
|
||||
},
|
||||
"com.github.sergius02.ulauncher-colorconverter": {
|
||||
"id": "com.github.sergius02.ulauncher-colorconverter",
|
||||
"url": "https://github.com/sergius02/ulauncher-colorconverter",
|
||||
"updated_at": "2025-05-04T01:15:30.973722",
|
||||
"updated_at": "2025-11-12T01:22:20.830905",
|
||||
"last_commit": "2d5e2bc17e89f1f1dc561f73e68ea574e0be844a",
|
||||
"last_commit_time": "2020-12-06T20:59:43"
|
||||
},
|
||||
"com.github.kleber-swf.ulauncher-toggle-dnd": {
|
||||
"id": "com.github.kleber-swf.ulauncher-toggle-dnd",
|
||||
"url": "https://github.com/kleber-swf/ulauncher-toggle-dnd",
|
||||
"updated_at": "2025-05-04T01:16:29.564322",
|
||||
"updated_at": "2025-11-12T01:22:23.128706",
|
||||
"last_commit": "e2a14ba6eb7eb6771045e103a6f351585cdb8652",
|
||||
"last_commit_time": "2022-02-10T13:22:17"
|
||||
},
|
||||
"com.github.nastuzzisamy.ulauncher-translate": {
|
||||
"id": "com.github.nastuzzisamy.ulauncher-translate",
|
||||
"url": "https://github.com/NastuzziSamy/ulauncher-translate",
|
||||
"updated_at": "2025-05-04T01:18:38.337064",
|
||||
"updated_at": "2025-11-12T01:22:25.086208",
|
||||
"last_commit": "f16b6eed05923e604bacafefdc40b7b7290e21da",
|
||||
"last_commit_time": "2021-03-27T11:43:48"
|
||||
},
|
||||
"com.github.behrensger.thesaurus_cc_ulauncher": {
|
||||
"id": "com.github.behrensger.thesaurus_cc_ulauncher",
|
||||
"url": "https://github.com/behrensger/thesaurus_cc_ulauncher",
|
||||
"updated_at": "2025-05-04T01:19:43.069288",
|
||||
"updated_at": "2025-11-12T01:22:27.244248",
|
||||
"last_commit": "375575ce2790fbe40cdfae8fa7b471d06ead683a",
|
||||
"last_commit_time": "2020-12-22T20:33:18"
|
||||
},
|
||||
"com.github.randomcharacter.ulauncher-meet": {
|
||||
"id": "com.github.randomcharacter.ulauncher-meet",
|
||||
"url": "https://github.com/randomCharacter/ulauncher-meet",
|
||||
"updated_at": "2025-05-04T01:29:35.336482",
|
||||
"updated_at": "2025-11-12T01:24:39.272128",
|
||||
"last_commit": "f2fe055b6e21e15ea4c65918a6f499d61d4cf4b0",
|
||||
"last_commit_time": "2021-02-26T22:04:21"
|
||||
},
|
||||
"com.github.fajtak.ulauncher-weather": {
|
||||
"id": "com.github.fajtak.ulauncher-weather",
|
||||
"url": "https://github.com/fajtak/ulauncher-weather",
|
||||
"updated_at": "2025-05-04T01:30:14.933475",
|
||||
"updated_at": "2025-11-12T01:24:41.707690",
|
||||
"last_commit": "996da704e505776753f6340755d20f03075c2be8",
|
||||
"last_commit_time": "2022-04-05T18:23:30"
|
||||
},
|
||||
"com.github.dhelmr.ulauncher-tldr": {
|
||||
"id": "com.github.dhelmr.ulauncher-tldr",
|
||||
"url": "https://github.com/dhelmr/ulauncher-tldr",
|
||||
"updated_at": "2025-05-04T01:32:34.092229",
|
||||
"updated_at": "2025-11-12T01:24:44.347536",
|
||||
"last_commit": "2e5904451bf89dfa155280dfb6fa3d45ed4cab4c",
|
||||
"last_commit_time": "2023-07-29T11:06:30"
|
||||
},
|
||||
"com.github.carlosmape.ulauncher-calendar": {
|
||||
"id": "com.github.carlosmape.ulauncher-calendar",
|
||||
"url": "https://github.com/Carlosmape/ulauncher-calendar",
|
||||
"updated_at": "2025-05-04T01:35:56.785814",
|
||||
"updated_at": "2025-11-12T01:24:46.996590",
|
||||
"last_commit": "36e6d2f9b238a7723525522bd373a22626cf3be5",
|
||||
"last_commit_time": "2022-10-31T15:47:41"
|
||||
},
|
||||
"com.github.lighttigerxiv.ulauncher-terminal-runner-extension": {
|
||||
"id": "com.github.lighttigerxiv.ulauncher-terminal-runner-extension",
|
||||
"url": "https://github.com/lighttigerXIV/ulauncher-terminal-runner-extension/",
|
||||
"updated_at": "2025-05-04T01:36:37.619709",
|
||||
"updated_at": "2025-11-12T01:24:50.236053",
|
||||
"last_commit": "d6bc2157e5c0ef2f812e3051ddde334c7b485c2e",
|
||||
"last_commit_time": "2023-05-02T22:50:12"
|
||||
},
|
||||
"com.github.ulauncher.ulauncher-hash": {
|
||||
"id": "com.github.ulauncher.ulauncher-hash",
|
||||
"url": "https://github.com/Ulauncher/ulauncher-hash",
|
||||
"updated_at": "2025-05-04T01:40:49.697043",
|
||||
"updated_at": "2025-11-12T01:24:52.451555",
|
||||
"last_commit": "237dbb3610ff04df993c3223b12df42cb7df221f",
|
||||
"last_commit_time": "2022-09-04T14:29:55"
|
||||
},
|
||||
"com.github.rayvega96.ulauncher-amazon-search": {
|
||||
"id": "com.github.rayvega96.ulauncher-amazon-search",
|
||||
"url": "https://github.com/rayvega96/ulauncher-amazon-search",
|
||||
"updated_at": "2025-05-04T01:41:33.787276",
|
||||
"updated_at": "2025-11-12T01:24:54.702757",
|
||||
"last_commit": "045551d899cf42bc99c85670bdf8e299e128275b",
|
||||
"last_commit_time": "2022-12-03T17:14:47"
|
||||
},
|
||||
"com.github.pegoku.ulauncher-brave": {
|
||||
"id": "com.github.pegoku.ulauncher-brave",
|
||||
"url": "https://github.com/Pegoku/ulauncher-brave",
|
||||
"updated_at": "2025-05-04T01:42:25.744568",
|
||||
"updated_at": "2025-11-12T01:24:56.703470",
|
||||
"last_commit": "3166aad57ff0252271c0bfe72a0a2d37f37e3b0d",
|
||||
"last_commit_time": "2022-11-05T15:40:52"
|
||||
},
|
||||
"com.github.pegoku.ulauncher-searx": {
|
||||
"id": "com.github.pegoku.ulauncher-searx",
|
||||
"url": "https://github.com/Pegoku/ulauncher-searx",
|
||||
"updated_at": "2025-05-04T01:42:41.604940",
|
||||
"last_commit": "9047d246736a7a4cdf6c843cb26c987ccce36aae",
|
||||
"last_commit_time": "2023-03-18T15:53:26"
|
||||
"com.github.brpaz.ulauncher-faker": {
|
||||
"id": "com.github.brpaz.ulauncher-faker",
|
||||
"url": "https://github.com/brpaz/ulauncher-faker",
|
||||
"updated_at": "2025-11-29T21:50:46.935500",
|
||||
"last_commit": "58832c94acc671a9f603ea7fbf5d4405110bb902",
|
||||
"last_commit_time": "2021-12-12T15:46:10"
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
"clear-previous-query": true,
|
||||
"disable-desktop-filters": false,
|
||||
"grab-mouse-pointer": false,
|
||||
"hotkey-show-app": "<Primary>space",
|
||||
"hotkey-show-app": "",
|
||||
"render-on-screen": "mouse-pointer-monitor",
|
||||
"show-indicator-icon": true,
|
||||
"show-recent-apps": "0",
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
"name": "Perplexity",
|
||||
"keyword": "p",
|
||||
"cmd": "https://www.perplexity.ai/search?q=%s",
|
||||
"icon": "https://www.perplexity.ai/favicon.ico",
|
||||
"icon": "~/Pictures/Logos/Perplexity-Brand-Assets/Boundless-Book/Pure White.svg",
|
||||
"is_default_search": true,
|
||||
"run_without_argument": false,
|
||||
"added": 1742151030.0001
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
"name": "Ghostty Terminal",
|
||||
"keyword": "g",
|
||||
"cmd": "ghostty",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/utilities-terminal.png",
|
||||
"icon": "/usr/share/icons/hicolor/128x128/apps/com.mitchellh.ghostty.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1729026000.0001
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
"name": "Zen Browser",
|
||||
"keyword": "z",
|
||||
"cmd": "zen-browser",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/web-browser.png",
|
||||
"icon": "~/.tarball-installations/zen/browser/chrome/icons/default/default128.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1729026000.0002
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
"name": "n8n Workflows",
|
||||
"keyword": "n8n",
|
||||
"cmd": "xdg-open https://n8n.djeditech.com",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/web-browser.png",
|
||||
"icon": "~/Pictures/Logos/n8n.svg",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1729026000.0004
|
||||
|
|
@ -74,7 +74,7 @@
|
|||
"name": "LazyDocker",
|
||||
"keyword": "d",
|
||||
"cmd": "ghostty -e lazydocker",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/utilities-terminal.png",
|
||||
"icon": "~/Pictures/Logos/docker.svg",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1729026000.0005
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
"name": "ProtonVPN Connect",
|
||||
"keyword": "vpn",
|
||||
"cmd": "ghostty -e 'protonvpn-cli c US-CO#246'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/utilities-terminal.png",
|
||||
"icon": "~/Pictures/Logos/protonvpn-logo.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1729026000.0003
|
||||
|
|
@ -114,7 +114,7 @@
|
|||
"name": "GitHub Search",
|
||||
"keyword": "gh",
|
||||
"cmd": "https://github.com/search?q=%s&type=repositories",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/web-browser.png",
|
||||
"icon": "~/Pictures/Logos/github-extracted/github-mark/github-mark.png",
|
||||
"is_default_search": true,
|
||||
"run_without_argument": false,
|
||||
"added": 1760740000.0001
|
||||
|
|
@ -124,7 +124,7 @@
|
|||
"name": "LazyGit",
|
||||
"keyword": "lg",
|
||||
"cmd": "ghostty -e bash -c 'echo n | lazygit 2>/dev/null || lazygit'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/utilities-terminal.png",
|
||||
"icon": "~/Pictures/Logos/github-extracted/github-mark/github-mark.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760740000.0002
|
||||
|
|
@ -134,7 +134,7 @@
|
|||
"name": "Navi Cheatsheets",
|
||||
"keyword": "navi",
|
||||
"cmd": "ghostty -e navi",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/utilities-terminal.png",
|
||||
"icon": "~/Pictures/Logos/navi-icon.svg",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760741000.0001
|
||||
|
|
@ -144,7 +144,7 @@
|
|||
"name": "Yazi File Manager",
|
||||
"keyword": "yazi",
|
||||
"cmd": "ghostty -e yazi",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/system-file-manager.png",
|
||||
"icon": "~/Pictures/Logos/yazi-logo.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760741000.0002
|
||||
|
|
@ -154,7 +154,7 @@
|
|||
"name": "Yazi File Manager (short)",
|
||||
"keyword": "yz",
|
||||
"cmd": "ghostty -e yazi",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/system-file-manager.png",
|
||||
"icon": "~/Pictures/Logos/yazi-logo.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760741000.0003
|
||||
|
|
@ -234,7 +234,7 @@
|
|||
"name": "Hugo Server",
|
||||
"keyword": "hugo",
|
||||
"cmd": "ghostty -e bash -c 'cd /home/e/github/hugo2/hugoplate && echo \"Starting Hugo server at http://localhost:1313\" && echo \"Press Ctrl+C to stop\" && hugo server --bind 0.0.0.0 --baseURL http://localhost:1313 -D; exec bash'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/web-browser.png",
|
||||
"icon": "~/Pictures/Logos/hugo-logo-wide.svg",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760743000.0005
|
||||
|
|
@ -244,7 +244,7 @@
|
|||
"name": "Download YouTube Video",
|
||||
"keyword": "dl",
|
||||
"cmd": "ghostty -e bash -c 'cd ~/Videos/Downloaded && yt-dlp \"%s\" && echo && echo \"Download complete! Saved to ~/Videos/Downloaded\" && echo \"Press any key to exit...\" && read -r _key; exec bash'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/folder-download.png",
|
||||
"icon": "~/Pictures/Logos/youtube-color-svgrepo-com.svg",
|
||||
"is_default_search": true,
|
||||
"run_without_argument": false,
|
||||
"added": 1760743000.0006
|
||||
|
|
@ -254,7 +254,7 @@
|
|||
"name": "Obsidian Fuzzy Search",
|
||||
"keyword": "o",
|
||||
"cmd": "ghostty -e zsh -c 'result=$(rg -l \"%s\" ~/Documents/Obsidian-Fabric ~/Documents/Kamrui_Obsidian --type md 2>/dev/null | fzf --header=\"Select note to open\" --preview=\"bat --color=always --style=numbers {}\"); [ -n \"$result\" ] && xdg-open \"$result\"'",
|
||||
"icon": "/usr/share/icons/hicolor/scalable/apps/obsidian-icon.png",
|
||||
"icon": "/usr/share/icons/hicolor/scalable/apps/obsidian-icon.svg",
|
||||
"is_default_search": true,
|
||||
"run_without_argument": false,
|
||||
"added": 1760744000.0002
|
||||
|
|
@ -284,7 +284,7 @@
|
|||
"name": "WiFi Network Manager",
|
||||
"keyword": "wifi",
|
||||
"cmd": "ghostty -e nmtui",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/network-wireless.png",
|
||||
"icon": "~/Pictures/Logos/wifi-1018-svgrepo-com.svg",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760744000.0005
|
||||
|
|
@ -294,7 +294,7 @@
|
|||
"name": "Bluetooth Manager",
|
||||
"keyword": "bt",
|
||||
"cmd": "ghostty -e bluetoothctl",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/bluetooth.png",
|
||||
"icon": "~/Pictures/Logos/Bluetooth.svg",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760744000.0006
|
||||
|
|
@ -311,10 +311,10 @@
|
|||
},
|
||||
"d2433c00-43fd-424c-8e82-6f3d132708f2": {
|
||||
"id": "d2433c00-43fd-424c-8e82-6f3d132708f2",
|
||||
"name": "weather-test",
|
||||
"name": "Weather Report",
|
||||
"keyword": "w",
|
||||
"cmd": "ghostty -e '/home/e/.bun/bin/bun /home/e/.claude/commands/weather-report.md && read \"Press Enter to exit...\"'",
|
||||
"icon": null,
|
||||
"cmd": "ghostty -e '/home/e/.claude/commands/weather-report.md && read \"Press Enter to exit...\"'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/weather-clear.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1760845029.8644536
|
||||
|
|
@ -323,20 +323,50 @@
|
|||
"id": "17ff09ab-cd33-4900-9626-e18f81647d8f",
|
||||
"name": "Progress Bar",
|
||||
"keyword": "pb",
|
||||
"cmd": "ghostty -e '/home/e/.bun/bin/bun /home/e/.claude/commands/progress.md && read \"Press Enter to exit...\"'",
|
||||
"icon": null,
|
||||
"cmd": "ghostty -e '/home/e/.claude/commands/progress.md && read \"Press Enter to exit...\"'",
|
||||
"icon": "~/Pictures/Logos/progress-two-svgrepo-com.svg",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1761198481.905308
|
||||
},
|
||||
"57fbe6b9-7da4-4e31-8d94-7128d4a071e4": {
|
||||
"id": "57fbe6b9-7da4-4e31-8d94-7128d4a071e4",
|
||||
"name": "SimpleX",
|
||||
"keyword": "simplex",
|
||||
"cmd": "ghostty -e 'nohup simplex &'",
|
||||
"icon": null,
|
||||
"genpass-quicklink": {
|
||||
"id": "genpass-quicklink",
|
||||
"name": "Generate Password",
|
||||
"keyword": "genpass",
|
||||
"cmd": "bash -c 'openssl rand -base64 32 | tr -d \"\\n\" | xclip -selection clipboard && notify-send \"Password Generated\" \"32-character password copied to clipboard\"'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/dialog-password.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1762414155.4334407
|
||||
"added": 1762587447.0752816
|
||||
},
|
||||
"tabman-browse-quicklink": {
|
||||
"id": "tabman-browse-quicklink",
|
||||
"name": "Browse Saved Tabs (Fuzzy)",
|
||||
"keyword": "tabs",
|
||||
"cmd": "ghostty -e tabman browse",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/web-browser.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1762587977.874752
|
||||
},
|
||||
"tabman-recent-quicklink": {
|
||||
"id": "tabman-recent-quicklink",
|
||||
"name": "Recent Tabs (24h)",
|
||||
"keyword": "tabnow",
|
||||
"cmd": "ghostty -e 'tabman recent 24 && read \"Press Enter to exit...\"'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/web-browser.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1762587977.8747525
|
||||
},
|
||||
"tabman-dashboard-quicklink": {
|
||||
"id": "tabman-dashboard-quicklink",
|
||||
"name": "Tab Analytics Dashboard",
|
||||
"keyword": "tabdash",
|
||||
"cmd": "ghostty -e 'tabman dashboard && read \"Press Enter to exit...\"'",
|
||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/web-browser.png",
|
||||
"is_default_search": false,
|
||||
"run_without_argument": true,
|
||||
"added": 1762587977.8747542
|
||||
}
|
||||
}
|
||||
21
yazi/.config/yazi/flavors/tokyonight-night.yazi/LICENSE
Normal file
21
yazi/.config/yazi/flavors/tokyonight-night.yazi/LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 Kalid Yasin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Kristi Russell
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
36
yazi/.config/yazi/flavors/tokyonight-night.yazi/README.md
Normal file
36
yazi/.config/yazi/flavors/tokyonight-night.yazi/README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<div align="center">
|
||||
<img src="https://github.com/sxyazi/yazi/blob/main/assets/logo.png?raw=true" alt="Yazi logo" width="20%">
|
||||
</div>
|
||||
|
||||
<h3 align="center">
|
||||
Tokyonight Night Flavor for <a href="https://github.com/sxyazi/yazi">Yazi</a>
|
||||
</h3>
|
||||
|
||||
## 👀 Preview
|
||||
|
||||
<img src="preview.png" width="600" />
|
||||
|
||||
## 🎨 Installation
|
||||
|
||||
```sh
|
||||
ya pack -a kalidyasin/yazi-flavors:tokyonight-night
|
||||
```
|
||||
|
||||
## ⚙️ Usage
|
||||
|
||||
Set the content of your `theme.toml` to enable it as your _dark_ flavor:
|
||||
|
||||
```toml
|
||||
[flavor]
|
||||
dark = "tokyonight-night"
|
||||
```
|
||||
|
||||
Make sure your `theme.toml` doesn't contain anything other than `[flavor]`, unless you want to override certain styles of this flavor.
|
||||
|
||||
See the [Yazi flavor documentation](https://yazi-rs.github.io/docs/flavors/overview) for more details.
|
||||
|
||||
## 📜 License
|
||||
|
||||
The flavor is MIT-licensed, and the included tmTheme is also MIT-licensed.
|
||||
|
||||
Check the [LICENSE](LICENSE) and [LICENSE-tmtheme](LICENSE-tmtheme) file for more details.
|
||||
212
yazi/.config/yazi/flavors/tokyonight-night.yazi/flavor.toml
Normal file
212
yazi/.config/yazi/flavors/tokyonight-night.yazi/flavor.toml
Normal file
|
|
@ -0,0 +1,212 @@
|
|||
# vim:fileencoding=utf-8:foldmethod=marker
|
||||
|
||||
# : Manager {{{
|
||||
|
||||
[manager]
|
||||
cwd = { fg = "#a9b1d6", italic = true }
|
||||
|
||||
# Hovered
|
||||
hovered = { bg = "#292e42" }
|
||||
preview_hovered = { bg = "#292e42" }
|
||||
|
||||
# Find
|
||||
find_keyword = { fg = "#16161e", bg = "#ff9e64", bold = true }
|
||||
find_position = { fg = "#0db9d7", bg = "#192b38", bold = true }
|
||||
|
||||
# Marker
|
||||
marker_copied = { fg = "#73daca", bg = "#73daca" }
|
||||
marker_cut = { fg = "#f7768e", bg = "#f7768e" }
|
||||
marker_marked = { fg = "#bb9af7", bg = "#bb9af7" }
|
||||
marker_selected = { fg = "#7aa2f7", bg = "#7aa2f7" }
|
||||
|
||||
# Tab
|
||||
tab_active = { fg = "#c0caf5", bg = "#292e42" }
|
||||
tab_inactive = { fg = "#3b4261", bg = "#1a1b26" }
|
||||
tab_width = 1
|
||||
|
||||
# Count
|
||||
count_copied = { fg = "#c0caf5", bg = "#41a6b5" }
|
||||
count_cut = { fg = "#c0caf5", bg = "#db4b4b" }
|
||||
count_selected = { fg = "#c0caf5", bg = "#3d59a1" }
|
||||
|
||||
# Border
|
||||
border_symbol = "│"
|
||||
border_style = { fg = "#27a1b9" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Mode {{{
|
||||
|
||||
[mode]
|
||||
normal_main = { fg = "#15161e", bg = "#7aa2f7", bold = true }
|
||||
normal_alt = { fg = "#7aa2f7", bg = "#3b4261" }
|
||||
|
||||
select_main = { fg = "#15161e", bg = "#bb9af7", bold = true }
|
||||
select_alt = { fg = "#bb9af7", bg = "#3b4261" }
|
||||
|
||||
unset_main = { fg = "#15161e", bg = "#9d7cd8", bold = true }
|
||||
unset_alt = { fg = "#9d7cd8", bg = "#3b4261" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Status bar {{{
|
||||
|
||||
[status]
|
||||
separator_open = ""
|
||||
separator_close = ""
|
||||
|
||||
# Progress
|
||||
progress_label = { fg = "#a9b1d6", bold = true }
|
||||
progress_normal = { fg = "#1a1b26" }
|
||||
progress_error = { fg = "#f7768e" }
|
||||
|
||||
# Permissions
|
||||
perm_type = { fg = "#7aa2f7" }
|
||||
perm_read = { fg = "#e0af68" }
|
||||
perm_write = { fg = "#f7768e" }
|
||||
perm_exec = { fg = "#9ece6a" }
|
||||
perm_sep = { fg = "#414868" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Pick {{{
|
||||
|
||||
[pick]
|
||||
border = { fg = "#27a1b9" }
|
||||
active = { fg = "#c0caf5", bg = "#283457" }
|
||||
inactive = { fg = "#c0caf5" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Input {{{
|
||||
|
||||
[input]
|
||||
border = { fg = "#0db9d7" }
|
||||
title = { fg = "#0db9d7" }
|
||||
value = { fg = "#9d7cd8" }
|
||||
selected = { bg = "#283457" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Completion {{{
|
||||
|
||||
[completion]
|
||||
border = { fg = "#0db9d7" }
|
||||
active = { fg = "#c0caf5", bg = "#283457" }
|
||||
inactive = { fg = "#c0caf5" }
|
||||
|
||||
icon_file = ""
|
||||
icon_folder = ""
|
||||
icon_command = ""
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Tasks {{{
|
||||
|
||||
[tasks]
|
||||
border = { fg = "#27a1b9" }
|
||||
title = { fg = "#27a1b9" }
|
||||
hovered = { fg = "#c0caf5", bg = "#283457" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Which {{{
|
||||
|
||||
[which]
|
||||
cols = 3
|
||||
mask = { bg = "#16161e" }
|
||||
cand = { fg = "#7dcfff" }
|
||||
rest = { fg = "#7aa2f7" }
|
||||
desc = { fg = "#bb9af7" }
|
||||
separator = " ➜ "
|
||||
separator_style = { fg = "#565f89" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Confirm {{{
|
||||
|
||||
[confirm]
|
||||
border = { fg = "#0db9d7" }
|
||||
title = { fg = "#27a1b9" }
|
||||
content = {}
|
||||
list = {}
|
||||
btn_yes = { bg = "#283457" }
|
||||
btn_no = {}
|
||||
btn_labels = [ " [Y]es ", " (N)o " ]
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Spot {{{
|
||||
|
||||
[spot]
|
||||
border = { fg = "#27a1b9" }
|
||||
title = { fg = "#27a1b9" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Notify {{{
|
||||
|
||||
[notify]
|
||||
title_info = { fg = "#0db9d7" }
|
||||
title_warn = { fg = "#e0af68" }
|
||||
title_error = { fg = "#db4b4b" }
|
||||
|
||||
icon_error = ""
|
||||
icon_warn = ""
|
||||
icon_info = ""
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : Help {{{
|
||||
|
||||
[help]
|
||||
on = { fg = "#9ece6a" }
|
||||
run = { fg = "#bb9af7" }
|
||||
hovered = { bg = "#292e42" }
|
||||
footer = { fg = "#c0caf5", bg = "#1a1b26" }
|
||||
|
||||
# : }}}
|
||||
|
||||
|
||||
# : File-specific styles {{{
|
||||
|
||||
[filetype]
|
||||
|
||||
rules = [
|
||||
# Images
|
||||
{ mime = "image/*", fg = "#e0af68" },
|
||||
|
||||
# Media
|
||||
{ mime = "{audio,video}/*", fg = "#bb9af7" },
|
||||
|
||||
# Archives
|
||||
{ mime = "application/*zip", fg = "#f7768e" },
|
||||
{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f7768e" },
|
||||
|
||||
# Documents
|
||||
{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#7dcfff" },
|
||||
|
||||
# Empty files
|
||||
# { mime = "inode/x-empty", fg = "#f7768e" },
|
||||
|
||||
# Special files
|
||||
{ name = "*", is = "orphan", bg = "#f7768e" },
|
||||
{ name = "*", is = "exec" , fg = "#9ece6a" },
|
||||
|
||||
# Fallback
|
||||
{ name = "*/", fg = "#7aa2f7" }
|
||||
]
|
||||
|
||||
# : }}}
|
||||
|
||||
BIN
yazi/.config/yazi/flavors/tokyonight-night.yazi/preview.png
Normal file
BIN
yazi/.config/yazi/flavors/tokyonight-night.yazi/preview.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 585 KiB |
1329
yazi/.config/yazi/flavors/tokyonight-night.yazi/tmtheme.xml
Normal file
1329
yazi/.config/yazi/flavors/tokyonight-night.yazi/tmtheme.xml
Normal file
File diff suppressed because it is too large
Load diff
7
yazi/.config/yazi/package.toml
Normal file
7
yazi/.config/yazi/package.toml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
[plugin]
|
||||
deps = []
|
||||
|
||||
[[flavor.deps]]
|
||||
use = "kalidyasin/yazi-flavors:tokyonight-night"
|
||||
rev = "92a09a6"
|
||||
hash = "845c5ee33e147b1a57f48728e42600ee"
|
||||
69
zsh/.aliases
69
zsh/.aliases
|
|
@ -44,6 +44,10 @@ alias S='sudo env PATH="$PATH"'
|
|||
alias U='pipx upgrade-all' # Update all pipx packages
|
||||
alias P='pipx list' # List pipx packages
|
||||
|
||||
# --- GUI Applications (background + disown) ---
|
||||
alias nemo='nemo . > /dev/null 2>&1 & disown'
|
||||
alias hugo-serve='hugo server --bind 0.0.0.0 --baseURL http://localhost:1313 -D > /dev/null 2>&1 & disown'
|
||||
|
||||
# --- OpenCode ---
|
||||
|
||||
ide() {
|
||||
|
|
@ -239,9 +243,11 @@ fi
|
|||
alias t='task'
|
||||
alias tl='task list'
|
||||
alias twa='task add'
|
||||
tm() {
|
||||
task modify
|
||||
}
|
||||
# tm() {
|
||||
# task modify
|
||||
# }
|
||||
# Commented out: conflicts with TabMan alias at line 731
|
||||
# Use 'task modify' directly or create 'tmod' alias if needed
|
||||
alias tb='task burndown.daily'
|
||||
|
||||
# ----------------------------
|
||||
|
|
@ -433,6 +439,7 @@ alias evening='redshift -O 3500 -P && echo "🌅 Evening mode activated (3500K)"
|
|||
|
||||
# WhisperTux quick launch aliases
|
||||
alias wt='systemctl --user start whispertux'
|
||||
alias wtr='systemctl --user restart whispertux'
|
||||
alias wt-stop='systemctl --user stop whispertux'
|
||||
alias wt-status='systemctl --user status whispertux'
|
||||
alias wt-log='journalctl --user -u whispertux -f'
|
||||
|
|
@ -679,3 +686,59 @@ msfl() {
|
|||
fi
|
||||
msfconsole -r "$HOME/scripts/multi_handler.rc"
|
||||
}
|
||||
|
||||
# ================================================================
|
||||
# System Backup Workflow
|
||||
# ================================================================
|
||||
# Full system backup to encrypted volume before major OS changes
|
||||
#
|
||||
# Usage:
|
||||
# 1. Mount encrypted volume:
|
||||
# sudo veracrypt -t <vault-path> /mnt/veracrypt1
|
||||
# 2. Run backup:
|
||||
# run-backup
|
||||
# 3. Unmount when complete:
|
||||
# sudo veracrypt -t -d /mnt/veracrypt1
|
||||
#
|
||||
# Notes:
|
||||
# - Uses encrypted storage (VeraCrypt) for data at rest
|
||||
# - Backup script is in ~/.claude/context/personal/scripts/
|
||||
# - Logs to /var/log/system-backup.log
|
||||
# - For low /tmp space, set TMPDIR before mounting:
|
||||
# mkdir -p /path/to/temp && sudo env TMPDIR=/path/to/temp veracrypt -t ...
|
||||
# ================================================================
|
||||
|
||||
alias run-backup='sudo ~/.claude/context/personal/scripts/full-system-backup.sh /mnt/backup-vault'
|
||||
|
||||
# ================================================================
|
||||
# ProtonVPN Automation - Quick Reference & Documentation
|
||||
#
|
||||
# Created: 2025-11-08
|
||||
#
|
||||
# Quick reference for VPN server curation and automation system.
|
||||
# See full docs: ~/.claude/skills/app-troubleshooting/SKILL.md (lines 2130-2369)
|
||||
#
|
||||
# Common commands:
|
||||
# proton-connect-colorado - Connect to random top-quality server
|
||||
# test-vpn-quality - Test current connection quality
|
||||
# proton-rank-servers 20 - View top 20 servers by quality
|
||||
# proton-discover-servers 1 50 - Discover new servers
|
||||
# ================================================================
|
||||
|
||||
alias vpn-help='bat ~/.local/share/doc/protonvpn-automation-quickref.md 2>/dev/null || cat ~/.local/share/doc/protonvpn-automation-quickref.md'
|
||||
|
||||
|
||||
# TabMan - Browser tab manager
|
||||
alias tabman="bun ~/github/tabman/index.ts"
|
||||
alias tm="bun ~/github/tabman/index.ts"
|
||||
|
||||
# Port reference quick access
|
||||
alias lp='cat ~/.claude/context/infrastructure/ports-reference.md | less'
|
||||
|
||||
# Reddit video downloader for Redlib
|
||||
alias reddit-dl="bun /home/e/opt/redlib/reddit-dl.ts"
|
||||
|
||||
alias inotify-check='echo "Instances: $(find /proc/*/fd -lname "anon_inode:inotify" 2>/dev/null | wc -l) / $(cat /proc/sys/fs/inotify/max_user_instances)"'
|
||||
|
||||
# SimpleX Bot - E2EE automation
|
||||
alias simplex='~/opt/simplex-bot/simplex'
|
||||
|
|
|
|||
24
zsh/.exports
24
zsh/.exports
|
|
@ -5,8 +5,13 @@ export PAGER="${PAGER:-most}"
|
|||
# PAI3 Personal AI Infrastructure
|
||||
export PAI_HOME="/home/e"
|
||||
export PAI_DIR="$HOME/.claude" # Added for PAI v0.6.0 compatibility
|
||||
export PATH=$PATH:"$HOME/.claude"
|
||||
export PATH=$PATH:"$HOME/.claude/commands"
|
||||
|
||||
# IMPORTANT: claude/scripts must come FIRST to override system binaries
|
||||
# This allows our Firejail wrappers to be found before /usr/bin
|
||||
export PATH="$HOME/.claude/scripts:$PATH"
|
||||
export PATH="$HOME/.claude:$PATH"
|
||||
export PATH="$HOME/.claude/commands:$PATH"
|
||||
export PATH="$HOME/.claude/context/personal/scripts:$PATH"
|
||||
# export MANPAGER="sh -c 'sed -u -e \"s/\\x1B\[[0-9;]*m//g; s/.\\x08//g\" | bat -p -lman'"\nman 2 select
|
||||
export BROWSER="${BROWSER:-brave}"
|
||||
export LANG=en_US.UTF-8 # avoid locale issues
|
||||
|
|
@ -15,6 +20,7 @@ export GOROOT="/usr/local/go"
|
|||
export GOPATH="$HOME/go"
|
||||
export PATH=$PATH:$GOROOT/bin
|
||||
export PATH=$PATH:$HOME/.bun/bin
|
||||
export PATH="/usr/local/sbin:/usr/sbin:/sbin:$PATH"
|
||||
# export STOW_DIR="$HOME/.config"
|
||||
|
||||
# --- fzf ---
|
||||
|
|
@ -42,6 +48,7 @@ export FZF_CTRL_R_OPTS="
|
|||
|
||||
|
||||
# Path
|
||||
export PATH="$HOME/bin:$PATH"
|
||||
export PATH="$PATH:$HOME/go/bin"
|
||||
export PATH="$PATH:$HOME/.scripts:$HOME/scripts"
|
||||
export PATH="$PATH:$HOME/.cargo/bin"
|
||||
|
|
@ -62,3 +69,16 @@ if command -v bat &> /dev/null; then
|
|||
export MANPAGER="sh -c 'sed -u -e \"s/\\x1B\[[0-9;]*m//g; s/.\\x08//g\" | bat -p -lman'"
|
||||
fi
|
||||
# Removed redundant PATH addition (already on line 50)
|
||||
export PATH="/opt/zig:$PATH"
|
||||
export YDOTOOL_SOCKET=/run/user/1000/.ydotool_socket
|
||||
|
||||
# SSH agent socket (user systemd service, not system socket)
|
||||
export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"
|
||||
|
||||
# XWayland support for legacy X11 apps on Wayland
|
||||
# Only set XAUTHORITY if needed - let the system handle DISPLAY
|
||||
# if [[ -z "$XAUTHORITY" && -n "$WAYLAND_DISPLAY" ]]; then
|
||||
# _xauth=$(find /run/user/$UID -maxdepth 1 -name "xauth_*" 2>/dev/null | head -1)
|
||||
# [[ -n "$_xauth" ]] && export XAUTHORITY="$_xauth"
|
||||
# unset _xauth
|
||||
# fi
|
||||
|
|
|
|||
|
|
@ -220,3 +220,8 @@ export PATH=$(echo "$PATH" | tr ':' '\n' | awk '!seen[$0]++' | paste -sd:)
|
|||
# Make PATH available to GUI applications (Ulauncher, etc.)
|
||||
# This ensures apps launched outside terminal sessions can find bun, custom bins, etc.
|
||||
systemctl --user import-environment PATH
|
||||
|
||||
[ -f ~/.env ] && source ~/.env
|
||||
|
||||
# Port reference quick access
|
||||
alias ports='cat ~/.claude/context/infrastructure/ports-reference.md | less'
|
||||
|
|
|
|||
28
zsh/zsh.zsh
28
zsh/zsh.zsh
|
|
@ -1,28 +0,0 @@
|
|||
# ---- TMUX-RECON zsh.zsh ----
|
||||
|
||||
# source custom aliases if exists
|
||||
[ -f ~/.aliases.sh ] && source ~/.aliases.sh
|
||||
|
||||
# add .scripts to path
|
||||
export PATH="$HOME/.scripts:$PATH"
|
||||
|
||||
# zoxide (if installed)
|
||||
if command -v zoxide &> /dev/null; then
|
||||
eval "$(zoxide init zsh)"
|
||||
fi
|
||||
|
||||
# fzf (if installed)
|
||||
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
|
||||
|
||||
# starship (optional fancy prompt)
|
||||
[ -f ~/.config/starship.toml ] && eval "$(starship init zsh)"
|
||||
|
||||
# cargo
|
||||
source $HOME/.cargo/env
|
||||
|
||||
alias -g -- -h='-h 2>&1 | bat --language=help --style=plain'
|
||||
alias -g -- --help='--help 2>&1 | bat --language=help --style=plain'
|
||||
|
||||
# Custom prompt options or PS1 here if desired
|
||||
|
||||
# You can add any shared settings, completions, etc.
|
||||
Loading…
Add table
Reference in a new issue