Compare commits
28 Commits
xiao
...
31a2c33bb0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31a2c33bb0 | ||
|
|
d319564550 | ||
|
|
e90cbb4947 | ||
|
|
bdf93421b1 | ||
|
|
7d4f31a6b4 | ||
|
|
24e0a20c04 | ||
|
|
dc4b4968bc | ||
|
|
1035c858fc | ||
|
|
89f9e3d9bc | ||
|
|
5506ca07a2 | ||
|
|
0e71c1a637 | ||
|
|
93aeb0019e | ||
|
|
9befba5522 | ||
|
|
1522c8d6a0 | ||
|
|
f0bda1964e | ||
|
|
80d1ed1528 | ||
|
|
2d074e0b09 | ||
|
|
cf50f8800b | ||
|
|
d0a86c9dc5 | ||
|
|
6cc37ee562 | ||
|
|
1dd84eb214 | ||
|
|
3c67ef6832 | ||
|
|
94fcdb812c | ||
|
|
84f9bf297f | ||
|
|
fa7041ff8b | ||
|
|
f68b89be0f | ||
|
|
1c449f436a | ||
|
|
b0933f7e42 |
83
alacritty/.config/alacritty/alacritty.toml
Normal file
83
alacritty/.config/alacritty/alacritty.toml
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
[window]
|
||||||
|
[window.padding]
|
||||||
|
x = 15
|
||||||
|
y = 15
|
||||||
|
|
||||||
|
[font]
|
||||||
|
[font.normal]
|
||||||
|
family = "IosevkaTerm"
|
||||||
|
style = "Regular"
|
||||||
|
|
||||||
|
[shell]
|
||||||
|
program = "tmux"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "Return"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "SpawnNewInstance"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "V"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "Paste"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "C"
|
||||||
|
mods = "Control|Shift"
|
||||||
|
action = "Copy"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "Insert"
|
||||||
|
mods = "Shift"
|
||||||
|
action = "PasteSelection"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "Key0"
|
||||||
|
mods = "Control"
|
||||||
|
action = "ResetFontSize"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "Equals"
|
||||||
|
mods = "Control"
|
||||||
|
action = "IncreaseFontSize"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "Plus"
|
||||||
|
mods = "Control"
|
||||||
|
action = "IncreaseFontSize"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "Minus"
|
||||||
|
mods = "Control"
|
||||||
|
action = "DecreaseFontSize"
|
||||||
|
|
||||||
|
[[key_bindings]]
|
||||||
|
key = "Minus"
|
||||||
|
mods = "Control"
|
||||||
|
action = "DecreaseFontSize"
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
[colors.primary]
|
||||||
|
background = "0x1d1f21"
|
||||||
|
foreground = "0xc5c8c6"
|
||||||
|
[colors.cursor]
|
||||||
|
text = "0x1d1f21"
|
||||||
|
cursor = "0xc5c8c6"
|
||||||
|
[colors.normal]
|
||||||
|
black = "0x1d1f21"
|
||||||
|
red = "0xcc6666"
|
||||||
|
green = "0xb5bd68"
|
||||||
|
yellow = "0xf0c674"
|
||||||
|
blue = "0x81a2be"
|
||||||
|
magenta = "0xb294bb"
|
||||||
|
cyan = "0x8abeb7"
|
||||||
|
white = "0xc5c8c6"
|
||||||
|
[colors.bright]
|
||||||
|
black = "0x969896"
|
||||||
|
red = "0xde935f"
|
||||||
|
green = "0x282a2e"
|
||||||
|
yellow = "0x373b41"
|
||||||
|
blue = "0xb4b7b4"
|
||||||
|
magenta = "0xe0e0e0"
|
||||||
|
cyan = "0xa3685a"
|
||||||
|
white = "0xffffff"
|
||||||
@@ -97,9 +97,11 @@ font:
|
|||||||
# - (macOS) Menlo
|
# - (macOS) Menlo
|
||||||
# - (Linux/BSD) monospace
|
# - (Linux/BSD) monospace
|
||||||
# - (Windows) Consolas
|
# - (Windows) Consolas
|
||||||
# family: MesloLGS NF
|
# family: Hack Nerd Font
|
||||||
# family: Hack
|
# family: DejaVuSansM Nerd Font
|
||||||
family: DejaVu Sans Mono
|
# family: FiraCode Nerd Font
|
||||||
|
# family: IosevkaTerm Nerd Font
|
||||||
|
family: CaskaydiaCove NFM
|
||||||
|
|
||||||
# The `style` can be specified to pick a specific face.
|
# The `style` can be specified to pick a specific face.
|
||||||
style: Regular
|
style: Regular
|
||||||
@@ -316,8 +318,8 @@ font:
|
|||||||
# - (macOS) /bin/bash --login
|
# - (macOS) /bin/bash --login
|
||||||
# - (Linux/BSD) user login shell
|
# - (Linux/BSD) user login shell
|
||||||
# - (Windows) powershell
|
# - (Windows) powershell
|
||||||
#shell:
|
shell:
|
||||||
# program: /bin/bash
|
program: tmux
|
||||||
# args:
|
# args:
|
||||||
# - --login
|
# - --login
|
||||||
|
|
||||||
|
|||||||
144
firefox/.local/share/applications/firefox.desktop
Normal file
144
firefox/.local/share/applications/firefox.desktop
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
#NoDisplay=true
|
||||||
|
Name=Firefox Web Browser (nixGL)
|
||||||
|
GenericName=Web Browser
|
||||||
|
GenericName[ar]=متصفح ويب
|
||||||
|
GenericName[ast]=Restolador Web
|
||||||
|
GenericName[bn]=ওয়েব ব্রাউজার
|
||||||
|
GenericName[ca]=Navegador web
|
||||||
|
GenericName[cs]=Webový prohlížeč
|
||||||
|
GenericName[da]=Webbrowser
|
||||||
|
GenericName[el]=Περιηγητής διαδικτύου
|
||||||
|
GenericName[es]=Navegador web
|
||||||
|
GenericName[et]=Veebibrauser
|
||||||
|
GenericName[fa]=مرورگر اینترنتی
|
||||||
|
GenericName[fi]=WWW-selain
|
||||||
|
GenericName[fr]=Navigateur Web
|
||||||
|
GenericName[gl]=Navegador Web
|
||||||
|
GenericName[he]=דפדפן אינטרנט
|
||||||
|
GenericName[hr]=Web preglednik
|
||||||
|
GenericName[hu]=Webböngésző
|
||||||
|
GenericName[it]=Browser web
|
||||||
|
GenericName[ja]=ウェブ・ブラウザ
|
||||||
|
GenericName[ko]=웹 브라우저
|
||||||
|
GenericName[ku]=Geroka torê
|
||||||
|
GenericName[lt]=Interneto naršyklė
|
||||||
|
GenericName[nb]=Nettleser
|
||||||
|
GenericName[nl]=Webbrowser
|
||||||
|
GenericName[nn]=Nettlesar
|
||||||
|
GenericName[no]=Nettleser
|
||||||
|
GenericName[pl]=Przeglądarka WWW
|
||||||
|
GenericName[pt]=Navegador Web
|
||||||
|
GenericName[pt_BR]=Navegador Web
|
||||||
|
GenericName[ro]=Navigator Internet
|
||||||
|
GenericName[ru]=Веб-браузер
|
||||||
|
GenericName[sk]=Internetový prehliadač
|
||||||
|
GenericName[sl]=Spletni brskalnik
|
||||||
|
GenericName[sv]=Webbläsare
|
||||||
|
GenericName[tr]=Web Tarayıcı
|
||||||
|
GenericName[ug]=توركۆرگۈ
|
||||||
|
GenericName[uk]=Веб-браузер
|
||||||
|
GenericName[vi]=Trình duyệt Web
|
||||||
|
GenericName[zh_CN]=网络浏览器
|
||||||
|
GenericName[zh_TW]=網路瀏覽器
|
||||||
|
Keywords=Internet;WWW;Browser;Web;Explorer
|
||||||
|
Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب
|
||||||
|
Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador
|
||||||
|
Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer
|
||||||
|
Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer
|
||||||
|
Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet
|
||||||
|
Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen
|
||||||
|
Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ
|
||||||
|
Keywords[es]=Explorador;Internet;WWW
|
||||||
|
Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa
|
||||||
|
Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur
|
||||||
|
Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה;
|
||||||
|
Keywords[hr]=Internet;WWW;preglednik;Web
|
||||||
|
Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer
|
||||||
|
Keywords[it]=Internet;WWW;Browser;Web;Navigatore
|
||||||
|
Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk
|
||||||
|
Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ
|
||||||
|
Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside
|
||||||
|
Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online
|
||||||
|
Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador
|
||||||
|
Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador
|
||||||
|
Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис
|
||||||
|
Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer
|
||||||
|
Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet
|
||||||
|
Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara
|
||||||
|
Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд
|
||||||
|
Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web
|
||||||
|
Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站;
|
||||||
|
Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐
|
||||||
|
Exec=firefox %u
|
||||||
|
Terminal=false
|
||||||
|
X-MultipleArgs=false
|
||||||
|
Type=Application
|
||||||
|
Icon=firefox
|
||||||
|
Categories=GNOME;GTK;Network;WebBrowser;
|
||||||
|
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;video/webm;application/x-xpinstall;
|
||||||
|
StartupNotify=true
|
||||||
|
StartupWMClass=firefox
|
||||||
|
Actions=new-window;new-private-window;
|
||||||
|
|
||||||
|
[Desktop Action new-window]
|
||||||
|
Name=Open a New Window
|
||||||
|
Name[ar]=افتح نافذة جديدة
|
||||||
|
Name[ast]=Abrir una ventana nueva
|
||||||
|
Name[bn]=Abrir una ventana nueva
|
||||||
|
Name[ca]=Obre una finestra nova
|
||||||
|
Name[cs]=Otevřít nové okno
|
||||||
|
Name[da]=Åbn et nyt vindue
|
||||||
|
Name[de]=Ein neues Fenster öffnen
|
||||||
|
Name[el]=Νέο παράθυρο
|
||||||
|
Name[es]=Abrir una ventana nueva
|
||||||
|
Name[fi]=Avaa uusi ikkuna
|
||||||
|
Name[fr]=Ouvrir une nouvelle fenêtre
|
||||||
|
Name[gl]=Abrir unha nova xanela
|
||||||
|
Name[he]=פתיחת חלון חדש
|
||||||
|
Name[hr]=Otvori novi prozor
|
||||||
|
Name[hu]=Új ablak nyitása
|
||||||
|
Name[it]=Apri una nuova finestra
|
||||||
|
Name[ja]=新しいウィンドウを開く
|
||||||
|
Name[ko]=새 창 열기
|
||||||
|
Name[ku]=Paceyeke nû veke
|
||||||
|
Name[lt]=Atverti naują langą
|
||||||
|
Name[nb]=Åpne et nytt vindu
|
||||||
|
Name[nl]=Nieuw venster openen
|
||||||
|
Name[pt]=Abrir nova janela
|
||||||
|
Name[pt_BR]=Abrir nova janela
|
||||||
|
Name[ro]=Deschide o fereastră nouă
|
||||||
|
Name[ru]=Новое окно
|
||||||
|
Name[sk]=Otvoriť nové okno
|
||||||
|
Name[sl]=Odpri novo okno
|
||||||
|
Name[sv]=Öppna ett nytt fönster
|
||||||
|
Name[tr]=Yeni pencere aç
|
||||||
|
Name[ug]=يېڭى كۆزنەك ئېچىش
|
||||||
|
Name[uk]=Відкрити нове вікно
|
||||||
|
Name[vi]=Mở cửa sổ mới
|
||||||
|
Name[zh_CN]=新建窗口
|
||||||
|
Name[zh_TW]=開啟新視窗
|
||||||
|
Exec=firefox -new-window
|
||||||
|
|
||||||
|
[Desktop Action new-private-window]
|
||||||
|
Name=Open a New Private Window
|
||||||
|
Name[ar]=افتح نافذة جديدة للتصفح الخاص
|
||||||
|
Name[ca]=Obre una finestra nova en mode d'incògnit
|
||||||
|
Name[cs]=Otevřít nové anonymní okno
|
||||||
|
Name[de]=Ein neues privates Fenster öffnen
|
||||||
|
Name[el]=Νέο ιδιωτικό παράθυρο
|
||||||
|
Name[es]=Abrir una ventana privada nueva
|
||||||
|
Name[fi]=Avaa uusi yksityinen ikkuna
|
||||||
|
Name[fr]=Ouvrir une nouvelle fenêtre de navigation privée
|
||||||
|
Name[he]=פתיחת חלון גלישה פרטית חדש
|
||||||
|
Name[hu]=Új privát ablak nyitása
|
||||||
|
Name[it]=Apri una nuova finestra anonima
|
||||||
|
Name[nb]=Åpne et nytt privat vindu
|
||||||
|
Name[ru]=Новое приватное окно
|
||||||
|
Name[sl]=Odpri novo okno zasebnega brskanja
|
||||||
|
Name[sv]=Öppna ett nytt privat fönster
|
||||||
|
Name[tr]=Yeni gizli pencere aç
|
||||||
|
Name[uk]=Відкрити нове вікно у потайливому режимі
|
||||||
|
Name[zh_TW]=開啟新隱私瀏覽視窗
|
||||||
|
Exec=nixGL firefox -private-window
|
||||||
3
firefox/README.md
Normal file
3
firefox/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
toolkit.legacyUserProfileCustomizations.stylesheets to true
|
||||||
|
|
||||||
|
cp <profile>/chrome/userChrome.css
|
||||||
10
firefox/userChrome.css
Normal file
10
firefox/userChrome.css
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
/* hides the native tabs */
|
||||||
|
#TabsToolbar {
|
||||||
|
visibility: collapse;
|
||||||
|
}
|
||||||
|
#titlebar {
|
||||||
|
visibility: collapse;
|
||||||
|
}
|
||||||
|
#sidebar-header {
|
||||||
|
visibility: collapse !important;
|
||||||
|
}
|
||||||
3
fish/.config/fish/config.fish
Normal file
3
fish/.config/fish/config.fish
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
set -U fish_greeting
|
||||||
|
set -g -x NIX_PATH "/home/j/.nix-defexpr/channels/:/nix/var/nix/profiles/per-user/root/channels"
|
||||||
|
starship init fish | source
|
||||||
69
flake.lock
generated
Normal file
69
flake.lock
generated
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756579987,
|
||||||
|
"narHash": "sha256-duCce8zGsaMsrqqOmLOsuaV1PVIw/vXWnKuLKZClsGg=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "99a69bdf8a3c6bf038c4121e9c4b6e99706a187a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix-index-database": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1780210899,
|
||||||
|
"narHash": "sha256-4axz3OBPTKa6LIkXV8n0lc63MQU+et2CB5DGobEAi6k=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "97df9dc0b7c924344b793a15c1e8e4522ebb854e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770136044,
|
||||||
|
"narHash": "sha256-tlFqNG/uzz2++aAmn4v8J0vAkV3z7XngeIIB3rM3650=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "e576e3c9cf9bad747afcddd9e34f51d18c855b4e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-25.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nix-index-database": "nix-index-database",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
55
flake.nix
Normal file
55
flake.nix
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
description = "Home Manager configuration of j";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
# Specify the source of Home Manager and Nixpkgs.
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
nix-index-database.url = "github:nix-community/nix-index-database";
|
||||||
|
nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ self, nixpkgs, home-manager, ... } @ inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
dotfilesSrc = self.outPath; # store copy, for readDir only
|
||||||
|
dotfiles = "/home/j/git/dotfiles"; # live path, for symlink targets
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# TCS config
|
||||||
|
homeConfigurations."j@lenny" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
|
||||||
|
# Specify your home configuration modules here, for example,
|
||||||
|
# the path to your home.nix.
|
||||||
|
modules = [
|
||||||
|
./home-manager/common.nix
|
||||||
|
./home-manager/lenny.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Optionally use extraSpecialArgs
|
||||||
|
# to pass through arguments to home.nix
|
||||||
|
inherit extraSpecialArgs;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Home
|
||||||
|
homeConfigurations."j" = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
inherit extraSpecialArgs;
|
||||||
|
|
||||||
|
# Specify your home configuration modules here, for example,
|
||||||
|
# the path to your home.nix.
|
||||||
|
modules = [
|
||||||
|
./home-manager/common.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
60
ghostty/.config/ghostty/config
Normal file
60
ghostty/.config/ghostty/config
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# This is the configuration file for Ghostty.
|
||||||
|
#
|
||||||
|
# This template file has been automatically created at the following
|
||||||
|
# path since Ghostty couldn't find any existing config files on your system:
|
||||||
|
#
|
||||||
|
# /home/j/.config/ghostty/config
|
||||||
|
#
|
||||||
|
# The template does not set any default options, since Ghostty ships
|
||||||
|
# with sensible defaults for all options. Users should only need to set
|
||||||
|
# options that they want to change from the default.
|
||||||
|
#
|
||||||
|
# Run `ghostty +show-config --default --docs` to view a list of
|
||||||
|
# all available config options and their default values.
|
||||||
|
#
|
||||||
|
# Additionally, each config option is also explained in detail
|
||||||
|
# on Ghostty's website, at https://ghostty.org/docs/config.
|
||||||
|
#
|
||||||
|
# Ghostty can reload the configuration while running by using the menu
|
||||||
|
# options or the bound key (default: Command + Shift + comma on macOS and
|
||||||
|
# Control + Shift + comma on other platforms). Not all config options can be
|
||||||
|
# reloaded while running; some only apply to new windows and others may require
|
||||||
|
# a full restart to take effect.
|
||||||
|
|
||||||
|
# Config syntax crash course
|
||||||
|
# ==========================
|
||||||
|
# # The config file consists of simple key-value pairs,
|
||||||
|
# # separated by equals signs.
|
||||||
|
font-family = FiraCode Nerd Font Mono
|
||||||
|
font-size = 14
|
||||||
|
# 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 = black
|
||||||
|
#123abc
|
||||||
|
# theme = Dark Modern
|
||||||
|
# theme = Soft Server
|
||||||
|
# theme = Zenwritten Dark
|
||||||
|
# theme = Operator Mono Dark
|
||||||
|
# theme = Monokai Remastered
|
||||||
|
# theme = Solarized Dark Patched
|
||||||
|
theme = 3024 Night
|
||||||
|
#
|
||||||
|
# # 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
|
||||||
|
|
||||||
|
keybind = ctrl+[=text:\x1b
|
||||||
13
git/.config/git/config
Normal file
13
git/.config/git/config
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[user]
|
||||||
|
name = J. Fernando Sánchez
|
||||||
|
email = j@sinpapel.es
|
||||||
|
|
||||||
|
[core]
|
||||||
|
pager = delta
|
||||||
|
|
||||||
|
[delta]
|
||||||
|
side-by-side = true
|
||||||
|
|
||||||
|
[includeIf "gitdir:~/git/work/tcs/"]
|
||||||
|
path = tcs.config
|
||||||
|
|
||||||
3
git/.config/git/tcs.config
Normal file
3
git/.config/git/tcs.config
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[user]
|
||||||
|
name = J. Fernando Sánchez
|
||||||
|
email = f.sanchez@thechannelstore.tv
|
||||||
@@ -1,10 +1,15 @@
|
|||||||
[user]
|
[user]
|
||||||
name = J. Fernando Sánchez
|
name = J. Fernando Sánchez
|
||||||
email = balkian@gmail.com
|
email = j@sanchezrada.es
|
||||||
|
|
||||||
[diff]
|
[diff]
|
||||||
tool = vimdiff
|
tool = delta
|
||||||
[alias]
|
[alias]
|
||||||
d = difftool
|
d = difftool
|
||||||
|
|
||||||
|
[includeIf "gitdir:~/git/work/tcs"]
|
||||||
|
path = ~/.config/git/tcs.config
|
||||||
|
|
||||||
[include]
|
[include]
|
||||||
path = ~/.gitconfig_secret
|
path = ~/.gitconfig_secret
|
||||||
|
|
||||||
|
|||||||
15
helix/.config/helix/config.toml
Normal file
15
helix/.config/helix/config.toml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
theme = "github_dark"
|
||||||
|
|
||||||
|
[editor]
|
||||||
|
line-number = "relative"
|
||||||
|
mouse = false
|
||||||
|
auto-pairs = false
|
||||||
|
soft-wrap.enable = true
|
||||||
|
|
||||||
|
[editor.cursor-shape]
|
||||||
|
insert = "bar"
|
||||||
|
normal = "block"
|
||||||
|
select = "underline"
|
||||||
|
|
||||||
|
[editor.file-picker]
|
||||||
|
hidden = false
|
||||||
265
home-manager/common.nix
Normal file
265
home-manager/common.nix
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
{ config, pkgs, lib, inputs, dotfilesSrc, dotfiles, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
createDotLinks = name:
|
||||||
|
let
|
||||||
|
configDir = dotfilesSrc + "/${name}/.config";
|
||||||
|
allEntries = builtins.readDir configDir;
|
||||||
|
entries = builtins.attrNames allEntries; # both files and dirs
|
||||||
|
in
|
||||||
|
builtins.listToAttrs (map (entry: {
|
||||||
|
name = entry;
|
||||||
|
value = {
|
||||||
|
source = config.lib.file.mkOutOfStoreSymlink "${dotfiles}/${name}/.config/${entry}";
|
||||||
|
};
|
||||||
|
}) entries);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
inputs.nix-index-database.homeModules.default
|
||||||
|
];
|
||||||
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
|
# manage.
|
||||||
|
home.username = "j";
|
||||||
|
home.homeDirectory = "/home/j";
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your configuration is
|
||||||
|
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||||
|
# introduces backwards incompatible changes.
|
||||||
|
#
|
||||||
|
# You should not change this value, even if you update Home Manager. If you do
|
||||||
|
# want to update the value, then make sure to first check the Home Manager
|
||||||
|
# release notes.
|
||||||
|
home.stateVersion = "25.05"; # Please read the comment before changing.
|
||||||
|
|
||||||
|
programs.nix-index.enable = true;
|
||||||
|
programs.nix-index-database.comma.enable = true;
|
||||||
|
# Optional: installs 'comma' too
|
||||||
|
|
||||||
|
# The home.packages option allows you to install Nix packages into your
|
||||||
|
# environment.
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Desktop
|
||||||
|
pavucontrol
|
||||||
|
wofi
|
||||||
|
waybar
|
||||||
|
mako # Notification daemon
|
||||||
|
hyprlock # Lock
|
||||||
|
hypridle # Run lock on idle
|
||||||
|
|
||||||
|
pkgs.nerd-fonts.fira-code
|
||||||
|
pkgs.nerd-fonts.monoid
|
||||||
|
|
||||||
|
#wezterm
|
||||||
|
ghostty
|
||||||
|
ghostty.terminfo
|
||||||
|
|
||||||
|
# Editors
|
||||||
|
emacs
|
||||||
|
#neovim # This and packages.neovim.enable cannot be done at the same time
|
||||||
|
helix
|
||||||
|
|
||||||
|
# Utils
|
||||||
|
jq
|
||||||
|
bat # Replacement for less
|
||||||
|
delta # Replacement for less (for git diff and the like)
|
||||||
|
eza # Better ld
|
||||||
|
zoxide # better cd
|
||||||
|
yazi # File manager
|
||||||
|
ripgrep # Better search
|
||||||
|
fzf # Fuzzy file finder
|
||||||
|
dust # File disk utilization
|
||||||
|
gnumake
|
||||||
|
fd
|
||||||
|
|
||||||
|
zenith # System monitor
|
||||||
|
|
||||||
|
# Productivity
|
||||||
|
taskwarrior3
|
||||||
|
taskwarrior-tui
|
||||||
|
timewarrior
|
||||||
|
|
||||||
|
# Shells
|
||||||
|
fish
|
||||||
|
grc # Colorizer
|
||||||
|
fishPlugins.grc
|
||||||
|
starship
|
||||||
|
zellij
|
||||||
|
|
||||||
|
# Dev tools
|
||||||
|
git
|
||||||
|
lazygit
|
||||||
|
jujutsu
|
||||||
|
jjui
|
||||||
|
lazyjj
|
||||||
|
meld
|
||||||
|
|
||||||
|
# Python
|
||||||
|
python3
|
||||||
|
uv
|
||||||
|
|
||||||
|
# Password manager
|
||||||
|
keepassxc
|
||||||
|
|
||||||
|
#uutils-coreutils
|
||||||
|
|
||||||
|
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||||
|
# # overrides. You can do that directly here, just don't forget the
|
||||||
|
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||||
|
# # fonts?
|
||||||
|
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||||
|
|
||||||
|
# # You can also create simple shell scripts directly inside your
|
||||||
|
# # configuration. For example, this adds a command 'my-hello' to your
|
||||||
|
# # environment:
|
||||||
|
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||||
|
# echo "Hello, ${config.home.username}!"
|
||||||
|
# '')
|
||||||
|
];
|
||||||
|
|
||||||
|
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||||
|
# plain files is through 'home.file'.
|
||||||
|
home.file = {
|
||||||
|
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||||
|
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||||
|
# # symlink to the Nix store copy.
|
||||||
|
# ".screenrc".source = dotfiles/screenrc;
|
||||||
|
|
||||||
|
# # You can also set the file content immediately.
|
||||||
|
# ".gradle/gradle.properties".text = ''
|
||||||
|
# org.gradle.console=verbose
|
||||||
|
# org.gradle.daemon.idletimeout=3600000
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Home Manager can also manage your environment variables through
|
||||||
|
# 'home.sessionVariables'. These will be explicitly sourced when using a
|
||||||
|
# shell provided by Home Manager. If you don't want to manage your shell
|
||||||
|
# through Home Manager then you have to manually source 'hm-session-vars.sh'
|
||||||
|
# located at either
|
||||||
|
#
|
||||||
|
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# /etc/profiles/per-user/j/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
xdg.enable = true;
|
||||||
|
# I am not sure this is working
|
||||||
|
home.sessionVariables = {
|
||||||
|
XDG_BIN_HOME = "${config.home.homeDirectory}/.local/bin";
|
||||||
|
};
|
||||||
|
home.sessionPath = [ "$XDG_BIN_HOME" ];
|
||||||
|
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
programs.eza = {
|
||||||
|
enableFishIntegration = true;
|
||||||
|
icons = "auto";
|
||||||
|
git = true;
|
||||||
|
extraOptions = [
|
||||||
|
"--color=always"
|
||||||
|
"--tree"
|
||||||
|
"--level=1"
|
||||||
|
"--group-directories=first"
|
||||||
|
"--dereference"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.shellAliases = {
|
||||||
|
lg = "lazygit";
|
||||||
|
gs = "git status";
|
||||||
|
j = "jj";
|
||||||
|
js = "jj status";
|
||||||
|
jt = "jj tug";
|
||||||
|
jf = "jj git fetch";
|
||||||
|
jl = "jj log";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
interactiveShellInit = ''
|
||||||
|
set fish_greeting
|
||||||
|
fish_add_path -g $HOME/.local/bin
|
||||||
|
'';
|
||||||
|
shellInit = ''
|
||||||
|
set -gx EDITOR "nvim"
|
||||||
|
set -gx VISUAL "$EDITOR"
|
||||||
|
'';
|
||||||
|
plugins = [
|
||||||
|
{ name = "grc"; src = pkgs.fishPlugins.grc.src; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
home.shellAliases = {
|
||||||
|
nvimdiff = "nvim -d";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
#programs.neovim.enable = true;
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
(nvim-treesitter.withPlugins (p: with p; [
|
||||||
|
nix
|
||||||
|
lua
|
||||||
|
markdown
|
||||||
|
]))
|
||||||
|
];
|
||||||
|
|
||||||
|
extraLuaConfig = ''
|
||||||
|
vim.opt.foldmethod = "expr"
|
||||||
|
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||||
|
vim.opt.foldlevel = 99
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = "*",
|
||||||
|
callback = function()
|
||||||
|
local has_highlighter = vim.api.nvim_buf_line_count(0) > 0 and pcall(vim.treesitter.get_parser)
|
||||||
|
if not has_highlighter then
|
||||||
|
vim.wo.foldmethod = "indent"
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
#programs.neovim.defaultEditor = false;
|
||||||
|
#programs.helix.enable = true;
|
||||||
|
#programs.helix.defaultEditor = true;
|
||||||
|
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
options = [
|
||||||
|
"--cmd z"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs.bash = {
|
||||||
|
enable = true;
|
||||||
|
initExtra = ''
|
||||||
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||||
|
then
|
||||||
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
|
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||||
|
fi
|
||||||
|
''; # Launch fish on startup
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
xdg.configFile = lib.mkMerge (map createDotLinks [
|
||||||
|
"git" "niri" "jj" "helix" "ghostty" "starship" "zellij"
|
||||||
|
]);
|
||||||
|
home.file = {
|
||||||
|
".pdbrc" = { source = config.lib.file.mkOutOfStoreSymlink "${dotfiles}/python/.pdbrc";};
|
||||||
|
".pdb_startup.py" = { source = config.lib.file.mkOutOfStoreSymlink "${dotfiles}/python/.pdb_startup.py";};
|
||||||
|
};
|
||||||
|
}
|
||||||
43
home-manager/lenny.nix
Normal file
43
home-manager/lenny.nix
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ansible
|
||||||
|
awscli2
|
||||||
|
cargo-cross
|
||||||
|
rustup
|
||||||
|
rustc
|
||||||
|
gcc
|
||||||
|
python3Packages.jedi-language-server
|
||||||
|
ruff
|
||||||
|
vial
|
||||||
|
chromium
|
||||||
|
graphviz
|
||||||
|
|
||||||
|
# Bloque VS Code corregido
|
||||||
|
((pkgs.vscode-with-extensions.override {
|
||||||
|
vscodeExtensions = with pkgs.vscode-extensions; [
|
||||||
|
jnoortheen.nix-ide
|
||||||
|
ms-python.python
|
||||||
|
ms-vscode-remote.remote-containers
|
||||||
|
ms-azuretools.vscode-docker
|
||||||
|
ms-vscode-remote.remote-ssh
|
||||||
|
vscodevim.vim
|
||||||
|
yzhang.markdown-all-in-one
|
||||||
|
];
|
||||||
|
}).overrideAttrs (oldAttrs: {
|
||||||
|
makeWrapperArgs = (oldAttrs.makeWrapperArgs or []) ++ [
|
||||||
|
"--set-default" "NIXOS_OZONE_WL" "1"
|
||||||
|
];
|
||||||
|
})) # Los paréntesis dobles aseguran que se evalúe como un paquete único
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/Code/User/settings.json".text = ''
|
||||||
|
{
|
||||||
|
"window.titleBarStyle": "custom"
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
81
home-manager/old.nix
Normal file
81
home-manager/old.nix
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
{ config, pkgs, nixgl, ... }:
|
||||||
|
let nixgl = import <nixgl> {};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Home Manager needs a bit of information about you and the
|
||||||
|
# paths it should manage.
|
||||||
|
home.username = "j";
|
||||||
|
home.homeDirectory = "/home/j";
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
allowUnfreePredicate = (_: true);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your
|
||||||
|
# configuration is compatible with. This helps avoid breakage
|
||||||
|
# when a new Home Manager release introduces backwards
|
||||||
|
# incompatible changes.
|
||||||
|
#
|
||||||
|
# You can update Home Manager without changing this value. See
|
||||||
|
# the Home Manager release notes for a list of state version
|
||||||
|
# changes in each release.
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
home.packages = [
|
||||||
|
pkgs.htop
|
||||||
|
pkgs.zoom-us
|
||||||
|
pkgs.fortune
|
||||||
|
pkgs.tmux
|
||||||
|
pkgs.git
|
||||||
|
pkgs.git-lfs
|
||||||
|
pkgs.hugo
|
||||||
|
pkgs.fish
|
||||||
|
pkgs.fd
|
||||||
|
pkgs.helix
|
||||||
|
pkgs.starship
|
||||||
|
pkgs.ripgrep
|
||||||
|
pkgs.eza
|
||||||
|
pkgs.ansible
|
||||||
|
pkgs.ranger
|
||||||
|
pkgs.sshpass
|
||||||
|
pkgs.jq
|
||||||
|
pkgs.bat
|
||||||
|
pkgs.davfs2
|
||||||
|
pkgs.pandoc
|
||||||
|
pkgs.rustup
|
||||||
|
#pkgs.texlive
|
||||||
|
# pkgs.texlive.combine {
|
||||||
|
# inherit (texlive) xcolor
|
||||||
|
# }
|
||||||
|
pkgs.wl-clipboard
|
||||||
|
nixgl.auto.nixGLDefault
|
||||||
|
#(pkgs.python311.withPackages (p: with p; [
|
||||||
|
#jupyterlab
|
||||||
|
#matplotlib
|
||||||
|
#pandas
|
||||||
|
#openpyxl
|
||||||
|
#]))
|
||||||
|
pkgs.alacritty
|
||||||
|
pkgs.wezterm
|
||||||
|
pkgs.kitty
|
||||||
|
pkgs.zellij
|
||||||
|
(pkgs.nerdfonts.override { fonts = [ "Iosevka" "IosevkaTerm" "Hack" "CascadiaCode" "FiraCode" "DejaVuSansMono" ]; })
|
||||||
|
];
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
vimAlias = true;
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
auto-pairs
|
||||||
|
fzf-vim
|
||||||
|
lightline-vim
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.owncloud-client.enable = true;
|
||||||
|
}
|
||||||
4
home-manager/personal.nix
Normal file
4
home-manager/personal.nix
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [ ];
|
||||||
|
}
|
||||||
1
jj/.config/jj/.gitignore
vendored
Normal file
1
jj/.config/jj/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
repos
|
||||||
31
jj/.config/jj/config.toml
Normal file
31
jj/.config/jj/config.toml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
"$schema" = "https://jj-vcs.github.io/jj/latest/config-schema.json"
|
||||||
|
|
||||||
|
[user]
|
||||||
|
name = "J. Fernando Sánchez"
|
||||||
|
email = "j@sanchezrada.es"
|
||||||
|
|
||||||
|
[[--scope]]
|
||||||
|
--when.repositories = ["~/git/work/tcs"]
|
||||||
|
[--scope.user]
|
||||||
|
name = "J. Fernando Sánchez"
|
||||||
|
email = "f.sanchez@thechannelstore.tv"
|
||||||
|
|
||||||
|
[aliases]
|
||||||
|
tug = ["bookmark", "move", "--from", "heads(::@- & bookmarks())", "--to", "@-"]
|
||||||
|
l = ["log"]
|
||||||
|
s = ["status"]
|
||||||
|
f = ["git", "fetch"]
|
||||||
|
p = ["git", "push"]
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
pager = "delta"
|
||||||
|
diff-formatter = "delta"
|
||||||
|
paginate = "auto"
|
||||||
|
default-command = ["log", "--reversed"]
|
||||||
|
merge-editor = "meld"
|
||||||
|
|
||||||
|
[merge-tools.delta]
|
||||||
|
diff-args = ["--side-by-side", "$left", "$right", "--width=$width"]
|
||||||
|
|
||||||
|
[revset-aliases]
|
||||||
|
'private_commits()' = "description('[local]')"
|
||||||
8
kitty/.config/kitty/open-actions.conf
Normal file
8
kitty/.config/kitty/open-actions.conf
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
protocol file
|
||||||
|
mime image/*
|
||||||
|
action launch --type=overlay kitten icat --hold ${FILE_PATH}
|
||||||
|
|
||||||
|
protocol file
|
||||||
|
ext log
|
||||||
|
action launch --title ${FILE} --type=os-window tail -f ${FILE_PATH}
|
||||||
|
action change_font_size current -2
|
||||||
15
lazygit/.config/lazygit/config.yml
Normal file
15
lazygit/.config/lazygit/config.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
customCommands:
|
||||||
|
# - key: "m"
|
||||||
|
# description: "Merge (no‑ff, no‑commit)"
|
||||||
|
# command: "git merge --no-ff --no-commit {{.SelectedBranch}}"
|
||||||
|
# context: "localBranches"
|
||||||
|
# output: terminal
|
||||||
|
- key: "m"
|
||||||
|
description: "Merge (no‑ff, no‑commit)"
|
||||||
|
command: "git merge --no-ff --no-commit {{.SelectedLocalBranch.Name}}"
|
||||||
|
context: "localBranches"
|
||||||
|
output: terminal
|
||||||
|
|
||||||
|
#keybindings:
|
||||||
|
# branches:
|
||||||
|
# merge: "m" # make the UI “Merge” use our custom command
|
||||||
604
niri/.config/niri/config.kdl
Normal file
604
niri/.config/niri/config.kdl
Normal file
@@ -0,0 +1,604 @@
|
|||||||
|
// This config is in the KDL format: https://kdl.dev
|
||||||
|
// "/-" comments out the following node.
|
||||||
|
// Check the wiki for a full description of the configuration:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
|
||||||
|
|
||||||
|
hotkey-overlay {
|
||||||
|
skip-at-startup
|
||||||
|
}
|
||||||
|
|
||||||
|
// Input device configuration.
|
||||||
|
// Find the full list of options on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Input
|
||||||
|
input {
|
||||||
|
keyboard {
|
||||||
|
xkb {
|
||||||
|
// You can set rules, model, layout, variant and options.
|
||||||
|
// For more information, see xkeyboard-config(7).
|
||||||
|
|
||||||
|
// For example:
|
||||||
|
layout "us"
|
||||||
|
variant "altgr-intl"
|
||||||
|
options "ctrl:nocaps"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable numlock on startup, omitting this setting disables it.
|
||||||
|
//numlock
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next sections include libinput settings.
|
||||||
|
// Omitting settings disables them, or leaves them at their default values.
|
||||||
|
touchpad {
|
||||||
|
// off
|
||||||
|
tap
|
||||||
|
// dwt
|
||||||
|
// dwtp
|
||||||
|
// drag false
|
||||||
|
// drag-lock
|
||||||
|
natural-scroll
|
||||||
|
// accel-speed 0.2
|
||||||
|
// accel-profile "flat"
|
||||||
|
// scroll-method "two-finger"
|
||||||
|
// disabled-on-external-mouse
|
||||||
|
}
|
||||||
|
|
||||||
|
mouse {
|
||||||
|
// off
|
||||||
|
// natural-scroll
|
||||||
|
// accel-speed 0.2
|
||||||
|
// accel-profile "flat"
|
||||||
|
// scroll-method "no-scroll"
|
||||||
|
}
|
||||||
|
|
||||||
|
trackpoint {
|
||||||
|
// off
|
||||||
|
// natural-scroll
|
||||||
|
// accel-speed 0.2
|
||||||
|
// accel-profile "flat"
|
||||||
|
// scroll-method "on-button-down"
|
||||||
|
// scroll-button 273
|
||||||
|
// middle-emulation
|
||||||
|
}
|
||||||
|
|
||||||
|
// Uncomment this to make the mouse warp to the center of newly focused windows.
|
||||||
|
// warp-mouse-to-focus
|
||||||
|
|
||||||
|
// Focus windows and outputs automatically when moving the mouse into them.
|
||||||
|
// Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
|
||||||
|
// focus-follows-mouse max-scroll-amount="0%"
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can configure outputs by their name, which you can find
|
||||||
|
// by running `niri msg outputs` while inside a niri instance.
|
||||||
|
// The built-in laptop monitor is usually called "eDP-1".
|
||||||
|
// Find more information on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
|
||||||
|
// Remember to uncomment the node by removing "/-"!
|
||||||
|
// Settings that influence how windows are positioned and sized.
|
||||||
|
// Find more information on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
|
||||||
|
layout {
|
||||||
|
// Set gaps around windows in logical pixels.
|
||||||
|
gaps 0
|
||||||
|
|
||||||
|
// When to center a column when changing focus, options are:
|
||||||
|
// - "never", default behavior, focusing an off-screen column will keep at the left
|
||||||
|
// or right edge of the screen.
|
||||||
|
// - "always", the focused column will always be centered.
|
||||||
|
// - "on-overflow", focusing a column will center it if it doesn't fit
|
||||||
|
// together with the previously focused column.
|
||||||
|
center-focused-column "never"
|
||||||
|
|
||||||
|
// You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
|
||||||
|
preset-column-widths {
|
||||||
|
// Proportion sets the width as a fraction of the output width, taking gaps into account.
|
||||||
|
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
|
||||||
|
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
|
||||||
|
proportion 0.25
|
||||||
|
proportion 0.5
|
||||||
|
proportion 0.75
|
||||||
|
proportion 1.0
|
||||||
|
|
||||||
|
// Fixed sets the width in logical pixels exactly.
|
||||||
|
// fixed 1920
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
|
||||||
|
preset-window-heights {
|
||||||
|
proportion 1.0
|
||||||
|
proportion 0.75
|
||||||
|
proportion 0.5
|
||||||
|
proportion 0.25
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can change the default width of the new windows.
|
||||||
|
//default-column-width { proportion 0.5; }
|
||||||
|
// If you leave the brackets empty, the windows themselves will decide their initial width.
|
||||||
|
//default-column-width {
|
||||||
|
// proportion 0.25;
|
||||||
|
//}
|
||||||
|
default-column-width {}
|
||||||
|
|
||||||
|
// By default focus ring and border are rendered as a solid background rectangle
|
||||||
|
// behind windows. That is, they will show up through semitransparent windows.
|
||||||
|
// This is because windows using client-side decorations can have an arbitrary shape.
|
||||||
|
//
|
||||||
|
// If you don't like that, you should uncomment `prefer-no-csd` below.
|
||||||
|
// Niri will draw focus ring and border *around* windows that agree to omit their
|
||||||
|
// client-side decorations.
|
||||||
|
//
|
||||||
|
// Alternatively, you can override it with a window rule called
|
||||||
|
// `draw-border-with-background`.
|
||||||
|
|
||||||
|
// You can change how the focus ring looks.
|
||||||
|
focus-ring {
|
||||||
|
// Uncomment this line to disable the focus ring.
|
||||||
|
// off
|
||||||
|
|
||||||
|
// How many logical pixels the ring extends out from the windows.
|
||||||
|
width 4
|
||||||
|
|
||||||
|
// Colors can be set in a variety of ways:
|
||||||
|
// - CSS named colors: "red"
|
||||||
|
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
|
||||||
|
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
|
||||||
|
|
||||||
|
// Color of the ring on the active monitor.
|
||||||
|
//active-color "#7fc8ff"
|
||||||
|
active-color "#FFDB58"
|
||||||
|
|
||||||
|
// Color of the ring on inactive monitors.
|
||||||
|
inactive-color "#505050"
|
||||||
|
|
||||||
|
// You can also use gradients. They take precedence over solid colors.
|
||||||
|
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
|
||||||
|
// The angle is the same as in linear-gradient, and is optional,
|
||||||
|
// defaulting to 180 (top-to-bottom gradient).
|
||||||
|
// You can use any CSS linear-gradient tool on the web to set these up.
|
||||||
|
// Changing the color space is also supported, check the wiki for more info.
|
||||||
|
//
|
||||||
|
// active-gradient from="#80c8ff" to="#bbddff" angle=45
|
||||||
|
|
||||||
|
// You can also color the gradient relative to the entire view
|
||||||
|
// of the workspace, rather than relative to just the window itself.
|
||||||
|
// To do that, set relative-to="workspace-view".
|
||||||
|
//
|
||||||
|
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can also add a border. It's similar to the focus ring, but always visible.
|
||||||
|
border {
|
||||||
|
// The settings are the same as for the focus ring.
|
||||||
|
// If you enable the border, you probably want to disable the focus ring.
|
||||||
|
off
|
||||||
|
|
||||||
|
width 4
|
||||||
|
active-color "#ffc87f"
|
||||||
|
inactive-color "#505050"
|
||||||
|
|
||||||
|
// Color of the border around windows that request your attention.
|
||||||
|
urgent-color "#9b0000"
|
||||||
|
|
||||||
|
// active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
|
||||||
|
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can enable drop shadows for windows.
|
||||||
|
shadow {
|
||||||
|
// Uncomment the next line to enable shadows.
|
||||||
|
// on
|
||||||
|
|
||||||
|
// By default, the shadow draws only around its window, and not behind it.
|
||||||
|
// Uncomment this setting to make the shadow draw behind its window.
|
||||||
|
//
|
||||||
|
// Note that niri has no way of knowing about the CSD window corner
|
||||||
|
// radius. It has to assume that windows have square corners, leading to
|
||||||
|
// shadow artifacts inside the CSD rounded corners. This setting fixes
|
||||||
|
// those artifacts.
|
||||||
|
//
|
||||||
|
// However, instead you may want to set prefer-no-csd and/or
|
||||||
|
// geometry-corner-radius. Then, niri will know the corner radius and
|
||||||
|
// draw the shadow correctly, without having to draw it behind the
|
||||||
|
// window. These will also remove client-side shadows if the window
|
||||||
|
// draws any.
|
||||||
|
//
|
||||||
|
// draw-behind-window true
|
||||||
|
|
||||||
|
// You can change how shadows look. The values below are in logical
|
||||||
|
// pixels and match the CSS box-shadow properties.
|
||||||
|
|
||||||
|
// Softness controls the shadow blur radius.
|
||||||
|
softness 30
|
||||||
|
|
||||||
|
// Spread expands the shadow.
|
||||||
|
spread 5
|
||||||
|
|
||||||
|
// Offset moves the shadow relative to the window.
|
||||||
|
offset x=0 y=5
|
||||||
|
|
||||||
|
// You can also change the shadow color and opacity.
|
||||||
|
color "#0007"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
|
||||||
|
// You can think of them as a kind of outer gaps. They are set in logical pixels.
|
||||||
|
// Left and right struts will cause the next window to the side to always be visible.
|
||||||
|
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
|
||||||
|
// layer-shell panels and regular gaps.
|
||||||
|
struts {
|
||||||
|
left 2
|
||||||
|
right 2
|
||||||
|
top 2
|
||||||
|
bottom 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "terminal" {
|
||||||
|
open-on-output "DP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "firefox" {
|
||||||
|
open-on-output "DP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "teams" {
|
||||||
|
open-on-output "eDP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "agents" {
|
||||||
|
open-on-output "eDP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "notes" {
|
||||||
|
open-on-output "eDP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add lines like this to spawn processes at startup.
|
||||||
|
// Note that running niri as a session supports xdg-desktop-autostart,
|
||||||
|
// which may be more convenient to use.
|
||||||
|
// See the binds section below for more spawn examples.
|
||||||
|
|
||||||
|
// For now I've installed noctalia
|
||||||
|
// This line starts waybar, a commonly used bar for Wayland compositors.
|
||||||
|
spawn-at-startup "mako"
|
||||||
|
spawn-at-startup "waybar"
|
||||||
|
spawn-at-startup "hypridle"
|
||||||
|
//spawn-at-startup "noctalia-shell"
|
||||||
|
|
||||||
|
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
|
||||||
|
// If the client will specifically ask for CSD, the request will be honored.
|
||||||
|
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
|
||||||
|
// This option will also fix border/focus ring drawing behind some semitransparent windows.
|
||||||
|
// After enabling or disabling this, you need to restart the apps for this to take effect.
|
||||||
|
prefer-no-csd
|
||||||
|
|
||||||
|
// You can change the path where screenshots are saved.
|
||||||
|
// A ~ at the front will be expanded to the home directory.
|
||||||
|
// The path is formatted with strftime(3) to give you the screenshot date and time.
|
||||||
|
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
|
||||||
|
|
||||||
|
// You can also set this to null to disable saving screenshots to disk.
|
||||||
|
// screenshot-path null
|
||||||
|
|
||||||
|
// Animation settings.
|
||||||
|
// The wiki explains how to configure individual animations:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations
|
||||||
|
animations {
|
||||||
|
// Uncomment to turn off all animations.
|
||||||
|
// off
|
||||||
|
|
||||||
|
// Slow down all animations by this factor. Values below 1 speed them up instead.
|
||||||
|
slowdown 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// Window rules let you adjust behavior for individual windows.
|
||||||
|
// Find more information on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
|
||||||
|
|
||||||
|
// Work around WezTerm's initial configure bug
|
||||||
|
// by setting an empty default-column-width.
|
||||||
|
window-rule {
|
||||||
|
// This regular expression is intentionally made as specific as possible,
|
||||||
|
// since this is the default config, and we want no false positives.
|
||||||
|
// You can get away with just app-id="wezterm" if you want.
|
||||||
|
match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||||
|
default-column-width {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open the Firefox picture-in-picture player as floating by default.
|
||||||
|
window-rule {
|
||||||
|
// This app-id regular expression will work for both:
|
||||||
|
// - host Firefox (app-id is "firefox")
|
||||||
|
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
|
||||||
|
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
|
||||||
|
default-column-width {}
|
||||||
|
open-floating true
|
||||||
|
}
|
||||||
|
|
||||||
|
window-rule {
|
||||||
|
match app-id="firefox" title=r#".*Bitwarden.*"#
|
||||||
|
open-floating true
|
||||||
|
block-out-from "screen-capture"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Example: block out two password managers from screen capture.
|
||||||
|
// (This example rule is commented out with a "/-" in front.)
|
||||||
|
/-window-rule {
|
||||||
|
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||||
|
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
||||||
|
|
||||||
|
block-out-from "screen-capture"
|
||||||
|
|
||||||
|
// Use this instead if you want them visible on third-party screenshot tools.
|
||||||
|
// block-out-from "screencast"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Example: enable rounded corners for all windows.
|
||||||
|
// (This example rule is commented out with a "/-" in front.)
|
||||||
|
/-window-rule {
|
||||||
|
geometry-corner-radius 12
|
||||||
|
clip-to-geometry true
|
||||||
|
}
|
||||||
|
|
||||||
|
window-rule {
|
||||||
|
match app-id="firefox"
|
||||||
|
open-on-workspace "firefox"
|
||||||
|
}
|
||||||
|
|
||||||
|
binds {
|
||||||
|
// Keys consist of modifiers separated by + signs, followed by an XKB key name
|
||||||
|
// in the end. To find an XKB name for a particular key, you may use a program
|
||||||
|
// like wev.
|
||||||
|
//
|
||||||
|
// "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
|
||||||
|
// when running as a winit window.
|
||||||
|
//
|
||||||
|
// Most actions that you can bind here can also be invoked programmatically with
|
||||||
|
// `niri msg action do-something`.
|
||||||
|
|
||||||
|
// Mod-Shift-/, which is usually the same as Mod-?,
|
||||||
|
// shows a list of important hotkeys.
|
||||||
|
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||||
|
|
||||||
|
// Suggested binds for running programs: terminal, app launcher, screen locker.
|
||||||
|
Mod+return hotkey-overlay-title="Open a Terminal: ghostty" { spawn "ghostty"; }
|
||||||
|
Mod+space hotkey-overlay-title="Run an Application: wofi" { spawn "sh" "-c" "wofi --show dmenu,drun"; }
|
||||||
|
Mod+Delete hotkey-overlay-title="Lock the Screen: hyprlock" { spawn "hyprlock"; }
|
||||||
|
|
||||||
|
// You can also use a shell. Do this if you need pipes, multiple commands, etc.
|
||||||
|
// Note: the entire command goes as a single argument in the end.
|
||||||
|
// Mod+T { spawn "bash" "-c" "notify-send hello && exec wezterm"; }
|
||||||
|
|
||||||
|
Ctrl+Alt+W { spawn "firefox" "--ProfileManager"; }
|
||||||
|
Ctrl+Alt+Q { spawn "chromium-browser" "--ozone-platform=wayland"; }
|
||||||
|
|
||||||
|
// Brightness control
|
||||||
|
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "+5%"; }
|
||||||
|
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-"; }
|
||||||
|
// Example volume keys mappings for PipeWire & WirePlumber.
|
||||||
|
// The allow-when-locked=true property makes them work even when the session is locked.
|
||||||
|
XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+" "--limit" "1.0"; }
|
||||||
|
XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-" "--limit" "0.0"; }
|
||||||
|
XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
|
||||||
|
XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
|
||||||
|
|
||||||
|
// Open/close the Overview: a zoomed-out view of workspaces and windows.
|
||||||
|
// You can also move the mouse into the top-left hot corner,
|
||||||
|
// or do a four-finger swipe up on a touchpad.
|
||||||
|
Mod+O repeat=false { toggle-overview; }
|
||||||
|
|
||||||
|
Mod+Q { close-window; }
|
||||||
|
|
||||||
|
Mod+H { focus-column-left; }
|
||||||
|
Mod+J { focus-window-down; }
|
||||||
|
Mod+K { focus-window-up; }
|
||||||
|
Mod+L { focus-column-right; }
|
||||||
|
|
||||||
|
//Mod+Alt+H { move-window-left; }
|
||||||
|
Mod+Alt+J { move-window-down; }
|
||||||
|
//Mod+Alt+L { move-window-right; }
|
||||||
|
Mod+Alt+K { move-window-up; }
|
||||||
|
|
||||||
|
Mod+Ctrl+H { move-column-left-or-to-monitor-left; }
|
||||||
|
Mod+Ctrl+J { move-window-down; }
|
||||||
|
Mod+Ctrl+L { move-column-right-or-to-monitor-right; }
|
||||||
|
Mod+Ctrl+K { move-window-up; }
|
||||||
|
|
||||||
|
Mod+Home { focus-column-first; }
|
||||||
|
Mod+End { focus-column-last; }
|
||||||
|
Mod+Ctrl+Home { move-column-to-first; }
|
||||||
|
Mod+Ctrl+End { move-column-to-last; }
|
||||||
|
|
||||||
|
Mod+Shift+Left { focus-monitor-left; }
|
||||||
|
Mod+Shift+Down { focus-monitor-down; }
|
||||||
|
Mod+Shift+Up { focus-monitor-up; }
|
||||||
|
Mod+Shift+Right { focus-monitor-right; }
|
||||||
|
|
||||||
|
Mod+Shift+H { focus-monitor-left; }
|
||||||
|
Mod+Shift+J { focus-monitor-down; }
|
||||||
|
Mod+Shift+K { focus-monitor-up; }
|
||||||
|
Mod+Shift+L { focus-monitor-right; }
|
||||||
|
|
||||||
|
|
||||||
|
// Alternatively, there are commands to move just a single window:
|
||||||
|
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// And you can also move a whole workspace to another monitor:
|
||||||
|
Ctrl+Alt+H { move-workspace-to-monitor-left; }
|
||||||
|
Ctrl+Alt+L { move-workspace-to-monitor-right; }
|
||||||
|
Ctrl+Alt+J { move-workspace-to-monitor-down; }
|
||||||
|
Ctrl+Alt+K { move-workspace-to-monitor-up; }
|
||||||
|
// ...
|
||||||
|
|
||||||
|
Mod+Page_Down { focus-workspace-down; }
|
||||||
|
Mod+Page_Up { focus-workspace-up; }
|
||||||
|
Mod+D { focus-workspace-down; }
|
||||||
|
Mod+U { focus-workspace-up; }
|
||||||
|
|
||||||
|
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
|
||||||
|
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
|
||||||
|
Mod+Ctrl+U { move-column-to-workspace-down; }
|
||||||
|
Mod+Ctrl+I { move-column-to-workspace-up; }
|
||||||
|
|
||||||
|
// Alternatively, there are commands to move just a single window:
|
||||||
|
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
|
||||||
|
// ...
|
||||||
|
|
||||||
|
Mod+Shift+Page_Down { move-workspace-down; }
|
||||||
|
Mod+Shift+Page_Up { move-workspace-up; }
|
||||||
|
Mod+Shift+U { move-workspace-up; }
|
||||||
|
Mod+Shift+D { move-workspace-down; }
|
||||||
|
|
||||||
|
// You can bind mouse wheel scroll ticks using the following syntax.
|
||||||
|
// These binds will change direction based on the natural-scroll setting.
|
||||||
|
//
|
||||||
|
// To avoid scrolling through workspaces really fast, you can use
|
||||||
|
// the cooldown-ms property. The bind will be rate-limited to this value.
|
||||||
|
// You can set a cooldown on any bind, but it's most useful for the wheel.
|
||||||
|
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
|
||||||
|
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
|
||||||
|
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
|
||||||
|
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
|
||||||
|
|
||||||
|
Mod+WheelScrollRight { focus-column-right; }
|
||||||
|
Mod+WheelScrollLeft { focus-column-left; }
|
||||||
|
Mod+Ctrl+WheelScrollRight { move-column-right-or-to-monitor-right; }
|
||||||
|
Mod+Ctrl+WheelScrollLeft { move-column-left-or-to-monitor-left; }
|
||||||
|
|
||||||
|
// Usually scrolling up and down with Shift in applications results in
|
||||||
|
// horizontal scrolling; these binds replicate that.
|
||||||
|
Mod+Shift+WheelScrollDown { focus-column-right; }
|
||||||
|
Mod+Shift+WheelScrollUp { focus-column-left; }
|
||||||
|
Mod+Ctrl+Shift+WheelScrollDown { move-column-right-or-to-monitor-right; }
|
||||||
|
Mod+Ctrl+Shift+WheelScrollUp { move-column-left-or-to-monitor-left;}
|
||||||
|
|
||||||
|
// Similarly, you can bind touchpad scroll "ticks".
|
||||||
|
// Touchpad scrolling is continuous, so for these binds it is split into
|
||||||
|
// discrete intervals.
|
||||||
|
// These binds are also affected by touchpad's natural-scroll, so these
|
||||||
|
// example binds are "inverted", since we have natural-scroll enabled for
|
||||||
|
// touchpads by default.
|
||||||
|
// Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
|
||||||
|
// Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
|
||||||
|
|
||||||
|
// You can refer to workspaces by index. However, keep in mind that
|
||||||
|
// niri is a dynamic workspace system, so these commands are kind of
|
||||||
|
// "best effort". Trying to refer to a workspace index bigger than
|
||||||
|
// the current workspace count will instead refer to the bottommost
|
||||||
|
// (empty) workspace.
|
||||||
|
//
|
||||||
|
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
|
||||||
|
// will all refer to the 3rd workspace.
|
||||||
|
Mod+1 { focus-workspace "terminal"; }
|
||||||
|
Mod+2 { focus-workspace "firefox"; }
|
||||||
|
Mod+3 { focus-workspace "notes"; }
|
||||||
|
Mod+4 { focus-workspace "agents"; }
|
||||||
|
//Mod+5 { focus-workspace "5"; }
|
||||||
|
//Mod+6 { focus-workspace "6"; }
|
||||||
|
//Mod+7 { focus-workspace "7"; }
|
||||||
|
//Mod+8 { focus-workspace "8"; }
|
||||||
|
//Mod+9 { focus-workspace "9"; }
|
||||||
|
Mod+grave { focus-workspace "teams"; }
|
||||||
|
Mod+0 { focus-workspace "teams"; }
|
||||||
|
Mod+Ctrl+1 { move-column-to-workspace "terminal"; }
|
||||||
|
Mod+Ctrl+2 { move-column-to-workspace "firefox"; }
|
||||||
|
Mod+Ctrl+3 { move-column-to-workspace "notes"; }
|
||||||
|
Mod+Ctrl+4 { move-column-to-workspace "agents"; }
|
||||||
|
//Mod+Ctrl+5 { move-column-to-workspace "5"; }
|
||||||
|
//Mod+Ctrl+6 { move-column-to-workspace "6"; }
|
||||||
|
//Mod+Ctrl+7 { move-column-to-workspace "7"; }
|
||||||
|
//Mod+Ctrl+8 { move-column-to-workspace "8"; }
|
||||||
|
//Mod+Ctrl+9 { move-column-to-workspace "9"; }
|
||||||
|
Mod+Ctrl+0 { move-column-to-workspace "teams"; }
|
||||||
|
|
||||||
|
// Alternatively, there are commands to move just a single window:
|
||||||
|
// Mod+Ctrl+1 { move-window-to-workspace 1; }
|
||||||
|
|
||||||
|
// Switches focus between the current and the previous workspace.
|
||||||
|
// Mod+Tab { focus-workspace-previous; }
|
||||||
|
|
||||||
|
// The following binds move the focused window in and out of a column.
|
||||||
|
// If the window is alone, they will consume it into the nearby column to the side.
|
||||||
|
// If the window is already in a column, they will expel it out.
|
||||||
|
Mod+BracketLeft { consume-or-expel-window-left; }
|
||||||
|
Mod+BracketRight { consume-or-expel-window-right; }
|
||||||
|
|
||||||
|
// Consume one window from the right to the bottom of the focused column.
|
||||||
|
Mod+Comma { consume-window-into-column; }
|
||||||
|
// Expel the bottom window from the focused column to the right.
|
||||||
|
Mod+Period { expel-window-from-column; }
|
||||||
|
|
||||||
|
Mod+R { switch-preset-column-width; }
|
||||||
|
Mod+Shift+R { switch-preset-window-height; }
|
||||||
|
Mod+Ctrl+R { reset-window-height; }
|
||||||
|
Mod+F { maximize-column; }
|
||||||
|
Mod+G { maximize-window-to-edges; }
|
||||||
|
Mod+Shift+F { fullscreen-window; }
|
||||||
|
|
||||||
|
// Expand the focused column to space not taken up by other fully visible columns.
|
||||||
|
// Makes the column "fill the rest of the space".
|
||||||
|
Mod+Ctrl+F { expand-column-to-available-width; }
|
||||||
|
|
||||||
|
Mod+C { center-column; }
|
||||||
|
|
||||||
|
// Center all fully visible columns on screen.
|
||||||
|
Mod+Ctrl+C { center-visible-columns; }
|
||||||
|
|
||||||
|
// Finer width adjustments.
|
||||||
|
// This command can also:
|
||||||
|
// * set width in pixels: "1000"
|
||||||
|
// * adjust width in pixels: "-5" or "+5"
|
||||||
|
// * set width as a percentage of screen width: "25%"
|
||||||
|
// * adjust width as a percentage of screen width: "-10%" or "+10%"
|
||||||
|
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
|
||||||
|
// set-column-width "100" will make the column occupy 200 physical screen pixels.
|
||||||
|
Mod+Minus { set-column-width "-5%"; }
|
||||||
|
Mod+Equal { set-column-width "+5%"; }
|
||||||
|
|
||||||
|
// Finer height adjustments when in column with other windows.
|
||||||
|
Mod+Shift+Minus { set-window-height "-5%"; }
|
||||||
|
Mod+Shift+Equal { set-window-height "+5%"; }
|
||||||
|
|
||||||
|
// Move the focused window between the floating and the tiling layout.
|
||||||
|
Mod+V { toggle-window-floating; }
|
||||||
|
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
|
||||||
|
|
||||||
|
// Toggle tabbed column display mode.
|
||||||
|
// Windows in this column will appear as vertical tabs,
|
||||||
|
// rather than stacked on top of each other.
|
||||||
|
Mod+W { toggle-column-tabbed-display; }
|
||||||
|
|
||||||
|
// Actions to switch layouts.
|
||||||
|
// Note: if you uncomment these, make sure you do NOT have
|
||||||
|
// a matching layout switch hotkey configured in xkb options above.
|
||||||
|
// Having both at once on the same hotkey will break the switching,
|
||||||
|
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||||
|
// Mod+Space { switch-layout "next"; }
|
||||||
|
// Mod+Shift+Space { switch-layout "prev"; }
|
||||||
|
|
||||||
|
Print { screenshot; }
|
||||||
|
Ctrl+Print { screenshot-screen; }
|
||||||
|
Alt+Print { screenshot-window; }
|
||||||
|
|
||||||
|
// Applications such as remote-desktop clients and software KVM switches may
|
||||||
|
// request that niri stops processing the keyboard shortcuts defined here
|
||||||
|
// so they may, for example, forward the key presses as-is to a remote machine.
|
||||||
|
// It's a good idea to bind an escape hatch to toggle the inhibitor,
|
||||||
|
// so a buggy application can't hold your session hostage.
|
||||||
|
//
|
||||||
|
// The allow-inhibiting=false property can be applied to other binds as well,
|
||||||
|
// which ensures niri always processes them, even when an inhibitor is active.
|
||||||
|
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
|
||||||
|
|
||||||
|
// The quit action will show a confirmation dialog to avoid accidental exits.
|
||||||
|
Mod+Shift+E { quit; }
|
||||||
|
Ctrl+Alt+Delete { quit; }
|
||||||
|
|
||||||
|
// Powers off the monitors. To turn them back on, do any input like
|
||||||
|
// moving the mouse or pressing any other key.
|
||||||
|
Mod+Shift+P { power-off-monitors; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Monique monitor configuration
|
||||||
|
include "monitors.kdl"
|
||||||
664
niri/.config/niri/config.kdl.bak
Normal file
664
niri/.config/niri/config.kdl.bak
Normal file
@@ -0,0 +1,664 @@
|
|||||||
|
// This config is in the KDL format: https://kdl.dev
|
||||||
|
// "/-" comments out the following node.
|
||||||
|
// Check the wiki for a full description of the configuration:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
|
||||||
|
|
||||||
|
hotkey-overlay {
|
||||||
|
skip-at-startup
|
||||||
|
}
|
||||||
|
|
||||||
|
// Input device configuration.
|
||||||
|
// Find the full list of options on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Input
|
||||||
|
input {
|
||||||
|
keyboard {
|
||||||
|
xkb {
|
||||||
|
// You can set rules, model, layout, variant and options.
|
||||||
|
// For more information, see xkeyboard-config(7).
|
||||||
|
|
||||||
|
// For example:
|
||||||
|
layout "us"
|
||||||
|
variant "altgr-intl"
|
||||||
|
options "ctrl:nocaps"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable numlock on startup, omitting this setting disables it.
|
||||||
|
//numlock
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next sections include libinput settings.
|
||||||
|
// Omitting settings disables them, or leaves them at their default values.
|
||||||
|
touchpad {
|
||||||
|
// off
|
||||||
|
tap
|
||||||
|
// dwt
|
||||||
|
// dwtp
|
||||||
|
// drag false
|
||||||
|
// drag-lock
|
||||||
|
natural-scroll
|
||||||
|
// accel-speed 0.2
|
||||||
|
// accel-profile "flat"
|
||||||
|
// scroll-method "two-finger"
|
||||||
|
// disabled-on-external-mouse
|
||||||
|
}
|
||||||
|
|
||||||
|
mouse {
|
||||||
|
// off
|
||||||
|
// natural-scroll
|
||||||
|
// accel-speed 0.2
|
||||||
|
// accel-profile "flat"
|
||||||
|
// scroll-method "no-scroll"
|
||||||
|
}
|
||||||
|
|
||||||
|
trackpoint {
|
||||||
|
// off
|
||||||
|
// natural-scroll
|
||||||
|
// accel-speed 0.2
|
||||||
|
// accel-profile "flat"
|
||||||
|
// scroll-method "on-button-down"
|
||||||
|
// scroll-button 273
|
||||||
|
// middle-emulation
|
||||||
|
}
|
||||||
|
|
||||||
|
// Uncomment this to make the mouse warp to the center of newly focused windows.
|
||||||
|
// warp-mouse-to-focus
|
||||||
|
|
||||||
|
// Focus windows and outputs automatically when moving the mouse into them.
|
||||||
|
// Setting max-scroll-amount="0%" makes it work only on windows already fully on screen.
|
||||||
|
// focus-follows-mouse max-scroll-amount="0%"
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can configure outputs by their name, which you can find
|
||||||
|
// by running `niri msg outputs` while inside a niri instance.
|
||||||
|
// The built-in laptop monitor is usually called "eDP-1".
|
||||||
|
// Find more information on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
|
||||||
|
// Remember to uncomment the node by removing "/-"!
|
||||||
|
output "eDP-1" {
|
||||||
|
// Uncomment this line to disable this output.
|
||||||
|
// off
|
||||||
|
|
||||||
|
// Resolution and, optionally, refresh rate of the output.
|
||||||
|
// The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
|
||||||
|
// If the refresh rate is omitted, niri will pick the highest refresh rate
|
||||||
|
// for the resolution.
|
||||||
|
// If the mode is omitted altogether or is invalid, niri will pick one automatically.
|
||||||
|
// Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
|
||||||
|
mode "1920x1080@60.001"
|
||||||
|
|
||||||
|
// You can use integer or fractional scale, for example use 1.5 for 150% scale.
|
||||||
|
scale 1
|
||||||
|
|
||||||
|
// Transform allows to rotate the output counter-clockwise, valid values are:
|
||||||
|
// normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
|
||||||
|
transform "normal"
|
||||||
|
|
||||||
|
// Position of the output in the global coordinate space.
|
||||||
|
// This affects directional monitor actions like "focus-monitor-left", and cursor movement.
|
||||||
|
// The cursor can only move between directly adjacent outputs.
|
||||||
|
// Output scale and rotation has to be taken into account for positioning:
|
||||||
|
// outputs are sized in logical, or scaled, pixels.
|
||||||
|
// For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
|
||||||
|
// so to put another output directly adjacent to it on the right, set its x to 1920.
|
||||||
|
// If the position is unset or results in an overlap, the output is instead placed
|
||||||
|
// automatically.
|
||||||
|
position x=0 y=0
|
||||||
|
//position x=0 y=1080
|
||||||
|
}
|
||||||
|
|
||||||
|
output "DP-1" {
|
||||||
|
// Uncomment this line to disable this output.
|
||||||
|
// off
|
||||||
|
|
||||||
|
// Resolution and, optionally, refresh rate of the output.
|
||||||
|
// The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
|
||||||
|
// If the refresh rate is omitted, niri will pick the highest refresh rate
|
||||||
|
// for the resolution.
|
||||||
|
// If the mode is omitted altogether or is invalid, niri will pick one automatically.
|
||||||
|
// Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
|
||||||
|
//mode "3840x2160@60"
|
||||||
|
mode "3840x2160@60"
|
||||||
|
scale 1.5
|
||||||
|
//mode "1920x1080@60"
|
||||||
|
//mode "2560x1440"
|
||||||
|
//scale 1
|
||||||
|
|
||||||
|
// You can use integer or fractional scale, for example use 1.5 for 150% scale.
|
||||||
|
//scale 1.0
|
||||||
|
|
||||||
|
// Transform allows to rotate the output counter-clockwise, valid values are:
|
||||||
|
// normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
|
||||||
|
transform "normal"
|
||||||
|
|
||||||
|
// Position of the output in the global coordinate space.
|
||||||
|
// This affects directional monitor actions like "focus-monitor-left", and cursor movement.
|
||||||
|
// The cursor can only move between directly adjacent outputs.
|
||||||
|
// Output scale and rotation has to be taken into account for positioning:
|
||||||
|
// outputs are sized in logical, or scaled, pixels.
|
||||||
|
// For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
|
||||||
|
// so to put another output directly adjacent to it on the right, set its x to 1920.
|
||||||
|
// If the position is unset or results in an overlap, the output is instead placed
|
||||||
|
// automatically.
|
||||||
|
position x=1920 y=-500
|
||||||
|
//position x=0 y=0
|
||||||
|
}
|
||||||
|
|
||||||
|
// Settings that influence how windows are positioned and sized.
|
||||||
|
// Find more information on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
|
||||||
|
layout {
|
||||||
|
// Set gaps around windows in logical pixels.
|
||||||
|
gaps 0
|
||||||
|
|
||||||
|
// When to center a column when changing focus, options are:
|
||||||
|
// - "never", default behavior, focusing an off-screen column will keep at the left
|
||||||
|
// or right edge of the screen.
|
||||||
|
// - "always", the focused column will always be centered.
|
||||||
|
// - "on-overflow", focusing a column will center it if it doesn't fit
|
||||||
|
// together with the previously focused column.
|
||||||
|
center-focused-column "never"
|
||||||
|
|
||||||
|
// You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
|
||||||
|
preset-column-widths {
|
||||||
|
// Proportion sets the width as a fraction of the output width, taking gaps into account.
|
||||||
|
// For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
|
||||||
|
// The default preset widths are 1/3, 1/2 and 2/3 of the output.
|
||||||
|
proportion 0.25
|
||||||
|
proportion 0.5
|
||||||
|
proportion 0.75
|
||||||
|
proportion 1.0
|
||||||
|
|
||||||
|
// Fixed sets the width in logical pixels exactly.
|
||||||
|
// fixed 1920
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
|
||||||
|
preset-window-heights {
|
||||||
|
proportion 1.0
|
||||||
|
proportion 0.75
|
||||||
|
proportion 0.5
|
||||||
|
proportion 0.25
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can change the default width of the new windows.
|
||||||
|
//default-column-width { proportion 0.5; }
|
||||||
|
// If you leave the brackets empty, the windows themselves will decide their initial width.
|
||||||
|
//default-column-width {
|
||||||
|
// proportion 0.25;
|
||||||
|
//}
|
||||||
|
default-column-width {}
|
||||||
|
|
||||||
|
// By default focus ring and border are rendered as a solid background rectangle
|
||||||
|
// behind windows. That is, they will show up through semitransparent windows.
|
||||||
|
// This is because windows using client-side decorations can have an arbitrary shape.
|
||||||
|
//
|
||||||
|
// If you don't like that, you should uncomment `prefer-no-csd` below.
|
||||||
|
// Niri will draw focus ring and border *around* windows that agree to omit their
|
||||||
|
// client-side decorations.
|
||||||
|
//
|
||||||
|
// Alternatively, you can override it with a window rule called
|
||||||
|
// `draw-border-with-background`.
|
||||||
|
|
||||||
|
// You can change how the focus ring looks.
|
||||||
|
focus-ring {
|
||||||
|
// Uncomment this line to disable the focus ring.
|
||||||
|
// off
|
||||||
|
|
||||||
|
// How many logical pixels the ring extends out from the windows.
|
||||||
|
width 4
|
||||||
|
|
||||||
|
// Colors can be set in a variety of ways:
|
||||||
|
// - CSS named colors: "red"
|
||||||
|
// - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
|
||||||
|
// - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
|
||||||
|
|
||||||
|
// Color of the ring on the active monitor.
|
||||||
|
//active-color "#7fc8ff"
|
||||||
|
active-color "#FFDB58"
|
||||||
|
|
||||||
|
// Color of the ring on inactive monitors.
|
||||||
|
inactive-color "#505050"
|
||||||
|
|
||||||
|
// You can also use gradients. They take precedence over solid colors.
|
||||||
|
// Gradients are rendered the same as CSS linear-gradient(angle, from, to).
|
||||||
|
// The angle is the same as in linear-gradient, and is optional,
|
||||||
|
// defaulting to 180 (top-to-bottom gradient).
|
||||||
|
// You can use any CSS linear-gradient tool on the web to set these up.
|
||||||
|
// Changing the color space is also supported, check the wiki for more info.
|
||||||
|
//
|
||||||
|
// active-gradient from="#80c8ff" to="#bbddff" angle=45
|
||||||
|
|
||||||
|
// You can also color the gradient relative to the entire view
|
||||||
|
// of the workspace, rather than relative to just the window itself.
|
||||||
|
// To do that, set relative-to="workspace-view".
|
||||||
|
//
|
||||||
|
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can also add a border. It's similar to the focus ring, but always visible.
|
||||||
|
border {
|
||||||
|
// The settings are the same as for the focus ring.
|
||||||
|
// If you enable the border, you probably want to disable the focus ring.
|
||||||
|
off
|
||||||
|
|
||||||
|
width 4
|
||||||
|
active-color "#ffc87f"
|
||||||
|
inactive-color "#505050"
|
||||||
|
|
||||||
|
// Color of the border around windows that request your attention.
|
||||||
|
urgent-color "#9b0000"
|
||||||
|
|
||||||
|
// active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view"
|
||||||
|
// inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
|
||||||
|
}
|
||||||
|
|
||||||
|
// You can enable drop shadows for windows.
|
||||||
|
shadow {
|
||||||
|
// Uncomment the next line to enable shadows.
|
||||||
|
// on
|
||||||
|
|
||||||
|
// By default, the shadow draws only around its window, and not behind it.
|
||||||
|
// Uncomment this setting to make the shadow draw behind its window.
|
||||||
|
//
|
||||||
|
// Note that niri has no way of knowing about the CSD window corner
|
||||||
|
// radius. It has to assume that windows have square corners, leading to
|
||||||
|
// shadow artifacts inside the CSD rounded corners. This setting fixes
|
||||||
|
// those artifacts.
|
||||||
|
//
|
||||||
|
// However, instead you may want to set prefer-no-csd and/or
|
||||||
|
// geometry-corner-radius. Then, niri will know the corner radius and
|
||||||
|
// draw the shadow correctly, without having to draw it behind the
|
||||||
|
// window. These will also remove client-side shadows if the window
|
||||||
|
// draws any.
|
||||||
|
//
|
||||||
|
// draw-behind-window true
|
||||||
|
|
||||||
|
// You can change how shadows look. The values below are in logical
|
||||||
|
// pixels and match the CSS box-shadow properties.
|
||||||
|
|
||||||
|
// Softness controls the shadow blur radius.
|
||||||
|
softness 30
|
||||||
|
|
||||||
|
// Spread expands the shadow.
|
||||||
|
spread 5
|
||||||
|
|
||||||
|
// Offset moves the shadow relative to the window.
|
||||||
|
offset x=0 y=5
|
||||||
|
|
||||||
|
// You can also change the shadow color and opacity.
|
||||||
|
color "#0007"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Struts shrink the area occupied by windows, similarly to layer-shell panels.
|
||||||
|
// You can think of them as a kind of outer gaps. They are set in logical pixels.
|
||||||
|
// Left and right struts will cause the next window to the side to always be visible.
|
||||||
|
// Top and bottom struts will simply add outer gaps in addition to the area occupied by
|
||||||
|
// layer-shell panels and regular gaps.
|
||||||
|
struts {
|
||||||
|
left 2
|
||||||
|
right 2
|
||||||
|
top 2
|
||||||
|
bottom 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "terminal" {
|
||||||
|
open-on-output "DP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "firefox" {
|
||||||
|
open-on-output "DP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "teams" {
|
||||||
|
open-on-output "eDP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
workspace "notes" {
|
||||||
|
open-on-output "eDP-1"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add lines like this to spawn processes at startup.
|
||||||
|
// Note that running niri as a session supports xdg-desktop-autostart,
|
||||||
|
// which may be more convenient to use.
|
||||||
|
// See the binds section below for more spawn examples.
|
||||||
|
|
||||||
|
// This line starts waybar, a commonly used bar for Wayland compositors.
|
||||||
|
spawn-at-startup "mako"
|
||||||
|
spawn-at-startup "waybar"
|
||||||
|
spawn-at-startup "hypridle"
|
||||||
|
|
||||||
|
// Uncomment this line to ask the clients to omit their client-side decorations if possible.
|
||||||
|
// If the client will specifically ask for CSD, the request will be honored.
|
||||||
|
// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
|
||||||
|
// This option will also fix border/focus ring drawing behind some semitransparent windows.
|
||||||
|
// After enabling or disabling this, you need to restart the apps for this to take effect.
|
||||||
|
prefer-no-csd
|
||||||
|
|
||||||
|
// You can change the path where screenshots are saved.
|
||||||
|
// A ~ at the front will be expanded to the home directory.
|
||||||
|
// The path is formatted with strftime(3) to give you the screenshot date and time.
|
||||||
|
screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
|
||||||
|
|
||||||
|
// You can also set this to null to disable saving screenshots to disk.
|
||||||
|
// screenshot-path null
|
||||||
|
|
||||||
|
// Animation settings.
|
||||||
|
// The wiki explains how to configure individual animations:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations
|
||||||
|
animations {
|
||||||
|
// Uncomment to turn off all animations.
|
||||||
|
// off
|
||||||
|
|
||||||
|
// Slow down all animations by this factor. Values below 1 speed them up instead.
|
||||||
|
slowdown 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
// Window rules let you adjust behavior for individual windows.
|
||||||
|
// Find more information on the wiki:
|
||||||
|
// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules
|
||||||
|
|
||||||
|
// Work around WezTerm's initial configure bug
|
||||||
|
// by setting an empty default-column-width.
|
||||||
|
window-rule {
|
||||||
|
// This regular expression is intentionally made as specific as possible,
|
||||||
|
// since this is the default config, and we want no false positives.
|
||||||
|
// You can get away with just app-id="wezterm" if you want.
|
||||||
|
match app-id=r#"^org\.wezfurlong\.wezterm$"#
|
||||||
|
default-column-width {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open the Firefox picture-in-picture player as floating by default.
|
||||||
|
window-rule {
|
||||||
|
// This app-id regular expression will work for both:
|
||||||
|
// - host Firefox (app-id is "firefox")
|
||||||
|
// - Flatpak Firefox (app-id is "org.mozilla.firefox")
|
||||||
|
match app-id=r#"firefox$"# title="^Picture-in-Picture$"
|
||||||
|
default-column-width {}
|
||||||
|
open-floating true
|
||||||
|
}
|
||||||
|
|
||||||
|
window-rule {
|
||||||
|
match app-id="firefox" title=r#".*Bitwarden.*"#
|
||||||
|
open-floating true
|
||||||
|
block-out-from "screen-capture"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Example: block out two password managers from screen capture.
|
||||||
|
// (This example rule is commented out with a "/-" in front.)
|
||||||
|
/-window-rule {
|
||||||
|
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
||||||
|
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
||||||
|
|
||||||
|
block-out-from "screen-capture"
|
||||||
|
|
||||||
|
// Use this instead if you want them visible on third-party screenshot tools.
|
||||||
|
// block-out-from "screencast"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Example: enable rounded corners for all windows.
|
||||||
|
// (This example rule is commented out with a "/-" in front.)
|
||||||
|
/-window-rule {
|
||||||
|
geometry-corner-radius 12
|
||||||
|
clip-to-geometry true
|
||||||
|
}
|
||||||
|
|
||||||
|
window-rule {
|
||||||
|
match app-id="firefox"
|
||||||
|
open-on-workspace "firefox"
|
||||||
|
}
|
||||||
|
|
||||||
|
binds {
|
||||||
|
// Keys consist of modifiers separated by + signs, followed by an XKB key name
|
||||||
|
// in the end. To find an XKB name for a particular key, you may use a program
|
||||||
|
// like wev.
|
||||||
|
//
|
||||||
|
// "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
|
||||||
|
// when running as a winit window.
|
||||||
|
//
|
||||||
|
// Most actions that you can bind here can also be invoked programmatically with
|
||||||
|
// `niri msg action do-something`.
|
||||||
|
|
||||||
|
// Mod-Shift-/, which is usually the same as Mod-?,
|
||||||
|
// shows a list of important hotkeys.
|
||||||
|
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||||
|
|
||||||
|
// Suggested binds for running programs: terminal, app launcher, screen locker.
|
||||||
|
Mod+return hotkey-overlay-title="Open a Terminal: ghostty" { spawn "ghostty"; }
|
||||||
|
Mod+space hotkey-overlay-title="Run an Application: wofi" { spawn "sh" "-c" "wofi --show dmenu,drun"; }
|
||||||
|
Mod+Delete hotkey-overlay-title="Lock the Screen: hyprlock" { spawn "hyprlock"; }
|
||||||
|
|
||||||
|
// You can also use a shell. Do this if you need pipes, multiple commands, etc.
|
||||||
|
// Note: the entire command goes as a single argument in the end.
|
||||||
|
// Mod+T { spawn "bash" "-c" "notify-send hello && exec wezterm"; }
|
||||||
|
|
||||||
|
Ctrl+Alt+W { spawn "firefox" "--ProfileManager"; }
|
||||||
|
Ctrl+Alt+Q { spawn "chromium-browser" "--ozone-platform=wayland"; }
|
||||||
|
|
||||||
|
// Brightness control
|
||||||
|
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "+5%"; }
|
||||||
|
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-"; }
|
||||||
|
// Example volume keys mappings for PipeWire & WirePlumber.
|
||||||
|
// The allow-when-locked=true property makes them work even when the session is locked.
|
||||||
|
XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+" "--limit" "1.0"; }
|
||||||
|
XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-" "--limit" "0.0"; }
|
||||||
|
XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
|
||||||
|
XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
|
||||||
|
|
||||||
|
// Open/close the Overview: a zoomed-out view of workspaces and windows.
|
||||||
|
// You can also move the mouse into the top-left hot corner,
|
||||||
|
// or do a four-finger swipe up on a touchpad.
|
||||||
|
Mod+O repeat=false { toggle-overview; }
|
||||||
|
|
||||||
|
Mod+Q { close-window; }
|
||||||
|
|
||||||
|
Mod+H { focus-column-left; }
|
||||||
|
Mod+J { focus-window-down; }
|
||||||
|
Mod+K { focus-window-up; }
|
||||||
|
Mod+L { focus-column-right; }
|
||||||
|
|
||||||
|
//Mod+Alt+H { move-window-left; }
|
||||||
|
Mod+Alt+J { move-window-down; }
|
||||||
|
//Mod+Alt+L { move-window-right; }
|
||||||
|
Mod+Alt+K { move-window-up; }
|
||||||
|
|
||||||
|
Mod+Ctrl+H { move-column-left-or-to-monitor-left; }
|
||||||
|
Mod+Ctrl+J { move-window-down; }
|
||||||
|
Mod+Ctrl+L { move-column-right-or-to-monitor-right; }
|
||||||
|
Mod+Ctrl+K { move-window-up; }
|
||||||
|
|
||||||
|
Mod+Home { focus-column-first; }
|
||||||
|
Mod+End { focus-column-last; }
|
||||||
|
Mod+Ctrl+Home { move-column-to-first; }
|
||||||
|
Mod+Ctrl+End { move-column-to-last; }
|
||||||
|
|
||||||
|
Mod+Shift+Left { focus-monitor-left; }
|
||||||
|
Mod+Shift+Down { focus-monitor-down; }
|
||||||
|
Mod+Shift+Up { focus-monitor-up; }
|
||||||
|
Mod+Shift+Right { focus-monitor-right; }
|
||||||
|
|
||||||
|
Mod+Shift+H { focus-monitor-left; }
|
||||||
|
Mod+Shift+J { focus-monitor-down; }
|
||||||
|
Mod+Shift+K { focus-monitor-up; }
|
||||||
|
Mod+Shift+L { focus-monitor-right; }
|
||||||
|
|
||||||
|
|
||||||
|
// Alternatively, there are commands to move just a single window:
|
||||||
|
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
|
||||||
|
// ...
|
||||||
|
|
||||||
|
// And you can also move a whole workspace to another monitor:
|
||||||
|
Ctrl+Alt+H { move-workspace-to-monitor-left; }
|
||||||
|
Ctrl+Alt+L { move-workspace-to-monitor-right; }
|
||||||
|
Ctrl+Alt+J { move-workspace-to-monitor-down; }
|
||||||
|
Ctrl+Alt+K { move-workspace-to-monitor-up; }
|
||||||
|
// ...
|
||||||
|
|
||||||
|
Mod+Page_Down { focus-workspace-down; }
|
||||||
|
Mod+Page_Up { focus-workspace-up; }
|
||||||
|
Mod+D { focus-workspace-down; }
|
||||||
|
Mod+U { focus-workspace-up; }
|
||||||
|
|
||||||
|
Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
|
||||||
|
Mod+Ctrl+Page_Up { move-column-to-workspace-up; }
|
||||||
|
Mod+Ctrl+U { move-column-to-workspace-down; }
|
||||||
|
Mod+Ctrl+I { move-column-to-workspace-up; }
|
||||||
|
|
||||||
|
// Alternatively, there are commands to move just a single window:
|
||||||
|
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
|
||||||
|
// ...
|
||||||
|
|
||||||
|
Mod+Shift+Page_Down { move-workspace-down; }
|
||||||
|
Mod+Shift+Page_Up { move-workspace-up; }
|
||||||
|
Mod+Shift+U { move-workspace-up; }
|
||||||
|
Mod+Shift+D { move-workspace-down; }
|
||||||
|
|
||||||
|
// You can bind mouse wheel scroll ticks using the following syntax.
|
||||||
|
// These binds will change direction based on the natural-scroll setting.
|
||||||
|
//
|
||||||
|
// To avoid scrolling through workspaces really fast, you can use
|
||||||
|
// the cooldown-ms property. The bind will be rate-limited to this value.
|
||||||
|
// You can set a cooldown on any bind, but it's most useful for the wheel.
|
||||||
|
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
|
||||||
|
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
|
||||||
|
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
|
||||||
|
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
|
||||||
|
|
||||||
|
Mod+WheelScrollRight { focus-column-right; }
|
||||||
|
Mod+WheelScrollLeft { focus-column-left; }
|
||||||
|
Mod+Ctrl+WheelScrollRight { move-column-right-or-to-monitor-right; }
|
||||||
|
Mod+Ctrl+WheelScrollLeft { move-column-left-or-to-monitor-left; }
|
||||||
|
|
||||||
|
// Usually scrolling up and down with Shift in applications results in
|
||||||
|
// horizontal scrolling; these binds replicate that.
|
||||||
|
Mod+Shift+WheelScrollDown { focus-column-right; }
|
||||||
|
Mod+Shift+WheelScrollUp { focus-column-left; }
|
||||||
|
Mod+Ctrl+Shift+WheelScrollDown { move-column-right-or-to-monitor-right; }
|
||||||
|
Mod+Ctrl+Shift+WheelScrollUp { move-column-left-or-to-monitor-left;}
|
||||||
|
|
||||||
|
// Similarly, you can bind touchpad scroll "ticks".
|
||||||
|
// Touchpad scrolling is continuous, so for these binds it is split into
|
||||||
|
// discrete intervals.
|
||||||
|
// These binds are also affected by touchpad's natural-scroll, so these
|
||||||
|
// example binds are "inverted", since we have natural-scroll enabled for
|
||||||
|
// touchpads by default.
|
||||||
|
// Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
|
||||||
|
// Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
|
||||||
|
|
||||||
|
// You can refer to workspaces by index. However, keep in mind that
|
||||||
|
// niri is a dynamic workspace system, so these commands are kind of
|
||||||
|
// "best effort". Trying to refer to a workspace index bigger than
|
||||||
|
// the current workspace count will instead refer to the bottommost
|
||||||
|
// (empty) workspace.
|
||||||
|
//
|
||||||
|
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
|
||||||
|
// will all refer to the 3rd workspace.
|
||||||
|
Mod+1 { focus-workspace "terminal"; }
|
||||||
|
Mod+2 { focus-workspace "firefox"; }
|
||||||
|
Mod+3 { focus-workspace "notes"; }
|
||||||
|
//Mod+4 { focus-workspace 4; }
|
||||||
|
//Mod+5 { focus-workspace "5"; }
|
||||||
|
//Mod+6 { focus-workspace "6"; }
|
||||||
|
//Mod+7 { focus-workspace "7"; }
|
||||||
|
//Mod+8 { focus-workspace "8"; }
|
||||||
|
//Mod+9 { focus-workspace "9"; }
|
||||||
|
Mod+grave { focus-workspace "teams"; }
|
||||||
|
Mod+0 { focus-workspace "teams"; }
|
||||||
|
Mod+Ctrl+1 { move-column-to-workspace "terminal"; }
|
||||||
|
Mod+Ctrl+2 { move-column-to-workspace "firefox"; }
|
||||||
|
Mod+Ctrl+3 { move-column-to-workspace "notes"; }
|
||||||
|
//Mod+Ctrl+4 { move-column-to-workspace "4"; }
|
||||||
|
//Mod+Ctrl+5 { move-column-to-workspace "5"; }
|
||||||
|
//Mod+Ctrl+6 { move-column-to-workspace "6"; }
|
||||||
|
//Mod+Ctrl+7 { move-column-to-workspace "7"; }
|
||||||
|
//Mod+Ctrl+8 { move-column-to-workspace "8"; }
|
||||||
|
//Mod+Ctrl+9 { move-column-to-workspace "9"; }
|
||||||
|
Mod+Ctrl+0 { move-column-to-workspace "teams"; }
|
||||||
|
|
||||||
|
// Alternatively, there are commands to move just a single window:
|
||||||
|
// Mod+Ctrl+1 { move-window-to-workspace 1; }
|
||||||
|
|
||||||
|
// Switches focus between the current and the previous workspace.
|
||||||
|
// Mod+Tab { focus-workspace-previous; }
|
||||||
|
|
||||||
|
// The following binds move the focused window in and out of a column.
|
||||||
|
// If the window is alone, they will consume it into the nearby column to the side.
|
||||||
|
// If the window is already in a column, they will expel it out.
|
||||||
|
Mod+BracketLeft { consume-or-expel-window-left; }
|
||||||
|
Mod+BracketRight { consume-or-expel-window-right; }
|
||||||
|
|
||||||
|
// Consume one window from the right to the bottom of the focused column.
|
||||||
|
Mod+Comma { consume-window-into-column; }
|
||||||
|
// Expel the bottom window from the focused column to the right.
|
||||||
|
Mod+Period { expel-window-from-column; }
|
||||||
|
|
||||||
|
Mod+R { switch-preset-column-width; }
|
||||||
|
Mod+Shift+R { switch-preset-window-height; }
|
||||||
|
Mod+Ctrl+R { reset-window-height; }
|
||||||
|
Mod+F { maximize-column; }
|
||||||
|
Mod+G { maximize-window-to-edges; }
|
||||||
|
Mod+Shift+F { fullscreen-window; }
|
||||||
|
|
||||||
|
// Expand the focused column to space not taken up by other fully visible columns.
|
||||||
|
// Makes the column "fill the rest of the space".
|
||||||
|
Mod+Ctrl+F { expand-column-to-available-width; }
|
||||||
|
|
||||||
|
Mod+C { center-column; }
|
||||||
|
|
||||||
|
// Center all fully visible columns on screen.
|
||||||
|
Mod+Ctrl+C { center-visible-columns; }
|
||||||
|
|
||||||
|
// Finer width adjustments.
|
||||||
|
// This command can also:
|
||||||
|
// * set width in pixels: "1000"
|
||||||
|
// * adjust width in pixels: "-5" or "+5"
|
||||||
|
// * set width as a percentage of screen width: "25%"
|
||||||
|
// * adjust width as a percentage of screen width: "-10%" or "+10%"
|
||||||
|
// Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
|
||||||
|
// set-column-width "100" will make the column occupy 200 physical screen pixels.
|
||||||
|
Mod+Minus { set-column-width "-5%"; }
|
||||||
|
Mod+Equal { set-column-width "+5%"; }
|
||||||
|
|
||||||
|
// Finer height adjustments when in column with other windows.
|
||||||
|
Mod+Shift+Minus { set-window-height "-5%"; }
|
||||||
|
Mod+Shift+Equal { set-window-height "+5%"; }
|
||||||
|
|
||||||
|
// Move the focused window between the floating and the tiling layout.
|
||||||
|
Mod+V { toggle-window-floating; }
|
||||||
|
Mod+Shift+V { switch-focus-between-floating-and-tiling; }
|
||||||
|
|
||||||
|
// Toggle tabbed column display mode.
|
||||||
|
// Windows in this column will appear as vertical tabs,
|
||||||
|
// rather than stacked on top of each other.
|
||||||
|
Mod+W { toggle-column-tabbed-display; }
|
||||||
|
|
||||||
|
// Actions to switch layouts.
|
||||||
|
// Note: if you uncomment these, make sure you do NOT have
|
||||||
|
// a matching layout switch hotkey configured in xkb options above.
|
||||||
|
// Having both at once on the same hotkey will break the switching,
|
||||||
|
// since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
|
||||||
|
// Mod+Space { switch-layout "next"; }
|
||||||
|
// Mod+Shift+Space { switch-layout "prev"; }
|
||||||
|
|
||||||
|
Print { screenshot; }
|
||||||
|
Ctrl+Print { screenshot-screen; }
|
||||||
|
Alt+Print { screenshot-window; }
|
||||||
|
|
||||||
|
// Applications such as remote-desktop clients and software KVM switches may
|
||||||
|
// request that niri stops processing the keyboard shortcuts defined here
|
||||||
|
// so they may, for example, forward the key presses as-is to a remote machine.
|
||||||
|
// It's a good idea to bind an escape hatch to toggle the inhibitor,
|
||||||
|
// so a buggy application can't hold your session hostage.
|
||||||
|
//
|
||||||
|
// The allow-inhibiting=false property can be applied to other binds as well,
|
||||||
|
// which ensures niri always processes them, even when an inhibitor is active.
|
||||||
|
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
|
||||||
|
|
||||||
|
// The quit action will show a confirmation dialog to avoid accidental exits.
|
||||||
|
Mod+Shift+E { quit; }
|
||||||
|
Ctrl+Alt+Delete { quit; }
|
||||||
|
|
||||||
|
// Powers off the monitors. To turn them back on, do any input like
|
||||||
|
// moving the mouse or pressing any other key.
|
||||||
|
Mod+Shift+P { power-off-monitors; }
|
||||||
|
}
|
||||||
10
niri/.config/niri/monitors.kdl
Normal file
10
niri/.config/niri/monitors.kdl
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
output "LG Electronics LG ULTRAWIDE 0x0005B9E2" {
|
||||||
|
mode "2560x1080@59.978"
|
||||||
|
scale 1
|
||||||
|
position x=-1395 y=0
|
||||||
|
}
|
||||||
|
|
||||||
|
output "Chimei Innolux Corporation 0x144F Unknown" {
|
||||||
|
scale 1
|
||||||
|
position x=-1395 y=0
|
||||||
|
}
|
||||||
228
niri/.config/waybar/config.jsonc
Normal file
228
niri/.config/waybar/config.jsonc
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
// -*- mode: jsonc -*-
|
||||||
|
{
|
||||||
|
//"output": "eDP-1",
|
||||||
|
// "layer": "top", // Waybar at top layer
|
||||||
|
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||||
|
"position": "top",
|
||||||
|
"height": 20, // Waybar height (to be removed for auto height)
|
||||||
|
// "width": 1280, // Waybar width
|
||||||
|
"spacing": 4, // Gaps between modules (4px)
|
||||||
|
// Choose the order of the modules
|
||||||
|
"modules-left": [
|
||||||
|
"niri/workspaces"
|
||||||
|
//"niri/submap"
|
||||||
|
//"sway/scratchpad",
|
||||||
|
//"custom/media"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"niri/window"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"mpd",
|
||||||
|
"idle_inhibitor",
|
||||||
|
"pulseaudio",
|
||||||
|
"network",
|
||||||
|
"power-profiles-daemon",
|
||||||
|
"cpu",
|
||||||
|
"memory",
|
||||||
|
"temperature",
|
||||||
|
"backlight",
|
||||||
|
"keyboard-state",
|
||||||
|
"sway/language",
|
||||||
|
"battery",
|
||||||
|
"battery#bat2",
|
||||||
|
"clock",
|
||||||
|
"tray",
|
||||||
|
"custom/power"
|
||||||
|
],
|
||||||
|
"niri/workspaces": {
|
||||||
|
//"active-only": false,
|
||||||
|
//"all-outputs": true,
|
||||||
|
//"ubmaport-by": "id",
|
||||||
|
//"format": "{id}: {name}"
|
||||||
|
},
|
||||||
|
// Modules configuration
|
||||||
|
// "sway/workspaces": {
|
||||||
|
// "disable-scroll": true,
|
||||||
|
// "all-outputs": true,
|
||||||
|
// "warp-on-scroll": false,
|
||||||
|
// "format": "{name}: {icon}",
|
||||||
|
// "format-icons": {
|
||||||
|
// "1": "",
|
||||||
|
// "2": "",
|
||||||
|
// "3": "",
|
||||||
|
// "4": "",
|
||||||
|
// "5": "",
|
||||||
|
// "urgent": "",
|
||||||
|
// "focused": "",
|
||||||
|
// "default": ""
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
"keyboard-state": {
|
||||||
|
"numlock": true,
|
||||||
|
"capslock": true,
|
||||||
|
"format": "{name} {icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"locked": "",
|
||||||
|
"unlocked": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri/window": {
|
||||||
|
"format": "<span style=\"italic\">{}</span>"
|
||||||
|
},
|
||||||
|
"sway/scratchpad": {
|
||||||
|
"format": "{icon} {count}",
|
||||||
|
"show-empty": false,
|
||||||
|
"format-icons": ["", ""],
|
||||||
|
"tooltip": true,
|
||||||
|
"tooltip-format": "{app}: {title}"
|
||||||
|
},
|
||||||
|
"mpd": {
|
||||||
|
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
|
||||||
|
"format-disconnected": "Disconnected ",
|
||||||
|
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
|
||||||
|
"unknown-tag": "N/A",
|
||||||
|
"interval": 5,
|
||||||
|
"consume-icons": {
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"random-icons": {
|
||||||
|
"off": "<span color=\"#f53c3c\"></span> ",
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"repeat-icons": {
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"single-icons": {
|
||||||
|
"on": "1 "
|
||||||
|
},
|
||||||
|
"state-icons": {
|
||||||
|
"paused": "",
|
||||||
|
"playing": ""
|
||||||
|
},
|
||||||
|
"tooltip-format": "MPD (connected)",
|
||||||
|
"tooltip-format-disconnected": "MPD (disconnected)"
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "",
|
||||||
|
"deactivated": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
// "icon-size": 21,
|
||||||
|
"spacing": 10,
|
||||||
|
// "icons": {
|
||||||
|
// "blueman": "bluetooth",
|
||||||
|
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
// "timezone": "America/New_York",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"format": "{:%Y-%m-%d %H:%M:%S}",
|
||||||
|
"interval": 1
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"format": "{usage}% ",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"format": "{}% "
|
||||||
|
},
|
||||||
|
"temperature": {
|
||||||
|
// "thermal-zone": 2,
|
||||||
|
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||||
|
"critical-threshold": 80,
|
||||||
|
// "format-critical": "{temperatureC}°C {icon}",
|
||||||
|
"format": "{temperatureC}°C {icon}",
|
||||||
|
"format-icons": ["", "", ""]
|
||||||
|
},
|
||||||
|
"backlight": {
|
||||||
|
// "device": "acpi_video1",
|
||||||
|
"format": "{percent}% {icon}",
|
||||||
|
"format-icons": ["", "", "", "", "", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
// "good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-full": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
// "format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"battery#bat2": {
|
||||||
|
"bat": "BAT2"
|
||||||
|
},
|
||||||
|
"power-profiles-daemon": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
|
||||||
|
"tooltip": true,
|
||||||
|
"format-icons": {
|
||||||
|
"default": "",
|
||||||
|
"performance": "",
|
||||||
|
"balanced": "",
|
||||||
|
"power-saver": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||||
|
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||||
|
"format-ethernet": "{ipaddr}/{cidr} ",
|
||||||
|
"tooltip-format": "{ifname} via {gwaddr} ",
|
||||||
|
"format-linked": "{ifname} (No IP) ",
|
||||||
|
"format-disconnected": "Disconnected ⚠",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {format_source}",
|
||||||
|
"format-source": "{volume}% ",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
"custom/media": {
|
||||||
|
"format": "{icon} {text}",
|
||||||
|
"return-type": "json",
|
||||||
|
"max-length": 40,
|
||||||
|
"format-icons": {
|
||||||
|
"spotify": "",
|
||||||
|
"default": "🎜"
|
||||||
|
},
|
||||||
|
"escape": true,
|
||||||
|
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||||
|
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||||
|
},
|
||||||
|
"custom/power": {
|
||||||
|
"format" : "⏻ ",
|
||||||
|
"tooltip": false,
|
||||||
|
"menu": "on-click",
|
||||||
|
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
|
||||||
|
"menu-actions": {
|
||||||
|
"shutdown": "shutdown",
|
||||||
|
"reboot": "reboot",
|
||||||
|
"suspend": "systemctl suspend",
|
||||||
|
"hibernate": "systemctl hibernate"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
352
niri/.config/waybar/style.css
Normal file
352
niri/.config/waybar/style.css
Normal file
@@ -0,0 +1,352 @@
|
|||||||
|
* {
|
||||||
|
/* `otf-font-awesome` is required to be installed for icons */
|
||||||
|
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: rgba(43, 48, 59, 0.5);
|
||||||
|
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
|
||||||
|
color: #ffffff;
|
||||||
|
transition-property: background-color;
|
||||||
|
transition-duration: .5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.hidden {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
window#waybar.empty {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
window#waybar.solo {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
window#waybar.termite {
|
||||||
|
background-color: #3F3F3F;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.chromium {
|
||||||
|
background-color: #000000;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
/* Use box-shadow instead of border so the text isn't offset */
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
/* Avoid rounded borders under each button name */
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||||
|
button:hover {
|
||||||
|
background: inherit;
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* you can set a style on hover for any module like this */
|
||||||
|
#pulseaudio:hover {
|
||||||
|
/* background-color: #a37800;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
/*background-color: #64727D;*/
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
background-color: #64727D;
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mode {
|
||||||
|
background-color: #64727D;
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#temperature,
|
||||||
|
#backlight,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#wireplumber,
|
||||||
|
#custom-media,
|
||||||
|
#tray,
|
||||||
|
#mode,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#scratchpad,
|
||||||
|
#power-profiles-daemon,
|
||||||
|
#mpd {
|
||||||
|
padding: 0 10px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window,
|
||||||
|
#workspaces {
|
||||||
|
margin: 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If workspaces is the leftmost module, omit left margin */
|
||||||
|
.modules-left > widget:first-child > #workspaces {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If workspaces is the rightmost module, omit right margin */
|
||||||
|
.modules-right > widget:last-child > #workspaces {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
background-color: #64727D;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
#battery {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging, #battery.plugged {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #26A65B;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Using steps() instead of linear as a timing function to limit cpu usage */
|
||||||
|
/*
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
color: #ffffff;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: steps(12);
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#power-profiles-daemon {
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power-profiles-daemon.performance {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power-profiles-daemon.balanced {
|
||||||
|
background-color: #2980b9;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#power-profiles-daemon.power-saver {
|
||||||
|
background-color: #2ecc71;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
label:focus {
|
||||||
|
background-color: #000000;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
#cpu {
|
||||||
|
background-color: #2ecc71;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
#memory {
|
||||||
|
background-color: #9b59b6;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#disk {
|
||||||
|
background-color: #964B00;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
#backlight {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#network {
|
||||||
|
/* background-color: #2980b9;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected {
|
||||||
|
/* background-color: #f53c3c;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
/* background-color: #f1c40f;*/
|
||||||
|
/* color: #000000;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.muted {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
color: #2a5c45;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wireplumber {
|
||||||
|
background-color: #fff0f5;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wireplumber.muted {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-media {
|
||||||
|
background-color: #66cc99;
|
||||||
|
color: #2a5c45;
|
||||||
|
min-width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-media.custom-spotify {
|
||||||
|
background-color: #66cc99;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-media.custom-vlc {
|
||||||
|
background-color: #ffa000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature {
|
||||||
|
/* background-color: #f0932b;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature.critical {
|
||||||
|
/* background-color: #eb4d4b;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
background-color: #2980b9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .passive {
|
||||||
|
-gtk-icon-effect: dim;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray > .needs-attention {
|
||||||
|
-gtk-icon-effect: highlight;
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor {
|
||||||
|
background-color: #2d3436;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor.activated {
|
||||||
|
background-color: #ecf0f1;
|
||||||
|
color: #2d3436;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd {
|
||||||
|
background-color: #66cc99;
|
||||||
|
color: #2a5c45;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.disconnected {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.stopped {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.paused {
|
||||||
|
background-color: #51a37a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#language {
|
||||||
|
background: #00b093;
|
||||||
|
color: #740864;
|
||||||
|
padding: 0 5px;
|
||||||
|
margin: 0 5px;
|
||||||
|
min-width: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state {
|
||||||
|
background: #97e1ad;
|
||||||
|
color: #000000;
|
||||||
|
padding: 0 0px;
|
||||||
|
margin: 0 5px;
|
||||||
|
min-width: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state > label {
|
||||||
|
padding: 0 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#keyboard-state > label.locked {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scratchpad {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#scratchpad.empty {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item {
|
||||||
|
padding: 0 5px;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item.screenshare {
|
||||||
|
background-color: #cf5700;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item.audio-in {
|
||||||
|
background-color: #1ca000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#privacy-item.audio-out {
|
||||||
|
background-color: #0069d4;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
opacity: 0;
|
||||||
|
font-size: 0;
|
||||||
|
min-width: 0;
|
||||||
|
min-height: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
33
python/.pdb_startup.py
Normal file
33
python/.pdb_startup.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import os
|
||||||
|
import pdb
|
||||||
|
|
||||||
|
try:
|
||||||
|
import readline
|
||||||
|
|
||||||
|
historyPath = os.path.expanduser("~/.pdb_history")
|
||||||
|
readline.set_history_length(1000)
|
||||||
|
readline.clear_history()
|
||||||
|
if os.path.exists(historyPath):
|
||||||
|
try:
|
||||||
|
readline.read_history_file(historyPath)
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
class PdbWithHistory(pdb.Pdb):
|
||||||
|
def default(self, line):
|
||||||
|
readline.append_history_file(1, historyPath)
|
||||||
|
return super().default(line)
|
||||||
|
|
||||||
|
def cmdloop(self, intro=None):
|
||||||
|
try:
|
||||||
|
super().cmdloop(intro)
|
||||||
|
finally:
|
||||||
|
try:
|
||||||
|
readline.write_history_file(historyPath)
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
pdb.Pdb = PdbWithHistory
|
||||||
|
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
1
python/.pdbrc
Normal file
1
python/.pdbrc
Normal file
@@ -0,0 +1 @@
|
|||||||
|
import importlib.util, os; spec = importlib.util.spec_from_file_location("pdb_startup", os.path.expanduser("~/.pdb_startup.py")); mod = importlib.util.module_from_spec(spec); spec.loader.exec_module(mod)
|
||||||
11
ranger/.config/ranger/bookmarks.new
Normal file
11
ranger/.config/ranger/bookmarks.new
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
F:/home/j
|
||||||
|
f:/home/j
|
||||||
|
m:/home/j/Downloads
|
||||||
|
p:/home/j/Doctorado/Papers
|
||||||
|
s:/home/j/Doctorado/Papers/SocialContext
|
||||||
|
d:/home/j/Downloads
|
||||||
|
D:/home/j/Doctorado
|
||||||
|
o:/home/j/Downloads
|
||||||
|
g:/home/j/git/balkian
|
||||||
|
G:/home/j/GSI
|
||||||
|
j:/home/j/Downloads
|
||||||
74
starship/.config/starship.toml
Normal file
74
starship/.config/starship.toml
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
# Get editor completions based on the config schema
|
||||||
|
"$schema" = 'https://starship.rs/config-schema.json'
|
||||||
|
|
||||||
|
# Inserts a blank line between shell prompts
|
||||||
|
add_newline = false
|
||||||
|
|
||||||
|
[custom.jj]
|
||||||
|
description = "The current jj status"
|
||||||
|
when = "jj --ignore-working-copy root"
|
||||||
|
symbol = "🥋 "
|
||||||
|
command = '''
|
||||||
|
jj log --revisions @ --no-graph --ignore-working-copy --color always --limit 1 --template '
|
||||||
|
separate(" ",
|
||||||
|
change_id.shortest(4),
|
||||||
|
bookmarks,
|
||||||
|
"|",
|
||||||
|
concat(
|
||||||
|
if(conflict, "💥"),
|
||||||
|
if(divergent, "🚧"),
|
||||||
|
if(hidden, "👻"),
|
||||||
|
if(immutable, "🔒"),
|
||||||
|
),
|
||||||
|
raw_escape_sequence("\x1b[1;32m") ++ if(empty, "(empty)"),
|
||||||
|
raw_escape_sequence("\x1b[1;32m") ++ coalesce(
|
||||||
|
truncate_end(29, description.first_line(), "…"),
|
||||||
|
"(no description set)",
|
||||||
|
) ++ raw_escape_sequence("\x1b[0m"),
|
||||||
|
)
|
||||||
|
'
|
||||||
|
'''
|
||||||
|
|
||||||
|
# optionally disable git modules when JJ is found.
|
||||||
|
# note that you'll need to add ${custom.git_branch}, ${custom.git_commit} etc
|
||||||
|
# into format: https://starship.rs/config/#default-prompt-format
|
||||||
|
[git_status]
|
||||||
|
disabled = true
|
||||||
|
|
||||||
|
[custom.git_status]
|
||||||
|
when = "! jj --ignore-working-copy root" # Slow without `require_repo = true`
|
||||||
|
require_repo = true # Avoids `when` eval overhead in plain dirs
|
||||||
|
command = "starship module git_status"
|
||||||
|
style = "" # This disables the default "(bold green)" style
|
||||||
|
description = "Only show git_status if we're not in a jj repo"
|
||||||
|
|
||||||
|
[git_commit]
|
||||||
|
disabled = true
|
||||||
|
|
||||||
|
[custom.git_commit]
|
||||||
|
when = "! jj --ignore-working-copy root"
|
||||||
|
require_repo = true
|
||||||
|
command = "starship module git_commit"
|
||||||
|
style = ""
|
||||||
|
description = "Only show git_commit if we're not in a jj repo"
|
||||||
|
|
||||||
|
|
||||||
|
[git_metrics]
|
||||||
|
disabled = true
|
||||||
|
|
||||||
|
[custom.git_metrics]
|
||||||
|
when = "! jj --ignore-working-copy root"
|
||||||
|
require_repo = true
|
||||||
|
command = "starship module git_metrics"
|
||||||
|
description = "Only show git_metrics if we're not in a jj repo"
|
||||||
|
style = ""
|
||||||
|
|
||||||
|
[git_branch]
|
||||||
|
disabled = true
|
||||||
|
|
||||||
|
[custom.git_branch]
|
||||||
|
when = "! jj --ignore-working-copy root"
|
||||||
|
require_repo = true
|
||||||
|
command = "starship module git_branch"
|
||||||
|
description = "Only show git_branch if we're not in a jj repo"
|
||||||
|
style = ""
|
||||||
16
wezterm/.wezterm.lua
Normal file
16
wezterm/.wezterm.lua
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
local wezterm = require 'wezterm'
|
||||||
|
local config = {}
|
||||||
|
|
||||||
|
config.font = wezterm.font 'Iosevka Nerd Font'
|
||||||
|
config.show_tab_index_in_tab_bar = true
|
||||||
|
|
||||||
|
-- wezterm.on('update-right-status', function(window, pane)
|
||||||
|
-- window:set_left_status 'left'
|
||||||
|
-- window:set_right_status 'right'
|
||||||
|
-- end)
|
||||||
|
|
||||||
|
config.use_fancy_tab_bar = true
|
||||||
|
config.show_tabs_in_tab_bar = false
|
||||||
|
config.show_new_tab_button_in_tab_bar = false
|
||||||
|
|
||||||
|
return config
|
||||||
531
zellij/.config/zellij/config.kdl
Normal file
531
zellij/.config/zellij/config.kdl
Normal file
@@ -0,0 +1,531 @@
|
|||||||
|
keybinds clear-defaults=true {
|
||||||
|
locked {
|
||||||
|
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
pane {
|
||||||
|
bind "left" { MoveFocus "left"; }
|
||||||
|
bind "down" { MoveFocus "down"; }
|
||||||
|
bind "up" { MoveFocus "up"; }
|
||||||
|
bind "right" { MoveFocus "right"; }
|
||||||
|
bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; }
|
||||||
|
bind "d" { NewPane "down"; SwitchToMode "normal"; }
|
||||||
|
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||||
|
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||||
|
bind "h" { MoveFocus "left"; }
|
||||||
|
bind "i" { TogglePanePinned; SwitchToMode "normal"; }
|
||||||
|
bind "j" { MoveFocus "down"; }
|
||||||
|
bind "k" { MoveFocus "up"; }
|
||||||
|
bind "l" { MoveFocus "right"; }
|
||||||
|
bind "n" { NewPane; SwitchToMode "normal"; }
|
||||||
|
bind "p" { SwitchFocus; }
|
||||||
|
bind "Ctrl p" { SwitchToMode "normal"; }
|
||||||
|
bind "r" { NewPane "right"; SwitchToMode "normal"; }
|
||||||
|
bind "s" { NewPane "stacked"; SwitchToMode "normal"; }
|
||||||
|
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||||
|
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
tab {
|
||||||
|
bind "left" { GoToPreviousTab; }
|
||||||
|
bind "down" { GoToNextTab; }
|
||||||
|
bind "up" { GoToPreviousTab; }
|
||||||
|
bind "right" { GoToNextTab; }
|
||||||
|
bind "1" { GoToTab 1; SwitchToMode "normal"; }
|
||||||
|
bind "2" { GoToTab 2; SwitchToMode "normal"; }
|
||||||
|
bind "3" { GoToTab 3; SwitchToMode "normal"; }
|
||||||
|
bind "4" { GoToTab 4; SwitchToMode "normal"; }
|
||||||
|
bind "5" { GoToTab 5; SwitchToMode "normal"; }
|
||||||
|
bind "6" { GoToTab 6; SwitchToMode "normal"; }
|
||||||
|
bind "7" { GoToTab 7; SwitchToMode "normal"; }
|
||||||
|
bind "8" { GoToTab 8; SwitchToMode "normal"; }
|
||||||
|
bind "9" { GoToTab 9; SwitchToMode "normal"; }
|
||||||
|
bind "[" { BreakPaneLeft; SwitchToMode "normal"; }
|
||||||
|
bind "]" { BreakPaneRight; SwitchToMode "normal"; }
|
||||||
|
bind "b" { BreakPane; SwitchToMode "normal"; }
|
||||||
|
bind "h" { GoToPreviousTab; }
|
||||||
|
bind "j" { GoToNextTab; }
|
||||||
|
bind "k" { GoToPreviousTab; }
|
||||||
|
bind "l" { GoToNextTab; }
|
||||||
|
bind "n" { NewTab; SwitchToMode "normal"; }
|
||||||
|
bind "r" { SwitchToMode "renametab"; TabNameInput 0; }
|
||||||
|
bind "s" { ToggleActiveSyncTab; SwitchToMode "normal"; }
|
||||||
|
bind "Ctrl t" { SwitchToMode "normal"; }
|
||||||
|
bind "x" { CloseTab; SwitchToMode "normal"; }
|
||||||
|
bind "tab" { ToggleTab; }
|
||||||
|
}
|
||||||
|
resize {
|
||||||
|
bind "left" { Resize "Increase left"; }
|
||||||
|
bind "down" { Resize "Increase down"; }
|
||||||
|
bind "up" { Resize "Increase up"; }
|
||||||
|
bind "right" { Resize "Increase right"; }
|
||||||
|
bind "+" { Resize "Increase"; }
|
||||||
|
bind "-" { Resize "Decrease"; }
|
||||||
|
bind "=" { Resize "Increase"; }
|
||||||
|
bind "H" { Resize "Decrease left"; }
|
||||||
|
bind "J" { Resize "Decrease down"; }
|
||||||
|
bind "K" { Resize "Decrease up"; }
|
||||||
|
bind "L" { Resize "Decrease right"; }
|
||||||
|
bind "h" { Resize "Increase left"; }
|
||||||
|
bind "j" { Resize "Increase down"; }
|
||||||
|
bind "k" { Resize "Increase up"; }
|
||||||
|
bind "l" { Resize "Increase right"; }
|
||||||
|
bind "Ctrl n" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
move {
|
||||||
|
bind "left" { MovePane "left"; }
|
||||||
|
bind "down" { MovePane "down"; }
|
||||||
|
bind "up" { MovePane "up"; }
|
||||||
|
bind "right" { MovePane "right"; }
|
||||||
|
bind "h" { MovePane "left"; }
|
||||||
|
bind "Ctrl h" { SwitchToMode "normal"; }
|
||||||
|
bind "j" { MovePane "down"; }
|
||||||
|
bind "k" { MovePane "up"; }
|
||||||
|
bind "l" { MovePane "right"; }
|
||||||
|
bind "n" { MovePane; }
|
||||||
|
bind "p" { MovePaneBackwards; }
|
||||||
|
bind "tab" { MovePane; }
|
||||||
|
}
|
||||||
|
scroll {
|
||||||
|
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||||
|
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||||
|
}
|
||||||
|
search {
|
||||||
|
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||||
|
bind "n" { Search "down"; }
|
||||||
|
bind "o" { SearchToggleOption "WholeWord"; }
|
||||||
|
bind "p" { Search "up"; }
|
||||||
|
bind "w" { SearchToggleOption "Wrap"; }
|
||||||
|
}
|
||||||
|
session {
|
||||||
|
bind "a" {
|
||||||
|
LaunchOrFocusPlugin "zellij:about" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "c" {
|
||||||
|
LaunchOrFocusPlugin "configuration" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "Ctrl o" { SwitchToMode "normal"; }
|
||||||
|
bind "p" {
|
||||||
|
LaunchOrFocusPlugin "plugin-manager" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "s" {
|
||||||
|
LaunchOrFocusPlugin "zellij:share" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
bind "w" {
|
||||||
|
LaunchOrFocusPlugin "session-manager" {
|
||||||
|
floating true
|
||||||
|
move_to_focused_tab true
|
||||||
|
}
|
||||||
|
SwitchToMode "normal"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
shared_except "locked" {
|
||||||
|
bind "Alt left" { MoveFocusOrTab "left"; }
|
||||||
|
bind "Alt down" { MoveFocus "down"; }
|
||||||
|
bind "Alt up" { MoveFocus "up"; }
|
||||||
|
bind "Alt right" { MoveFocusOrTab "right"; }
|
||||||
|
bind "Alt +" { Resize "Increase"; }
|
||||||
|
bind "Alt -" { Resize "Decrease"; }
|
||||||
|
bind "Alt =" { Resize "Increase"; }
|
||||||
|
bind "Alt [" { PreviousSwapLayout; }
|
||||||
|
bind "Alt ]" { NextSwapLayout; }
|
||||||
|
bind "Alt f" { ToggleFloatingPanes; }
|
||||||
|
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||||
|
bind "Alt h" { MoveFocusOrTab "left"; }
|
||||||
|
bind "Alt i" { MoveTab "left"; }
|
||||||
|
bind "Alt j" { MoveFocus "down"; }
|
||||||
|
bind "Alt k" { MoveFocus "up"; }
|
||||||
|
bind "Alt l" { MoveFocusOrTab "right"; }
|
||||||
|
bind "Alt n" { NewPane; }
|
||||||
|
bind "Alt o" { MoveTab "right"; }
|
||||||
|
bind "Alt p" { TogglePaneInGroup; }
|
||||||
|
bind "Alt Shift p" { ToggleGroupMarking; }
|
||||||
|
bind "Ctrl q" { Quit; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "move" {
|
||||||
|
bind "Ctrl h" { SwitchToMode "move"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "session" {
|
||||||
|
bind "Ctrl o" { SwitchToMode "session"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "scroll" "search" "tmux" {
|
||||||
|
bind "Ctrl a" { SwitchToMode "tmux"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "scroll" "search" {
|
||||||
|
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "tab" {
|
||||||
|
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "pane" {
|
||||||
|
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||||
|
}
|
||||||
|
shared_except "locked" "resize" {
|
||||||
|
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||||
|
}
|
||||||
|
shared_except "normal" "locked" "entersearch" {
|
||||||
|
bind "enter" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
shared_except "normal" "locked" "entersearch" "renametab" "renamepane" {
|
||||||
|
bind "esc" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
shared_among "pane" "tmux" {
|
||||||
|
bind "x" { CloseFocus; SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
shared_among "scroll" "search" {
|
||||||
|
bind "PageDown" { PageScrollDown; }
|
||||||
|
bind "PageUp" { PageScrollUp; }
|
||||||
|
bind "left" { PageScrollUp; }
|
||||||
|
bind "down" { ScrollDown; }
|
||||||
|
bind "up" { ScrollUp; }
|
||||||
|
bind "right" { PageScrollDown; }
|
||||||
|
bind "Ctrl b" { PageScrollUp; }
|
||||||
|
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||||
|
bind "d" { HalfPageScrollDown; }
|
||||||
|
bind "Ctrl f" { PageScrollDown; }
|
||||||
|
bind "h" { PageScrollUp; }
|
||||||
|
bind "j" { ScrollDown; }
|
||||||
|
bind "k" { ScrollUp; }
|
||||||
|
bind "l" { PageScrollDown; }
|
||||||
|
bind "Ctrl s" { SwitchToMode "normal"; }
|
||||||
|
bind "u" { HalfPageScrollUp; }
|
||||||
|
}
|
||||||
|
entersearch {
|
||||||
|
bind "Ctrl c" { SwitchToMode "scroll"; }
|
||||||
|
bind "esc" { SwitchToMode "scroll"; }
|
||||||
|
bind "enter" { SwitchToMode "search"; }
|
||||||
|
}
|
||||||
|
renametab {
|
||||||
|
bind "esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||||
|
}
|
||||||
|
shared_among "renametab" "renamepane" {
|
||||||
|
bind "Ctrl c" { SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
renamepane {
|
||||||
|
bind "esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||||
|
}
|
||||||
|
shared_among "session" "tmux" {
|
||||||
|
bind "d" { Detach; }
|
||||||
|
}
|
||||||
|
tmux {
|
||||||
|
bind "left" { MoveFocus "left"; SwitchToMode "normal"; }
|
||||||
|
bind "down" { MoveFocus "down"; SwitchToMode "normal"; }
|
||||||
|
bind "up" { MoveFocus "up"; SwitchToMode "normal"; }
|
||||||
|
bind "right" { MoveFocus "right"; SwitchToMode "normal"; }
|
||||||
|
bind "space" { NextSwapLayout; }
|
||||||
|
bind "s" { NewPane "down"; SwitchToMode "normal"; }
|
||||||
|
bind "v" { NewPane "right"; SwitchToMode "normal"; }
|
||||||
|
bind "," { SwitchToMode "renametab"; }
|
||||||
|
bind "[" { SwitchToMode "scroll"; }
|
||||||
|
bind "Ctrl b" { Write 2; SwitchToMode "normal"; }
|
||||||
|
bind "c" { NewTab; SwitchToMode "normal"; }
|
||||||
|
bind "h" { MoveFocus "left"; SwitchToMode "normal"; }
|
||||||
|
bind "j" { MoveFocus "down"; SwitchToMode "normal"; }
|
||||||
|
bind "k" { MoveFocus "up"; SwitchToMode "normal"; }
|
||||||
|
bind "l" { MoveFocus "right"; SwitchToMode "normal"; }
|
||||||
|
bind "n" { GoToNextTab; SwitchToMode "normal"; }
|
||||||
|
bind "o" { FocusNextPane; }
|
||||||
|
bind "p" { GoToPreviousTab; SwitchToMode "normal"; }
|
||||||
|
bind "z" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Plugin aliases - can be used to change the implementation of Zellij
|
||||||
|
// changing these requires a restart to take effect
|
||||||
|
plugins {
|
||||||
|
about location="zellij:about"
|
||||||
|
compact-bar location="zellij:compact-bar"
|
||||||
|
configuration location="zellij:configuration"
|
||||||
|
filepicker location="zellij:strider" {
|
||||||
|
cwd "/"
|
||||||
|
}
|
||||||
|
plugin-manager location="zellij:plugin-manager"
|
||||||
|
session-manager location="zellij:session-manager"
|
||||||
|
status-bar location="zellij:status-bar"
|
||||||
|
strider location="zellij:strider"
|
||||||
|
tab-bar location="zellij:tab-bar"
|
||||||
|
welcome-screen location="zellij:session-manager" {
|
||||||
|
welcome_screen true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Plugins to load in the background when a new session starts
|
||||||
|
// eg. "file:/path/to/my-plugin.wasm"
|
||||||
|
// eg. "https://example.com/my-plugin.wasm"
|
||||||
|
load_plugins {
|
||||||
|
}
|
||||||
|
web_client {
|
||||||
|
font "monospace"
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use a simplified UI without special fonts (arrow glyphs)
|
||||||
|
// Options:
|
||||||
|
// - true
|
||||||
|
// - false (Default)
|
||||||
|
//
|
||||||
|
// simplified_ui true
|
||||||
|
|
||||||
|
// Choose the theme that is specified in the themes section.
|
||||||
|
// Default: default
|
||||||
|
//
|
||||||
|
// theme "dracula"
|
||||||
|
|
||||||
|
// Choose the base input mode of zellij.
|
||||||
|
// Default: normal
|
||||||
|
//
|
||||||
|
// default_mode "locked"
|
||||||
|
|
||||||
|
// Choose the path to the default shell that zellij will use for opening new panes
|
||||||
|
// Default: $SHELL
|
||||||
|
//
|
||||||
|
// default_shell "fish"
|
||||||
|
|
||||||
|
// Choose the path to override cwd that zellij will use for opening new panes
|
||||||
|
//
|
||||||
|
// default_cwd "/tmp"
|
||||||
|
|
||||||
|
// The name of the default layout to load on startup
|
||||||
|
// Default: "default"
|
||||||
|
//
|
||||||
|
// default_layout "compact"
|
||||||
|
|
||||||
|
// The folder in which Zellij will look for layouts
|
||||||
|
// (Requires restart)
|
||||||
|
//
|
||||||
|
// layout_dir "/tmp"
|
||||||
|
|
||||||
|
// The folder in which Zellij will look for themes
|
||||||
|
// (Requires restart)
|
||||||
|
//
|
||||||
|
// theme_dir "/tmp"
|
||||||
|
|
||||||
|
// Toggle enabling the mouse mode.
|
||||||
|
// On certain configurations, or terminals this could
|
||||||
|
// potentially interfere with copying text.
|
||||||
|
// Options:
|
||||||
|
// - true (default)
|
||||||
|
// - false
|
||||||
|
//
|
||||||
|
// mouse_mode false
|
||||||
|
|
||||||
|
// Toggle having pane frames around the panes
|
||||||
|
// Options:
|
||||||
|
// - true (default, enabled)
|
||||||
|
// - false
|
||||||
|
//
|
||||||
|
// pane_frames false
|
||||||
|
|
||||||
|
// When attaching to an existing session with other users,
|
||||||
|
// should the session be mirrored (true)
|
||||||
|
// or should each user have their own cursor (false)
|
||||||
|
// (Requires restart)
|
||||||
|
// Default: false
|
||||||
|
//
|
||||||
|
// mirror_session true
|
||||||
|
|
||||||
|
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||||
|
// eg. when terminal window with an active zellij session is closed
|
||||||
|
// (Requires restart)
|
||||||
|
// Options:
|
||||||
|
// - detach (Default)
|
||||||
|
// - quit
|
||||||
|
//
|
||||||
|
// on_force_close "quit"
|
||||||
|
|
||||||
|
// Configure the scroll back buffer size
|
||||||
|
// This is the number of lines zellij stores for each pane in the scroll back
|
||||||
|
// buffer. Excess number of lines are discarded in a FIFO fashion.
|
||||||
|
// (Requires restart)
|
||||||
|
// Valid values: positive integers
|
||||||
|
// Default value: 10000
|
||||||
|
//
|
||||||
|
// scroll_buffer_size 10000
|
||||||
|
|
||||||
|
// Provide a command to execute when copying text. The text will be piped to
|
||||||
|
// the stdin of the program to perform the copy. This can be used with
|
||||||
|
// terminal emulators which do not support the OSC 52 ANSI control sequence
|
||||||
|
// that will be used by default if this option is not set.
|
||||||
|
// Examples:
|
||||||
|
//
|
||||||
|
// copy_command "xclip -selection clipboard" // x11
|
||||||
|
// copy_command "wl-copy" // wayland
|
||||||
|
// copy_command "pbcopy" // osx
|
||||||
|
//
|
||||||
|
// copy_command "pbcopy"
|
||||||
|
|
||||||
|
// Choose the destination for copied text
|
||||||
|
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
|
||||||
|
// Does not apply when using copy_command.
|
||||||
|
// Options:
|
||||||
|
// - system (default)
|
||||||
|
// - primary
|
||||||
|
//
|
||||||
|
// copy_clipboard "primary"
|
||||||
|
|
||||||
|
// Enable automatic copying (and clearing) of selection when releasing mouse
|
||||||
|
// Default: true
|
||||||
|
//
|
||||||
|
// copy_on_select true
|
||||||
|
|
||||||
|
// Path to the default editor to use to edit pane scrollbuffer
|
||||||
|
// Default: $EDITOR or $VISUAL
|
||||||
|
// scrollback_editor "/usr/bin/vim"
|
||||||
|
|
||||||
|
// A fixed name to always give the Zellij session.
|
||||||
|
// Consider also setting `attach_to_session true,`
|
||||||
|
// otherwise this will error if such a session exists.
|
||||||
|
// Default: <RANDOM>
|
||||||
|
//
|
||||||
|
// session_name "My singleton session"
|
||||||
|
|
||||||
|
// When `session_name` is provided, attaches to that session
|
||||||
|
// if it is already running or creates it otherwise.
|
||||||
|
// Default: false
|
||||||
|
//
|
||||||
|
// attach_to_session true
|
||||||
|
|
||||||
|
// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible
|
||||||
|
// Options:
|
||||||
|
// - true (default)
|
||||||
|
// - false
|
||||||
|
//
|
||||||
|
// auto_layout false
|
||||||
|
|
||||||
|
// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected
|
||||||
|
// Options:
|
||||||
|
// - true (default)
|
||||||
|
// - false
|
||||||
|
//
|
||||||
|
// session_serialization false
|
||||||
|
|
||||||
|
// Whether pane viewports are serialized along with the session, default is false
|
||||||
|
// Options:
|
||||||
|
// - true
|
||||||
|
// - false (default)
|
||||||
|
//
|
||||||
|
// serialize_pane_viewport false
|
||||||
|
|
||||||
|
// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0
|
||||||
|
// defaults to the scrollback size. If this number is higher than the scrollback size, it will
|
||||||
|
// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true.
|
||||||
|
//
|
||||||
|
// scrollback_lines_to_serialize 10000
|
||||||
|
|
||||||
|
// Enable or disable the rendering of styled and colored underlines (undercurl).
|
||||||
|
// May need to be disabled for certain unsupported terminals
|
||||||
|
// (Requires restart)
|
||||||
|
// Default: true
|
||||||
|
//
|
||||||
|
// styled_underlines false
|
||||||
|
|
||||||
|
// How often in seconds sessions are serialized
|
||||||
|
//
|
||||||
|
// serialization_interval 10000
|
||||||
|
|
||||||
|
// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know
|
||||||
|
// metadata info on this session)
|
||||||
|
// (Requires restart)
|
||||||
|
// Default: false
|
||||||
|
//
|
||||||
|
// disable_session_metadata false
|
||||||
|
|
||||||
|
// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it)
|
||||||
|
// (Requires restart)
|
||||||
|
// Default: true (if the host terminal supports it)
|
||||||
|
//
|
||||||
|
// support_kitty_keyboard_protocol false
|
||||||
|
// Whether to make sure a local web server is running when a new Zellij session starts.
|
||||||
|
// This web server will allow creating new sessions and attaching to existing ones that have
|
||||||
|
// opted in to being shared in the browser.
|
||||||
|
// When enabled, navigate to http://127.0.0.1:8082
|
||||||
|
// (Requires restart)
|
||||||
|
//
|
||||||
|
// Note: a local web server can still be manually started from within a Zellij session or from the CLI.
|
||||||
|
// If this is not desired, one can use a version of Zellij compiled without
|
||||||
|
// `web_server_capability`
|
||||||
|
//
|
||||||
|
// Possible values:
|
||||||
|
// - true
|
||||||
|
// - false
|
||||||
|
// Default: false
|
||||||
|
//
|
||||||
|
// web_server false
|
||||||
|
// Whether to allow sessions started in the terminal to be shared through a local web server, assuming one is
|
||||||
|
// running (see the `web_server` option for more details).
|
||||||
|
// (Requires restart)
|
||||||
|
//
|
||||||
|
// Note: This is an administrative separation and not intended as a security measure.
|
||||||
|
//
|
||||||
|
// Possible values:
|
||||||
|
// - "on" (allow web sharing through the local web server if it
|
||||||
|
// is online)
|
||||||
|
// - "off" (do not allow web sharing unless sessions explicitly opt-in to it)
|
||||||
|
// - "disabled" (do not allow web sharing and do not permit sessions started in the terminal to opt-in to it)
|
||||||
|
// Default: "off"
|
||||||
|
//
|
||||||
|
// web_sharing "off"
|
||||||
|
// A path to a certificate file to be used when setting up the web client to serve the
|
||||||
|
// connection over HTTPs
|
||||||
|
//
|
||||||
|
// web_server_cert "/path/to/cert.pem"
|
||||||
|
// A path to a key file to be used when setting up the web client to serve the
|
||||||
|
// connection over HTTPs
|
||||||
|
//
|
||||||
|
// web_server_key "/path/to/key.pem"
|
||||||
|
/// Whether to enforce https connections to the web server when it is bound to localhost
|
||||||
|
/// (127.0.0.0/8)
|
||||||
|
///
|
||||||
|
/// Note: https is ALWAYS enforced when bound to non-local interfaces
|
||||||
|
///
|
||||||
|
/// Default: false
|
||||||
|
//
|
||||||
|
// enforce_https_for_localhost false
|
||||||
|
|
||||||
|
// Whether to stack panes when resizing beyond a certain size
|
||||||
|
// Default: true
|
||||||
|
//
|
||||||
|
// stacked_resize false
|
||||||
|
|
||||||
|
// Whether to show tips on startup
|
||||||
|
//Default: false
|
||||||
|
show_startup_tips false
|
||||||
|
|
||||||
|
// Whether to show release notes on first version run
|
||||||
|
// Default: true
|
||||||
|
//
|
||||||
|
// show_release_notes false
|
||||||
|
|
||||||
|
// Whether to enable mouse hover effects and pane grouping functionality
|
||||||
|
// default is true
|
||||||
|
// advanced_mouse_actions false
|
||||||
|
|
||||||
|
// The ip address the web server should listen on when it starts
|
||||||
|
// Default: "127.0.0.1"
|
||||||
|
// (Requires restart)
|
||||||
|
// web_server_ip "127.0.0.1"
|
||||||
|
|
||||||
|
// The port the web server should listen on when it starts
|
||||||
|
// Default: 8082
|
||||||
|
// (Requires restart)
|
||||||
|
// web_server_port 8082
|
||||||
|
|
||||||
|
// A command to run (will be wrapped with sh -c and provided the RESURRECT_COMMAND env variable)
|
||||||
|
// after Zellij attempts to discover a command inside a pane when resurrecting sessions, the STDOUT
|
||||||
|
// of this command will be used instead of the discovered RESURRECT_COMMAND
|
||||||
|
// can be useful for removing wrappers around commands
|
||||||
|
// Note: be sure to escape backslashes and similar characters properly
|
||||||
|
// post_command_discovery_hook "echo $RESURRECT_COMMAND | sed <your_regex_here>"
|
||||||
Reference in New Issue
Block a user