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 config (contains personal email/name)
|
||||||
git/
|
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"
|
[general]
|
||||||
import = ["/home/folke/projects/tokyonight.nvim/extras/alacritty/tokyonight_storm.yml"]
|
|
||||||
live_config_reload = true
|
live_config_reload = true
|
||||||
|
# import = [] # Add theme files here if needed
|
||||||
|
|
||||||
|
[window]
|
||||||
|
decorations = "None"
|
||||||
|
|
||||||
[colors]
|
[colors]
|
||||||
draw_bold_text_with_bright_colors = true
|
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
|
# This is the configuration file for Ghostty.
|
||||||
font-family = "Fira Code"
|
#
|
||||||
font-family-bold = "Fira Code"
|
# This template file has been automatically created at the following
|
||||||
font-family-italic = "Maple Mono"
|
# path since Ghostty couldn't find any existing config files on your system:
|
||||||
font-family-bold-italic = "Maple Mono"
|
#
|
||||||
font-family = "Symbols Nerd Font Mono"
|
# /home/e/.config/ghostty/config
|
||||||
font-size = 10
|
#
|
||||||
adjust-underline-position = 4
|
# 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
|
# Config syntax crash course
|
||||||
mouse-hide-while-typing = true
|
# ==========================
|
||||||
# mouse-scroll-multiplier = 1
|
# # 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
|
background-opacity = .95
|
||||||
theme = /home/folke/projects/tokyonight.nvim/extras/ghostty/tokyonight_night
|
background-blur = 15
|
||||||
cursor-invert-fg-bg = true
|
|
||||||
background-opacity = 0.9
|
|
||||||
window-theme = ghostty
|
|
||||||
|
|
||||||
# keybindings
|
keybind = global:ctrl+grave_accent=toggle_quick_terminal
|
||||||
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
|
custom-shader = ~/.config/ghostty/bloom.glsl
|
||||||
gtk-single-instance = true
|
#custom-shader = ~/.config/ghostty/crt.glsl
|
||||||
gtk-tabs-location = bottom
|
#custom-shader = ~/.config/ghostty/starfield.glsl
|
||||||
gtk-wide-tabs = false
|
|
||||||
window-padding-y = 2,0
|
|
||||||
window-padding-balance = true
|
|
||||||
window-decoration = false
|
|
||||||
|
|
||||||
# Other
|
#custom-shader = ~/.config/ghostty/ghostty-shaders/bloom.glsl
|
||||||
copy-on-select = clipboard
|
#custom-shader = ~/.config/ghostty/ghostty-shaders/galaxy.glsl
|
||||||
shell-integration-features = cursor,sudo,no-title
|
#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"
|
name = "css"
|
||||||
language-servers = ["vscode-css-language-server"]
|
language-servers = ["vscode-css-language-server"]
|
||||||
|
|
||||||
[[language]]
|
|
||||||
name = "dockerfile"
|
|
||||||
language-servers = ["docker-langserver"]
|
|
||||||
|
|
||||||
[[language]]
|
[[language]]
|
||||||
name = "go"
|
name = "go"
|
||||||
language-servers = ["gopls"]
|
language-servers = ["gopls"]
|
||||||
|
|
@ -59,7 +55,7 @@ file-types = ["tex", "sty", "cls", "dtx"]
|
||||||
roots = ["main.tex", ".latexmkrc", "body-osr.md"]
|
roots = ["main.tex", ".latexmkrc", "body-osr.md"]
|
||||||
comment-token = "%"
|
comment-token = "%"
|
||||||
indent = { tab-width = 2, unit = " " }
|
indent = { tab-width = 2, unit = " " }
|
||||||
language-server = { command = "texlab" }
|
language-servers = ["texlab"]
|
||||||
|
|
||||||
[language.auto-pairs]
|
[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"
|
tmux_conf_theme_status_left_bg="$tmux_conf_theme_colour_1,$tmux_conf_theme_colour_1,$tmux_conf_theme_colour_0"
|
||||||
|
|
||||||
# right
|
# 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_attr="bold,bold,bold,bold,bold,bold,bold,bold,bold"
|
||||||
|
|
||||||
# tmux_conf_theme_status_right="
|
# 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'
|
# bind-key -T prefix u run-shell '~/.tmux/plugins/tmux-fzf-open/setup.tmux'
|
||||||
set -g @fzf-open-open-cmd "brave-browser"
|
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 ----
|
# ---- 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": {
|
"com.github.igorvaryvoda.ulauncher-perplexity": {
|
||||||
"id": "com.github.igorvaryvoda.ulauncher-perplexity",
|
"id": "com.github.igorvaryvoda.ulauncher-perplexity",
|
||||||
"url": "https://github.com/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": "7320f7b1499417ad31d920688e600b80d8454f6d",
|
||||||
"last_commit_time": "2024-12-10T15:31:41"
|
"last_commit_time": "2024-12-10T15:31:41"
|
||||||
},
|
},
|
||||||
"com.github.iboyperson.ulauncher-system": {
|
"com.github.iboyperson.ulauncher-system": {
|
||||||
"id": "com.github.iboyperson.ulauncher-system",
|
"id": "com.github.iboyperson.ulauncher-system",
|
||||||
"url": "https://github.com/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": "7dedd992709fa2297735cddf852404144d4da47c",
|
||||||
"last_commit_time": "2023-11-14T16:53:20"
|
"last_commit_time": "2023-11-14T16:53:20"
|
||||||
},
|
},
|
||||||
"com.github.mikebarkmin.ulauncher-obsidian": {
|
"com.github.mikebarkmin.ulauncher-obsidian": {
|
||||||
"id": "com.github.mikebarkmin.ulauncher-obsidian",
|
"id": "com.github.mikebarkmin.ulauncher-obsidian",
|
||||||
"url": "https://github.com/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": "a419cdc5e73453e4b284bb4905448ca60e4a3864",
|
||||||
"last_commit_time": "2023-09-12T10:42:25"
|
"last_commit_time": "2023-09-12T10:42:25"
|
||||||
},
|
},
|
||||||
"com.github.ulauncher.ulauncher-timer": {
|
"com.github.ulauncher.ulauncher-timer": {
|
||||||
"id": "com.github.ulauncher.ulauncher-timer",
|
"id": "com.github.ulauncher.ulauncher-timer",
|
||||||
"url": "https://github.com/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": "2d3fe82fe1e38670e6eb8887cd2a4b4d1c2baa79",
|
||||||
"last_commit_time": "2023-03-25T08:07:41"
|
"last_commit_time": "2023-03-25T08:07:41"
|
||||||
},
|
},
|
||||||
"com.github.hillaryychan.ulauncher-fzf": {
|
"com.github.hillaryychan.ulauncher-fzf": {
|
||||||
"id": "com.github.hillaryychan.ulauncher-fzf",
|
"id": "com.github.hillaryychan.ulauncher-fzf",
|
||||||
"url": "https://github.com/hillaryychan/ulauncher-fzf",
|
"url": "https://github.com/hillaryychan/ulauncher-fzf",
|
||||||
"updated_at": "2025-03-16T13:03:21.728964",
|
"updated_at": "2025-11-12T01:01:22.765478",
|
||||||
"last_commit": "e8137dae6448041fc53ae418263501b068857073",
|
"last_commit": "fad638127b2583d64ef3dac3cf3e94508e0b506a",
|
||||||
"last_commit_time": "2023-05-16T12:35:35"
|
"last_commit_time": "2025-11-10T10:12:48"
|
||||||
},
|
},
|
||||||
"com.github.beajeanm.ulauncher-windows-switcher": {
|
"com.github.beajeanm.ulauncher-windows-switcher": {
|
||||||
"id": "com.github.beajeanm.ulauncher-windows-switcher",
|
"id": "com.github.beajeanm.ulauncher-windows-switcher",
|
||||||
"url": "https://github.com/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": "e746afcd1ae971294f983dadb6ad2c90a730ec39",
|
||||||
"last_commit_time": "2022-08-04T22:59:46"
|
"last_commit_time": "2022-08-04T22:59:46"
|
||||||
},
|
},
|
||||||
"com.github.nastuzzisamy.ulauncher-youtube-search": {
|
"com.github.nastuzzisamy.ulauncher-youtube-search": {
|
||||||
"id": "com.github.nastuzzisamy.ulauncher-youtube-search",
|
"id": "com.github.nastuzzisamy.ulauncher-youtube-search",
|
||||||
"url": "https://github.com/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": "fe855811358b2f15ec6ed69ca18e20639874fa28",
|
||||||
"last_commit_time": "2021-03-27T11:29:18"
|
"last_commit_time": "2021-03-27T11:29:18"
|
||||||
},
|
},
|
||||||
"com.github.luispabon.ulauncher-virtualbox": {
|
"com.github.luispabon.ulauncher-virtualbox": {
|
||||||
"id": "com.github.luispabon.ulauncher-virtualbox",
|
"id": "com.github.luispabon.ulauncher-virtualbox",
|
||||||
"url": "https://github.com/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": "d8f495df3c7f41ee8493b207d17f06fc0372c84e",
|
||||||
"last_commit_time": "2020-09-23T01:29:15"
|
"last_commit_time": "2020-09-23T01:29:15"
|
||||||
},
|
},
|
||||||
"com.github.ralcaidev.ulauncher-extension-list": {
|
"com.github.ralcaidev.ulauncher-extension-list": {
|
||||||
"id": "com.github.ralcaidev.ulauncher-extension-list",
|
"id": "com.github.ralcaidev.ulauncher-extension-list",
|
||||||
"url": "https://github.com/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": "27d65fae4abc036e37a09792c8244287017dbc73",
|
||||||
"last_commit_time": "2022-11-10T16:06:26"
|
"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": {
|
"com.github.ultiblog.ulauncher-password-generator": {
|
||||||
"id": "com.github.ultiblog.ulauncher-password-generator",
|
"id": "com.github.ultiblog.ulauncher-password-generator",
|
||||||
"url": "https://github.com/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": "de08e6b3ce1c58e4f2b23321702ba40fa2110f73",
|
||||||
"last_commit_time": "2022-11-11T12:05:05"
|
"last_commit_time": "2022-11-11T12:05:05"
|
||||||
},
|
},
|
||||||
"com.github.zachatrocity.ulauncher-ollama": {
|
"com.github.zachatrocity.ulauncher-ollama": {
|
||||||
"id": "com.github.zachatrocity.ulauncher-ollama",
|
"id": "com.github.zachatrocity.ulauncher-ollama",
|
||||||
"url": "https://github.com/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": "1cb33ac391dc5650c8d1970c30249c159687853f",
|
||||||
"last_commit_time": "2024-06-07T05:20:43"
|
"last_commit_time": "2024-06-07T05:20:43"
|
||||||
},
|
},
|
||||||
"com.github.pymustafa.ulauncher-shortn": {
|
"com.github.pymustafa.ulauncher-shortn": {
|
||||||
"id": "com.github.pymustafa.ulauncher-shortn",
|
"id": "com.github.pymustafa.ulauncher-shortn",
|
||||||
"url": "https://github.com/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": "29caf53983cad40a4f28a6d0b743f6ec7fbc4d6b",
|
||||||
"last_commit_time": "2024-08-20T13:13:07"
|
"last_commit_time": "2024-08-20T13:13:07"
|
||||||
},
|
},
|
||||||
"com.github.singhrobinkumar.ulauncher-brave-profiles": {
|
"com.github.singhrobinkumar.ulauncher-brave-profiles": {
|
||||||
"id": "com.github.singhrobinkumar.ulauncher-brave-profiles",
|
"id": "com.github.singhrobinkumar.ulauncher-brave-profiles",
|
||||||
"url": "https://github.com/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": "6156a248e086eadc58e5e7445b56b38498120a5a",
|
||||||
"last_commit_time": "2023-08-23T05:33:06"
|
"last_commit_time": "2023-08-23T05:33:06"
|
||||||
},
|
},
|
||||||
"com.github.devkleber.ulauncher-open-link": {
|
"com.github.devkleber.ulauncher-open-link": {
|
||||||
"id": "com.github.devkleber.ulauncher-open-link",
|
"id": "com.github.devkleber.ulauncher-open-link",
|
||||||
"url": "https://github.com/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": "de9b7e6144d974c06a7f218596a2db80b667fd5b",
|
||||||
"last_commit_time": "2023-12-29T17:33:50"
|
"last_commit_time": "2023-12-29T17:33:50"
|
||||||
},
|
},
|
||||||
"com.github.ahaasler.ulauncher-tmux": {
|
"com.github.ahaasler.ulauncher-tmux": {
|
||||||
"id": "com.github.ahaasler.ulauncher-tmux",
|
"id": "com.github.ahaasler.ulauncher-tmux",
|
||||||
"url": "https://github.com/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": "dd631a2e5a1d8bf2ab21095b43afe068443f02b9",
|
||||||
"last_commit_time": "2021-06-05T16:42:59"
|
"last_commit_time": "2021-06-05T16:42:59"
|
||||||
},
|
},
|
||||||
"com.github.seqizz.ulauncher-tmux-attach": {
|
"com.github.seqizz.ulauncher-tmux-attach": {
|
||||||
"id": "com.github.seqizz.ulauncher-tmux-attach",
|
"id": "com.github.seqizz.ulauncher-tmux-attach",
|
||||||
"url": "https://github.com/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": "b6a84559e128ceaa8255d4c08feead8604efecfe",
|
||||||
"last_commit_time": "2021-04-14T05:49:52"
|
"last_commit_time": "2021-04-14T05:49:52"
|
||||||
},
|
},
|
||||||
"com.github.brpaz.ulauncher-raindrop": {
|
"com.github.brpaz.ulauncher-raindrop": {
|
||||||
"id": "com.github.brpaz.ulauncher-raindrop",
|
"id": "com.github.brpaz.ulauncher-raindrop",
|
||||||
"url": "https://github.com/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": "b5bdbc9915930a1da320728696576462737cb812",
|
||||||
"last_commit_time": "2022-10-15T09:38:30"
|
"last_commit_time": "2022-10-15T09:38:30"
|
||||||
},
|
},
|
||||||
"com.github.kalligator.ulauncher-gemini-direct": {
|
"com.github.kalligator.ulauncher-gemini-direct": {
|
||||||
"id": "com.github.kalligator.ulauncher-gemini-direct",
|
"id": "com.github.kalligator.ulauncher-gemini-direct",
|
||||||
"url": "https://github.com/kalligator/ulauncher-gemini-direct",
|
"url": "https://github.com/kalligator/ulauncher-gemini-direct",
|
||||||
"updated_at": "2025-05-04T00:13:05.568104",
|
"updated_at": "2025-11-12T01:22:07.504573",
|
||||||
"last_commit": "b0d8986644e2f28bdf4f9fa492675118fecf322f",
|
"last_commit": "dd44c7032e60764f9da393427339d922170b2e1b",
|
||||||
"last_commit_time": "2025-04-28T18:20:32"
|
"last_commit_time": "2025-09-20T12:18:05"
|
||||||
},
|
},
|
||||||
"com.github.seofernando25.ulauncher-gpt": {
|
"com.github.seofernando25.ulauncher-gpt": {
|
||||||
"id": "com.github.seofernando25.ulauncher-gpt",
|
"id": "com.github.seofernando25.ulauncher-gpt",
|
||||||
"url": "https://github.com/SeoFernando25/ulauncher-gpt",
|
"url": "https://github.com/SeoFernando25/ulauncher-gpt",
|
||||||
"updated_at": "2025-05-04T00:20:50.025070",
|
"updated_at": "2025-11-12T01:22:09.658181",
|
||||||
"last_commit": "2d51ff40fcbd501e64034f3c7be1cd35abc47d6b",
|
"last_commit": "3b0f87aa58ad0d2bcb46011bc6fa0e75e912be37",
|
||||||
"last_commit_time": "2023-04-14T22:57:18"
|
"last_commit_time": "2025-09-16T01:43:11"
|
||||||
},
|
},
|
||||||
"com.github.tuanpham-dev.ulauncher-better-calculator": {
|
"com.github.tuanpham-dev.ulauncher-better-calculator": {
|
||||||
"id": "com.github.tuanpham-dev.ulauncher-better-calculator",
|
"id": "com.github.tuanpham-dev.ulauncher-better-calculator",
|
||||||
"url": "https://github.com/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": "48f0592a2a8ac9ec2589a06b562141e1a2d9b25f",
|
||||||
"last_commit_time": "2023-04-24T13:55:30"
|
"last_commit_time": "2023-04-24T13:55:30"
|
||||||
},
|
},
|
||||||
"com.github.troublor.ulauncher-numconverter": {
|
"com.github.troublor.ulauncher-numconverter": {
|
||||||
"id": "com.github.troublor.ulauncher-numconverter",
|
"id": "com.github.troublor.ulauncher-numconverter",
|
||||||
"url": "https://github.com/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": "98d5e01d82671eedc98c000053980ae7ceb4ea28",
|
||||||
"last_commit_time": "2021-09-29T13:19:39"
|
"last_commit_time": "2021-09-29T13:19:39"
|
||||||
},
|
},
|
||||||
"com.github.tchar.ulauncher-albert-calculate-anything": {
|
"com.github.tchar.ulauncher-albert-calculate-anything": {
|
||||||
"id": "com.github.tchar.ulauncher-albert-calculate-anything",
|
"id": "com.github.tchar.ulauncher-albert-calculate-anything",
|
||||||
"url": "https://github.com/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": "037965a44e6f6f496e7ad71ec1651b9edfcde32d",
|
||||||
"last_commit_time": "2024-05-29T21:57:26"
|
"last_commit_time": "2024-05-29T21:57:26"
|
||||||
},
|
},
|
||||||
"com.github.frdrk.ulauncher-dead-simple-convert": {
|
"com.github.frdrk.ulauncher-dead-simple-convert": {
|
||||||
"id": "com.github.frdrk.ulauncher-dead-simple-convert",
|
"id": "com.github.frdrk.ulauncher-dead-simple-convert",
|
||||||
"url": "https://github.com/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": "c0821e83b6c1d5a4984ef72c82e54eb21d0149ac",
|
||||||
"last_commit_time": "2023-10-03T11:40:03"
|
"last_commit_time": "2023-10-03T11:40:03"
|
||||||
},
|
},
|
||||||
"com.github.sergius02.ulauncher-colorconverter": {
|
"com.github.sergius02.ulauncher-colorconverter": {
|
||||||
"id": "com.github.sergius02.ulauncher-colorconverter",
|
"id": "com.github.sergius02.ulauncher-colorconverter",
|
||||||
"url": "https://github.com/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": "2d5e2bc17e89f1f1dc561f73e68ea574e0be844a",
|
||||||
"last_commit_time": "2020-12-06T20:59:43"
|
"last_commit_time": "2020-12-06T20:59:43"
|
||||||
},
|
},
|
||||||
"com.github.kleber-swf.ulauncher-toggle-dnd": {
|
"com.github.kleber-swf.ulauncher-toggle-dnd": {
|
||||||
"id": "com.github.kleber-swf.ulauncher-toggle-dnd",
|
"id": "com.github.kleber-swf.ulauncher-toggle-dnd",
|
||||||
"url": "https://github.com/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": "e2a14ba6eb7eb6771045e103a6f351585cdb8652",
|
||||||
"last_commit_time": "2022-02-10T13:22:17"
|
"last_commit_time": "2022-02-10T13:22:17"
|
||||||
},
|
},
|
||||||
"com.github.nastuzzisamy.ulauncher-translate": {
|
"com.github.nastuzzisamy.ulauncher-translate": {
|
||||||
"id": "com.github.nastuzzisamy.ulauncher-translate",
|
"id": "com.github.nastuzzisamy.ulauncher-translate",
|
||||||
"url": "https://github.com/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": "f16b6eed05923e604bacafefdc40b7b7290e21da",
|
||||||
"last_commit_time": "2021-03-27T11:43:48"
|
"last_commit_time": "2021-03-27T11:43:48"
|
||||||
},
|
},
|
||||||
"com.github.behrensger.thesaurus_cc_ulauncher": {
|
"com.github.behrensger.thesaurus_cc_ulauncher": {
|
||||||
"id": "com.github.behrensger.thesaurus_cc_ulauncher",
|
"id": "com.github.behrensger.thesaurus_cc_ulauncher",
|
||||||
"url": "https://github.com/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": "375575ce2790fbe40cdfae8fa7b471d06ead683a",
|
||||||
"last_commit_time": "2020-12-22T20:33:18"
|
"last_commit_time": "2020-12-22T20:33:18"
|
||||||
},
|
},
|
||||||
"com.github.randomcharacter.ulauncher-meet": {
|
"com.github.randomcharacter.ulauncher-meet": {
|
||||||
"id": "com.github.randomcharacter.ulauncher-meet",
|
"id": "com.github.randomcharacter.ulauncher-meet",
|
||||||
"url": "https://github.com/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": "f2fe055b6e21e15ea4c65918a6f499d61d4cf4b0",
|
||||||
"last_commit_time": "2021-02-26T22:04:21"
|
"last_commit_time": "2021-02-26T22:04:21"
|
||||||
},
|
},
|
||||||
"com.github.fajtak.ulauncher-weather": {
|
"com.github.fajtak.ulauncher-weather": {
|
||||||
"id": "com.github.fajtak.ulauncher-weather",
|
"id": "com.github.fajtak.ulauncher-weather",
|
||||||
"url": "https://github.com/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": "996da704e505776753f6340755d20f03075c2be8",
|
||||||
"last_commit_time": "2022-04-05T18:23:30"
|
"last_commit_time": "2022-04-05T18:23:30"
|
||||||
},
|
},
|
||||||
"com.github.dhelmr.ulauncher-tldr": {
|
"com.github.dhelmr.ulauncher-tldr": {
|
||||||
"id": "com.github.dhelmr.ulauncher-tldr",
|
"id": "com.github.dhelmr.ulauncher-tldr",
|
||||||
"url": "https://github.com/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": "2e5904451bf89dfa155280dfb6fa3d45ed4cab4c",
|
||||||
"last_commit_time": "2023-07-29T11:06:30"
|
"last_commit_time": "2023-07-29T11:06:30"
|
||||||
},
|
},
|
||||||
"com.github.carlosmape.ulauncher-calendar": {
|
"com.github.carlosmape.ulauncher-calendar": {
|
||||||
"id": "com.github.carlosmape.ulauncher-calendar",
|
"id": "com.github.carlosmape.ulauncher-calendar",
|
||||||
"url": "https://github.com/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": "36e6d2f9b238a7723525522bd373a22626cf3be5",
|
||||||
"last_commit_time": "2022-10-31T15:47:41"
|
"last_commit_time": "2022-10-31T15:47:41"
|
||||||
},
|
},
|
||||||
"com.github.lighttigerxiv.ulauncher-terminal-runner-extension": {
|
"com.github.lighttigerxiv.ulauncher-terminal-runner-extension": {
|
||||||
"id": "com.github.lighttigerxiv.ulauncher-terminal-runner-extension",
|
"id": "com.github.lighttigerxiv.ulauncher-terminal-runner-extension",
|
||||||
"url": "https://github.com/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": "d6bc2157e5c0ef2f812e3051ddde334c7b485c2e",
|
||||||
"last_commit_time": "2023-05-02T22:50:12"
|
"last_commit_time": "2023-05-02T22:50:12"
|
||||||
},
|
},
|
||||||
"com.github.ulauncher.ulauncher-hash": {
|
"com.github.ulauncher.ulauncher-hash": {
|
||||||
"id": "com.github.ulauncher.ulauncher-hash",
|
"id": "com.github.ulauncher.ulauncher-hash",
|
||||||
"url": "https://github.com/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": "237dbb3610ff04df993c3223b12df42cb7df221f",
|
||||||
"last_commit_time": "2022-09-04T14:29:55"
|
"last_commit_time": "2022-09-04T14:29:55"
|
||||||
},
|
},
|
||||||
"com.github.rayvega96.ulauncher-amazon-search": {
|
"com.github.rayvega96.ulauncher-amazon-search": {
|
||||||
"id": "com.github.rayvega96.ulauncher-amazon-search",
|
"id": "com.github.rayvega96.ulauncher-amazon-search",
|
||||||
"url": "https://github.com/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": "045551d899cf42bc99c85670bdf8e299e128275b",
|
||||||
"last_commit_time": "2022-12-03T17:14:47"
|
"last_commit_time": "2022-12-03T17:14:47"
|
||||||
},
|
},
|
||||||
"com.github.pegoku.ulauncher-brave": {
|
"com.github.pegoku.ulauncher-brave": {
|
||||||
"id": "com.github.pegoku.ulauncher-brave",
|
"id": "com.github.pegoku.ulauncher-brave",
|
||||||
"url": "https://github.com/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": "3166aad57ff0252271c0bfe72a0a2d37f37e3b0d",
|
||||||
"last_commit_time": "2022-11-05T15:40:52"
|
"last_commit_time": "2022-11-05T15:40:52"
|
||||||
},
|
},
|
||||||
"com.github.pegoku.ulauncher-searx": {
|
"com.github.brpaz.ulauncher-faker": {
|
||||||
"id": "com.github.pegoku.ulauncher-searx",
|
"id": "com.github.brpaz.ulauncher-faker",
|
||||||
"url": "https://github.com/Pegoku/ulauncher-searx",
|
"url": "https://github.com/brpaz/ulauncher-faker",
|
||||||
"updated_at": "2025-05-04T01:42:41.604940",
|
"updated_at": "2025-11-29T21:50:46.935500",
|
||||||
"last_commit": "9047d246736a7a4cdf6c843cb26c987ccce36aae",
|
"last_commit": "58832c94acc671a9f603ea7fbf5d4405110bb902",
|
||||||
"last_commit_time": "2023-03-18T15:53:26"
|
"last_commit_time": "2021-12-12T15:46:10"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
"clear-previous-query": true,
|
"clear-previous-query": true,
|
||||||
"disable-desktop-filters": false,
|
"disable-desktop-filters": false,
|
||||||
"grab-mouse-pointer": false,
|
"grab-mouse-pointer": false,
|
||||||
"hotkey-show-app": "<Primary>space",
|
"hotkey-show-app": "",
|
||||||
"render-on-screen": "mouse-pointer-monitor",
|
"render-on-screen": "mouse-pointer-monitor",
|
||||||
"show-indicator-icon": true,
|
"show-indicator-icon": true,
|
||||||
"show-recent-apps": "0",
|
"show-recent-apps": "0",
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
"name": "Perplexity",
|
"name": "Perplexity",
|
||||||
"keyword": "p",
|
"keyword": "p",
|
||||||
"cmd": "https://www.perplexity.ai/search?q=%s",
|
"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,
|
"is_default_search": true,
|
||||||
"run_without_argument": false,
|
"run_without_argument": false,
|
||||||
"added": 1742151030.0001
|
"added": 1742151030.0001
|
||||||
|
|
@ -44,7 +44,7 @@
|
||||||
"name": "Ghostty Terminal",
|
"name": "Ghostty Terminal",
|
||||||
"keyword": "g",
|
"keyword": "g",
|
||||||
"cmd": "ghostty",
|
"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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1729026000.0001
|
"added": 1729026000.0001
|
||||||
|
|
@ -54,7 +54,7 @@
|
||||||
"name": "Zen Browser",
|
"name": "Zen Browser",
|
||||||
"keyword": "z",
|
"keyword": "z",
|
||||||
"cmd": "zen-browser",
|
"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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1729026000.0002
|
"added": 1729026000.0002
|
||||||
|
|
@ -64,7 +64,7 @@
|
||||||
"name": "n8n Workflows",
|
"name": "n8n Workflows",
|
||||||
"keyword": "n8n",
|
"keyword": "n8n",
|
||||||
"cmd": "xdg-open https://n8n.djeditech.com",
|
"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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1729026000.0004
|
"added": 1729026000.0004
|
||||||
|
|
@ -74,7 +74,7 @@
|
||||||
"name": "LazyDocker",
|
"name": "LazyDocker",
|
||||||
"keyword": "d",
|
"keyword": "d",
|
||||||
"cmd": "ghostty -e lazydocker",
|
"cmd": "ghostty -e lazydocker",
|
||||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/utilities-terminal.png",
|
"icon": "~/Pictures/Logos/docker.svg",
|
||||||
"is_default_search": false,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1729026000.0005
|
"added": 1729026000.0005
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
"name": "ProtonVPN Connect",
|
"name": "ProtonVPN Connect",
|
||||||
"keyword": "vpn",
|
"keyword": "vpn",
|
||||||
"cmd": "ghostty -e 'protonvpn-cli c US-CO#246'",
|
"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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1729026000.0003
|
"added": 1729026000.0003
|
||||||
|
|
@ -114,7 +114,7 @@
|
||||||
"name": "GitHub Search",
|
"name": "GitHub Search",
|
||||||
"keyword": "gh",
|
"keyword": "gh",
|
||||||
"cmd": "https://github.com/search?q=%s&type=repositories",
|
"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,
|
"is_default_search": true,
|
||||||
"run_without_argument": false,
|
"run_without_argument": false,
|
||||||
"added": 1760740000.0001
|
"added": 1760740000.0001
|
||||||
|
|
@ -124,7 +124,7 @@
|
||||||
"name": "LazyGit",
|
"name": "LazyGit",
|
||||||
"keyword": "lg",
|
"keyword": "lg",
|
||||||
"cmd": "ghostty -e bash -c 'echo n | lazygit 2>/dev/null || lazygit'",
|
"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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760740000.0002
|
"added": 1760740000.0002
|
||||||
|
|
@ -134,7 +134,7 @@
|
||||||
"name": "Navi Cheatsheets",
|
"name": "Navi Cheatsheets",
|
||||||
"keyword": "navi",
|
"keyword": "navi",
|
||||||
"cmd": "ghostty -e 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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760741000.0001
|
"added": 1760741000.0001
|
||||||
|
|
@ -144,7 +144,7 @@
|
||||||
"name": "Yazi File Manager",
|
"name": "Yazi File Manager",
|
||||||
"keyword": "yazi",
|
"keyword": "yazi",
|
||||||
"cmd": "ghostty -e 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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760741000.0002
|
"added": 1760741000.0002
|
||||||
|
|
@ -154,7 +154,7 @@
|
||||||
"name": "Yazi File Manager (short)",
|
"name": "Yazi File Manager (short)",
|
||||||
"keyword": "yz",
|
"keyword": "yz",
|
||||||
"cmd": "ghostty -e 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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760741000.0003
|
"added": 1760741000.0003
|
||||||
|
|
@ -234,7 +234,7 @@
|
||||||
"name": "Hugo Server",
|
"name": "Hugo Server",
|
||||||
"keyword": "hugo",
|
"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'",
|
"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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760743000.0005
|
"added": 1760743000.0005
|
||||||
|
|
@ -244,7 +244,7 @@
|
||||||
"name": "Download YouTube Video",
|
"name": "Download YouTube Video",
|
||||||
"keyword": "dl",
|
"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'",
|
"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,
|
"is_default_search": true,
|
||||||
"run_without_argument": false,
|
"run_without_argument": false,
|
||||||
"added": 1760743000.0006
|
"added": 1760743000.0006
|
||||||
|
|
@ -254,7 +254,7 @@
|
||||||
"name": "Obsidian Fuzzy Search",
|
"name": "Obsidian Fuzzy Search",
|
||||||
"keyword": "o",
|
"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\"'",
|
"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,
|
"is_default_search": true,
|
||||||
"run_without_argument": false,
|
"run_without_argument": false,
|
||||||
"added": 1760744000.0002
|
"added": 1760744000.0002
|
||||||
|
|
@ -284,7 +284,7 @@
|
||||||
"name": "WiFi Network Manager",
|
"name": "WiFi Network Manager",
|
||||||
"keyword": "wifi",
|
"keyword": "wifi",
|
||||||
"cmd": "ghostty -e nmtui",
|
"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,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760744000.0005
|
"added": 1760744000.0005
|
||||||
|
|
@ -294,7 +294,7 @@
|
||||||
"name": "Bluetooth Manager",
|
"name": "Bluetooth Manager",
|
||||||
"keyword": "bt",
|
"keyword": "bt",
|
||||||
"cmd": "ghostty -e bluetoothctl",
|
"cmd": "ghostty -e bluetoothctl",
|
||||||
"icon": "/usr/share/icons/Adwaita/48x48/legacy/bluetooth.png",
|
"icon": "~/Pictures/Logos/Bluetooth.svg",
|
||||||
"is_default_search": false,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760744000.0006
|
"added": 1760744000.0006
|
||||||
|
|
@ -311,10 +311,10 @@
|
||||||
},
|
},
|
||||||
"d2433c00-43fd-424c-8e82-6f3d132708f2": {
|
"d2433c00-43fd-424c-8e82-6f3d132708f2": {
|
||||||
"id": "d2433c00-43fd-424c-8e82-6f3d132708f2",
|
"id": "d2433c00-43fd-424c-8e82-6f3d132708f2",
|
||||||
"name": "weather-test",
|
"name": "Weather Report",
|
||||||
"keyword": "w",
|
"keyword": "w",
|
||||||
"cmd": "ghostty -e '/home/e/.bun/bin/bun /home/e/.claude/commands/weather-report.md && read \"Press Enter to exit...\"'",
|
"cmd": "ghostty -e '/home/e/.claude/commands/weather-report.md && read \"Press Enter to exit...\"'",
|
||||||
"icon": null,
|
"icon": "/usr/share/icons/Adwaita/48x48/legacy/weather-clear.png",
|
||||||
"is_default_search": false,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1760845029.8644536
|
"added": 1760845029.8644536
|
||||||
|
|
@ -323,20 +323,50 @@
|
||||||
"id": "17ff09ab-cd33-4900-9626-e18f81647d8f",
|
"id": "17ff09ab-cd33-4900-9626-e18f81647d8f",
|
||||||
"name": "Progress Bar",
|
"name": "Progress Bar",
|
||||||
"keyword": "pb",
|
"keyword": "pb",
|
||||||
"cmd": "ghostty -e '/home/e/.bun/bin/bun /home/e/.claude/commands/progress.md && read \"Press Enter to exit...\"'",
|
"cmd": "ghostty -e '/home/e/.claude/commands/progress.md && read \"Press Enter to exit...\"'",
|
||||||
"icon": null,
|
"icon": "~/Pictures/Logos/progress-two-svgrepo-com.svg",
|
||||||
"is_default_search": false,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"run_without_argument": true,
|
||||||
"added": 1761198481.905308
|
"added": 1761198481.905308
|
||||||
},
|
},
|
||||||
"57fbe6b9-7da4-4e31-8d94-7128d4a071e4": {
|
"genpass-quicklink": {
|
||||||
"id": "57fbe6b9-7da4-4e31-8d94-7128d4a071e4",
|
"id": "genpass-quicklink",
|
||||||
"name": "SimpleX",
|
"name": "Generate Password",
|
||||||
"keyword": "simplex",
|
"keyword": "genpass",
|
||||||
"cmd": "ghostty -e 'nohup simplex &'",
|
"cmd": "bash -c 'openssl rand -base64 32 | tr -d \"\\n\" | xclip -selection clipboard && notify-send \"Password Generated\" \"32-character password copied to clipboard\"'",
|
||||||
"icon": null,
|
"icon": "/usr/share/icons/Adwaita/48x48/legacy/dialog-password.png",
|
||||||
"is_default_search": false,
|
"is_default_search": false,
|
||||||
"run_without_argument": true,
|
"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 U='pipx upgrade-all' # Update all pipx packages
|
||||||
alias P='pipx list' # List 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 ---
|
# --- OpenCode ---
|
||||||
|
|
||||||
ide() {
|
ide() {
|
||||||
|
|
@ -239,9 +243,11 @@ fi
|
||||||
alias t='task'
|
alias t='task'
|
||||||
alias tl='task list'
|
alias tl='task list'
|
||||||
alias twa='task add'
|
alias twa='task add'
|
||||||
tm() {
|
# tm() {
|
||||||
task modify
|
# 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'
|
alias tb='task burndown.daily'
|
||||||
|
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
|
|
@ -433,6 +439,7 @@ alias evening='redshift -O 3500 -P && echo "🌅 Evening mode activated (3500K)"
|
||||||
|
|
||||||
# WhisperTux quick launch aliases
|
# WhisperTux quick launch aliases
|
||||||
alias wt='systemctl --user start whispertux'
|
alias wt='systemctl --user start whispertux'
|
||||||
|
alias wtr='systemctl --user restart whispertux'
|
||||||
alias wt-stop='systemctl --user stop whispertux'
|
alias wt-stop='systemctl --user stop whispertux'
|
||||||
alias wt-status='systemctl --user status whispertux'
|
alias wt-status='systemctl --user status whispertux'
|
||||||
alias wt-log='journalctl --user -u whispertux -f'
|
alias wt-log='journalctl --user -u whispertux -f'
|
||||||
|
|
@ -679,3 +686,59 @@ msfl() {
|
||||||
fi
|
fi
|
||||||
msfconsole -r "$HOME/scripts/multi_handler.rc"
|
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
|
# PAI3 Personal AI Infrastructure
|
||||||
export PAI_HOME="/home/e"
|
export PAI_HOME="/home/e"
|
||||||
export PAI_DIR="$HOME/.claude" # Added for PAI v0.6.0 compatibility
|
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 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 BROWSER="${BROWSER:-brave}"
|
||||||
export LANG=en_US.UTF-8 # avoid locale issues
|
export LANG=en_US.UTF-8 # avoid locale issues
|
||||||
|
|
@ -15,6 +20,7 @@ export GOROOT="/usr/local/go"
|
||||||
export GOPATH="$HOME/go"
|
export GOPATH="$HOME/go"
|
||||||
export PATH=$PATH:$GOROOT/bin
|
export PATH=$PATH:$GOROOT/bin
|
||||||
export PATH=$PATH:$HOME/.bun/bin
|
export PATH=$PATH:$HOME/.bun/bin
|
||||||
|
export PATH="/usr/local/sbin:/usr/sbin:/sbin:$PATH"
|
||||||
# export STOW_DIR="$HOME/.config"
|
# export STOW_DIR="$HOME/.config"
|
||||||
|
|
||||||
# --- fzf ---
|
# --- fzf ---
|
||||||
|
|
@ -42,6 +48,7 @@ export FZF_CTRL_R_OPTS="
|
||||||
|
|
||||||
|
|
||||||
# Path
|
# Path
|
||||||
|
export PATH="$HOME/bin:$PATH"
|
||||||
export PATH="$PATH:$HOME/go/bin"
|
export PATH="$PATH:$HOME/go/bin"
|
||||||
export PATH="$PATH:$HOME/.scripts:$HOME/scripts"
|
export PATH="$PATH:$HOME/.scripts:$HOME/scripts"
|
||||||
export PATH="$PATH:$HOME/.cargo/bin"
|
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'"
|
export MANPAGER="sh -c 'sed -u -e \"s/\\x1B\[[0-9;]*m//g; s/.\\x08//g\" | bat -p -lman'"
|
||||||
fi
|
fi
|
||||||
# Removed redundant PATH addition (already on line 50)
|
# 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.)
|
# Make PATH available to GUI applications (Ulauncher, etc.)
|
||||||
# This ensures apps launched outside terminal sessions can find bun, custom bins, etc.
|
# This ensures apps launched outside terminal sessions can find bun, custom bins, etc.
|
||||||
systemctl --user import-environment PATH
|
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