Add krita, ticktick. Remove archive

This commit is contained in:
Buliway 2025-12-19 17:59:31 +03:00
parent 9e305437d7
commit 63c02675ba
37 changed files with 3 additions and 2028 deletions

View file

@ -1 +0,0 @@
Тут будут файлы, которые больше не нужны. Но может быть они мне пригодятся в будущем.

View file

@ -1,7 +0,0 @@
{
programs.chromium = {
enable = true;
# Пока что передумал настраивать браузер. Бекаплю каталог целиком
};
}

View file

@ -1,40 +0,0 @@
{
programs.firefox = { # Пока что передумал настраивать браузер. Бекаплю каталог целиком
enable = true;
# profiles.buliway = {
# search = {
# engines = {
# };
# force = true;
# };
# nativeMessagingHosts.ff2mpv = true; # Чтоб ff2mpv работал
# settings = {
# # "extensions.autoDisableScopes" = 0; # To automatically enable extensions
# "browser.bookmarks.openInTabClosesMenu" = false;
# "browser.tabs.loadBookmarksInBackground" = true;
# "layout.css.has-selector.enabled" = true;
# # https://github.com/K3V1991/Disable-Firefox-Telemetry-and-Data-Collection
# "browser.newtabpage.activity-stream.feeds.telemetry" = false;
# "browser.newtabpage.activity-stream.telemetry" = false;
# "datareporting.healthreport.uploadEnabled" = false;
# "datareporting.policy.dataSubmissionEnabled" = false;
# "toolkit.telemetry.archive.enabled" = false;
# "toolkit.telemetry.bhrPing.enabled" = false;
# "toolkit.telemetry.enabled" = false;
# "toolkit.telemetry.firstShutdownPing.enabled" = false;
# "toolkit.telemetry.newProfilePing.enabled" = false;
# "toolkit.telemetry.reportingpolicy.firstRun" = false;
# "toolkit.telemetry.server" = "";
# "toolkit.telemetry.shutdownPingSender.enabled" = false;
# "toolkit.telemetry.unified" = false;
# "toolkit.telemetry.updatePing.enabled" = false;
# };
# };
};
}

View file

@ -1,57 +0,0 @@
{ pkgs, ... }: {
programs.librewolf = { # Пока что передумал настраивать браузер. Бекаплю каталог целиком
enable = true;
# settings = { # Надо из about:config записать сюда свои изменения
# "browser.bookmarks.openInTabClosesMenu" = false; # Не закрывать каталог закладок при открытии через СКМ? Не помню
# "browser.tabs.loadBookmarksInBackground" = true; # Не перекидывать меня сразу на открытую закладку через СКМ? Не помню
# "layout.css.has-selector.enabled" = true; # Некоторые кастом стили это требуют
# # General
# # # Search (Если надо вернуть гугл поисковик в стоке)
# # "browser.policies.runOncePerModification.extensionsUninstall" = [ # Удалить расширения
# # "amazondotcom@search.mozilla.org"
# # "ebay@search.mozilla.org"
# # "twitter@search.mozilla.org"
# # ];
# # "browser.policies.runOncePerModification.removeSearchEngines" = [ # Удалить поисковые движки
# # "Amazon.com"
# # "eBay"
# # "Twitter"
# # ];
# # "browser.policies.runOncePerModification.setDefaultSearchEngine" = "Google"; # Стандартный поисковик
# # Privacy & Security
# # LibreWolf
# "clipboard.autocopy" = false; # Выкл копирование колесом мыши
# "middlemouse.paste" = false; # Выкл копирование колесом мыши
# "network.dns.disableIPv6" = true; # Выкл ivp6
# "privacy.resistFingerprinting" = false; # Лайтовое и мб не ломает работу сайтов
# "privacy.fingerprintingProtection" = false; # Хардовее и может ломать работу сайтов?
# "webgl.disabled" = false; # Включить WebGL
# # Extensions
# "browser.policies.runOncePerModification.extensionsInstall" = [ # Установка расширений
# "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" # uBlock
# "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger/latest.xpi" # Privacy Badger
# ];
# };
};
# Чтоб ff2mpv работал. Не надо юзать их скрипт с гитхаба
# Надо будет потом написать "nix-build -A ff2mpv", чтоб проверить реальный путь до ff2mpv бинаря
# home.file.".librewolf/native-messaging-hosts/ff2mpv.json".text = ''
# {
# "name": "ff2mpv",
# "description": "ff2mpv's external manifest",
# "path": "${pkgs.ff2mpv}/bin/ff2mpv.py",
# "type": "stdio",
# "allowed_extensions": ["ff2mpv@yossarian.net"]
# }
# '';
# Ниже сделать настройки расширений декларативными
# home.file.".librewolf/?".source = ./?;
}

View file

@ -1,105 +0,0 @@
#!/usr/bin/env bash
# Дефолт конфиг https://github.com/baskerville/bspwm/blob/master/examples/bspwmrc
# Описание настроек можно найти тут https://manpages.debian.org/testing/bspwm/bspc.1.en.html
# Или через "man bspc" в терминале
# Или в ./bspwm.md
# https://my-take-on.tech/2020/07/03/some-tricks-for-sxhkd-and-bspwm/
################
## Автозапуск ##
################
# Это по сути терминал. Пишем то, как запускается прога через терминал и в конце & обязательно
# # Как я понял, их не надо запускать, ведь они активированы через services..enable = true;
# # Если в nixos что-то включается через services, а не через programs, то nixos сам отвечает за автозапуск сервисов
# pgrep -x sxhkd > /dev/null || sxhkd & # Запускаем sxhkd если он не запущен
# pgrep -x polybar > /dev/null || polybar & # Запускаем polybar если он не запущен
# pgrep -x dunst > /dev/null || dunst & # Запускаем dunst если он не запущен
# Изменить настройки для основного монитора. Мб вместе с --primary надо
xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
# Изменить настройки для второго (правого) монитора
xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
ksnip &
# nekoray &
# obsidian &
# planify &
lxqt-policykit-agent &
# Я ебал рот видеть инет в трее. Замени эту ёбань на rofi и отдельную кнопку в polybar
nm-applet &
#########################
## Настройки мониторов ##
#########################
# Получаем имена активных мониторов
MONITORS=( $(xrandr --listactivemonitors | grep -E '^ [0-9]+:' | cut -d' ' -f6 | sed 's/\n/ /') )
# Если переменная MONITOR уже задана, то используется её значение.
# Если она не задана (то есть пуста или не существует), то используется первый элемент из массива MONITORS (то есть, первый активный монитор).
# Это гарантирует, что переменная MONITOR всегда будет содержать значение: либо установленное ранее, либо первый активный монитор по умолчанию.
# ":-" Это оператор в Bash, который используется для установки значения по умолчанию. Если переменная не задана или пуста, используется значение после :-
MONITOR="${MONITOR:-${MONITORS[0]}}"
# Для запуска приложений на втором мониторе, если он доступен. Если второго монитора нет, используем первый.
MONITOR2="${MONITORS[1]:-${MONITORS[0]}}"
# # Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора
for mon in ${MONITORS[@]}; do
bspc monitor $mon -d {1,2,3,4,5,6,7,8,9,10}
done
# Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора
#bspc monitor -d 1 2 3 4 5 6 7 8 9 10 # Можно заменить на {1,2,3,4,5,6,7,8,9,10}
# Настройка автоматического удаления настроек для отключённых и отсоединённых мониторов
bspc config remove_disabled_monitors false
bspc config remove_unplugged_monitors false
#####################
## Настройки bspwm ##
#####################
# Syntax - bspc config [-m MONITOR_SEL|-d DESKTOP_SEL|-n NODE_SEL] <setting> [<value>]
# Устанавливает ширину границ окон в 2 пикселя.
bspc config border_width 2
# Задаёт расстояние между окнами (отступ) в 5 пикселей.
bspc config window_gap 5
# Настраивает коэффициент разделения окон при их разделении. Значение 0.52 означает, что при разделении окно будет занимать 52% доступного пространства.
bspc config split_ratio 0.52
# В режиме monocle (максимизация окна на весь экран) границы окон будут скрыты.
bspc config borderless_monocle true
# В режиме monocle будет отсутствовать отступ между окнами.
bspc config gapless_monocle true
# Eсли вы активируете режим "monocle" на одном мониторе, другие мониторы остаются в обычном режиме
bspc config single_monocle false
# Фокусировка следует за курсором
bspc config focus_follows_pointer true
###############################
## Поведение конкретных окон ##
###############################
# Yдаляет все существующие правила для всех окон
# bspc rule -r '*'
bspc rule -a "polybar" layer=above
bspc rule -a "Screenkey" manage=off
bspc rule -a "ksnip" state=floating center=true focus=on rectangle=1600x900+0+0
bspc rule -a "org.kde.ark" state=floating center=true focus=on rectangle=1200x800+0+0
bspc rule -a "floating-terminal" state=floating center=true focus=on rectangle=1200x800+0+0

View file

@ -1,121 +0,0 @@
# Команды для терминала
# Узнать тип файла - xdg-mime query filetype foo.pdf
# Узнать нынешнее дефолт приложения - xdg-mime query default application/pdf
# Узнать имя приложения. Для примера взять evince - fd evince.desktop /
# Выведет пути, по которым можно понять как называется приложение
# В список [] можно через пробел добавить другие варианты. Если первая прога не откроет, то попытается вторая
# Список mime types смотрел тут https://mimetype.io/all-types
# Нагуглить значение "x-scheme-handler" невозможно. Как я понял, это кастом типы
##############################################################################
# Как система готова, то замени имена прог на реальные. Сейчас на абум стоят #
##############################################################################
{
xdg.mimeApps = { # Конфиг для `~/.config/mimeapps.list`
enable = true;
defaultApplications = { # Стандартные приложения для открытия нужного файла
# Browser
"application/x-extension-htm" = [ "librewolf.desktop" ];
"application/x-extension-html" = [ "librewolf.desktop" ];
"application/x-extension-shtml" = [ "librewolf.desktop" ];
"application/x-extension-xht" = [ "librewolf.desktop" ];
"application/x-extension-xhtml" = [ "librewolf.desktop" ];
"application/xhtml+xml" = [ "librewolf.desktop" ];
"x-scheme-handler/about" = [ "librewolf.desktop" ];
"x-scheme-handler/chrome" = [ "librewolf.desktop" ];
"x-scheme-handler/http" = [ "librewolf.desktop" ];
"x-scheme-handler/https" = [ "librewolf.desktop" ];
"x-scheme-handler/unknown" = [ "librewolf.desktop" ];
# Images
"image/*" = [ "qview.desktop" ];
"image/avif" = [ "qview.desktop" ];
"image/gif" = [ "qview.desktop" ];
"image/jpeg" = [ "qview.desktop" ]; # Обычный jpeg, прогрузка сверху вниз
"image/pjpeg" = [ "qview.desktop" ]; # Сначала размытый и постепенной лучше видно, для медленного инета
"image/apng" = [ "qview.desktop" ]; # Анимированный png
"image/png" = [ "qview.desktop" ];
"image/svg+xml" = [ "qview.desktop" ];
"image/webp" = [ "qview.desktop" ];
"image/x-icon" = [ "qview.desktop" ];
"image/vnd.microsoft.icon" = [ "qview.desktop" ];
# Video
"video/*" = [ "mpv.desktop" ];
"video/mp4" = [ "mpv.desktop" ];
"video/mpeg" = [ "mpv.desktop" ];
"video/quicktime" = [ "mpv.desktop" ];
"video/webm" = [ "mpv.desktop" ];
"video/x-matroska" = [ "mpv.desktop" ];
# Audio
"audio/*" = [ "mpv.desktop" ];
"audio/aac" = [ "mpv.desktop" ];
"audio/flac" = [ "mpv.desktop" ];
"audio/mp4" = [ "mpv.desktop" ];
"audio/mpeg" = [ "mpv.desktop" ];
"audio/ogg" = [ "mpv.desktop" ];
"audio/opus" = [ "mpv.desktop" ];
"audio/vnd.wav" = [ "mpv.desktop" ];
"audio/webm" = [ "mpv.desktop" ];
"audio/x-matroska" = [ "mpv.desktop" ];
"audio/x-mpegurl" = [ "mpv.desktop" ]; # Для .m3u. Это файл-плейлист
"audio/x-opus+ogg" = [ "mpv.desktop" ]; # What's this? Why not "audio/ogg" and "audio/opus"?
# Text
"text/*" = [ "nvim.desktop" "code.desktop" ];
"text/css" = [ "nvim.desktop" "code.desktop" ];
"text/csv" = [ "nvim.desktop" "code.desktop" ];
"text/html" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"text/javascript" = [ "nvim.desktop" "code.desktop" ];
"text/markdown" = [ "nvim.desktop" "code.desktop" ];
"text/plain" = [ "nvim.desktop" "code.desktop" ];
"text/x-asm" = [ "nvim.desktop" "code.desktop" ];
"text/x-c" = [ "nvim.desktop" "code.desktop" ];
"text/x-python" = [ "nvim.desktop" "code.desktop" ];
"application/json" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"application/x-sh" = [ "nvim.desktop" "code.desktop" ];
"application/x-shellscript" = [ "nvim.desktop" "code.desktop" ];
"application/xml" = [ "nvim.desktop" "code.desktop" ];
"application/yaml" = [ "nvim.desktop" "code.desktop" ];
# Мб потом добавить для docs варианты и разные виды архивов и ebook
# Other
"application/pdf" = [ "org.gnome.Evince.desktop" ];
"application/x-zerosize" = [ "nvim.desktop" "code.desktop" ]; # Файл нулевого размера
"application/zip" = [ "ark.desktop" ];
"application/x-bittorrent" = [ "qbittorrent.desktop" ];
"x-scheme-handler/magnet" = [ "qbittorrent.desktop" ];
"inode/directory" = [ "thunar.desktop" ];
"x-scheme-handler/mailto" = [ "thunderbird.desktop" ];
"x-scheme-handler/jetbrains" = [ "jetbrains-toolbox.desktop" ];
};
associations.added = { # Дополнительные приложения для нужного файла. Будет в меню "Открыть с помощью"
# Images
"image/*" = [ "qview.desktop" ];
"image/avif" = [ "qview.desktop" ];
"image/gif" = [ "qview.desktop" ];
"image/jpeg" = [ "qview.desktop" ]; # Обычный jpeg, прогрузка сверху вниз
"image/pjpeg" = [ "qview.desktop" ]; # Сначала размытый и постепенной лучше видно, для медленного инета
"image/apng" = [ "qview.desktop" ]; # Анимированный png
"image/png" = [ "qview.desktop" ];
"image/svg+xml" = [ "qview.desktop" ];
"image/webp" = [ "qview.desktop" ];
"image/x-icon" = [ "qview.desktop" ];
"image/vnd.microsoft.icon" = [ "qview.desktop" ];
# Text
"text/*" = [ "nvim.desktop" "code.desktop" ];
"text/css" = [ "nvim.desktop" "code.desktop" ];
"text/csv" = [ "nvim.desktop" "code.desktop" ];
"text/html" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"text/javascript" = [ "nvim.desktop" "code.desktop" ];
"text/markdown" = [ "nvim.desktop" "code.desktop" ];
"text/plain" = [ "nvim.desktop" "code.desktop" ];
"text/x-asm" = [ "nvim.desktop" "code.desktop" ];
"text/x-c" = [ "nvim.desktop" "code.desktop" ];
"text/x-python" = [ "nvim.desktop" "code.desktop" ];
"application/json" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"application/x-sh" = [ "nvim.desktop" "code.desktop" ];
"application/x-shellscript" = [ "nvim.desktop" "code.desktop" ];
"application/xml" = [ "nvim.desktop" "code.desktop" ];
"application/yaml" = [ "nvim.desktop" "code.desktop" ];
};
};
}

View file

@ -1,93 +0,0 @@
{ pkgs, ... }: {
programs.fish = {
enable = true;
shellAliases = let
flakeDir = "~/dots";
in {
rbs = "sudo nixos-rebuild switch --impure --flake ${flakeDir}"; # Применить новый конфиг сразу
rbb = "sudo nixos-rebuild boot --impure --flake ${flakeDir}"; # Применить новый конфиг после ребута пк
# Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет
upg = "sudo nixos-rebuild switch --impure --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock
# Обновить все flake inputs до последних версий. Возможно это аналог "sudo pacman -Sy" на Arch Linux
# Если после upd дописать название инпута из flake.nix, то обновится только указанный инпут
# Например `upd nixpkgs2` для обновления анстабле репы
upd = "sudo nix flake update --flake ${flakeDir}";
# Garbage collector. Удалить все не используемые пакеты (например после обновы)
grb = "sudo nix-collect-garbage -d";
pkgs = "nvim ${flakeDir}/nixos/packages.nix";
vim = "nvim";
vi = "nvim";
v = "nvim";
t = "timer";
r = "ranger";
g = "gitui";
f = "fastfetch";
yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube
qb = "cd /mnt/backups/Media/Music/Qobuz/qdl"; # Бекапить музыку с Qobuz
html = "python3 /mnt/backups/html-library/generate_gallery.py --path"; # Html image gallery
};
# Всё, что в комментах ниже, лишнее. Я нашёл норм способ. Пишем "nix-prefetch-git link" и получаем всю инфу
# Узнать rev - git ls-remote https://github.com/{owner}/{repo}.git HEAD
# На гитхабе вроде можно просто на странице коммитов нажать ... и copy full SHA
# Узнать sha256 - sudo nix-prefetch-url --unpack https://github.com/{owner}/{repo}/archive/{rev}.tar.gz
# Ссылку проще получить, открыв страницу релизов и оттуда скопировать ссылку на архив
# Если нет релизов - sudo nix-prefetch-url --unpack https://github.com/{owner}/{repo}/archive/refs/heads/{branch}.zip
plugin = [
{ # The Node.js version manager you'll adore, crafted just for Fish
name = "nvm.fish"; # https://github.com/jorgebucaran/nvm.fish
src = pkgs.fetchFromGitHub {
owner = "jorgebucaran";
repo = "nvm.fish";
rev = "b8edb1ee24cbbf7259196b0cb3c6c4ab65b07929";
sha256 = "17vk608mbmb9mwvvm18hs63iy7vzdrd1ymia94szy1hy5d0li77c";
};
}
{ # Utility functions to start your ssh agent when using fish shell
name = "fish-ssh-agent"; # https://github.com/danhper/fish-ssh-agent
src = pkgs.fetchFromGitHub {
owner = "danhper";
repo = "fish-ssh-agent";
rev = "fd70a2afdd03caf9bf609746bf6b993b9e83be57";
sha256 = "1fvl23y9lylj4nz6k7yfja6v9jlsg8jffs2m5mq0ql4ja5vi5pkv";
};
}
];
};
home = {
packages = with pkgs.fishPlugins; [ # Плагины для Fish из репы никса
z # Частые директории https://github.com/jethrokuan/z/blob/master/man/man1/z.md
plugin-git # Алиасы для гита https://github.com/jhillyerd/plugin-git
fzf-fish # https://github.com/PatrickF1/fzf.fish
done # Оповещения для длительных процессов https://github.com/franciscolourenco/done
bass # Позволяет юзать bash в fish https://github.com/edc/bass
];
# Чтоб при выходе из ranger я всегда cd в каталог, из которого вышел
file.".config/fish/functions/ranger.fish".text = ''
function ranger
set tempfile (mktemp -t tmp.XXXXXX)
command ranger --choosedir=$tempfile $argv
set return_value $status
if test -s $tempfile
set ranger_pwd (cat $tempfile)
if test -n $ranger_pwd -a -d $ranger_pwd
builtin cd -- $ranger_pwd
end
end
command rm -f -- $tempfile
return $return_value
end
'';
};
}

View file

@ -1,21 +0,0 @@
{
programs.git = { # https://nixos.wiki/wiki/Git
enable = true;
# lfs.enable = true; # https://git-lfs.com/
userName = "Buliway";
userEmail = "me@buliway.ru";
# aliases = {
# pu = "push";
# co = "checkout";
# cm = "commit";
# s = "status";
# };
};
programs.gitui = { # Terminal UI
enable = true;
};
}

View file

@ -1,62 +0,0 @@
# Default config for imv
[options]
# Suppress built-in key bindings, and specify them explicitly in this
# config file.
suppress_default_binds = true
title_text = imv - $(basename "$imv_current_file")
[aliases]
# Define aliases here. Any arguments passed to an alias are appended to the
# command.
# alias = command to run
[binds]
# Define some key bindings
q = quit
y = exec echo working!
# Image navigation
<Left> = prev
<bracketleft> = prev
<Right> = next
<bracketright> = next
gg = goto 1
<Shift+G> = goto -1
# Panning
j = pan 0 -50
k = pan 0 50
h = pan 50 0
l = pan -50 0
# Zooming
<Up> = zoom 1
<Shift+plus> = zoom 1
i = zoom 1
<Down> = zoom -1
<minus> = zoom -1
o = zoom -1
# Rotate Clockwise by 90 degrees
<Ctrl+r> = rotate by 90
# Other commands
x = close
f = fullscreen
d = overlay
p = exec echo $imv_current_file
c = center
s = scaling next
<Shift+S> = upscaling next
a = zoom actual
r = reset
# Gif playback
<period> = next_frame
<space> = toggle_playing
# Slideshow control
t = slideshow +5
<Shift+T> = slideshow -1

View file

@ -1,5 +0,0 @@
{
programs.imv.enable = true;
xdg.configFile."imv/config".source = ./config;
}

View file

@ -1,14 +0,0 @@
{ pkgs, ... }: {
home = {
packages = [ pkgs.lynx ]; # Текстовый браузер в терминале. Без картинок
# Чтоб lynx отображал все символы, а не транслит
file.".lynxrc".text = ''
accept_all_cookies=on
force_ssl_cookies_secure=on
case_sensitive_searching=off
character_set=UNICODE (UTF-8)
'';
};
}

View file

@ -1,443 +0,0 @@
[Analyzer]
framerate=25
type=BlockAnalyzer
[Appearance]
background_image_do_not_cut=true
background_image_keep_aspect_ratio=true
background_image_max_size=0
background_image_position=5
background_image_stretch=false
background_image_type=1
blur_radius=0
icon_size_configure_buttons=16
icon_size_left_panel_buttons=22
icon_size_play_control_buttons=32
icon_size_playlist_buttons=20
icon_size_tabbar_large_mode=40
icon_size_tabbar_small_mode=32
opacity_level=40
playlist_playing_song_color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
style=default
system_icons=false
tab_color=@Variant(\0\0\0\x43\x2\xff\xffOL\x87\x87\x92+\0\0)
tab_gradient=true
tab_system_color=true
[Backend]
AutoCrossfadeEnabled=false
CrossfadeEnabled=false
FadeoutDuration=2000
FadeoutEnabled=false
FadeoutPauseDuration=250
FadeoutPauseEnabled=false
NoCrossfadeSameAlbum=true
alsaplugin=3
bs2b=false
bufferduration=4000
bufferhighwatermark=0.99
bufferlowwatermark=0.33
channels=2
channels_enabled=false
device=@Invalid()
ebur128_loudness_normalization=false
ebur128_target_level_lufs=-23
engine=gstreamer
http2=false
output=autoaudiosink
rgcompression=true
rgenabled=false
rgfallbackgain=0
rgmode=1
rgpreamp=0
strict_ssl=false
volume_control=true
[Behaviour]
doubleclick_addmode=1
doubleclick_playlist_addmode=1
doubleclick_playmode=1
keeprunning=false
language=
menu_playmode=1
menu_previousmode=1
playing_widget=true
resumeplayback=false
seek_step_sec=10
showtrayicon=true
startupbehaviour=1
trayicon_progress=false
[Collection]
auto_open=true
cache_size=160
cache_size_unit=1
cover_art_patterns=front, cover
delete_files=true
disk_cache_enable=false
disk_cache_size=360
disk_cache_size_unit=1
expire_unavailable_songs=60
group_by1=1
group_by2=4
group_by3=0
group_by_version=1
last_path=/home/buliway/backups/Media/Music
mark_songs_unavailable=true
monitor=true
overwrite_playcount=false
overwrite_rating=false
pretty_covers=true
save_playcounts=true
save_ratings=true
separate_albums_by_grouping=false
show_dividers=true
song_ebur128_loudness_analysis=false
song_tracking=false
startup_scan=true
[Context]
AlbumEnable=true
SearchCoverEnable=true
SearchLyricsEnable=true
SongLyricsEnable=true
SummaryFmt=%album%
TechnicalDataEnable=false
TitleFmt=%title% - %artist%
font_headline=Noto Sans
font_normal=Noto Sans
font_size_headline=11
font_size_normal=9
[Covers]
providers=Last.fm, MusicBrainz, Deezer, Musixmatch, Spotify, Tidal, Qobuz
save_filename=2
save_lowercase=true
save_overwrite=false
save_pattern=%albumartist-%album
save_replace_spaces=true
save_type=1
types=art_unset, art_manual, art_automatic, art_embedded
[EditTagDialog]
current_tab=1
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\xf\x1\0\0\0\x19\0\0\x12\xb1\0\0\x4\x10\0\0\xf\x1\0\0\0\x19\0\0\x12\xc0\0\0\x4$\0\0\0\x1\x2\0\0\0\a\x80\0\0\xf\x1\0\0\0\x19\0\0\x12\xb1\0\0\x4\x10)
[Equalizer]
enable_stereo_balancer=false
enabled=false
presets\1\name=Classical
presets\1\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xce)
presets\10\name=Live
presets\10\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xe7\0\0\0\0\0\0\0\x14\0\0\0\x19\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\xf\0\0\0\xf\0\0\0\n)
presets\11\name=Party
presets\11\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#)
presets\12\name=Pop
presets\12\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf6\0\0\0\x19\0\0\0#\0\0\0(\0\0\0\x19\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xf1\xff\xff\xff\xf6\xff\xff\xff\xf6)
presets\13\name=Reggae
presets\13\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xfb\xff\xff\xff\xe2\0\0\0\0\xff\xff\xff\xdd\xff\xff\xff\xdd\0\0\0\0\0\0\0\0\0\0\0\0)
presets\14\name=Rock
presets\14\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x19\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xec\0\0\0\x14\0\0\0-\0\0\0\x37\0\0\0\x37\0\0\0\x37)
presets\15\name=Ska
presets\15\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf1\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xfb\0\0\0\x14\0\0\0\x1e\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0\x32)
presets\16\name=Soft
presets\16\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xfb\0\0\0\x14\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0<)
presets\17\name=Soft Rock
presets\17\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xe7\xff\xff\xff\xe2\xff\xff\xff\xec\xff\xff\xff\xfb\0\0\0\xf\0\0\0-)
presets\18\name=Techno
presets\18\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xe7\0\0\0\0\0\0\0(\0\0\0\x32\0\0\0\x32\0\0\0-)
presets\19\name=Zero
presets\19\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)
presets\2\name=Club
presets\2\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14\0\0\0\x1e\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\0\0\0\0\0\0\0\0\0)
presets\3\name=Custom
presets\3\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)
presets\4\name=Dance
presets\4\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0#\0\0\0\n\0\0\0\0\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0)
presets\5\name=Full Bass
presets\5\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x46\0\0\0\x46\0\0\0\x46\0\0\0(\0\0\0\x14\xff\xff\xff\xd3\xff\xff\xff\xce\xff\xff\xff\xc9\xff\xff\xff\xc9\xff\xff\xff\xc9)
presets\6\name=Full Bass + Treble
presets\6\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0\x1e\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xe7\0\0\0\n\0\0\0-\0\0\0\x37\0\0\0<\0\0\0<)
presets\7\name=Full Treble
presets\7\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xe7\0\0\0\xf\0\0\0\x37\0\0\0P\0\0\0P\0\0\0P\0\0\0U)
presets\8\name=Laptop/Headphones
presets\8\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\x32\0\0\0\x19\xff\xff\xff\xec\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0)
presets\9\name=Large Hall
presets\9\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0\x32\0\0\0\x1e\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xe7\0\0\0\0\0\0\0\0)
presets\size=19
selected_preset=Custom
stereo_balance=0
[GlobalShortcuts]
dec_volume=
inc_volume=
love=
mute=
next_track=Media Next
pause=
play=
play_pause=Media Play
prev_track=Media Previous
repeat_mode=
seek_backward=
seek_forward=
show_hide=
show_osd=
shuffle_mode=
stop=Media Stop
stop_after=
toggle_pretty_osd=
toggle_scrobbling=
use_gnome=false
use_kde=true
use_mate=false
use_x11=false
[LastFM]
enabled=false
[LibreFM]
enabled=false
[ListenBrainz]
enabled=false
user_token=
[Lyrics]
providers=Genius, Lyrics.ovh, LoloLyrics, Musixmatch, songlyrics.com, azlyrics.com, elyrics.net, lyricsmode.com
[MainWindow]
add_folder_path=/home/buliway/backups/Media/Music
current_tab=1
do_not_show_sponsor_message=true
file_path=/home/buliway
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\xf\0\0\0\0\0\0\0\x16k\0\0\x4\a\0\0\xf\0\0\0\0\0\0\0\x16\x7f\0\0\x4\x37\0\0\0\x1\x2\0\0\0\a\x80\0\0\xf\0\0\0\0\0\0\0\x16k\0\0\x4\a)
hidden=false
maximized=true
minimized=false
search_for_cover_auto=true
show_sidebar=true
splitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x1>\0\0\x4W\0\xff\xff\xff\xff\x1\0\0\0\x1\0)
tab_collection=1
tab_context=0
tab_devices=7
tab_files=5
tab_mode=1
tab_playlists=3
tab_queue=2
tab_radios=6
tab_smartplaylists=4
[Moodbar]
enabled=false
save=false
show=false
style=0
[NetworkProxy]
engine=true
hostname=
mode=0
password=
port=0
type=3
use_authentication=false
username=
[OSD]
Behaviour=0
CustomText1=
CustomText2=
CustomTextEnabled=false
ShowArt=true
ShowOnPausePlayback=false
ShowOnPlayModeChange=false
ShowOnResumePlayback=false
ShowOnVolumeChange=false
Timeout=5000
[OSDPretty]
background_color=4284913379
background_opacity=0.8500000238418579
disable_duration=false
fading=false
font="Verdana,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
foreground_color=4278190080
popup_pos=@Point(1460 0)
popup_screen=DP-3
[Player]
playback_playlist=22
playback_position=37
playback_state=3
volume=6
[Playlist]
alternating_row_colors=true
auto_sort=false
column_alignments=@Variant(\0\0\0\x7f\0\0\0\x13\x43olumnAlignmentMap\0\0\0\0\v\0\0\0\x6\0\0\0\x82\0\0\0\a\0\0\0\x82\0\0\0\b\0\0\0\x82\0\0\0\t\0\0\0\x82\0\0\0\n\0\0\0\x82\0\0\0\f\0\0\0\x82\0\0\0\r\0\0\0\x82\0\0\0\xe\0\0\0\x82\0\0\0\x11\0\0\0\x82\0\0\0\x15\0\0\0\x82\0\0\0\x16\0\0\0\x82)
continue_on_error=false
current_playlist=22
delete_files=true
editmetadatainline=false
glow_effect=true
greyout_songs_play=true
greyout_songs_startup=true
last_load_playlist=/home/buliway/backups/Media/Music/Strawberry/Rofl.xspf
last_save_all_extension=xspf
last_save_all_path=/home/buliway/backups/Media/Music/Strawberry
last_save_extension=xspf
last_save_filter=XSPF playlists (*.xspf)
last_save_path=/home/buliway/backups/Media/Music/Strawberry
path_type=2
playlist_clear=true
rating_locked=false
select_track=false
show_bars=true
show_toolbar=true
state="@ByteArray(P,\x95\xf\x1\0\0\0 \0\0\x1\xc4\0\0\0\xdc\0\0\0\0\0\0\0\xdc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\0\0\0\0R\0\0\0\0\0\0\0\x82\0\0\0\x36\0\0\0R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\b\0\0\0\0\0\0\0\x2\0\0\0\x3\0\0\0\x4\0\0\0\x5\0\0\0\x6\0\0\0\a\0\0\0\t\0\0\0\x1\0\0\0\n\0\0\0\v\0\0\0\f\0\0\0\r\0\0\0\xe\0\0\0\xf\0\0\0\x10\0\0\0\x11\0\0\0\x12\0\0\0\x13\0\0\0\x14\0\0\0\x15\0\0\0\x16\0\0\0\x17\0\0\0\x18\0\0\0\x19\0\0\0\x1a\0\0\0\x1b\0\0\0\x1c\0\0\0\x1d\0\0\0\x1e\0\0\0\x1f\0\0\0 ?\xd3\xb4\xaa\x33\x9eW\xe4?\xc3@\x1a\xf9\xf9<\xa4\0\0\0\0\0\0\0\0?\xc3\x41\b\xc4\x39@\x5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\x9e\xd3)\"~\x95\xa7\0\0\0\0\0\0\0\0?\xac\xbb\x86<\xb6:\xdd\0\0\0\0\0\0\0\0?\xb6\xc0\x15\x89h\xe7X?\xa2\xd8)B\xc5\xa6\x33?\xac\xdb\x2\x96\xb7[\x9f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xaaJ?\x87\x39\x9b<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xb2Y\xb7\x14\x62\xae`\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n)"
state_version=1
warn_close_playlist=true
write_metadata=true
[PlaylistSequence]
repeat_mode=0
shuffle_mode=0
[Qobuz]
albums_group_by1=1
albums_group_by2=4
albums_group_by3=0
albums_group_by_version=1
albums_separate_albums_by_grouping=false
artists_group_by1=1
artists_group_by2=4
artists_group_by3=0
artists_group_by_version=1
artists_separate_albums_by_grouping=false
search_group_by1=1
search_group_by2=4
search_group_by3=0
search_group_by_version=1
songs_group_by1=1
songs_group_by2=4
songs_group_by3=0
songs_group_by_version=1
songs_separate_albums_by_grouping=false
tab=artists
[Scrobbler]
albumartist=false
enabled=false
love_button=false
offline=false
scrobble_button=false
show_error_dialog=true
sources=collection, file, cd, device, subsonic, tidal, qobuz, stream, somafm, radioparadise, unknown
submit=0
[SerializedSmartPlaylists]
songs\1\data=@ByteArray(\0\0\0\0\x2\x11\0\0\0\x14\x2\0)
songs\1\name=Newest tracks
songs\1\type=1
songs\10\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x14\x2\x1)
songs\10\name=Dynamic random mix
songs\10\type=1
songs\2\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x32\x2\0)
songs\2\name=50 random tracks
songs\2\type=1
songs\3\data=@ByteArray(\0\0\0\x1\x13\x4\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0)
songs\3\name=Ever played
songs\3\type=1
songs\4\data=@ByteArray(\0\0\0\x1\x13\x6\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0)
songs\4\name=Never played
songs\4\type=1
songs\5\data=@ByteArray(\0\0\0\0\x2\x15\0\0\0\x14\x2\0)
songs\5\name=Last played
songs\5\type=1
songs\6\data=@ByteArray(\0\0\0\0\x2\x13\0\0\0\x14\x2\0)
songs\6\name=Most played
songs\6\type=1
songs\7\data=@ByteArray(\0\0\0\0\x2\x16\0\0\0\x14\x2\0)
songs\7\name=Favourite tracks
songs\7\type=1
songs\8\data=@ByteArray(\0\0\0\x2\x16\x5\0\0\0\x6\0?\xe0\0\0\0\0\0\0\0\0\0\0\x1\0\x14\x4\0\0\0\x2\0\0\0\0\x4\0\0\0\0\x1\0\x2\x14\0\0\0\x14\x1\0)
songs\8\name=Least favourite tracks
songs\8\type=1
songs\9\data=@ByteArray(\0\0\0\0\x1\x1\xff\xff\xff\xff\x2\0)
songs\9\name=All tracks
songs\9\type=1
songs\size=10
songs_version=3
[SettingsDialog]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x11\"\0\0\0\x9c\0\0\x14\\\0\0\x3\x9b\0\0\x11\"\0\0\0\x9c\0\0\x14\\\0\0\x3\x9b\0\0\0\x1\x2\0\0\0\a\x80\0\0\x11\"\0\0\0\x9c\0\0\x14\\\0\0\x3\x9b)
[Subsonic]
authmethod=1
downloadalbumcovers=false
enabled=false
group_by1=1
group_by2=4
group_by3=0
group_by_version=1
http2=false
password=
separate_albums_by_grouping=false
serversidescrobbling=true
url=@Variant(\0\0\0\x11\xff\xff\xff\xff)
username=
verifycertificate=true
[Tidal]
albums_group_by1=1
albums_group_by2=4
albums_group_by3=0
albums_group_by_version=1
albums_separate_albums_by_grouping=false
artists_group_by1=1
artists_group_by2=4
artists_group_by3=0
artists_group_by_version=1
artists_separate_albums_by_grouping=false
search_group_by1=1
search_group_by2=4
search_group_by3=0
search_group_by_version=1
songs_group_by1=1
songs_group_by2=4
songs_group_by3=0
songs_group_by_version=1
songs_separate_albums_by_grouping=false
tab=artists
[Transcoder]
faac\bitrate=320000
faac\midside=true
faac\profile=2
faac\shortctl=0
faac\tns=false
ffenc_wmav2\bitrate=320000
flacenc\quality=5
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\xf\0\0\0\0\0\0\0\x12\xb0\0\0\x4\a\0\0\xf\0\0\0\0\0\0\0\x12\xbf\0\0\x4\x1b\0\0\0\x1\x2\0\0\0\a\x80\0\0\xf\0\0\0\0\0\0\0\x12\xb0\0\0\x4\a)
lamemp3enc\bitrate=320
lamemp3enc\cbr=false
lamemp3enc\encoding-engine-quality=2
lamemp3enc\mono=false
lamemp3enc\quality=10
lamemp3enc\target=1
opusenc\bitrate=320000
speexenc\abr=0
speexenc\bitrate=0
speexenc\complexity=3
speexenc\dtx=false
speexenc\mode=0
speexenc\nframes=1
speexenc\quality=10
speexenc\vad=false
speexenc\vbr=false
vorbisenc\bitrate=-1
vorbisenc\managed=false
vorbisenc\max-bitrate=-1
vorbisenc\min-bitrate=-1
vorbisenc\quality=1

View file

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="thunar" version="1.0">
<property name="last-details-view-column-widths" type="string" value="50,50,134,126,50,94,50,168,264,50,50,98,50,1378"/>
<property name="last-details-view-visible-columns" type="string" value="THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE"/>
<property name="last-tabs-left" type="array">
<value type="string" value="file:///home/buliway/backups/Backups/memes"/>
<value type="string" value="file:///home/buliway/backups/Media/Video"/>
</property>
<property name="last-focused-tab-left" type="int" value="1"/>
<property name="last-view" type="string" value="ThunarIconView"/>
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_300_PERCENT"/>
<property name="last-window-width" type="int" value="1906"/>
<property name="last-window-height" type="int" value="1066"/>
<property name="last-window-maximized" type="bool" value="false"/>
<property name="last-separator-position" type="int" value="225"/>
<property name="last-show-hidden" type="bool" value="true"/>
<property name="misc-single-click" type="bool" value="false"/>
<property name="misc-thumbnail-mode" type="string" value="THUNAR_THUMBNAIL_MODE_ALWAYS"/>
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_SIMPLE"/>
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
<property name="tree-icon-emblems" type="bool" value="true"/>
<property name="misc-image-preview-mode" type="string" value="THUNAR_IMAGE_PREVIEW_MODE_EMBEDDED"/>
<property name="misc-middle-click-in-tab" type="bool" value="true"/>
<property name="misc-open-new-window-as-tab" type="bool" value="false"/>
<property name="last-restore-tabs" type="bool" value="true"/>
<property name="misc-show-delete-action" type="bool" value="true"/>
<property name="misc-parallel-copy-mode" type="string" value="THUNAR_PARALLEL_COPY_MODE_ALWAYS"/>
<property name="last-focused-tab-right" type="int" value="0"/>
<property name="misc-confirm-close-multiple-tabs" type="bool" value="false"/>
<property name="last-side-pane" type="string" value="ThunarShortcutsPane"/>
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
</channel>

View file

@ -1,81 +0,0 @@
{ pkgs, ... }: { # https://nixos.wiki/wiki/Visual_Studio_Code
programs.vscode = {
enable = true;
# Что-то из этого может пригодиться, если хочу ставить пакеты без декларативности
# package = pkgs.vscode.fhs; # Почему в вики написано ".fhs", если пакет называется "-fhs"?
# package = pkgs.vscode-with-extensions; # Мб это надо?
# Чтоб узнать sha256, я скачал расширение напрямую с сайта маркетплейса
# А потом в терминале написал "sha256sum filename"
# В оф репе юзают такой скрипт для установки расширений, не знаю поможет ли
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh#L34
# Имя и паблишер берутся из ссылки. После "?itemName" идёт паблишер.нейм
extensions = with pkgs.vscode-extensions; [
jdinhlife.gruvbox # Gruvbox theme
eamodio.gitlens # GitLens - Git supercharged
jnoortheen.nix-ide # Nix language support - syntax highlighting, formatting, and error reporting.
sumneko.lua # Lua language server
naumovs.color-highlight # Highlight web colors in your editor
tamasfe.even-better-toml # Fully-featured TOML support
ms-python.python # Python language support
golang.go # Rich Go language support
mechatroner.rainbow-csv # Rainbow syntax higlighting for CSV and TSV files
# redhat.vscode-xml # XML Language Support by Red Hat
# dotjoshjohnson.xml # XML Tools
# bradlc.vscode-tailwindcss # Tailwind CSS tooling
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ # Руками с гита ставить
{ # https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode
name = "language-hugo-vscode";
publisher = "budparr";
version = "1.3.1";
sha256 = "f5da7cfe02c06fc3899e6b0b55b380280619e7085abcf5b6024f9684ba846c99";
}
# { # https://marketplace.visualstudio.com/items?itemName=dlasagno.rasi
# name = "rasi";
# publisher = "dlasagno";
# version = "1.0.0";
# sha256 = "b3ad1a95e8f770d01b489c6c4652111364216baa00b2670e05b5a8aa9fb0e9f9";
# }
# { # https://marketplace.visualstudio.com/items?itemName=a-h.templ
# name = "templ";
# publisher = "a-h";
# version = "0.0.29";
# sha256 = "459fbec312f63aa061de188b030288c3940b8d4fe29ac2bb8ab4141db27fb6a3";
# }
# { # https://marketplace.visualstudio.com/items?itemName=CraigRBroughton.htmx-attributes
# name = "htmx-attributes";
# publisher = "CraigRBroughton";
# version = "0.8.0";
# sha256 = "4ec7a63d992ad99d77fef6a145a3fbcf6d3a0496826754d1e8e56fe9a783bf29";
# }
# { # https://marketplace.visualstudio.com/items?itemName=Codeium.codeium
# name = "codeium";
# publisher = "Codeium";
# version = "1.29.2";
# sha256 = "86e075c4fd0d60f7fa7b32e497260a86a94ec812d95e3d9f058ce45e77648f89";
# }
];
# userSettings = {
# "telemetry.telemetryLevel" = "off";
# "update.showReleaseNotes" = false;
# "workbench.colorTheme" = "Gruvbox Dark Medium";
# "editor.fontFamily" = "JetBrainsMono Nerd Font";
# "editor.lineNumbers" = "relative";
# };
# globalSnippets = {};
# languageSnippets = {};
# keybindings = [
# {
# key = "ctrl+c";
# command = "editor.action.clipboardCopyAction";
# when = "textInputFocus";
# }
# ];
};
}

View file

@ -1,2 +0,0 @@
require("starship"):setup()
require("full-border"):setup()

View file

@ -1,18 +0,0 @@
# [[manager.prepend_keymap]]
# on = [ "y" ]
# run = [ "yank", '''
# shell --confirm 'for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'
# ''' ]
# desc = "Copy to clipboard on Wayland" # https://yazi-rs.github.io/docs/tips
[[manager.prepend_keymap]]
on = [ "y" ]
run = [ "yank", '''
shell --confirm 'echo "$@" | xclip -i -selection clipboard -t text/uri-list'
''' ]
desc = "Copy to clipboard on Xorg" # https://yazi-rs.github.io/docs/tips
[[manager.prepend_keymap]]
on = ["C"]
run = "plugin ouch --args=zip"
desc = "Compress with ouch"

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 Sonico98
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,32 +0,0 @@
# exifaudio.yazi
Preview audio metadata and cover on [Yazi](https://github.com/sxyazi/yazi).
![image](https://github.com/Sonico98/exifaudio.yazi/assets/61394886/53c1492c-9f05-4c80-a4e7-94fb36f35ca9)
## Installation
```sh
# Linux/macOS
git clone https://github.com/Sonico98/exifaudio.yazi.git ~/.config/yazi/plugins/exifaudio.yazi
# Windows
git clone https://github.com/Sonico98/exifaudio.yazi.git %AppData%\yazi\config\plugins\exifaudio.yazi
```
## Usage
Add the following to your `yazi.toml`:
```toml
[plugin]
prepend_previewers = [
{ mime = "audio/*", run = "exifaudio"}
]
```
Make sure you have [exiftool](https://exiftool.org/) installed and in your `PATH`.
## Thanks
Thanks to [sxyazi](https://github.com/sxyazi) for the PDF previewer code, on which this previewer is based on.

View file

@ -1,139 +0,0 @@
local M = {}
function M:peek()
local cache = ya.file_cache(self)
if not cache then
return
end
local child = Command("exiftool")
:args({
"-q", "-q", "-S", "-Title", "-SortName",
"-TitleSort", "-TitleSortOrder", "-Artist",
"-SortArtist", "-ArtistSort", "-PerformerSortOrder",
"-Album", "-SortAlbum", "-AlbumSort", "-AlbumSortOrder",
"-AlbumArtist", "-SortAlbumArtist", "-AlbumArtistSort",
"-AlbumArtistSortOrder", "-Genre", "-TrackNumber",
"-Year", "-Duration", "-SampleRate",
"-AudioSampleRate", "-AudioBitrate", "-AvgBitrate",
"-Channels", "-AudioChannels", tostring(self.file.url),
})
:stdout(Command.PIPED)
:stderr(Command.NULL)
:spawn()
local limit = self.area.h
local i, metadata = 0, {}
repeat
local next, event = child:read_line()
if event == 1 then
return self:fallback_to_builtin()
elseif event ~= 0 then
break
end
i = i + 1
if i > self.skip then
local m_title, m_tag = prettify(next)
local ti = ui.Span(m_title):bold()
local ta = ui.Span(m_tag)
table.insert(metadata, ui.Line{ti, ta})
table.insert(metadata, ui.Line{})
end
until i >= self.skip + limit
local p = ui.Paragraph(self.area, metadata):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(self, { p })
local cover_width = self.area.w / 2 - 5
local cover_height = (self.area.h / 4) + 3
local bottom_right = ui.Rect {
x = self.area.right - cover_width,
y = self.area.bottom - cover_height,
w = cover_width,
h = cover_height,
}
if self:preload() == 1 then
ya.image_show(cache, bottom_right)
end
end
function prettify(metadata)
local substitutions = {
Sortname = "Sort Title:",
SortName = "Sort Title:",
TitleSort = "Sort Title:",
TitleSortOrder = "Sort Title:",
ArtistSort = "Sort Artist:",
SortArtist = "Sort Artist:",
Artist = "Artist:",
ARTIST = "Artist:",
PerformerSortOrder = "Sort Artist:",
SortAlbumArtist = "Sort Album Artist:",
AlbumArtistSortOrder = "Sort Album Artist:",
AlbumArtistSort = "Sort Album Artist:",
AlbumSortOrder = "Sort Album:",
AlbumSort = "Sort Album:",
SortAlbum = "Sort Album:",
Album = "Album:",
ALBUM = "Album:",
AlbumArtist = "Album Artist:",
Genre = "Genre:",
GENRE = "Genre:",
TrackNumber = "Track Number:",
Year = "Year:",
Duration = "Duration:",
AudioBitrate = "Bitrate:",
AvgBitrate = "Average Bitrate:",
AudioSampleRate = "Sample Rate:",
SampleRate = "Sample Rate:",
AudioChannels = "Channels:"
}
for k, v in pairs(substitutions) do
metadata = metadata:gsub(tostring(k)..":", v, 1)
end
-- Separate the tag title from the tag data
local t={}
for str in string.gmatch(metadata , "([^"..":".."]+)") do
table.insert(t, str)
end
-- Add back semicolon to title, rejoin tag data if it happened to contain a semicolon
return t[1]..":", table.concat(t, ":", 2)
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + units)),
only_if = tostring(self.file.url),
})
end
end
function M:preload()
local cache = ya.file_cache(self)
if not cache or fs.cha(cache) then
return 1
end
local output = Command("exiftool")
:args({ "-b", "-CoverArt", "-Picture", tostring(self.file.url) })
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:output()
if not output then
return 0
end
return fs.write(cache, output.stdout) and 1 or 2
end
return M

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 yazi-rs
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,28 +0,0 @@
# full-border.yazi
Add a full border to Yazi to make it look fancier.
![full-border](https://github.com/yazi-rs/plugins/assets/17523360/ef81b560-2465-4d36-abf2-5d21dcb7b987)
## Installation
```sh
ya pack -a yazi-rs/plugins#full-border
```
## Usage
Add this to your `init.lua` to enable the plugin:
```lua
require("full-border"):setup()
```
Or you can customize the border type:
```lua
require("full-border"):setup {
-- Available values: ui.Border.PLAIN, ui.Border.ROUNDED
type = ui.Border.PLAIN,
}
```

View file

@ -1,40 +0,0 @@
local function setup(_, opts)
local type = opts and opts.type or ui.Border.ROUNDED
local old_build = Tab.build
Tab.build = function(self, ...)
local bar = function(c, x, y)
if x <= 0 or x == self._area.w - 1 then
return ui.Bar(ui.Rect.default, ui.Bar.TOP)
end
return ui.Bar(
ui.Rect { x = x, y = math.max(0, y), w = ya.clamp(0, self._area.w - x, 1), h = math.min(1, self._area.h) },
ui.Bar.TOP
):symbol(c)
end
local c = self._chunks
self._chunks = {
c[1]:padding(ui.Padding.y(1)),
c[2]:padding(ui.Padding(c[1].w > 0 and 0 or 1, c[3].w > 0 and 0 or 1, 1, 1)),
c[3]:padding(ui.Padding.y(1)),
}
local style = THEME.manager.border_style
self._base = ya.list_merge(self._base or {}, {
ui.Border(self._area, ui.Border.ALL):type(type):style(style),
ui.Bar(self._chunks[1], ui.Bar.RIGHT):style(style),
ui.Bar(self._chunks[3], ui.Bar.LEFT):style(style),
bar("", c[1].right - 1, c[1].y),
bar("", c[1].right - 1, c[1].bottom - 1),
bar("", c[2].right, c[2].y),
bar("", c[2].right, c[2].bottom - 1),
})
old_build(self, ...)
end
end
return { setup = setup }

View file

@ -1,7 +0,0 @@
Copyright © 2024 Reledia <reledia@prontonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,18 +0,0 @@
# glow.yazi
Plugin for [Yazi](https://github.com/sxyazi/yazi) to preview markdown files with [glow](https://github.com/charmbracelet/glow). To install, clone the repo inside your `~/.config/yazi/plugins/`:
```bash
git clone https://github.com/Reledia/glow.yazi.git
```
then include it in your `yazi.toml` to use:
```toml
[plugin]
prepend_previewers = [
{ name = "*.md", run = "glow" },
]
```
Make sure you have [glow](https://github.com/charmbracelet/glow) installed, and can be found in `PATH`.

View file

@ -1,66 +0,0 @@
local M = {}
function M:peek()
local child = Command("glow")
:args({
"--style",
"dark",
"--width",
tostring(self.area.w),
tostring(self.file.url),
})
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
if not child then
return self:fallback_to_builtin()
end
local limit = self.area.h
local i, lines = 0, ""
repeat
local next, event = child:read_line()
if event == 1 then
return self:fallback_to_builtin()
elseif event ~= 0 then
break
end
i = i + 1
if i > self.skip then
lines = lines .. next
end
until i >= self.skip + limit
child:start_kill()
if self.skip > 0 and i < self.skip + limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, i - limit)), only_if = tostring(self.file.url), upper_bound = "" }
)
else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) })
end
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + step)),
only_if = tostring(self.file.url),
})
end
end
function M:fallback_to_builtin()
local _, bound = ya.preview_code(self)
if bound then
ya.manager_emit("peek", { tostring(bound), only_if = tostring(self.file.url), upper_bound = "" })
end
end
return M

View file

@ -1,7 +0,0 @@
Copyright © 2024 Reledia <reledia@prontonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,26 +0,0 @@
# miller.yazi
[Miller](https://github.com/johnkerl/miller) now in [yazi](https://github.com/sxyazi/yazi). To install, clone the repo inside `~/.config/yazi/plugins/`:
```toml
[plugin]
prepend_previewers = [
{ mime = "text/csv", run = "miller"},
]
```
## Preview
![preview](https://github.com/Reledia/miller.yazi/blob/main/preview.png?raw=true)
## Color
To change colors of keys and values, edit the `init.lua` file after the `--key-color` and `--value-color` flags. To view a list of possible colors, use `mlr --list-color-names`. Make sure to have miller installed and inside your PATH.
## Other types of file
To adapt this plugin to the other format supported from miller (like json):
- copy the plugin folder
- change the name of the copied folder into miller_(fmt)
- change the `--icsv` flag inside `init.lua` to `--i(fmt)`
- add the correct mime/name rule into `prepend_previewers` and the exec as `miller_(fmt)`

View file

@ -1,59 +0,0 @@
local M = {}
function M:peek()
local child = Command("mlr")
:args({
"--icsv",
"--opprint",
"-C",
"--key-color",
"darkcyan",
"--value-color",
"grey70",
"cat",
tostring(self.file.url),
})
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
local limit = self.area.h
local i, lines = 0, ""
repeat
local next, event = child:read_line()
if event == 1 then
ya.err(tostring(event))
elseif event ~= 0 then
break
end
i = i + 1
if i > self.skip then
lines = lines .. next
end
until i >= self.skip + limit
child:start_kill()
if self.skip > 0 and i < self.skip + limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, i - limit)), only_if = tostring(self.file.url), upper_bound = "" }
)
else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) })
end
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + step)),
only_if = tostring(self.file.url),
})
end
end
return M

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 ndtoan96
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,67 +0,0 @@
# ouch.yazi
[ouch](https://github.com/ouch-org/ouch) plugin for [Yazi](https://github.com/sxyazi/yazi).
![ouch.yazi](https://github.com/ndtoan96/ouch.yazi/assets/33489972/946397ec-b37b-4bf4-93f1-c676fc8e59f2)
## Features
- Archive preview
- Compression
## Installation
```bash
# Linux/macOS
git clone https://github.com/ndtoan96/ouch.yazi.git ~/.config/yazi/plugins/ouch.yazi
# Windows
git clone https://github.com/ndtoan96/ouch.yazi.git %AppData%\yazi\config\plugins\ouch.yazi
```
Make sure you have [ouch](https://github.com/ouch-org/ouch) installed and in your `PATH`.
## Usage
### Preview
For archive preview, add this to your `yazi.toml`:
```toml
[plugin]
prepend_previewers = [
# Archive previewer
{ mime = "application/*zip", run = "ouch" },
{ mime = "application/x-tar", run = "ouch" },
{ mime = "application/x-bzip2", run = "ouch" },
{ mime = "application/x-7z-compressed", run = "ouch" },
{ mime = "application/x-rar", run = "ouch" },
{ mime = "application/x-xz", run = "ouch" },
]
```
Now go to an archive on Yazi, you should see the archive's content in the preview pane. You can use `Alt-j` and `Alt-k` to roll up and down the preview.
If you want to change the icon or the style of text, you can modify the `peek` function in `init.lua` file (all of them are stored in the `lines` variable).
### Compression
For compession, add this to your `keymap.toml`:
```toml
[[manager.prepend_keymap]]
on = ["C"]
run = "plugin ouch --args=zip"
desc = "Compress with ouch"
```
The `--args=zip` part tells the plugin that default format is `zip`. You can change that to whatever format you want.
### Decompression
This plugin does not provide a decompression feature because it already is supported by Yazi.
To decompress with `ouch`, configure the opener in `yazi.toml`.
```toml
[opener]
extract = [
{ run = 'ouch d -y "%*"', desc = "Extract here with ouch", for = "windows" },
{ run = 'ouch d -y "$@"', desc = "Extract here with ouch", for = "unix" },
]
```

View file

@ -1,143 +0,0 @@
local M = {}
function M:peek()
local child = Command("ouch")
:args({ "l", "-t", "-y", tostring(self.file.url) })
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
local limit = self.area.h
local file_name = string.match(tostring(self.file.url), ".*[/\\](.*)")
local lines = string.format("\x1b[2m📁 %s\x1b[0m\n", file_name)
local num_lines = 1
local num_skip = 0
repeat
local line, event = child:read_line()
if event == 1 then
ya.err(tostring(event))
elseif event ~= 0 then
break
end
if line:find('Archive', 1, true) ~= 1 and line:find('[INFO]', 1, true) ~= 1 then
if num_skip >= self.skip then
lines = lines .. line
num_lines = num_lines + 1
else
num_skip = num_skip + 1
end
end
until num_lines >= limit
child:start_kill()
if self.skip > 0 and num_lines < limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, self.skip - (limit - num_lines))), only_if = tostring(self.file.url), upper_bound = "" }
)
else
ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) })
end
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
math.max(0, cx.active.preview.skip + step),
only_if = tostring(self.file.url),
})
end
end
-- Check if file exists
local function file_exists(name)
local f = io.open(name, "r")
if f ~= nil then
io.close(f)
return true
else
return false
end
end
-- Get the files that need to be compressed and infer a default archive name
local get_compression_target = ya.sync(function()
local tab = cx.active
local default_name
local paths = {}
if #tab.selected == 0 then
if tab.current.hovered then
local name = tab.current.hovered.name
default_name = name
table.insert(paths, name)
else
return
end
else
default_name = tab.current.cwd:name()
for _, url in pairs(tab.selected) do
table.insert(paths, tostring(url))
end
-- The compression targets are aquired, now unselect them
ya.manager_emit("escape", {})
end
return paths, default_name
end)
local function invoke_compress_command(paths, name)
local cmd_output, err_code = Command("ouch")
:args({ "c", "-y" })
:args(paths)
:arg(name)
:stderr(Command.PIPED)
:output()
if err_code ~= nil then
ya.notify({
title = "Failed to run ouch command",
content = "Status: " .. err_code,
timeout = 5.0,
level = "error",
})
elseif not cmd_output.status.success then
ya.notify({
title = "Compression failed: status code " .. cmd_output.status.code,
content = cmd_output.stderr,
timeout = 5.0,
level = "error",
})
end
end
function M:entry(args)
local default_fmt = args[1]
-- Get the files that need to be compressed and infer a default archive name
local paths, default_name = get_compression_target()
-- Get archive name from user
local output_name, name_event = ya.input({
title = "Create archive:",
value = default_name .. "." .. default_fmt,
position = { "top-center", y = 3, w = 40 },
})
if name_event ~= 1 then
return
end
-- Get confirmation if file exists
if file_exists(output_name) then
local confirm, confirm_event = ya.input({
title = "Overwrite " .. output_name .. "? (y/N)",
position = { "top-center", y = 3, w = 40 },
})
if not (confirm_event == 1 and confirm:lower() == "y") then
return
end
end
invoke_compress_command(paths, output_name)
end
return M

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 Rolv Apneseth
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,99 +0,0 @@
# starship.yazi
Starship prompt plugin for [Yazi](https://github.com/sxyazi/yazi)
<https://github.com/Rolv-Apneseth/starship.yazi/assets/69486699/f7314687-5cb1-4d66-8d9d-cca960ba6716>
## Requirements
- [Yazi](https://github.com/sxyazi/yazi) - latest main branch
- [starship](https://github.com/starship/starship)
### Package manager
```bash
ya pack -a Rolv-Apneseth/starship
```
### Manual
#### Linux / MacOS
```sh
git clone https://github.com/Rolv-Apneseth/starship.yazi.git ~/.config/yazi/plugins/starship.yazi
```
#### Windows
```sh
git clone https://github.com/Rolv-Apneseth/starship.yazi.git %AppData%\yazi\config\plugins\starship.yazi
```
## Usage
Add this to `~/.config/yazi/init.lua`:
```lua
require("starship"):setup()
```
Make sure you have [starship](https://github.com/starship/starship) installed and in your `PATH`.
## Extra
If you use a `starship` theme with a background colour, it might look a bit to cramped on just the one line `Yazi` gives the header by default. To fix this, you can add this to your `init.lua`:
<details>
<summary>Click to expand</summary>
```lua
local old_build = Tab.build
Tab.build = function(self, ...)
local bar = function(c, x, y)
if x <= 0 or x == self._area.w - 1 then
return ui.Bar(ui.Rect.default, ui.Bar.TOP)
end
return ui.Bar(
ui.Rect({
x = x,
y = math.max(0, y),
w = ya.clamp(0, self._area.w - x, 1),
h = math.min(1, self._area.h),
}),
ui.Bar.TOP
):symbol(c)
end
local c = self._chunks
self._chunks = {
c[1]:padding(ui.Padding.y(1)),
c[2]:padding(ui.Padding(c[1].w > 0 and 0 or 1, c[3].w > 0 and 0 or 1, 1, 1)),
c[3]:padding(ui.Padding.y(1)),
}
local style = THEME.manager.border_style
self._base = ya.list_merge(self._base or {}, {
-- Enable for full border
--[[ ui.Border(self._area, ui.Border.ALL):type(ui.Border.ROUNDED):style(style), ]]
ui.Bar(self._chunks[1], ui.Bar.RIGHT):style(style),
ui.Bar(self._chunks[3], ui.Bar.LEFT):style(style),
bar("┬", c[1].right - 1, c[1].y),
bar("┴", c[1].right - 1, c[1].bottom - 1),
bar("┬", c[2].right, c[2].y),
bar("┴", c[2].right, c[1].bottom - 1),
})
old_build(self, ...)
end
```
</details>
> [!NOTE]
> This works by overriding your `Tab.build` function so make sure this is the only place you're doing that in your config. For example, this would be incompatible with the [full-border plugin](https://github.com/yazi-rs/plugins/tree/main/full-border.yazi)
## Thanks
- [sxyazi](https://github.com/sxyazi) for providing the code for this plugin and the demo video [in this comment](https://github.com/sxyazi/yazi/issues/767#issuecomment-1977082834)

View file

@ -1,28 +0,0 @@
local save = ya.sync(function(st, cwd, output)
if cx.active.current.cwd == Url(cwd) then
st.output = output
ya.render()
end
end)
return {
setup = function(st)
Header:children_remove(1, Header.LEFT)
Header:children_add(function() return ui.Line.parse(st.output or "") end, 1000, Header.LEFT)
ps.sub("cd", function()
local cwd = cx.active.current.cwd
if st.cwd ~= cwd then
st.cwd = cwd
ya.manager_emit("plugin", { st._id, args = ya.quote(tostring(cwd), true) })
end
end)
end,
entry = function(_, args)
local output = Command("starship"):arg("prompt"):cwd(args[1]):env("STARSHIP_SHELL", ""):output()
if output then
save(args[1], output.stdout:gsub("^%s+", ""))
end
end,
}

View file

@ -1,46 +0,0 @@
{ pkgs, ... }: {
# yazi хуже ranger для моих потребностей, стоит на тесты. Ниже один из примеров, где yazi уступает
# Если открыть картинку через yazi, то он просто передаст картинку или каталог в качестве аргумента,
# из-за чего сортировка при пролистывании картинок будет "рандомной"
# Если же открыть картинку через ranger, то в качетве аргумента он передаст список файлов,
# где они отсортированы в том порядке, в котором отображаются у меня на экране в самом ranger
home = {
packages = with pkgs; [
ffmpegthumbnailer # for video thumbnails
unar # for archive preview
jq # for JSON preview
poppler # for PDF preview
fd # for file searching
ripgrep # for file content searching
fzf # for quick file subtree navigation
zoxide # for historical directories navigation
xclip # for system clipboard support on x11
#xsel # как xclip, но вроде как функционал больше
#wl-clipboard # for system clipboard support on wayland
# for plugins
exiftool # for exifaudio.yazi
glow # for glow.yazi
ouch # for ouch.yazi
miller # for miller.yazi
starship # for starship.yazi
];
file = {
".config/yazi/yazi.toml".source = ./yazi.toml;
".config/yazi/keymap.toml".source = ./keymap.toml;
".config/yazi/plugins".source = ./plugins; # https://yazi-rs.github.io/docs/resources/#functional
};
};
programs.yazi = { # Файловый менеджер в терминале https://yazi-rs.github.io/features
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
# enableFishIntegration = true;
# enableNushellIntegration = true;
};
}

View file

@ -1,33 +0,0 @@
# Тут будут мои настройки
[manager]
sort_by = "natural" # Как алфавит, но не "1 < 10 < 2", а "1 < 2 < 10"
sort_dir_first = true # Чтоб директории были первыми, не смотря на сортировку
#show_hidden = true # Показывать скрытые файлы. Спорно, потому что они первые в списке, бесит. Мб проще бинд юзать
[plugin]
prepend_previewers = [
# Preview markdown files
{ name = "*.md", run = "glow" },
# Preview audio metadata and cover
{ mime = "audio/*", run = "exifaudio"},
# Preview csv files
{ mime = "text/csv", run = "miller"},
# Preview archives
{ mime = "application/*zip", run = "ouch" },
{ mime = "application/x-tar", run = "ouch" },
{ mime = "application/x-bzip2", run = "ouch" },
{ mime = "application/x-7z-compressed", run = "ouch" },
{ mime = "application/x-rar", run = "ouch" },
{ mime = "application/x-xz", run = "ouch" },
]
[opener]
view = [
{ run = 'imv "$@"', desc = "View selected images", orphan = true },
]
[open]
prepend_rules = [ # Чтоб мои настройки были в приоритете
{ mime = "image/*", use = "view" },
]

View file

@ -447,9 +447,8 @@
## Design ##
############
inputs.affinity-nix.packages.${pkgs.system}.v3
# krita # Рисовать 1. Часто крашится
# pkgs2.gimp3 # Рисовать 2. Потом выберу что оставить
inputs.affinity-nix.packages.${pkgs.system}.v3 # Бесплатная замена photoshop через wine
krita # Рисовать
pkgs2.davinci-resolve # Рендер видео. Проприетарное, бесплатная версия
blender-hip # 3д графика и рендер видео
gcolor3 # GUI color picker
@ -462,6 +461,7 @@
obsidian # Заметки
pkgs2.planify # Task manager
pkgs2.ticktick # Powerful to-do app, proprietary
#########
## IDE ##