73 Commits

Author SHA1 Message Date
5e4a314115 [NeoVim] add gopls 2022-12-05 13:17:46 +01:00
aaa06a4df8 [NeoVim] add markdown preview 2022-11-24 18:01:30 +01:00
5fcd4d168e [NeoVim] calm down firenvim 2022-11-24 18:00:46 +01:00
bfc0fb49fc [mpv] thumbfast conf 2022-11-09 19:51:30 +01:00
87c8314567 [mpv] steal mugen script from amoethyst 2022-11-09 19:51:05 +01:00
584b9a0d9f [NeoVim] Add FireNvim 2022-10-25 18:51:20 +02:00
52954da5ee [Waybar] Fix pacman module (again) 2022-10-25 15:34:48 +02:00
271450c509 [NeoVim] Update and add noice 2022-10-21 20:11:06 +02:00
5028abfdf5 [Sway] Add border around kitty-scratches 2022-10-21 19:22:58 +02:00
0f335550b5 [Waybar] Fix pacman module 2022-10-21 19:14:18 +02:00
1a0f52ec04 [Waybar] Improve look 2022-10-03 18:36:32 +02:00
70d96e45f1 [Waybar] Add custom update manager 2022-10-03 15:21:57 +02:00
7b9a3c41dd [mpv] UOSC conf 2022-09-30 12:37:07 +02:00
1444f19ae7 [Sway] Switch to waybar 2022-09-30 12:36:49 +02:00
813af84bba [NeoVim] Add impatient 2022-09-09 14:34:03 +02:00
86e2d5ab84 [NeoVim] Updates 2022-09-08 18:42:49 +02:00
2c900d1ca5 [NeoVim] Fix file open in neo-tree 2022-09-07 18:37:00 +02:00
f0f796572c [NeoVim] Small changes 2022-08-30 17:48:42 +02:00
a87dbbef64 [PipeWire] Add noboost mic rules 2022-08-30 13:35:15 +02:00
ab38c8b5b3 [NeoVim] Disable Hologram auto display 2022-08-30 12:14:30 +02:00
5e638eed29 [NeoVim] Call PackerSync after Fennel changes 2022-08-30 12:14:30 +02:00
85a4b244d0 [NeoVim] Display PNGs directly in floating windows 2022-08-26 17:46:55 +02:00
27a642d04e [NeoVim] Add Hologram 2022-08-25 21:37:07 +02:00
370a677344 [NeoVim] Slight syntax improvements 2022-08-25 21:36:31 +02:00
cebfc517fe [NeoVim] Open binary files with xdg-open 2022-08-25 17:03:52 +02:00
65004eb166 [NeoVim] Fix tree-sitter bootstrap error 2022-08-25 03:58:48 +02:00
4059a6501a [NeoVim] Actually working bootstrap 2022-08-24 18:33:02 +02:00
b411775c77 [NeoVim] Clean plugins settings 2022-08-24 16:05:58 +02:00
a68c8f70b2 Small fixes 2022-08-24 14:04:55 +02:00
4f2eda40e6 [NeoVim] The world is now Fennel 2022-08-24 14:04:55 +02:00
bf8d567d01 [NeoVim] Fennel More 2022-08-23 20:44:19 +02:00
643958bb39 [NeoTree] Handle vimtex QuickFix window 2022-08-23 16:09:56 +02:00
d15417dce5 [NeoVim] More Fennel 2022-08-23 14:25:51 +02:00
4ec619d04e [NeoVim] Starting the Fennel journey 2022-08-22 20:48:51 +02:00
ae90912567 [NeoVim] Better LSP management 2022-08-22 16:01:07 +02:00
32e6c9f4d5 [NeoVim] Packer Bootstrap 2022-08-22 16:00:38 +02:00
84dbb0666a [NeoVim] Configure LTeX 2022-08-22 15:11:03 +02:00
69b73d8323 [Ranger] Add dragon-drop shortcut 2022-08-18 15:44:11 +02:00
43ffd3ae92 Make KeePassXC float 2022-08-17 18:50:54 +02:00
fd49af2c96 [i3status] Update configuration 2022-08-17 18:50:35 +02:00
e4b925062c Remove outdated Sway scripts 2022-08-17 18:35:01 +02:00
af1ebdaede Get rid of some old coc files 2022-08-17 18:13:37 +02:00
61d3f1dffe Autostart KeePassXC 2022-08-17 15:22:27 +02:00
aea55f75e8 [NeoVim] Add Mason 2022-08-17 15:21:59 +02:00
4732cf9b1a [NeoVim] Update cmp template 2022-08-05 19:31:20 +02:00
b0999f012c [NeoVim] Add null-ls 2022-08-05 18:57:58 +02:00
43ba9953aa [NeoVim] LaTeX + Snippets 2022-07-25 19:08:00 +02:00
d38ce6a1c7 [NeoVim] Install nvim-cmp 2022-07-25 15:37:57 +02:00
f850d9588c [WorkspaceRename] Add Vivaldi 2022-07-25 15:36:33 +02:00
217ff74e2e Make the world even more opaque 2022-07-12 14:26:43 +02:00
c8a88f5f15 [NeoVim] Add diffview 2022-07-12 14:23:56 +02:00
14a9061e3d Make the world opaque 2022-07-12 13:20:38 +02:00
a504e27e19 Update status bar configuration 2022-07-11 17:17:34 +02:00
176e5dd276 [NeoVim] Remove neo-tree's fading 2022-07-08 19:44:55 +02:00
94428c4747 Perfected NeoVim 2022-07-04 21:02:36 +02:00
b79cb19b10 Add smartindent 2022-07-04 15:02:06 +02:00
cf85b92cad More changes 2022-07-04 14:47:07 +02:00
7ec8924d10 Changes 2022-07-04 11:52:55 +02:00
8f40b17cad Small theming changes 2022-06-10 15:49:16 +02:00
e813a072da NeoVim clean and updated config 2022-06-10 15:48:14 +02:00
6c67b9a43c Configure Sway client titles 2022-05-23 17:49:23 +02:00
b0f154e479 Update 2022-05-05 17:38:38 +02:00
23e8261859 Stuff 2021-12-06 17:14:36 +01:00
421e7b21f4 Cleaning 2021-11-19 12:31:15 +01:00
8b65270f5a Mouse cursor and electron flags 2021-11-19 12:22:59 +01:00
c538cc0ff5 Disable opacity for kitty-scratch 2021-11-16 18:27:32 +01:00
e5bb82de21 Icon for kitty-scratch 2021-11-16 16:43:59 +01:00
c2f9d53ead Use scratchpad + more workspace icons 2021-11-16 16:40:27 +01:00
6cf171227a Add mako and update confs 2021-11-10 15:38:52 +01:00
02a9e46f96 Can't believe I didn't commit mpv bindsym 2021-02-26 18:30:37 +01:00
a63e61145c Add systemd environment variables 2020-09-11 18:12:32 +02:00
fb5bd85e77 Mostly just slurp 2020-08-25 15:40:25 +02:00
6532cab1f6 Update JACK setup 2020-07-17 13:45:45 +02:00
77 changed files with 2722 additions and 1166 deletions

View File

@@ -1,23 +1,9 @@
alias update='yay -Pw && yay -Sc && yay -Syu --sudoloop && yay -c && sudo pacdiff' alias update='yay -Pw && yay -Sc && yay --editmenu -Syu --sudoloop --devel && yay -c \
alias gemocstudio='PATH=/usr/lib/jvm/java-9-jdk/bin/:$PATH ~/gemoc/GemocStudio' && sudo pacdiff \
; pkill -SIGUSR1 i3status-rs \
; read -s -k "?Update finished! Press any key to exit..."'
alias sl='ls' alias sl='ls'
alias ls='ls --color=auto' alias ls='ls --color=auto'
alias cat='ccat -G Keyword="*glay*" -G Decimal="glay" -G Plaintext="glay" --bg=dark' alias cat='ccat -G Keyword="*glay*" -G Decimal="glay" -G Plaintext="glay" --bg=dark'
alias youtube='URL=https://www.youtube.com/watch\?v\=Mvvsa5HAJiI\&list\=RDMM\&start_radio\=1 && PLAYLIST="" && for i in {1..30} ; do URL="https://www.youtube.com"`curl -s -b ~/.config/youtube-dl/youtube.txt $URL | grep "next-playlist-list-item" | sed '\''s/.*href=\"//'\'' | sed '\''s/\".*//'\'' | sed '\''s/\&/\&/g'\''` ; PLAYLIST="$PLAYLIST\n`echo $URL | sed '\''s/\&list.*//'\''`" ; done ; echo "$PLAYLIST" | mpv --playlist=-' alias youtube='URL=https://www.youtube.com/watch\?v\=Mvvsa5HAJiI\&list\=RDMM\&start_radio\=1 && PLAYLIST="" && for i in {1..30} ; do URL="https://www.youtube.com"`curl -s -b ~/.config/youtube-dl/youtube.txt $URL | grep "next-playlist-list-item" | sed '\''s/.*href=\"//'\'' | sed '\''s/\".*//'\'' | sed '\''s/\&/\&/g'\''` ; PLAYLIST="$PLAYLIST\n`echo $URL | sed '\''s/\&list.*//'\''`" ; done ; echo "$PLAYLIST" | mpv --playlist=-'
function javaversion() {
if [ "$#" -ne 1 ]; then
echo "Expected parameter <java_version>"
else
if [ "$1" -eq 8 ]; then
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
elif [ "$1" -eq 9 ]; then
export JAVA_HOME=/usr/lib/jvm/java-9-jdk
elif [ "$1" -eq 10 ]; then
export JAVA_HOME=/usr/lib/jvm/java-10-openjdk
elif [ "$1" -eq 11 ]; then
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
fi
export PATH=$JAVA_HOME/bin:$PATH
fi
}

View File

@@ -4,8 +4,8 @@
export EDITOR=nvim export EDITOR=nvim
export CUPS_SERVER=cups-sam.inria.fr:631 export CUPS_SERVER=cups-sam.inria.fr:631
export GTK_THEME=NumixSolarizedDarkBlue export GTK_THEME=SolArc-Dark
export GTK2_RC_FILES=/usr/share/themes/NumixSolarizedDarkBlue/gtk-2.0/gtkrc export GTK2_RC_FILES=/usr/share/themes/SolArc-Dark/gtk-2.0/gtkrc
export QT_QPA_PLATFORMTHEME=gtk2 export QT_QPA_PLATFORMTHEME=gtk2
[[ -f ~/.bashrc ]] && . ~/.bashrc [[ -f ~/.bashrc ]] && . ~/.bashrc

View File

@@ -1,51 +0,0 @@
{
"settings": {
"stable": {
"settings": {
"bda-gs-1": true,
"bda-gs-2": false,
"bda-gs-3": false,
"bda-gs-4": false,
"bda-gs-5": false,
"bda-gs-6": false,
"bda-gs-7": false,
"bda-gs-8": true,
"bda-es-0": false,
"bda-es-1": false,
"bda-es-2": false,
"bda-es-4": false,
"bda-es-6": false,
"bda-es-7": false,
"bda-gs-b": false,
"bda-es-8": false,
"bda-dc-0": false,
"bda-css-0": true,
"bda-css-1": false,
"bda-es-9": false,
"fork-dm-1": false,
"fork-ps-1": true,
"fork-ps-2": true,
"fork-ps-3": true,
"fork-ps-4": true,
"fork-ps-5": true,
"fork-es-2": false,
"fork-es-3": false,
"fork-wp-1": true,
"fork-wp-2": false,
"fork-beta": true,
"reactDevTools": false,
"transparency": true
},
"plugins": {},
"themes": {
"Frosted Glass": true
}
},
"canary": {},
"ptb": {}
},
"version": "0.3.4",
"emoteCacheDays": 7,
"emoteCacheDate": "2020-07-12T10:26:39.158Z",
"bdcustomcss": "I2FwcC1tb3VudCAuY2hhdC0zYlJ4eHUgLm1lc3NhZ2VzV3JhcHBlci0zbFpEZlkgW2NsYXNzKj10aW1lc3RhbXBdLAojYXBwLW1vdW50IC5jaGF0LTNiUnh4dSAubWVzc2FnZXNXcmFwcGVyLTNsWkRmWSAubWVzc2FnZUNvbnRlbnQtMnFXV3hDLAojYXBwLW1vdW50IC5zaWRlYmFyLTJLOHBGaCAuY29udGFpbmVyLVBOa2ltYyAuY29udGFpbmVyRGVmYXVsdC0xWm5BRHEgLndyYXBwZXItMXVjalRkOm5vdCgubW9kZU11dGVkLTNvc3k3aik6bm90KC5tb2RlVW5yZWFkLTF6cEZkQSk6bm90KC5tb2RlU2VsZWN0ZWQtMXpBcEpfKSAuY29udGVudC0zYXRfQVUgLm5hbWUtM19Ec21nLAojYXBwLW1vdW50IC5zaWRlYmFyLTJLOHBGaCAuY29udGFpbmVyLVBOa2ltYyAuY29udGFpbmVyRGVmYXVsdC0xWm5BRHEgLndyYXBwZXItMXVjalRkOm5vdCgubW9kZU11dGVkLTNvc3k3aik6bm90KC5tb2RlVW5yZWFkLTF6cEZkQSk6bm90KC5tb2RlU2VsZWN0ZWQtMXpBcEpfKSAuY29udGVudC0zYXRfQVUgc3ZnLAojYXBwLW1vdW50IC5zaWRlYmFyLTJLOHBGaCAuY2hhbm5lbC0yUUQ5X08gewogICAgY29sb3I6ICM5M2ExYTEgIWltcG9ydGFudDsKfQoKI2FwcC1tb3VudCA6OnNlbGVjdGlvbiwKI2FwcC1tb3VudCAuY2hhdC0zYlJ4eHUgLm1lbnRpb24sCiNhcHAtbW91bnQgLm1lbWJlcnMtMTk5OHBCIC5tZW1iZXItMy1ZWFVlLnNlbGVjdGVkLWFYaFFSNiAucm9sZUNvbG9yLXJ6MnZNMCwKI2FwcC1tb3VudCAubWVtYmVycy0xOTk4cEIgLm1lbWJlci0zLVlYVWUgLmJvdFRhZy0yV1BKNzQsCiNhcHAtbW91bnQgLnNpZGViYXItMks4cEZoIC5jb250YWluZXItUE5raW1jIC5jb250YWluZXJEZWZhdWx0LTFabkFEcS5zZWxlY3RlZC0zN2pfaVUgLmNvbnRlbnQtM2F0X0FVIC5uYW1lLTNfRHNtZywKI2FwcC1tb3VudCAuc2lkZWJhci0ySzhwRmggLmNvbnRhaW5lci1QTmtpbWMgLmNvbnRhaW5lckRlZmF1bHQtMVpuQURxLnNlbGVjdGVkLTM3al9pVSAuY29udGVudC0zYXRfQVUgc3ZnLAojYXBwLW1vdW50IC50b29sdGlwQmxhY2stUFBHNDd6LCAjYXBwLW1vdW50IC50b29sdGlwQnJhbmQtZzAzTno4LCAjYXBwLW1vdW50IC50b29sdGlwUmVkLTgtOU5lUCwKI2FwcC1tb3VudCAuYnViYmxlLTN3ZTJkaSwgI2FwcC1tb3VudCAuc2lkZWJhci0ySzhwRmggLmNvbnRhaW5lci1QTmtpbWMgLmNvbnRhaW5lckRlZmF1bHQtMVpuQURxIC53cmFwcGVyLTF1Y2pUZDpub3QoLm1vZGVNdXRlZC0zb3N5N2opLm1vZGVVbnJlYWQtMXpwRmRBIC5jb250ZW50LTNhdF9BVSAubmFtZS0zX0RzbWcsCiNhcHAtbW91bnQgLnNpZGViYXItMks4cEZoIC5jb250YWluZXItUE5raW1jIC5jb250YWluZXJEZWZhdWx0LTFabkFEcSAud3JhcHBlci0xdWNqVGQ6bm90KC5tb2RlTXV0ZWQtM29zeTdqKS5tb2RlVW5yZWFkLTF6cEZkQSAuY29udGVudC0zYXRfQVUgc3ZnIHsKICAgIGNvbG9yOiAjMDAyYjM2ICFpbXBvcnRhbnQ7CiAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50Owp9CgojYXBwLW1vdW50IC5zaWRlYmFyLTJLOHBGaCAuY29udGFpbmVyLVBOa2ltYyAuY29udGFpbmVyRGVmYXVsdC0xWm5BRHEgLndyYXBwZXItMXVjalRkOm5vdCgubW9kZU11dGVkLTNvc3k3aikubW9kZVVucmVhZC0xenBGZEEgLmNvbnRlbnQtM2F0X0FVIHsKICAgIGJhY2tncm91bmQ6ICMyNjhiZDIgIWltcG9ydGFudDsKfQoKI2FwcC1tb3VudCAuc2lkZWJhci0ySzhwRmggLmNoYW5uZWwtMlFEOV9PLnNlbGVjdGVkLWFYaFFSNiB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodmFyKC0tQkctZ3JhZGllbnQtZGlyZWN0aW9uKSwgcmdiYSh2YXIoLS1CRy1ncmFkaWVudC1vbmUpLCAxKSAyMCUsIHJnYmEodmFyKC0tQkctZ3JhZGllbnQtdHdvKSwgMSkpOwogICAgY29sb3I6ICMwMDJiMzYgIWltcG9ydGFudDsKICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7Cgp9"
}

View File

@@ -1,45 +0,0 @@
/**
* @name Frosted Glass
* @author Gibbu#1211
* @version 2.0.0
* @description Edited with https://gibbu.me/editor/frostedglass | Base theme: Frosted Glass by Gibbu#1211
* @invite ZHthyCw
* @donate https://paypal.me/IanRGibson
* @authorId 174868361040232448
* @source https://github.com/Gibbu/BetterDiscord-Themes/tree/master/FrostedGlass
* @website https://gibbu.me/editor/frostedglass
*/
@import url('https://fonts.googleapis.com/css?family=DejaVu+Sans+Mono:300,400,500,600,700,800,900&display=swap');
@import url('https://gibbu.github.io/BetterDiscord-Themes/FrostedGlass/base.css');
@import url('https://discord-custom-covers.github.io/usrbg/snippets/userPopouts.css');
@import url('https://discord-custom-covers.github.io/usrbg/snippets/modals.css');
@import url('https://monstrousdev.github.io/themes/addons/user-tags.css');
@import url('https://gibbu.github.io/BetterDiscord-Themes/addons/windows-titlebar.css');
:root {
--background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAADGHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHja7ZZbkhshDEX/WUWWgCSEYDk8q7KDLD8XGnvsSTKZqXylyk01DwGS4Ehtu/Hj+3Tf8LAX74JaijlGjyfkkLmgk/z1lF2TD7t+lK3xk9zdJxgiQSvXMMUjH5Az1vORt6OnQK4PivI4E/V5ohxFnI6Bm0fHkNBlwPejqBxFwsdyuMb1WI452eMRzr51fDrtft2qghhHjWQBdWBvFjP6iX0w3Ftfjs7Gee3Teul5P3a3pbh55iEkftfp8lKut+BV1CwZ6zCLfsCooB/2/XoHZHABnudzt8Pfb/Ppbm7tHx73mWOdcHgOg1vvhIH7ZeJdGMRx5PKOXry3W+7eT5D+Hvdm+uCRhbthfvIIE/Hp0OntnbOnOcd1uhIijhzPoW4nIbdRzl5XEOxtEcXwKvq2S0ZJyICGGOu++YrSKBMD8aRAnQpNR2N3GjX4GHiwoWVuLFuWwCJzkwU9rEKTTbJ0hABLQ6jICoQ53fGFtt287TVKsNwJS5mgjLDlr8V9ZtFHZc6VS0Tu5AxdgHmlIdxY5FaNZSBC81yq7gu+leeAPGAFCHVfc8IBi6+Xiqr0FluyQQvWKdorucn6tX8pCrCtcIYECHwkUYrkjdmIcJEJgAr5xBK4ggCpcoeTHEQi2CAJYNphj9Fey8qXHF9JkFCJYmCTpQBWCIr4sZAQQ0VFg6pGNU2atUSJwSHDYrS4PrfFxIKpRTNLlq0kSSFpislSSjmVzFnwNdaMdMwp51wKbBZoLtEVrC+QVK5SQ9Uaq9VUcy0N4dNC0xabtdRyK527dORxj9166rmXQQOhNMJQN+KwkUYeZSLWpswwdcZpM808y53aofpL+QI1OtR4k1rr7E4NUrOrdTteoGQxAzEOBOK2CCCgeTHziULgRW4x85mRFcpwUhebTr5Q5OAkDGKddGf3Ru5L3FwMH3Ljz5JzC90/ktvc3NAHbr+h1tcvcdvErixcd+oF2TdpFE6Fa/WTm1vdVNYv6r+1L0UvRS9FL0UvRS9FL0X/tyL8fcjuJ86avGDS/Nk0AAABhGlDQ1BJQ0MgcHJvZmlsZQAAeJx9kT1Iw0AcxV9Ti1IqCnYQUcjQOlkQFXHUKhShQqgVWnUwufQLmjQkKS6OgmvBwY/FqoOLs64OroIg+AHi5Oik6CIl/i8ttIjx4Lgf7+497t4BQr3MNKtrHNB020wl4mImuyp2vyKAEfQjiqDMLGNOkpLwHF/38PH1LsazvM/9OXrVnMUAn0g8ywzTJt4gnt60Dc77xGFWlFXic+Ixky5I/Mh1pclvnAsuCzwzbKZT88RhYrHQwUoHs6KpEU8RR1RNp3wh02SV8xZnrVxlrXvyF4Zy+soy12kOI4FFLEGCCAVVlFCGjRitOikWUrQf9/APuX6JXAq5SmDkWEAFGmTXD/4Hv7u18pMTzaRQHAi8OM5HFOjeBRo1x/k+dpzGCeB/Bq70tr9SB2Y+Sa+1tcgR0LcNXFy3NWUPuNwBBp8M2ZRdyU9TyOeB9zP6piwwcAsE15q9tfZx+gCkqavkDXBwCIwWKHvd4909nb39e6bV3w9c3HKeW1/O7QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+QFHRAqDr9nsVkAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAGElEQVQY02Nk0DbrYSACMDEQCUYVUkchAIoXAQHyaCuwAAAAAElFTkSuQmCC');
--background-image-blur: 0px;
--popout-modal-image: var(--background-image);
--popout-modal-blur: 0px;
--home-button-image: url('https://gibbu.github.io/BetterDiscord-Themes/FrostedGlass/assets/discord.svg');
--serverlist-brightness: 0;
--left-brightness: 0;
--middle-brightness: 0;
--right-brightness: 0;
--popout-modal-brightness: 0.5;
--gradient-primary: 133,153,0;
--gradient-secondary: 133,153,0;
--gradient-direction: 320deg;
--tint-colour: 255,51,159;
--tint-brightness: 0;
--window-padding: 0px;
--window-roundness: 0px;
--scrollbar-colour: rgba(255,255,255,0.05);
--link-colour: #00b0f4;
--show-gift-gif-buttons: none;
--font: 'DejaVu Sans Mono';
--update-notice-1: none;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,2 @@
--enable-features=VaapiVideoDecoder,VaapiVideoEncoder,WebUIDarkMode
--force-dark-mode

View File

@@ -0,0 +1,2 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@@ -0,0 +1,2 @@
--enable-features=UseOzonePlatform
--ozone-platform=wayland

View File

@@ -0,0 +1 @@
XDG_CURRENT_DESKTOP=sway

File diff suppressed because it is too large Load Diff

View File

@@ -184,6 +184,11 @@ font_family DejaVuSansMono
#: map cmd+shift+v paste_from_buffer a1 #: map cmd+shift+v paste_from_buffer a1
map ctrl+shift+up send_text application \033[0A
map ctrl+shift+right send_text application \033[0C
map ctrl+shift+down send_text application \033[0B
map ctrl+shift+left send_text application \033[0D
#: Note that copying to the clipboard is a security risk, as all #: Note that copying to the clipboard is a security risk, as all
#: programs, including websites open in your browser can read the #: programs, including websites open in your browser can read the
#: contents of the system clipboard. #: contents of the system clipboard.
@@ -261,7 +266,7 @@ font_family DejaVuSansMono
#: Terminal bell {{{ #: Terminal bell {{{
# enable_audio_bell yes enable_audio_bell no
#: Enable/disable the audio bell. Useful in environments that require #: Enable/disable the audio bell. Useful in environments that require
#: silence. #: silence.
@@ -490,7 +495,8 @@ color15 #fdf6e3
#: The foreground and background colors #: The foreground and background colors
background_opacity 0.8 #background_opacity 0.8
background_opacity 1.0
#: The opacity of the background. A number between 0 and 1, where 1 is #: The opacity of the background. A number between 0 and 1, where 1 is
#: opaque and 0 is fully transparent. This will only work if #: opaque and 0 is fully transparent. This will only work if
@@ -508,7 +514,7 @@ background_opacity 0.8
#: change transparency of windows set dynamic_background_opacity to #: change transparency of windows set dynamic_background_opacity to
#: yes (this is off by default as it has a performance cost) #: yes (this is off by default as it has a performance cost)
# dynamic_background_opacity no dynamic_background_opacity yes
#: Allow changing of the background_opacity dynamically, using either #: Allow changing of the background_opacity dynamically, using either
#: keyboard shortcuts (increase_background_opacity and #: keyboard shortcuts (increase_background_opacity and

18
.config/mako/config Normal file
View File

@@ -0,0 +1,18 @@
anchor=top-left
background-color=#002b36ff
border-color=#859900ff
border-size=1
font=DejaVu Sans Mono 10
icon-location=left
margin=6
max-visible=-1
output=eDP-1
progress-color=source #859900ff
text-color=#93a1a1
text-alignment=left
width=400
[app-name="Spotify"]
anchor=top-right
icon-location=right
text-alignment=center

View File

@@ -1,3 +1,18 @@
ctrl+r cycle-values video-rotate 0 90 180 270 ctrl+r cycle-values video-rotate 0 90 180 270
ctrl+b cycle deband ctrl+b cycle deband
b cycle-values scale "bilinear" "spline64"; cycle-values dscale "bilinear" "mitchell"; cycle-values cscale "bilinear" "sinc"
ctrl+s sub-reload ctrl+s sub-reload
ctrl+S cycle shuffle
S screenshot-to-file /tmp/mpv-screenshot.png ; run sh -c "cat /tmp/mpv-screenshot.png | wl-copy -t image/png"
x add sub-delay -0.04
X add sub-delay +0.04
- add video-zoom -.25
+ add video-zoom .25
kp8 add video-pan-y .05
kp6 add video-pan-x -.05
kp2 add video-pan-y -.05
kp4 add video-pan-x .05
kp5 set video-pan-x 0; set video-pan-y 0; set video-zoom 0

View File

@@ -1,14 +1,36 @@
profile=gpu-hq profile=gpu-hq
gpu-api=vulkan #gpu-api=vulkan
gpu-context=waylandvk gpu-context=wayland
hwdec=none hwdec=none
fullscreen=yes
ao=jack #ao=jack
audio-channels=stereo #audio-channels=stereo
scale=spline64
dscale=mitchell
cscale=sinc
cscale-window=blackman
cscale-radius=3
deband=yes deband=yes
screenshot-format=png
#Interpolation
#blend-subtitles=yes
#video-sync=display-resample
#interpolation=yes
#tscale=box
#tscale-window=sphinx
#tscale-radius=1.0
#tscale-clamp=0.0
sub-gray=yes # pour pas avoir des subs jaunes de merde
sub-gauss=0.7 # ça rend les subs un peu moins carrés, peut-être à adapter à vos envies
sub-font="Roboto Regular"
prefetch-playlist=yes prefetch-playlist=yes
rebase-start-time=no rebase-start-time=no
ytdl-format=bestvideo[height<=?1080]+bestaudio/best ytdl-format=bestvideo[height<=?1080]+bestaudio/best
ytdl-raw-options="rm-cache-dir=:yes-playlist=" #ytdl-raw-options="rm-cache-dir=:yes-playlist="
osd-fractions=yes

View File

@@ -0,0 +1 @@
network=yes

View File

@@ -0,0 +1,2 @@
timeline_size_max_fullscreen=40
top_bar_controls=no

View File

@@ -0,0 +1,34 @@
local utils = require("mp.utils")
local function get_kdata(kid)
local resp = mp.command_native({
name = "subprocess",
args = { "curl", "-s", "https://kara.moe/api/karas/" .. kid },
capture_stdout = true,
})
return utils.parse_json(resp.stdout)
end
local function get_title(kdata)
return kdata.titles[kdata.titles_default_language]
end
local function on_load()
local path = mp.get_property("path")
local kid = path:match("^https://kara.moe/kara/.-([0-9a-z-]+)$")
if kid == nil then
kid = path:match("^https://live.karaokes.moe/%?video=([0-9a-z-]+)$")
end
if kid ~= nil then
local kdata = get_kdata(kid)
local mediafile = "https://kara.moe/downloads/medias/" .. kdata.mediafile
local subfile = "https://kara.moe/downloads/lyrics/" .. kdata.subfile
mp.set_property("stream-open-filename", mediafile)
mp.set_property("replaygain-fallback", kdata.gain)
mp.set_property("title", get_title(kdata))
mp.commandv("sub-add", subfile)
end
end
mp.register_event("start-file", on_load)

4
.config/nvim/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
lua/**
plugin/packer_compiled.lua
**.spl

8
.config/nvim/.luarc.json Normal file
View File

@@ -0,0 +1,8 @@
{
"$schema": "https://raw.githubusercontent.com/sumneko/vscode-lua/master/setting/schema.json",
"Lua.diagnostics.globals": [
"vim",
"use",
"packer_bootstrap"
]
}

View File

@@ -1,59 +0,0 @@
{
"explorer.keyMappings": {
"k": "nodePrev",
"j": "nodeNext",
"*": "toggleSelection",
"<tab>": "actionMenu",
"<Left>": "collapse",
"<Right>": "expand",
"J": ["toggleSelection", "normal:j"],
"K": ["toggleSelection", "normal:k"],
"gl": "expandRecursive",
"gh": "collapseRecursive",
"o": "expandOrCollapse",
"<cr>": "open",
"e": "open",
"E": "openInVsplit",
"t": "openInTab",
"<bs>": "gotoParent",
"y": "copyFilepath",
"Y": "copyFilename",
"c": "copyFile",
"x": "cutFile",
"p": "pasteFile",
"d": "delete",
"D": "deleteForever",
"a": "addFile",
"A": "addDirectory",
"r": "rename",
".": "toggleHidden",
"R": "refresh",
"?": "help",
"q": "quit",
"X": "systemExecute",
"gd": "listDrive",
"f": "search",
"F": "searchRecursive",
"gf": "gotoSource:file",
"gb": "gotoSource:buffer",
"[[": "sourcePrev",
"]]": "sourceNext",
"[d": "diagnosticPrev",
"]d": "diagnosticNext",
"[c": "gitPrev",
"]c": "gitNext",
"<<": "gitStage",
">>": "gitUnstage"
}
}

View File

@@ -0,0 +1,3 @@
(require :plugins)
(require :settings.general)

View File

@@ -0,0 +1,15 @@
(fn setup [module args]
`((. (require ,module) :setup) ,args))
(fn packer [config ...]
"syntactic sugar over packer's startup function."
(local packer `(require :packer))
`((. ,packer :startup)
{1 (lambda [(unquote (sym :use))]
(use :wbthomason/packer.nvim)
(do ,...)
(if (= true _G.packer_bootstrap)
((. ,packer :sync))))
:config ,config}))
{: setup : packer}

View File

@@ -0,0 +1,115 @@
(import-macros {: packer-setup : use!} :hibiscus.packer)
(import-macros {: packer : setup} :macros)
(packer-setup)
(packer
{:display {:open_fn (. (require :packer.util) :float)}}
(use! :lewis6991/impatient.nvim)
(use! :udayvir-singh/tangerine.nvim)
(use! :udayvir-singh/hibiscus.nvim)
(use! "~/.config/nvim/themes/solarized.nvim"
:module :settings.solarized)
(use! :nvim-treesitter/nvim-treesitter
:run (fn [] ((. (require :nvim-treesitter.install) :update) {:with_sync true}))
:module :settings.treesitter)
(use! :feline-nvim/feline.nvim
:requires [:kyazdani42/nvim-web-devicons
"~/.config/nvim/themes/solarized.nvim"]
:after [:solarized.nvim]
:module :settings.feline)
(use! :s1n7ax/nvim-window-picker
:module :settings.window-picker)
(use! :nvim-neo-tree/neo-tree.nvim
:branch "v2.x"
:requires [:nvim-lua/plenary.nvim
:nvim-telescope/telescope.nvim
:kyazdani42/nvim-web-devicons
:MunifTanjim/nui.nvim
:s1n7ax/nvim-window-picker
:edluffy/hologram.nvim]
:after [:nvim-window-picker
:hologram.nvim]
:module :settings.neo-tree)
(use! :mrjones2014/smart-splits.nvim
:module :settings.smart-splits)
(use! :famiu/bufdelete.nvim
:module :bufdelete)
(use! :akinsho/bufferline.nvim
:tag "v2.*"
:requires [:kyazdani42/nvim-web-devicons
:famiu/bufdelete.nvim
"~/.config/nvim/themes/solarized.nvim"]
:after [:bufdelete.nvim
:solarized.nvim]
:module :settings.bufferline)
(use! :windwp/nvim-autopairs
:module :settings.autopairs)
(use! :lewis6991/gitsigns.nvim
:module :settings.gitsigns)
(use! :declancm/cinnamon.nvim
:module :settings.cinnamon)
(use! :stevearc/aerial.nvim
:module :settings.aerial)
(use! :nmac427/guess-indent.nvim
:module :settings.guess-indent)
(use! :nvim-telescope/telescope.nvim
:requires [:nvim-lua/plenary.nvim
:s1n7ax/nvim-window-picker]
:after [:nvim-window-picker]
:module :settings.telescope)
(use! :sindrets/diffview.nvim
:requires [:nvim-lua/plenary.nvim]
:module :settings.diffview)
(use! :neovim/nvim-lspconfig
:requires [:williamboman/mason-lspconfig.nvim
:williamboman/mason.nvim
:hrsh7th/cmp-omni
:hrsh7th/cmp-nvim-lsp
:onsails/lspkind.nvim
:hrsh7th/nvim-cmp
:saadparwaiz1/cmp_luasnip
:rafamadriz/friendly-snippets
:L3MON4D3/LuaSnip]
:module :settings.lspconfig)
(use! :jose-elias-alvarez/null-ls.nvim
:module :settings.null-ls)
(use! :lervag/vimtex
:module :settings.vimtex)
(use! :edluffy/hologram.nvim
:module :settings.hologram)
(use! :lambdalisue/suda.vim)
(use! :folke/noice.nvim
:event :VimEnter
:requires [:MunifTanjim/nui.nvim]
:module :settings.noice)
(use! :glacambre/firenvim
:run (fn [] ((. vim.fn :firenvim#install) 0))
:module :settings.firenvim)
(use! :iamcco/markdown-preview.nvim
:run (fn [] ((. vim.fn :mkdp#util#install)))))

View File

@@ -0,0 +1,18 @@
(import-macros {: map!} :hibiscus.vim)
(import-macros {: setup} :macros)
(if (= vim.g.started_by_firenvim nil)
(setup :aerial
{:backends [:lsp :treesitter]
:layout {:width 30
:placement "edge"}
:attach_mode "global"
:close_automatic_events [:unsupported]
:open_automatic true
:ignore {:filetypes [""
"neo-tree"
"aerial"
"packer"
"qf"
"help"
"DiffviewFileHistory"]}}))

View File

@@ -0,0 +1,3 @@
(import-macros {: setup} :macros)
(setup :nvim-autopairs)

View File

@@ -0,0 +1,20 @@
(import-macros {: map!} :hibiscus.vim)
(import-macros {: setup} :macros)
(local colors (require :solarized.colors))
(if (= vim.g.started_by_firenvim nil)
(setup :bufferline
{:options {:close_command "Bdelete %d"
:right_mouse_command "Bdelete %d"
:offsets [{:filetype "neo-tree" :text "File Explorer" :padding 1}
{:filetype "aerial" :text "Outline" :padding 1}]
:enforce_regular_tabs true
:separator_style "slant"}
:highlights {:separator {:fg colors.bg_alt}
:separator_visible {:fg colors.bg_alt}
:separator_selected {:fg colors.bg_alt}}}))
(map! [n] :<S-Right> ":bnext<CR>")
(map! [n] :<S-Left> ":bprevious<CR>")
(map! [n] :q ":Bwipeout<CR>")

View File

@@ -0,0 +1,3 @@
(import-macros {: setup} :macros)
(setup :cinnamon)

View File

@@ -0,0 +1,10 @@
(import-macros {: map!} :hibiscus.vim)
(import-macros {: setup} :macros)
(setup :diffview
{:keymaps {:view {:q ":tabc<CR>"}
:file_panel {:q ":tabc<CR>"}
:file_history_panel {:q ":tabc<CR>"}}})
(map! [n] :r ":DiffviewOpen<CR>")
(map! [n] :R ":DiffviewFileHistory %<CR>")

View File

@@ -0,0 +1,33 @@
(import-macros {: setup} :macros)
(local colors (require :solarized.colors))
(local theme
{:fg colors.fg
:bg colors.bg_alt
:black colors.black
:skyblue colors.paleblue
:cyan colors.cyan
:green colors.green
:oceanblue colors.blue
:magenta colors.magenta
:orange colors.orange
:red colors.red
:violet colors.purple
:white colors.white
:yellow colors.yellow})
(if (= vim.g.started_by_firenvim nil)
(setup :feline
{:theme theme
:force_inactive {:filetypes ["^neo\\-tree$"
"^aerial$"
"^packer$"
"^startify$"
"^fugitive$"
"^fugitiveblame$"
"^qf$"
"^help$"
"^DiffviewFileHistory"]
:buftypes ["^terminal$"]
:bufnames ["neo\\-.*"]}}))

View File

@@ -0,0 +1,12 @@
(import-macros {: g!} :hibiscus.vim)
(g! :firenvim_config {:globalSettings {:alt "all"}
:localSettings {:.* {:cmdline "neovim"
:content "text"
:priority 0
:selector "textarea"
:takeover "never"}
:https://www.deepl.com/ {:selector "textarea[aria-labelledby=translation-source-heading]"
:takeover "always"}
:https://zimbra.inria.fr/ {:selector "body[id=tinymce]"
:takeover "always"}}})

View File

@@ -0,0 +1,16 @@
(import-macros {: g! : set!} :hibiscus.vim)
(g! :maplocalleader ",")
(set! :clipboard "unnamedplus")
(set! :expandtab true)
(set! :fileencoding "utf-8")
(set! :ignorecase true)
(set! :mouse "a")
(set! :showmode false)
(set! :number true)
(set! :shiftwidth 2)
(set! :signcolumn "yes")
(set! :smartcase true)
(set! :spelllang "en")
(set! :tabstop 2)

View File

@@ -0,0 +1,3 @@
(import-macros {: setup} :macros)
(setup :gitsigns)

View File

@@ -0,0 +1,3 @@
(import-macros {: setup} :macros)
(setup :guess-indent)

View File

@@ -0,0 +1,4 @@
(import-macros {: setup} :macros)
(setup :hologram
{:auto_display false})

View File

@@ -0,0 +1,87 @@
(import-macros {: exec : map!} :hibiscus.vim)
(local M {})
(local files
{:dictionary (.. (vim.fn.stdpath "config") "/spell/en.utf-8.add")
:disabledRules (.. (vim.fn.stdpath "config") "/spell/disable.txt")
:hiddenFalsePositives (.. (vim.fn.stdpath "config") "/spell/false.txt")})
(fn file_exists [file]
(let [f (io.open file "rb")]
(if f
(do (f:close) true)
false)))
(fn lines_from [file]
(if (file_exists file)
(icollect [line (io.lines file)] line)
[]))
(fn get_client_by_name [name]
(let [buf_clients (vim.lsp.buf_get_clients)]
(var found_client nil)
(each [_ client (ipairs buf_clients) :until found_client]
(match client.name name (set found_client client)))
found_client))
(fn update_config [lang configtype]
(let [client (get_client_by_name "ltex")]
(if (and client (. client.config.settings.ltex configtype))
(do (tset client.config.settings.ltex configtype {lang (lines_from (. files configtype))})
(client.notify "workspace/didChangeConfiguration" client.config.settings))
(vim.notify "Error when reading dictionary config, check it"))))
(fn add_to_file [configtype lang file value]
(let [dict (lines_from file)]
(var found_existing false)
(each [_ v (ipairs dict) :until found_existing]
(if (= v value) (set found_existing true)))
(if (not found_existing)
(let [file (io.open file "a+")]
(if file
(do (file:write (.. value "\n"))
(file:close)
(update_config lang configtype))
(vim.notify (string.format "Failed insert %s" value)))))))
(fn do_command [arg configtype]
(each [lang words (pairs arg)]
(each [_ word (ipairs words)]
(add_to_file configtype lang (. files configtype) word))))
(tset vim.lsp.commands "_ltex.addToDictionary"
(fn [command _] (do_command (. command.arguments 1 :words) :dictionary)))
(tset vim.lsp.commands "_ltex.disableRules"
(fn [command _] (do_command (. command.arguments 1 :ruleIds) :disabledRules)))
(tset vim.lsp.commands "_ltex.hideFalsePositives"
(fn [command _] (do_command (. command.arguments 1 :falsePositives) :hiddenFalsePositives)))
(fn post_attach []
(exec [[:setlocal "spell"] [:setlocal "nospell"]])
(update_config "en-US" "dictionary")
(update_config "en-US" "disabledRules")
(update_config "en-US" "hiddenFalsePositives")
(map! [n :buffer :verbose] :zug (fn [] (exec [[:normal! "zug"]])
(update_config "en-US" "dictionary")
nil)
"Remove word from spellfile and update ltex")
(map! [n :buffer :verbose] :zg (fn [] (exec [[:normal! "zg"]])
(update_config "en-US" "dictionary")
nil)
"Add word to spellfile and update ltex")
nil)
(fn M.setup [opts]
((. (require :lspconfig) :ltex :setup)
{:on_attach (fn [client] (opts.on_attach client)
(post_attach)
nil)
:capabilities opts.capabilities
:flags opts.flags
:settings {:ltex {:dictionary []
:disabledRules []
:hiddenFalsePositives []}
:additionalRules {:enablePickyRules true}}}))
M

View File

@@ -0,0 +1,80 @@
(import-macros {: map!} :hibiscus.vim)
(import-macros {: setup} :macros)
(local servers
[:eslint
:gopls
:ltex
:pyright
:sumneko_lua
:tsserver])
; Mappings.
(map! [n :noremap] "<space>e" vim.diagnostic.open_float)
(map! [n :noremap] "[d" vim.diagnostic.goto_prev)
(map! [n :noremap] "]d" vim.diagnostic.goto_next)
(map! [n :noremap] "<space>q" vim.diagnostic.setloclist)
(fn on_attach [_ bufnr]
(map! [n :noremap :buffer] :gD vim.lsp.buf.declaration)
(map! [n :noremap :buffer] :gd vim.lsp.buf.definition)
(map! [n :noremap :buffer] :K vim.lsp.buf.hover)
(map! [n :noremap :buffer] :gi vim.lsp.buf.implementation)
(map! [n :noremap :buffer] :<C-k> vim.lsp.buf.signature_help)
(map! [n :noremap :buffer] :<space>wa vim.lsp.buf.add_workspace_folder)
(map! [n :noremap :buffer] :<space>wr vim.lsp.buf.remove_workspace_folder)
(map! [n :noremap :buffer] :<space>wl (fn [] (print (vim.inspect (vim.lsp.buf.list_workspace_folders)))))
(map! [n :noremap :buffer] :<space>D vim.lsp.buf.type_definition)
(map! [n :noremap :buffer] :<space>rn vim.lsp.buf.rename)
(map! [n :noremap :buffer] :<space>ca vim.lsp.buf.code_action)
(map! [n :noremap :buffer] :gr vim.lsp.buf.references)
(map! [n :noremap :buffer] :<space>f vim.lsp.buf.formatting))
(local capabilities ((. (require :cmp_nvim_lsp) :default_capabilities) (vim.lsp.protocol.make_client_capabilities)))
(setup :mason)
(setup :mason-lspconfig
{:ensure_installed servers})
(each [_ lsp (pairs servers)]
(local lsp_opts
{:on_attach on_attach
:capabilities capabilities
:flags {:debounce_text_changes 150}})
(local (status config) (pcall require (.. "settings.lsp." lsp)))
(if status
(config.setup lsp_opts)
((. (require :lspconfig) lsp :setup) lsp_opts)))
; LuaSnip setup
(local luasnip (require :luasnip))
((. (require :luasnip.loaders.from_vscode) :lazy_load))
; nvim-cmp setup
(local lspkind (require :lspkind))
(local cmp (require :cmp))
(cmp.setup
{:snippet {:expand (fn [args] (luasnip.lsp_expand args.body))}
:mapping (cmp.mapping.preset.insert
{:<C-d> (cmp.mapping.scroll_docs -4)
:<C-f> (cmp.mapping.scroll_docs 4)
:<C-Space> (cmp.mapping.complete)
:<CR> (cmp.mapping.confirm {:behavior cmp.ConfirmBehavior.Replace
:select true})
:<Tab> (cmp.mapping
(fn [fallback] (if (cmp.visible)
(cmp.select_next_item)
(luasnip.expand_or_jumpable)
(luasnip.expand_or_jump)
(fallback)))
[:i :s])
:<S-Tab> (cmp.mapping
(fn [fallback] (if (cmp.visible)
(cmp.select_prev_item)
(luasnip.jumpable -1)
(luasnip.jump -1)
(fallback)))
[:i :s])})
:sources [{:name "luasnip"}
{:name "nvim_lsp"}]
:formatting {:format (lspkind.cmp_format {:mode "symbol_text"})}})

View File

@@ -0,0 +1,78 @@
(import-macros {: g! : exec : map! : augroup!} :hibiscus.vim)
(import-macros {: setup} :macros)
(g! :neo_tree_remove_legacy_commands 1)
(setup :neo-tree
{:close_if_last_window true
:window {:width 30
:mappings {:<cr> "open_with_window_picker"
:S "split_with_window_picker"
:s "vsplit_with_window_picker"}}
:filesystem {:filtered_items {:visible true}
:follow_current_file true
:window {:mappings {:/ "noop"
:g/ "fuzzy_finder"
:f "noop"
:ff (fn [] (exec [[:Telescope "find_files"]]))
:fg (fn [] (exec [[:Telescope "live_grep"]]))
:<CR> "custom_open"
:e "open"
:<S-Right> (fn [])
:<S-Left> (fn [])}}
:commands {:custom_open (fn [state]
(let [node (state.tree:get_node)
path (node:get_id)
quoted_path (.. "'" (.. path "'"))]
(match (path:match "^.+%.(.+)$")
"png" (let [bufnr (vim.api.nvim_create_buf false true)
image (: (require :hologram.image) :new path {})
max_width (- vim.o.columns 4)
max_height (- vim.o.lines 2)
tmp_width (math.min image.cols max_width)
tmp_height (* image.rows (/ tmp_width image.cols))
height (math.min tmp_height max_height)
width (* image.cols (/ height image.rows))
winnr (vim.api.nvim_open_win bufnr true {:relative "editor"
:width (math.ceil width)
:height (+ (math.ceil height) 1)
:row 0
:col 2})]
(exec [[:setlocal "nonumber"]])
(vim.api.nvim_buf_attach bufnr false {:on_detach (fn [_ bufnr]
(image:delete bufnr {:free true}))})
(image:display 1 0 bufnr {}))
_ (do
(exec [[:silent
"!file -bL --mime" quoted_path
"| grep -qv '^text\\|^inode\\|^application/json'"]])
(if (= vim.v.shell_error 1)
((. (require :neo-tree.sources.filesystem.commands) :open_with_window_picker) state)
(exec [[:silent
"!xdg-open" quoted_path
"&"]]))))))}}
:renderers {:directory [[:indent]
[:icon]
[:current_filter]
[:name]
[:clipboard]
{1 :diagnostics :errors_only true}]
:file [[:indent]
[:icon]
{1 :name :use_git_status_colors true :zindex 10}
[:clipboard]
[:bufnr]
[:modified]
[:diagnostics]
[:git_status]]}})
(map! [n] :f ":Neotree focus<CR>")
(map! [n] :F (fn [] (exec [[:Neotree "toggle"] [:Neotree "toggle" "action=show"]])))
(augroup! :neo-tree [[FileType] [qf] "set nobuflisted|call feedkeys(\"F\")"])
; Startup
(if (= vim.g.started_by_firenvim nil)
(if (or (= (vim.fn.expand "%") "") (not= (vim.fn.isdirectory (vim.fn.expand "%")) 0))
((. (require :neo-tree.command) :execute) {:action "focus" :dir (vim.fn.getcwd)})
((. (require :neo-tree.command) :execute) {:action "show" :dir (vim.fn.getcwd)})))

View File

@@ -0,0 +1,3 @@
(import-macros {: setup} :macros)
(setup :noice)

View File

@@ -0,0 +1,4 @@
(import-macros {: setup} :macros)
(setup :null-ls
{:sources [(. (require :null-ls) :builtins :diagnostics :flake8)]})

View File

@@ -0,0 +1,12 @@
(import-macros {: map!} :hibiscus.vim)
(local smart-splits (require :smart-splits))
(map! [n] :<C-Left> smart-splits.move_cursor_left)
(map! [n] :<C-Down> smart-splits.move_cursor_down)
(map! [n] :<C-Up> smart-splits.move_cursor_up)
(map! [n] :<C-Right> smart-splits.move_cursor_right)
(map! [n] :<C-S-Up> smart-splits.resize_up)
(map! [n] :<C-S-Down> smart-splits.resize_down)
(map! [n] :<C-S-Left> smart-splits.resize_left)
(map! [n] :<C-S-Right> smart-splits.resize_right)

View File

@@ -0,0 +1,11 @@
(import-macros {: g!} :hibiscus.vim)
(g! :solarized_italic_comments true)
(g! :solarized_italic_keywords true)
(g! :solarized_italic_functions true)
(g! :solarized_italic_variables false)
(g! :solarized_contrast true)
(g! :solarized_borders false)
(g! :solarized_disable_background false)
((. (require :solarized) :set))

View File

@@ -0,0 +1,19 @@
(import-macros {: setup} :macros)
(local actions (require :telescope.actions))
(setup :telescope
{:defaults {:mappings {:n {:S actions.file_split
:s actions.file_vsplit}}
:get_selection_window (. (require :window-picker) :pick_window)}
:pickers {:find_files {:find_command [:fd "--type" "f"
"--strip-cwd-prefix"
"--hidden"]}
:live_grep {:vimgrep_arguments ["rg"
"--color=never"
"--no-heading"
"--with-filename"
"--line-number"
"--column"
"--smart-case"
"--hidden"]}}})

View File

@@ -0,0 +1,19 @@
(import-macros {: setup} :macros)
(setup :nvim-treesitter.configs
{:ensure_installed
[:c
:fennel
:java
:javascript
:lua
:python
:rust
:typescript]
:sync_install false
:ignore_install []
:highlight {:enable true
:disable []
:additional_vim_regex_highlighting false}})
((. (require :nvim-treesitter.install) :setup_auto_install))

View File

@@ -0,0 +1,4 @@
(import-macros {: g!} :hibiscus.vim)
(g! :vimtex_view_method "zathura")
(g! :vimtex_syntax_enabled 0)

View File

@@ -0,0 +1,7 @@
(import-macros {: setup} :macros)
(setup :window-picker
{:autoselect_one true
:selection_chars "ABCDEFGHIJKLMNOP"
:filter_rules {:bo {:filetype [:NvimTree :neo-tree :notify :aerial]
:buftype [:terminal]}}})

View File

@@ -1,148 +0,0 @@
tnoremap <Esc> <C-\><C-n>
set termguicolors
"set colorcolumn=88
set background=dark
match Error /\%>88c/
highlight Pmenu ctermbg=gray guibg=gray
" if hidden is not set, TextEdit might fail.
set hidden
" Some servers have issues with backup files, see #649
set nobackup
set nowritebackup
" Better display for messages
set cmdheight=2
" You will have bad experience for diagnostic messages when it's default 4000.
set updatetime=300
" don't give |ins-completion-menu| messages.
set shortmess+=c
" always show signcolumns
set signcolumn=yes
" Use tab for trigger completion with characters ahead and navigate.
" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin.
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Use <c-space> to trigger completion.
inoremap <silent><expr> <c-space> coc#refresh()
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position.
" Coc only does snippet and additional edit on confirm.
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
" Or use `complete_info` if your vim support it, like:
" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>"
" Use `[g` and `]g` to navigate diagnostics
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
" Remap keys for gotos
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Use K to show documentation in preview window
nnoremap <silent> K :call <SID>show_documentation()<CR>
function! s:show_documentation()
if (index(['vim','help'], &filetype) >= 0)
execute 'h '.expand('<cword>')
else
call CocAction('doHover')
endif
endfunction
" Highlight symbol under cursor on CursorHold
autocmd CursorHold * silent call CocActionAsync('highlight')
" Remap for rename current word
nmap <leader>rn <Plug>(coc-rename)
augroup mygroup
autocmd!
" Setup formatexpr specified filetype(s).
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
" Update signature help on jump placeholder
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
augroup end
" Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
" Remap for do codeAction of current line
nmap <leader>ac <Plug>(coc-codeaction)
" Fix autofix problem of current line
nmap <leader>qf <Plug>(coc-fix-current)
" Create mappings for function text object, requires document symbols feature of
" languageserver.
xmap if <Plug>(coc-funcobj-i)
xmap af <Plug>(coc-funcobj-a)
omap if <Plug>(coc-funcobj-i)
omap af <Plug>(coc-funcobj-a)
" Use <TAB> for select selections ranges, needs server support, like: coc-tsserver,
" coc-python
nmap <silent> <TAB> <Plug>(coc-range-select)
xmap <silent> <TAB> <Plug>(coc-range-select)
" Use `:Format` to format current buffer
command! -nargs=0 Format :call CocAction('format')
" Use `:Fold` to fold current buffer
command! -nargs=? Fold :call CocAction('fold', <f-args>)
" use `:OR` for organize import of current buffer
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport')
" Add status line support, for integration with other plugin, checkout `:h coc-status`
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}
" Using CocList
" Show all diagnostics
nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr>
" Manage extensions
nnoremap <silent> <space>e :<C-u>CocList extensions<cr>
" Show commands
nnoremap <silent> <space>c :<C-u>CocList commands<cr>
" Find symbol of current document
nnoremap <silent> <space>o :<C-u>CocList outline<cr>
" Search workspace symbols
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr>
" Do default action for next item.
nnoremap <silent> <space>j :<C-u>CocNext<CR>
" Do default action for previous item.
nnoremap <silent> <space>k :<C-u>CocPrev<CR>
" Resume latest coc list
nnoremap <silent> <space>p :<C-u>CocListResume<CR>
" coc-explorer
nmap <leader>e :CocCommand explorer<CR>
call plug#begin()
Plug 'rbgrouleff/bclose.vim'
Plug 'francoiscabrol/ranger.vim'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'lervag/vimtex'
Plug 'iCyMind/NeoSolarized'
call plug#end()
colorscheme NeoSolarized

View File

@@ -0,0 +1,36 @@
local install_path = vim.fn.stdpath('data')..'/site/pack/packer/start/'
local function bootstrap(repo)
local url = 'https://github.com/' .. repo
local name = repo:gsub('.*/', '')
local path = install_path .. name
local bootstrapped = false
if vim.fn.empty(vim.fn.glob(path)) > 0 then
vim.fn.system({'git', 'clone', '--depth', '1', url, path})
vim.cmd('packadd ' .. name)
bootstrapped = true
end
return bootstrapped
end
bootstrap('lewis6991/impatient.nvim')
require('impatient')
local tangerine_bootstrapped = bootstrap('udayvir-singh/tangerine.nvim')
bootstrap('udayvir-singh/hibiscus.nvim')
if tangerine_bootstrapped then
require('tangerine').setup({
compiler = {
hooks = {'oninit'}
}
})
require('init')
else
require('tangerine').setup({})
local diagnostics = require('tangerine.vim.hooks').run()
require('init')
if #diagnostics > 0 then
require('packer').sync()
end
end

1
.config/nvim/spell/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
false.txt

View File

@@ -0,0 +1 @@
PASSIVE_VOICE

View File

@@ -0,0 +1,23 @@
Read-Eval-Print-Loop
Flexowriter
Teitelman
Interlisp
JOHNNIAC
REPLs
Mathematica
GPLs
Plasil
Monto
Keidel
Meinte
Asf
Sdf
ToolBus
projectional
QL
DSLs
Coulon
JADEL
microservicization
ISEC
Jeanjean

View File

@@ -340,7 +340,7 @@ map i display_file
map ? help map ? help
map W display_log map W display_log
map w taskview_open map w taskview_open
map S shell $SHELL map S shell zsh
map : console map : console
map ; console map ; console
@@ -446,6 +446,7 @@ map yp yank path
map yd yank dir map yd yank dir
map yn yank name map yn yank name
map y. yank name_without_extension map y. yank name_without_extension
map <C-d> shell dragon-drop -a -x %p
# Filesystem Operations # Filesystem Operations
map = chmod map = chmod

View File

@@ -1,3 +1,7 @@
configuration {
modi: "run,mugen:~/.config/rofi/modi/mugen";
}
* { * {
active-background: #20ABE0; active-background: #20ABE0;
active-foreground: @foreground; active-foreground: @foreground;
@@ -22,7 +26,7 @@
background: #00000000; background: #00000000;
background-color: @background; background-color: @background;
background-opaque: #002b36cc; background-opaque: #002b36ff;
foreground: #93a1a1; foreground: #93a1a1;
border-color: @foreground; border-color: @foreground;
spacing: 2; spacing: 2;
@@ -159,3 +163,6 @@ textbox-prompt-colon {
text-color: @normal-foreground; text-color: @normal-foreground;
} }
element-text {
text-color: inherit;
}

27
.config/rofi/modi/mugen Executable file
View File

@@ -0,0 +1,27 @@
#!/bin/sh
mugen_host=${MUGEN_HOST:-https://kara.moe}
kara_api="${MUGEN_KARA_API:-$mugen_host/api/karas}"
karamedia="${MUGEN_KARAOKEMEDIA:-$mugen_host/downloads}"
# karaoke medias and lyrics directories
medias="$karamedia/medias"
lyrics="$karamedia/lyrics"
kid=$ROFI_INFO
if [ -z "$@" ]; then
/usr/bin/printf "\0prompt\x1fkaraoke search\n"
exit 0
else
if [ -z "$kid" ]; then
/usr/bin/printf "\0prompt\x1fmugen\n"
query="$(echo "$@" | tr " " "+")"
curl "https://kara.moe/api/karas/search?collections=dbcf2c22-524d-4708-99bb-601703633927,c7db86a0-ff64-4044-9be4-66dd1ef1d1c1,2fa2fe3f-bb56-45ee-aa38-eae60e76f224,efe171c0-e8a1-4d03-98c0-60ecf741ad52&filter=$query&size=100" | jq -r '.content | .[] | "\(.mediafile)\u0000info\u001f\(.kid)"'
fi
fi
# choose karaoke
[ -z "$kid" ] && exit
mpv "https://kara.moe/kara/$kid" > /dev/null 2>&1 &
exec 1>&-

164
.config/rofi/topleft.rasi Normal file
View File

@@ -0,0 +1,164 @@
* {
active-background: #20ABE0;
active-foreground: @foreground;
normal-background: @background;
normal-foreground: @foreground;
urgent-background: #288AB2;
urgent-foreground: @foreground;
alternate-active-background: @background;
alternate-active-foreground: @foreground;
alternate-normal-background: @background;
alternate-normal-foreground: @foreground;
alternate-urgent-background: @background;
alternate-urgent-foreground: @foreground;
selected-active-background: #288AB2;
selected-active-foreground: @foreground;
selected-normal-background: #859900cc;
selected-normal-foreground: #002b36;
selected-urgent-background: #4BB0CF;
selected-urgent-foreground: @foreground;
background: #00000000;
background-color: @background;
background-opaque: #002b36ff;
foreground: #93a1a1;
border-color: @foreground;
spacing: 2;
}
#window {
background-color: @background-opaque;
border: 0px;
padding: 0ch 0.5ch 0ch 0.5ch;
}
#mainbox {
border: 0;
padding: 0;
}
#message {
border: 2px 0px 0px;
border-color: @border-color;
padding: 1px;
}
#textbox {
text-color: @foreground;
}
inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em;
text-color: @normal-foreground;
}
#listview {
fixed-height: 0;
border: 1px 0px 0px;
border-color: @border-color;
spacing: 3px;
scrollbar: true;
padding: 9px 0px 0px;
}
#element {
border: 0;
padding: 3px 3px 3px;
}
#element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
#element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
border: 0px;
border-color: @foreground;
}
#element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
#element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
#element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
#element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
#element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
#scrollbar {
width: 4px;
border: 0;
handle-width: 8px;
padding: 0;
}
#sidebar {
border: 2px 0px 0px;
border-color: @border-color;
}
#button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
#inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px;
}
#case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
#entry {
spacing: 0;
text-color: @normal-foreground;
}
#prompt {
spacing: 0;
text-color: @normal-foreground;
}
element-text {
text-color: inherit;
}

View File

@@ -1,2 +0,0 @@
Backup/**
Extracted/**

View File

@@ -1,37 +0,0 @@
# Solarized Dark official palette
# Base03 #002b36
# Base02 #073642
# Base01 #586e75
# Base00 #657b83
# Base0 #839496
# Base1 #93a1a1
# Base2 #eee8d5
# Base3 #fdf6e3
# Yellow #b58900
# Orange #cb4b16
# Red #dc322f
# Magenta #d33682
# Violet #6c71c4
# Blue #268bd2
# Cyan #2aa198
# Green #859900
[Base]
main_fg = 859900
secondary_fg = 93a1a1
main_bg = 002b36
sidebar_and_player_bg = 002b36
cover_overlay_and_shadow = 000000
indicator_fg_and_button_bg = 859900
pressing_fg = 002b36
slider_bg = 073642
sidebar_indicator = 859900
hover_button_bg = 859900
scrollbar_fg_and_selected_row_bg = 073642
sidebar_indicator_and_hover_button_bg = 859900
pressing_button_fg = 002b36
pressing_button_bg = 859900
selected_button = 859900
miscellaneous_bg = 859900
miscellaneous_hover_bg = 859900
preserve_1 = FFFFFF

View File

@@ -1,657 +0,0 @@
:root {
--bar-height: 60px;
--modspotify_sidebar_indicator: #839496;
--modspotify_hover_button_bg: #b58900;
}
* {
font-family: "DejaVu Sans Mono", "Helvetica Neue", "Arial", sans-serif !important;
font-weight: 400;
}
/*Round corner cover image*/
.card-image,
.card-placeholder-wrapper,
.card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image,
.Card:not(.Card--artist) .Card__image-wrapper {
border-radius: 0px !important;
overflow: hidden !important
}
/*Hide some annoying elements like profile name and pic, upgrade button and device connect bar at bottom, new playlist button*/
.upgrade-button,
.view-player .remote-playback-bar,
.NewPlaylistButton {
display: none !important;
}
/*Exclude these elements from draggable property because it stops them from clickable*/
.profile-items-container,
.profile {
-webkit-app-region: no-drag !important;
}
/*Thinner scrollbar*/
::-webkit-scrollbar {
height: 6px !important;
width: 6px !important;
background-color: transparent;
}
/*Round corner scrollbar*/
::-webkit-scrollbar-thumb {
border-radius: 0px !important;
}
/*Hide top and bottom buttons of scrollbar */
/*who uses those, lol*/
::-webkit-scrollbar-button {
display: none !important;
}
/*Hide cover image overlay*/
.card-overlay {
visibility: hidden !important;
}
/*Lift up cover when hovering on it*/
.card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image-wrapper {
transition-property: transform, box-shadow !important;
transition-duration: 1s !important;
transition-timing-function: cubic-bezier(.3,0,0,1) !important;
box-shadow: 0 5px 20px rgba(0,0,0,0.1);
}
.card-image-hit-area:not(.no-hover):hover .card-image-content-wrapper,
.Card:not(.Card--artist) .Card__image-hit-area-counter-scale:hover .Card__image-wrapper {
transform: translateY(-10px);
box-shadow: 0 15px 30px rgba(0,0,0,0.3);
}
.card-image-hit-area .card-button-add,
.card-image-hit-area .card-button-play,
.card-image-hit-area .card-button-more,
.Card__image-hit-area .card-button-add,
.Card__image-hit-area .card-button-play,
.Card__image-hit-area .card-button-more,
.Card__image-hit-area .Card__play-button,
.Card__image-hit-area .Card__add-button,
.Card__image-hit-area .Card__more-button,
.Card__image-hit-area .Card__overlay {
transition-property: all !important;
transition-duration: 1s !important;
transition-timing-function: cubic-bezier(.3,0,0,1) !important;
opacity: 0 !important;
}
.card-image-hit-area:not(.no-hover):hover .card-button-add,
.card-image-hit-area:not(.no-hover):hover .card-button-play,
.card-image-hit-area:not(.no-hover):hover .card-button-more,
.Card__image-hit-area:not(.no-hover):hover .card-button-add,
.Card__image-hit-area:not(.no-hover):hover .card-button-play,
.Card__image-hit-area:not(.no-hover):hover .card-button-more {
opacity: 1 !important;
transform: translateY(-10px);
}
.Card__image-hit-area:hover .Card__play-button,
.Card__image-hit-area:hover .Card__add-button,
.Card__image-hit-area:hover .Card__more-button,
.Card__image-hit-area:hover .Card__overlay {
opacity: 1 !important;
}
.glue-page-header__content .glue-page-header__image-inner {
border-radius: 0px;
box-shadow: unset !important;
}
.glue-page-header__full-description-overlay {
box-shadow: unset !important;
}
.card-placeholder-wrapper {
background: transparent !important;
}
/*Spice up search input background*/
.SearchInput {
color: var(--modspotify_main_fg);
}
.SearchInput__input {
color: var(--modspotify_secondary_fg);
background-color: rgba(var(--modspotify_rgb_scrollbar_fg_and_selected_row_bg), 0.5) !important;
border-radius: 0px !important;
padding-left: 34px;
}
.sidebar:hover .sidebar-navbar.sidebar-scroll-element {
opacity: 1!important;
}
.view-player .player-controls-container,
.view-player .player-controls-container .controls {
overflow: visible !important;
}
.view-player .player-controls-container .controls .button-play{
height:50px !important;
border-radius:50px !important;
background: transparent !important;
box-shadow:0 0 0 0 !important;
width:50px !important;
overflow: visible !important;
box-shadow: 0 4px 15px rgba(0,0,0,0.2) !important;
transition:none 0.3s cubic-bezier(.3,0,.7,1);
}
.view-player .player-controls-container .controls .button-play:before{
font-size:18px !important;
padding-left: 16px !important;
padding-top: 9px !important;
}
.view-player .player-controls-container .controls .button-play:after {
box-shadow: unset !important;
}
.view-player .player-controls-container {
position: absolute !important;
width: 100% !important;
}
.view-player .player-controls-container .controls {
width: 100% !important;
height: 100% !important;
align-items: center !important;
margin-top : 0px !important;
}
/*
Hide the song duration and elapsed text. I dont know where to put those so I just hide them
*/
.view-player .player-controls-container .progress-container .elapsed,
.view-player .player-controls-container .progress-container .remaining {
display: none !important;
}
/* Add round corner for Gerne and Mood cards */
.gc-image-container,
.gc-image {
border-radius: 0px !important;
}
/*
Collage of 3 album covers is usually seen in Browse and Chart.
*/
.card-puff__image-wrapper,
.card-puff__info-container,
.card-puff__card-image {
border-radius: 0px !important;
}
.card-puff__image-wrapper {
overflow: visible;
}
.card-puff__card-image {
box-shadow: 5px 0 30px rgba(0,0,0,0.7);
overflow: visible;
}
.card-puff__title-container {
background-color: transparent !important;
}
.card-puff.pressed .card-puff__image-wrapper,
.card-puff.pressed .card-puff__info-container {
opacity: 0.7 !important;
}
.card-puff__title {
padding: 5px 10px 5px 10px !important;
background-color: var(--modspotify_main_bg) !important;
border-radius: 0px;
border: 2px solid var(--modspotify_main_fg);
}
/*
We use round corner on cover so they look weird in original
form, so I move last cover to the right 20px and first one to the left 20px
*/
.card-puff__card-image:nth-child(1) {
right: 20px;
box-shadow: 0 0 0 0 !important;
}
.card-puff__card-image:nth-child(3) {
left: 20px;
}
.grid-overlay-label {
top: 140px !important;
}
/**/
.glue-page-header__background-color {
background-image: none !important;
background: var(--modspotify_main_bg);
}
/* .glue-page-header__sticky {
padding-top: 60px !important;
} */
/*
Remove those title, cringy description and
meaningless followers number
*/
.carousel .card-info-subtitle-description,
.carousel .card-info-subtitle-metadata,
.carousel .card:not(.card-type-station).card-info-title,
.carousel .card.card-type-playlist.image-loaded .card-info-subtitle-description,
.carousel .card.card-type-playlist.image-loaded .card-info-subtitle-metadata {
display: none !important;
}
/*
In top of Browse usually has bunch of Playlist or Album cards,
and they has .carousel as a wrapper and it hides anything that
overflows from its zone, aka our shadow and lifting animation.
*/
.carousel {
overflow: visible !important;
}
/*
Button with text Play
*/
.button.button-green,
.GlueButton.GlueButton--style-green {
color: var(--modspotify_main_bg) !important;
}
/*
Change text color in playlist
*/
.tl-explicit .label,
.tl-premium .label,
.tl-cell:not(.tl-number),
.tl-cell a:link,
.tl-highlight {
color: var(--modspotify_secondary_fg);
}
.card-type-album .card-info-title,
.card-type-track .card-info-title,
.card-type-collection-album .card-info-title,
.card-type-episode .card-info-title {
font-size: 15px;
font-weight: 600 !important;
text-align: center !important;
width: 100% !important;
}
.card-type-album .card-info-subtitle-links,
.card-type-track .card-info-subtitle-links,
.card-type-collection-album .card-info-subtitle-links,
.card-type-episode .card-info-subtitle-links {
text-align: center !important;
width: 100% !important;
}
.tracklist-station-container::after {
background: transparent !important;
}
.GlueHeader__background-overlay {
background: var(--modspotify_main_bg) !important;
}
/* Move navigation buttons and search field to the right and down */
.browser-navigation-top-bar {
margin-left: 40px !important;
margin-top: 15px !important;
}
.SearchInput__input,
.SearchInput__searchIcon,
.SearchInput__clearButton {
margin-top: 15px !important;
}
.content-top-bar__profile-menu-button {
margin-top: 15px !important;
}
.body-container--windows:not(.with-buddy-list):not(.messagebar) .content-top-bar__profile {
margin-right: 110px !important;
margin-top: -5px;
}
/* Spice up Fullscreen mode */
#view-player .album-art .album-art__image {
border-radius: 0px !important;
box-shadow: 0 10px 70px rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.5) !important;
}
#view-player .album-art .album-art__image .card-image-content-wrapper,
#view-player .album-art .album-art__image .card-image-content-wrapper .card-image {
border-radius: 0px !important;
}
/* Daily mixes */
.carousel .card-info-wrapper.card-info-with-description.card-info-with-metadata {
height: 50px !important;
}
/* Remove section divider */
.section-divider {
border-bottom: 0 !important;
}
/* Adjust Position of border active tab in Nav bar at top
and add little glowing effect
*/
.nav.navbar-nav {
overflow: hidden !important;
}
.nav.navbar-nav a {
overflow: visible !important;
}
.nav.navbar-nav a::after {
bottom: 0px !important;
width: 100% !important;
}
.nav.navbar-nav .active a::after{
box-shadow: 0 0px 20px !important;
}
.nav.navbar-nav a:focus:not(.button):active::after{
background-color: var(--modspotify_pressing_fg) !important;
}
/* Notification bar */
#content-wrapper #view-message-bar {
position: absolute !important;
width: calc(100% - 160px) !important;
margin-left: 80px !important;
border-radius: 0 0 0px 0px !important;
}
/* Small cover Big cover mechanism */
.now-playing.cover-size-transition.active.image-expanded .cover-image {
width: 10px !important;
height: 10px !important;
}
.now-playing.cover-size-transition.active.image-expanded .caption {
padding-left: 0px !important;
}
#view-now-playing a.image {
overflow: visible !important;
}
#view-now-playing.expanded {
width: 200px;
height: 200px;
}
#now-playing-image-large .cover-image {
height: 200px !important;
}
/* Profile arrow in top left */
.content-top-bar__profile-menu-button .dropdown {
position: fixed !important;
top: 10px !important;
-webkit-app-region: no-drag !important;
}
body.body-container--windows .content-top-bar__profile-menu-button .dropdown {
right: 190px !important;
}
body:not(.body-container--windows) .content-top-bar__profile-menu-button .dropdown {
right: 20px !important;
}
/* Small tooltip */
#tooltip {
box-shadow: 0 0 10px rgba(0,0,0,0.2) !important;
border-radius: 0px !important;
border: 2px solid var(--modspotify_main_fg);
padding: 10px 10px;
}
.tooltip-arrow-top, .tooltip-arrow-bottom {
display: none !important;
}
.lyrics-lines-container,
.message-container {
color: #FFFFFF !important;
}
/* Home page */
.GlueCarousel__grid-wrapper::-webkit-scrollbar-thumb {
display: none;
}
.GlueCard__info-wrapper,
.Card__info-wrapper {
margin-bottom: 30px;
}
.card-horizontal-interior-wrapper .card-info-title {
text-align: start !important;
}
.tl-row.selected:hover .tl-cell {
background: var(--modspotify_scrollbar_fg_and_selected_row_bg) !important;
}
.GlueTableRow--is-selected {
background-color: var(--modspotify_scrollbar_fg_and_selected_row_bg) !important;
}
.tracklist-podcast .tl-progress .row-progress__bar {
background-color: var(--modspotify_main_fg);
}
.Header__background-color{
background-color: var(--modspotify_main_bg) !important;
}
.Button--style-green,
.button.button-green, .button.button-white {
border-radius: 25px;
color: var(--modspotify_main_bg) !important;
}
.glue-page-header:not(.glue-page-header--album):not(.glue-page-header--playlist):not(.glue-page-header--artist):not(.glue-page-header--dailymix):not(.glue-page-header--user):not(.glue-page-header--show)
.glue-page-header__content-inner .glue-page-header__title-text,
.HomeHeader .Header__content-inner .Header__title-text-inner,
.MadeForYouHeader .Header__content-inner .Header__title-text-inner,
.RecentlyPlayedPage__header .Header__content-inner .Header__title-text-inner {
background-color: var(--modspotify_main_bg);
padding: 5px 20px;
border: 5px solid var(--modspotify_main_fg) !important;
border-radius: 0px;
box-shadow: 0 4px 12px 0 rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.2);
text-transform: uppercase;
}
.glue-page-header.glue-page-header--album .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--artist .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--dailymix .glue-page-header__content-inner .glue-page-header__title,
.glue-page-header.glue-page-header--playlist .glue-page-header__content-inner .glue-page-header__title {
margin-top: 10px;
}
span.glue-page-header__title-text {
color: var(--modspotify_main_fg);
}
.glue-page-header .glue-page-header__content-inner .glue-page-header__button {
margin-top: 40px;
}
.glue-page-header__content-inner,
.glue-page-header__data,
.glue-page-header__title,
.Header__content-inner,
.Header__data,
.Header__title,
.Header__title-text,
.Header__title-text-inner {
overflow: visible !important;
}
/*Force player bar to has fixed height*/
.view-player {
height: var(--bar-height) !important;
border-top: 0;
}
.view-player .now-playing {
overflow: unset;
}
.view-player .now-playing .cover-image-link,
.view-player .now-playing .cover-image-link figure {
width: var(--bar-height);
height: var(--bar-height);
}
#now-playing-image-small .cover-image {
position: fixed !important;
width: var(--bar-height);
height: var(--bar-height);
left: 0;
bottom: 0;
}
.view-player .now-playing .cover-image-link-wrapper {
flex: 0 1 calc(var(--bar-height) + 10px);
}
.text-container {
z-index: 3;
}
.view-player .now-playing-container .button-add {
color: var(--modspotify_main_fg) !important;
}
.progress-container .progress-bar,
.progress-container .inner {
top: 0 !important;
margin-top: 0 !important;
height: 5px;
}
.progress-container .progress-bar-wrapper {
top: 0 !important;
height: 5px;
}
.progress-container {
position: fixed !important;
width: 100% !important;
bottom: var(--bar-height) !important;
margin : 0 !important;
}
.progress-container .inner {
border-radius: 0 0px 0px 0 !important;
background-color: var(--modspotify_main_fg) !important;
box-shadow: 0 0px 0px 0 var(--modspotify_main_fg);
}
.glue-page-header__p2s-details,
.glue-page-header__p2s-followers {
display: none;
}
.context-menu {
border: 2px solid var(--modspotify_main_fg);
box-shadow: 0 4px 12px 0 rgba(var(--modspotify_rgb_cover_overlay_and_shadow),.2);
border-radius: 0px !important;
overflow: hidden;
}
#menu-wrapper ::-webkit-scrollbar {
display: none;
}
#menu-wrapper {
border-right: 3px solid black;
border-image: linear-gradient(0deg, transparent , var(--modspotify_scrollbar_fg_and_selected_row_bg) 40%, var(--modspotify_scrollbar_fg_and_selected_row_bg) 60%, transparent 90%) 2 90%;
}
.main-view-wrapper {
overflow: unset;
}
.Button--style-icon-stroke:after,
.Button--style-icon-stroke:hover:after,
.Button--style-icon-stroke,
.glue-page-header__button .button-icon-with-stroke,
.glue-page-header__button .button-icon-with-stroke::after {
box-shadow: unset;
}
.glue-page-header.glue-page-header--artist .glue-page-header__label {
padding-top: 10px;
}
.glue-page-header.glue-page-header--artist.has-custom-image .glue-page-header__label {
padding-top: 8px;
}
.glue-page-header__content .glue-page-header__label {
margin-left: -2px;
z-index: 2;
}
.glue-page-header__label span,
.Header__label span {
background-color: var(--modspotify_main_fg);
color: var(--modspotify_main_bg);
padding: 2px 10px;
}
.glue-page-header__label .header-verified-check {
background-color: transparent;
}
body.remotebar .view-player .player-bar-wrapper {
height: 100%;
}
.SidebarListItem--is-active:after,
.RootlistItem--is-active:after,
/* For Linux */ #view-navigation-bar .item.active:after {
background-color: transparent;
background-image: linear-gradient(90deg, var(--modspotify_sidebar_indicator) , transparent);
opacity: 0.2;
bottom: unset;
top: 5%;
height: 90%;
width: 100%
}
.Header__image-inner {
box-shadow: unset;
}
.button.button-green.contextmenu-active, .button.button-green:not(:disabled):hover {
background-color: var(--modspotify_hover_button_bg);
}

View File

@@ -1,36 +0,0 @@
[Setting]
spotify_path = /opt/spotify
prefs_path = /home/rhiobet/.config/spotify/prefs
current_theme = SolarizedDarkGreen
color_scheme =
inject_css = 1
replace_colors = 1
overwrite_assets = 0
[Preprocesses]
remove_rtl_rule = 1
expose_apis = 1
disable_sentry = 1
disable_ui_logging = 1
[AdditionalOptions]
home = 0
lyric_always_show = 0
lyric_force_no_sync = 0
tastebuds = 0
fastUser_switching = 0
made_for_you_hub = 0
new_feedback_ui = 0
radio = 0
song_page = 0
extensions =
minimal_ui = 0
experimental_features = 0
search_in_sidebar = 0
visualization_high_framerate = 0
custom_apps =
; DO NOT CHANGE!
[Backup]
version = 1.1.10.546.ge08ef575

View File

@@ -1,3 +0,0 @@
body {
--glue-font-family: Karla;
}

View File

@@ -21,8 +21,11 @@ set $term kitty
# set $menu dmenu_path | dmenu | xargs swaymsg exec -- # set $menu dmenu_path | dmenu | xargs swaymsg exec --
set $menu rofi -no-levenshtein-sort -color-enabled -show run\ set $menu rofi -no-levenshtein-sort -color-enabled -show run\
-run-command "zsh -i -c '{cmd}'" | xargs swaymsg exec -- -run-command "zsh -i -c '{cmd}'" | xargs swaymsg exec --
set $srclocker swaylock -c 222222 -u -i eDP-1:~/wallpapers/radiance.png\ set $srclocker swaylock -c 222222 -i eDP-1:~/wallpapers/radiance.png\
-i DP-5:~/wallpapers/hornet.jpg -i DP-4:~/wallpapers/knight.jpg -i DP-5:~/wallpapers/hornet.jpg -i DP-4:~/wallpapers/knight.jpg\
-i DP-7:~/wallpapers/hornet.jpg -i DP-6:~/wallpapers/knight.jpg\
-i DP-9:~/wallpapers/hornet.jpg -i DP-8:~/wallpapers/knight.jpg\
-i HDMI-A-1:~/wallpapers/radiance.png
### Output configuration ### Output configuration
# #
@@ -32,7 +35,10 @@ output eDP-1 pos 0 1480 res 1920 1080
output HDMI-A-1 pos 1920 1480 res 1920 1080 output HDMI-A-1 pos 1920 1480 res 1920 1080
output "Samsung Electric Company SyncMaster H1AK500000" res 3840 2160 output "Samsung Electric Company SyncMaster H1AK500000" res 3840 2160
output "Dell Inc. DELL U2410 F525M0A1082L" pos 1920 680 res 1920 1200 output "Dell Inc. DELL U2410 F525M0A1082L" pos 1920 680 res 1920 1200
output "Dell Inc. DELL U2717D JXRPT83GAHKS" pos 3840 0 mode --custom 2560x1440@39Hz transform 90 #output "Dell Inc. DELL U2717D JXRPT83GAHKS" pos 3840 0 mode --custom 2560x1440@39Hz transform 90
output "Dell Inc. DELL U2717D JXRPT83GAHKS" pos 1920 1480 mode 2560 1440
output "Hewlett Packard HP LA2405x CN43480QK5" pos 3840 320 mode 1920 1200 transform 270
output "Dell Inc. DELL U2410 F525M98C17AL" pos 0 680 mode 1920 1200
output * bg ~/wallpapers/filianore-u.jpg fill output * bg ~/wallpapers/filianore-u.jpg fill
focus output eDP-1 focus output eDP-1
# #
@@ -43,7 +49,14 @@ focus output eDP-1
# You can get the names of your outputs by running: swaymsg -t get_outputs # You can get the names of your outputs by running: swaymsg -t get_outputs
# Mouse cursor # Mouse cursor
seat seat0 xcursor_theme capitaine-cursors 32 set $my_cursor capitaine-cursors
set $my_cursor_size 32
seat seat0 xcursor_theme $my_cursor $my_cursor_size
exec_always {
gsettings set org.gnome.desktop.interface cursor-theme $my_cursor
gsettings set org.gnome.desktop.interface cursor-size $my_cursor_size
}
### Idle configuration ### Idle configuration
# #
@@ -97,10 +110,10 @@ input "9653:84:Samsung_electronics_inc._Samsung_HID_Multi-Touch"\
bindsym $mod+Shift+q kill bindsym $mod+Shift+q kill
# Sound # Sound
bindsym XF86AudioRaiseVolume exec amixer -c 0 sset Master 5%+ bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec amixer -c 0 sset Master 5%- bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec 'amixer -c 0 sset Master toggle && amixer -c 0 sset Speaker on && amixer -c 0 sset Headphone on' bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec amixer -c 0 sset Capture toggle bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
# Brightness # Brightness
bindsym XF86MonBrightnessUp exec xbacklight -inc 5 bindsym XF86MonBrightnessUp exec xbacklight -inc 5
@@ -125,9 +138,9 @@ input "9653:84:Samsung_electronics_inc._Samsung_HID_Multi-Touch"\
'swaymsg exit' 'swaymsg exit'
# Screenshot # Screenshot
bindsym Print exec grim\ bindsym Print exec grim -g "$(slurp -d)" - | wl-copy -t image/png
-o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') -\ bindsym Ctrl+Print exec swaymsg -t get_tree | jq -r 'recurse(.nodes[], .floating_nodes[]) | select(.focused and .pid).rect | "\(.x),\(.y) \(.width)x\(.height)"' | grim -g - - | wl-copy -t image/png
| wl-copy -t image/png bindsym Shift+Print exec grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') - | wl-copy -t image/png
# #
# Moving around: # Moving around:
# #
@@ -197,6 +210,9 @@ input "9653:84:Samsung_electronics_inc._Samsung_HID_Multi-Touch"\
# Make the current focus fullscreen # Make the current focus fullscreen
bindsym $mod+f fullscreen bindsym $mod+f fullscreen
# Maximize current focus
bindsym $mod+m exec swaymsg floating true && swaymsg resize set $(swaymsg -t get_workspaces | jq -r '.[] | select(.focused) | .rect | "\(.width)px \(.height)px"')
# Toggle the current focus between tiling and floating mode # Toggle the current focus between tiling and floating mode
bindsym $mod+Shift+space floating toggle bindsym $mod+Shift+space floating toggle
@@ -251,57 +267,66 @@ bindsym Ctrl+Alt+l exec $srclocker
bar { bar {
position top position top
pango_markup enabled pango_markup enabled
font pango:DejaVu Sans Mono, FontAwesome 10 font pango:DejaVu Sans Mono, devicons, FontAwesome 10
# When the status_command prints a new line to stdout, swaybar updates. # When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time. # The default just shows the current date and time.
#status_command while ~/.config/sway/status.sh; do sleep 1; done #status_command while ~/.config/sway/status.sh; do sleep 1; done
status_command i3status-rs ~/.config/sway/status.toml # status_command i3status-rs ~/.config/sway/status.toml
swaybar_command waybar
status_padding 0 status_padding 0
height 22
colors { colors {
statusline #ffffff statusline #ffffff
background #002b36cc background #002b36ff
inactive_workspace #002b36cc #002b36cc #93a1a1 inactive_workspace #002b36ff #002b36ff #93a1a1
active_workspace #859900cc #859900cc #002b36 active_workspace #859900ff #859900ff #002b36
focused_workspace #859900cc #859900cc #002b36 focused_workspace #859900ff #859900ff #002b36
} }
} }
bindswitch --locked --reload lid:on output eDP-1 disable
bindswitch --locked --reload lid:off output eDP-1 enable
bindsym Ctrl+m exec mpv "$(wl-paste -t text)"
hide_edge_borders both hide_edge_borders both
default_border none default_border none
gaps inner 6 gaps inner 6
#smart_gaps on
client.focused #859900ff #859900ff #002b36
client.focused_inactive #859900ff #859900ff #002b36
client.unfocused #002b36ff #002b36ff #93a1a1
titlebar_padding 5 1
include /etc/sway/config.d/* include /etc/sway/config.d/*
# Assignments # Assignments
assign [class="discord"] workspace 3 assign [class="discord"] workspace 3
assign [class="Spotify"] workspace 3 assign [class="Spotify"] workspace 3
for_window [class="Spotify"] opacity 0.8
#for_window [class="Chromium"] opacity 0.9
exec redshift -O 4500 -m wayland exec redshift -O 4500 -m wayland
exec megasync
exec nm-applet --indicator
exec qjackctl exec ~/.config/sway/workspace_rename.py > ~/.cache/workspace_rename.log 2> ~/.cache/workspace_rename_error.log
for_window [class="QjackCtl"] floating enable
for_window [title="Graphe — QjackCtl"] floating disable
exec ~/.local/start_jack.sh
exec ~/.config/sway/workspace-rename.sh
for_window [class="Tor Browser"] floating enable for_window [class="Tor Browser"] floating enable
for_window [app_id="kitty-scratch"] {
border pixel 1
}
for_window [app_id="kitty-scratch|pavucontrol|org.keepassxc.KeePassXC"] {
move to scratchpad
scratchpad show
}
workspace 1 output eDP-1 workspace 1 output eDP-1
exec $term exec $term
workspace 2 output eDP-1 workspace 2 output eDP-1
workspace 3 output eDP-1 workspace 3 output eDP-1
exec discord
exec spotify
workspace 4 output "Dell Inc. DELL U2410 F525M0A1082L" workspace 4 output "Dell Inc. DELL U2410 F525M0A1082L"
@@ -316,3 +341,9 @@ workspace 8 output "Dell Inc. DELL U2717D JXRPT83GAHKS"
workspace 9 output "Dell Inc. DELL U2717D JXRPT83GAHKS" workspace 9 output "Dell Inc. DELL U2717D JXRPT83GAHKS"
exec xrdb -load ~/.Xresources exec xrdb -load ~/.Xresources
exec autotiling
exec keepassxc
exec "systemctl --user import-environment; systemctl --user start sway-session.target"

5
.config/sway/run-once.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
if ! pgrep -x $1; then
${@:1}
fi

View File

@@ -1,43 +1,52 @@
[icons]
icons = "awesome" icons = "awesome"
[theme] [theme]
name = "solarized-dark" theme = "solarized-dark"
[theme.overrides] [theme.overrides]
idle_bg = "#002b36cc" idle_bg = "#002b36ff"
info_bg = "#268bd2cc" info_bg = "#268bd2ff"
good_bg = "#859900cc" good_bg = "#859900ff"
warning_bg = "#b58900cc" warning_bg = "#b58900ff"
critical_bg = "#dc322fcc" critical_bg = "#dc322fff"
alternating_tint_bg = "#00000000" alternating_tint_bg = "#00000000"
separator = "" separator = "<span font='14'>\ue0b2</span>"
#separator = ""
[[block]] #[[block]]
block = "focused_window" #block = "focused_window"
max_width = 100 #max_width = 100
[[block]] [[block]]
block = "music" block = "music"
player = "spotify" player = "spotify"
buttons = ["play", "next"] format = "$prev $play $next|"
on_collapsed_click = "spotify"
max_width = 21
marquee = true
[[block]] [[block]]
block = "sound" block = "sound"
driver = "alsa" driver = "auto"
#device = "hw:0" show_volume_when_muted = true
headphones_indicator = true
step_width = 3 step_width = 3
[[block.click]]
button = "left"
cmd = "pavucontrol"
[[block]] [[block]]
block = "memory" block = "memory"
display_type = "memory" display_type = "memory"
format_mem = "{Mum}MB" format_mem = "$mem_used.eng(3,B,M)"
clickable = false clickable = false
[[block.click]]
button = "left"
cmd = "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf btop"
[[block]] [[block]]
block = "cpu" block = "cpu"
interval = 1 interval = 1
[[block.click]]
button = "left"
cmd = "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf btop"
#[[block]] #[[block]]
#block = "sound" #block = "sound"
@@ -46,6 +55,26 @@ interval = 1
block = "battery" block = "battery"
interval = 10 interval = 10
[[block]]
block = "pacman"
interval = 600
format = "$both updates available"
format_singular = "$both update available"
format_up_to_date = "up to date"
hide_when_uptodate = true
critical_updates_regex = "(^(linux-|sway|wl)|pipewire)"
aur_command = "yay -Qua"
[[block.click]]
button = "left"
cmd = "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf zsh -i -c update"
[[block]]
block = "net"
format = "$device{| $ssid}"
[[block.click]]
button = "left"
cmd = "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf nmtui"
[[block]] [[block]]
block = "time" block = "time"
interval = 60 interval = 60

View File

@@ -1,35 +0,0 @@
#!/bin/sh
swaymsg -t subscribe -m '[ "window" ]' | while read -r event ; do
if [ "$(jq -r '.change' <<< $event)" = 'focus' ] ; then
current_workspace="$(swaymsg -t get_workspaces | jq -r '.[] | select(.focused)')"
workspace_num="$(jq -r '.num' <<< $current_workspace)"
workspace_name="$(jq -r '.name' <<< $current_workspace)"
app_name="$(jq -r '.container.app_id' <<< $event)"
if [ $app_name = 'null' ] ; then
app_name="$(jq -r '.container.window_properties.instance' <<< $event)"
fi
if [ "$app_name" = "kitty" ] ; then
app_name=""
elif [ "$app_name" = "chromium" ] ; then
case "$(jq -r '.container.name' <<< $event)" in
*YouTube*)
app_name=""
;;
*)
app_name=""
;;
esac
elif [ "$app_name" = "discord" ] ; then
app_name=""
elif [ "$app_name" = "spotify" ] ; then
app_name=""
elif [ "$app_name" = "GEMOC Studio" ] ; then
app_name=""
fi
swaymsg rename workspace "$workspace_name" to "$workspace_num:$app_name"
fi
done

View File

@@ -0,0 +1,64 @@
#!/bin/python3
import asyncio
from i3ipc import Event
from i3ipc.aio import Connection
async def main():
sway = await Connection().connect()
@sway.on(Event.WINDOW_NEW)
@sway.on(Event.WINDOW_CLOSE)
@sway.on(Event.WINDOW_MOVE)
@sway.on(Event.WINDOW_TITLE)
async def on_window_change(sway, _):
for w in (await sway.get_tree()).workspaces():
new_name = f'{w.num}:'
first_descendant = True
for d in w.descendants():
app_name = d.app_id
if not app_name:
if d.name and 'Vivaldi' in d.name:
new_name += '<span font=\'10\' rise=\'-500\' letter_spacing=\'2048\'></span>'
else:
app_name = d.window_instance
if app_name:
if not first_descendant:
new_name += ' '
first_descendant = False
if 'kitty' in app_name:
if 'vim' in d.name:
new_name += '<span font=\'12\' rise=\'-2500\'>\ue6c5</span>'
else:
new_name += ''
elif app_name in ['Chromium', 'google-chrome', 'google-chrome-unstable']:
if 'YouTube' in d.name:
new_name += ''
else:
new_name += ''
elif app_name == 'Navigator':
new_name += ''
elif app_name == 'discord':
new_name += ''
elif app_name == 'spotify':
new_name += '<span font=\'11\' rise=\'-400\'></span>'
elif app_name in ['GEMOC Studio', 'code-oss']:
new_name += ''
elif 'okular' in app_name or 'zathura' in app_name:
new_name += '<span font=\'FontAwesome 5 Free Solid\'></span>'
elif app_name == 'pavucontrol':
new_name += ''
else:
new_name += app_name
await sway.command(f'rename workspace "{w.name}" to "{new_name}"')
await sway.main()
asyncio.run(main())

74
.config/waybar/config Normal file
View File

@@ -0,0 +1,74 @@
[{
"spacing": 4, // Gaps between modules (4px)
"modules-left": ["sway/workspaces"],
"modules-right": ["pulseaudio", "memory", "cpu", "battery", "network", "custom/pacman", "clock", "tray"],
"memory": {
"format": "\uf538 {used:0.1f}GiB",
"on-click": "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf btop"
},
"tray": {
"spacing": 10
},
"clock": {
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format": "\uf017 {:%A %d/%m/%Y %H:%M}"
},
"cpu": {
"format": "\uf2db {usage}%",
"tooltip": false,
"on-click": "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf btop"
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-alt": "{icon} {time}",
"format-icons": ["", "", "", "", ""]
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": "\uf1eb {essid}",
"format-ethernet": "\uf6ff {ifname}",
"tooltip-format": "\f6ff {ifname} via {gwaddr}",
"format-linked": "\uf6ff {ifname} (No IP)",
"format-disconnected": "\uf071 Disconnected",
"on-click": "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf nmtui"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-bluetooth": "{icon} {volume}% {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/pacman": {
"format": "{icon} {}",
"return-type": "json",
"escape": true,
"format-icons": {
"uptodate": "\uf00c",
"available": "\uf019"
},
"interval": 600,
"exec": "$HOME/.config/waybar/pacman.py '(?:^(?:linux-|sway|wl)|pipewire)' 2> /dev/null",
"on-click": "kitty --class kitty-scratch -c ~/.config/kitty/kitty-scratch.conf zsh -i -c update"
}
}]

128
.config/waybar/mediaplayer.py Executable file
View File

@@ -0,0 +1,128 @@
#!/usr/bin/env python3
import argparse
import logging
import sys
import signal
import gi
import json
gi.require_version('Playerctl', '2.0')
from gi.repository import Playerctl, GLib
logger = logging.getLogger(__name__)
def write_output(text, player):
logger.info('Writing output')
output = {'text': text,
'class': 'custom-' + player.props.player_name,
'alt': player.props.player_name}
sys.stdout.write(json.dumps(output) + '\n')
sys.stdout.flush()
def on_play(player, status, manager):
logger.info('Received new playback status')
on_metadata(player, player.props.metadata, manager)
def on_metadata(player, metadata, manager):
logger.info('Received new metadata')
track_info = ''
if player.props.player_name == 'spotify' and \
'mpris:trackid' in metadata.keys() and \
':ad:' in player.props.metadata['mpris:trackid']:
track_info = 'AD PLAYING'
elif player.get_artist() != '' and player.get_title() != '':
track_info = '{artist} - {title}'.format(artist=player.get_artist(),
title=player.get_title())
else:
track_info = player.get_title()
if player.props.status != 'Playing' and track_info:
track_info = '' + track_info
write_output(track_info, player)
def on_player_appeared(manager, player, selected_player=None):
if player is not None and (selected_player is None or player.name == selected_player):
init_player(manager, player)
else:
logger.debug("New player appeared, but it's not the selected player, skipping")
def on_player_vanished(manager, player):
logger.info('Player has vanished')
sys.stdout.write('\n')
sys.stdout.flush()
def init_player(manager, name):
logger.debug('Initialize player: {player}'.format(player=name.name))
player = Playerctl.Player.new_from_name(name)
player.connect('playback-status', on_play, manager)
player.connect('metadata', on_metadata, manager)
manager.manage_player(player)
on_metadata(player, player.props.metadata, manager)
def signal_handler(sig, frame):
logger.debug('Received signal to stop, exiting')
sys.stdout.write('\n')
sys.stdout.flush()
# loop.quit()
sys.exit(0)
def parse_arguments():
parser = argparse.ArgumentParser()
# Increase verbosity with every occurrence of -v
parser.add_argument('-v', '--verbose', action='count', default=0)
# Define for which player we're listening
parser.add_argument('--player')
return parser.parse_args()
def main():
arguments = parse_arguments()
# Initialize logging
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG,
format='%(name)s %(levelname)s %(message)s')
# Logging is set by default to WARN and higher.
# With every occurrence of -v it's lowered by one
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
# Log the sent command line arguments
logger.debug('Arguments received {}'.format(vars(arguments)))
manager = Playerctl.PlayerManager()
loop = GLib.MainLoop()
manager.connect('name-appeared', lambda *args: on_player_appeared(*args, arguments.player))
manager.connect('player-vanished', on_player_vanished)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
for player in manager.props.player_names:
if arguments.player is not None and arguments.player != player.name:
logger.debug('{player} is not the filtered player, skipping it'
.format(player=player.name)
)
continue
init_player(manager, player)
loop.run()
if __name__ == '__main__':
main()

80
.config/waybar/pacman.py Executable file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env python3
import json
import os
import re
import subprocess
import sys
PACMAN_DB = '/var/lib/pacman/'
PACMAN_UPDATES_DB = f'/tmp/checkup-db-{os.getlogin()}/'
def write_output(packages, important_regex):
n_packages = packages.count('\n')
if n_packages == 0:
output_text = 'Up to date'
output_class = 'good'
output_alt = 'uptodate'
else:
if n_packages == 1:
output_text = '1 update available'
else:
output_text = f'{n_packages} updates available'
output_class = 'info'
output_alt = 'available'
if important_regex and re.search(important_regex, packages,
flags=re.MULTILINE):
output_class = 'important'
output = {'text': output_text,
'class': output_class,
'alt': output_alt}
sys.stdout.write(json.dumps(output) + '\n')
sys.stdout.flush()
def generate_and_update_database():
if not os.path.isdir(PACMAN_UPDATES_DB):
os.mkdir(PACMAN_UPDATES_DB)
os.symlink(os.path.join(PACMAN_DB, 'local'),
os.path.join(PACMAN_UPDATES_DB, 'local'))
subprocess.run(['fakeroot',
'--',
'pacman',
'-Sy',
'--dbpath',
PACMAN_UPDATES_DB,
'--logfile',
'/dev/null'],
env={'LC_ALL': 'C'},
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT)
def check_updates(important_regex):
p = subprocess.run(['yay',
'-Qu',
'--devel',
'--dbpath',
PACMAN_UPDATES_DB],
capture_output=True)
packages = p.stdout.decode('utf-8')
write_output(packages, important_regex)
def main(important_regex=None):
generate_and_update_database()
check_updates(important_regex)
if __name__ == '__main__':
if len(sys.argv) > 1:
main(sys.argv[1])
else:
main()

162
.config/waybar/style.css Normal file
View File

@@ -0,0 +1,162 @@
* {
font-family: DejaVu Sans Mono, devicons, "Font Awesome 6 Free";
font-size: 13px;
}
window#waybar {
background-color: #002b36;
color: #93a1a1;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
#workspaces button {
padding: 0px;
background-color: transparent;
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each workspace name */
border: none;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
#workspaces button:hover {
background-color: #268bd2;
color: #002b36;
}
#workspaces button.visible {
background-color: #859900;
color: #002b36;
}
#workspaces button.focused {
background-color: #859900;
color: #002b36;
}
#workspaces button.urgent {
background-color: #d30102;
color: #002b36;
}
#workspaces button,
#clock,
#battery,
#cpu,
#memory,
#network,
#pulseaudio,
#tray,
#custom-pacman {
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-radius: 25px / 25px;
background-clip: border-box;
}
#workspaces button:first-child {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
#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 {
}
#battery {
}
#battery.charging, #battery.plugged {
background-color: #268bd2;
color: #002b36;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.critical:not(.charging) {
background-color: #d30102;
color: #002b36;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#cpu {
}
#memory {
}
#network {
}
#network.disconnected {
background-color: #d30102;
color: #002b36;
}
#pulseaudio {
}
#pulseaudio.muted {
background-color: #b58900;
color: #002b36;
}
#custom-pacman.good {
background-color: #859900;
color: #002b36;
}
#custom-pacman.info {
background-color: #268bd2;
color: #002b36;
}
#custom-pacman.important {
background-color: #d30102;
color: #002b36;
}
#tray {
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #d30102;
}

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
.config/nvim/plugged .config/nvim/plugged
.config/nvim/.netrwhist .config/nvim/.netrwhist
.config/mpv/scripts/japan7.lua

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule ".config/nvim/solarized.nvim"]
path = .config/nvim/themes/solarized.nvim
url = ssh://git@git.rhiobet.sh:42424/rhiobet/solarized.nvim.git

View File

@@ -1,14 +0,0 @@
#!/bin/sh
pkill jackd
jack_control start
sleep 1
alsa_in -d hw:PCH,0 -j alsa_in &
alsa_out -d hw:PCH,0 -j alsa_out &
sleep 1
jack_connect system:monitor_1 alsa_out:playback_1
jack_connect system:monitor_2 alsa_out:playback_2
jack_connect system:capture_1 system:playback_1
jack_connect system:capture_2 system:playback_2
jack_connect alsa_in:capture_1 "PulseAudio JACK Source":front-left
jack_connect alsa_in:capture_2 "PulseAudio JACK Source":front-right

View File

@@ -1,2 +1,2 @@
export JAVA_HOME=/usr/lib/jvm/$(archlinux-java get) export JAVA_HOME=/usr/lib/jvm/$(archlinux-java get)
export GDK_BACKEND=x11 export JAVAFX_HOME=/lib/jvm/java-16-openjdk

29
.zshrc
View File

@@ -19,6 +19,7 @@ plugins=(
archlinux archlinux
docker docker
docker-compose docker-compose
fzf
git git
systemd systemd
vagrant vagrant
@@ -27,9 +28,35 @@ plugins=(
) )
source $ZSH/oh-my-zsh.sh source $ZSH/oh-my-zsh.sh
bindkey '^R' history-incremental-pattern-search-backward
if [ -f ~/.bash_aliases ]; then if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases source ~/.bash_aliases
fi fi
eval $(thefuck --alias) eval $(thefuck --alias)
ranger() {
if [ -z "$RANGER_LEVEL" ]; then
/usr/bin/ranger "$@"
else
exit
fi
}
alias start_gnome='XDG_SESSION_TYPE=wayland exec dbus-run-session gnome-session'
# >>> mamba initialize >>>
# !! Contents within this block are managed by 'mamba init' !!
export MAMBA_EXE="/usr/bin/micromamba";
export MAMBA_ROOT_PREFIX="/home/rhiobet/micromamba";
__mamba_setup="$('/usr/bin/micromamba' shell hook --shell zsh --prefix '/home/rhiobet/micromamba' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__mamba_setup"
else
if [ -f "/home/rhiobet/micromamba/etc/profile.d/micromamba.sh" ]; then
. "/home/rhiobet/micromamba/etc/profile.d/micromamba.sh"
else
export PATH="/home/rhiobet/micromamba/bin:$PATH" # extra space after export prevents interference from conda init
fi
fi
unset __mamba_setup
# <<< mamba initialize <<<

View File

@@ -0,0 +1 @@
SUBSYSTEM=="sound", ACTION=="change", KERNEL=="card*", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x9d71", ENV{ACP_PROFILE_SET}="noboost.conf"

View File

@@ -0,0 +1,4 @@
.include analog-input-internal-mic.conf
[Element Internal Mic Boost]
volume = off

View File

@@ -0,0 +1,4 @@
.include default.conf
[Mapping analog-stereo]
paths-input = analog-input-internal-mic-noboost