ranger fix

This commit is contained in:
Buliway 2024-08-18 01:02:17 +03:00
parent af42fd9f21
commit 13b82aa5ac
10 changed files with 237 additions and 77 deletions

View file

@ -9,7 +9,7 @@ from ranger.ext.get_executables import get_executables
class YankContent(Command):
"""
Copy the content of image file and text file with xclip
Copy the file path as a URI with xclip
"""
def execute(self):
@ -29,22 +29,29 @@ class YankContent(Command):
self.fm.notify('{} is not a file.'.format(file.relative_path))
return
relative_path = file.relative_path
cmd = ['xclip', '-selection', 'clipboard']
if not file.is_binary():
with open(file.path, 'rb') as fd:
subprocess.check_call(cmd, stdin=fd)
elif file.image:
cmd += ['-t', file.mimetype, file.path]
subprocess.check_call(cmd)
self.fm.notify('Content of {} is copied to x clipboard'.format(relative_path))
else:
self.fm.notify('{} is not an image file or a text file.'.format(relative_path))
# relative_path = file.relative_path
# cmd = ['xclip', '-selection', 'clipboard']
# if not file.is_binary():
# with open(file.path, 'rb') as fd:
# subprocess.check_call(cmd, stdin=fd)
# elif file.image:
# cmd += ['-t', file.mimetype, file.path]
# subprocess.check_call(cmd)
# self.fm.notify('Content of {} is copied to x clipboard'.format(relative_path))
# else:
# self.fm.notify('{} is not an image file or a text file.'.format(relative_path))
# Выше гавно стоковое. Я заменил на это
cmd = "echo -n 'file://{}' | xclip -sel clip -t text/uri-list -i".format(file.path)
subprocess.check_call(cmd, shell=True)
self.fm.notify("File path {} is copied to clipboard as a URI".format(file.relative_path))
def tab(self, tabnum):
return self._tab_directory_content()
class YankContentWl(Command):
"""
Copy the content of image file and text file with wl-clipboard

View file

@ -40,12 +40,15 @@ FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lowe
## Settings
HIGHLIGHT_SIZE_MAX=262143 # 256KiB
HIGHLIGHT_TABWIDTH=${HIGHLIGHT_TABWIDTH:-8}
HIGHLIGHT_STYLE=${HIGHLIGHT_STYLE:-pablo}
HIGHLIGHT_TABWIDTH="${HIGHLIGHT_TABWIDTH:-8}"
HIGHLIGHT_STYLE="${HIGHLIGHT_STYLE:-pablo}"
HIGHLIGHT_OPTIONS="--replace-tabs=${HIGHLIGHT_TABWIDTH} --style=${HIGHLIGHT_STYLE} ${HIGHLIGHT_OPTIONS:-}"
PYGMENTIZE_STYLE=${PYGMENTIZE_STYLE:-autumn}
OPENSCAD_IMGSIZE=${RNGR_OPENSCAD_IMGSIZE:-1000,1000}
OPENSCAD_COLORSCHEME=${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}
PYGMENTIZE_STYLE="${PYGMENTIZE_STYLE:-autumn}"
BAT_STYLE="${BAT_STYLE:-plain}"
OPENSCAD_IMGSIZE="${RNGR_OPENSCAD_IMGSIZE:-1000,1000}"
OPENSCAD_COLORSCHEME="${RNGR_OPENSCAD_COLORSCHEME:-Tomorrow Night}"
SQLITE_TABLE_LIMIT=20 # Display only the top <limit> tables in database, set to 0 for no exhaustive preview (only the sqlite_master table is displayed).
SQLITE_ROW_LIMIT=5 # Display only the first and the last (<limit> - 1) records in each table, set to 0 for no limits.
handle_extension() {
case "${FILE_EXTENSION_LOWER}" in
@ -80,12 +83,16 @@ handle_extension() {
exit 1;;
## OpenDocument
odt|ods|odp|sxw)
odt|sxw)
## Preview as text conversion
odt2txt "${FILE_PATH}" && exit 5
## Preview as markdown conversion
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
exit 1;;
ods|odp)
## Preview as text conversion (unsupported by pandoc for markdown)
odt2txt "${FILE_PATH}" && exit 5
exit 1;;
## XLSX
xlsx)
@ -109,6 +116,14 @@ handle_extension() {
python -m json.tool -- "${FILE_PATH}" && exit 5
;;
## Jupyter Notebooks
ipynb)
jupyter nbconvert --to markdown "${FILE_PATH}" --stdout | env COLORTERM=8bit bat --color=always --style=plain --language=markdown && exit 5
jupyter nbconvert --to markdown "${FILE_PATH}" --stdout && exit 5
jq --color-output . "${FILE_PATH}" && exit 5
python -m json.tool -- "${FILE_PATH}" && exit 5
;;
## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected
## by file(1).
dff|dsf|wv|wvc)
@ -127,12 +142,14 @@ handle_image() {
local mimetype="${1}"
case "${mimetype}" in
# SVG
## SVG
image/svg+xml|image/svg)
convert -- "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
rsvg-convert --keep-aspect-ratio --width "${DEFAULT_SIZE%x*}" "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}.png" \
&& mv "${IMAGE_CACHE_PATH}.png" "${IMAGE_CACHE_PATH}" \
&& exit 6
exit 1;;
# DjVu
## DjVu
image/vnd.djvu)
ddjvu -format=tiff -quality=90 -page=1 -size="${DEFAULT_SIZE}" \
- "${IMAGE_CACHE_PATH}" < "${FILE_PATH}" \
@ -149,16 +166,24 @@ handle_image() {
convert -- "${FILE_PATH}" -auto-orient "${IMAGE_CACHE_PATH}" && exit 6
fi
## `w3mimgdisplay` will be called for all images (unless overriden
## `w3mimgdisplay` will be called for all images (unless overridden
## as above), but might fail for unsupported types.
exit 7;;
# Video
## Video
video/*)
# Thumbnail
# Get embedded thumbnail
ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy "${IMAGE_CACHE_PATH}" && exit 6
# Get frame 10% into video
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
exit 1;;
## Audio
audio/*)
# Get embedded thumbnail
ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy \
"${IMAGE_CACHE_PATH}" && exit 6;;
## PDF
application/pdf)
pdftoppm -f 1 -l 1 \
@ -170,7 +195,7 @@ handle_image() {
&& exit 6 || exit 1;;
# ePub, MOBI, FB2 (using Calibre)
## ePub, MOBI, FB2 (using Calibre)
application/epub+zip|application/x-mobipocket-ebook|\
application/x-fictionbook+xml)
# ePub (using https://github.com/marianosimone/epub-thumbnailer)
@ -218,7 +243,8 @@ handle_image() {
# { [ "$rar" ] && fn=$(unrar lb -p- -- "${FILE_PATH}"); } || \
# { [ "$zip" ] && fn=$(zipinfo -1 -- "${FILE_PATH}"); } || return
#
# fn=$(echo "$fn" | python -c "import sys; import mimetypes as m; \
# fn=$(echo "$fn" | python -c "from __future__ import print_function; \
# import sys; import mimetypes as m; \
# [ print(l, end='') for l in sys.stdin if \
# (m.guess_type(l[:-1])[0] or '').startswith('image/') ]" |\
# sort -V | head -n 1)
@ -248,17 +274,21 @@ handle_image() {
}
case "${FILE_EXTENSION_LOWER}" in
## 3D models
## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
## is hardcoded as jpeg. So we make a tempfile.png and just
## move/rename it to jpg. This works because image libraries are
## smart enough to handle it.
csg|scad)
openscad_image "${FILE_PATH}" && exit 6
;;
3mf|amf|dxf|off|stl)
openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
;;
## 3D models
## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
## is hardcoded as jpeg. So we make a tempfile.png and just
## move/rename it to jpg. This works because image libraries are
## smart enough to handle it.
csg|scad)
openscad_image "${FILE_PATH}" && exit 6
;;
3mf|amf|dxf|off|stl)
openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
;;
drawio)
draw.io -x "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" \
--width "${DEFAULT_SIZE%x*}" && exit 6
exit 1;;
esac
}
@ -276,12 +306,17 @@ handle_mime() {
## DOCX, ePub, FB2 (using markdown)
## You might want to remove "|epub" and/or "|fb2" below if you have
## uncommented other methods to preview those formats
# *wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
*wordprocessingml.document)
*wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml)
## Preview as markdown conversion
pandoc -s -t markdown -- "${FILE_PATH}" && exit 5
exit 1;;
## E-mails
message/rfc822)
## Parsing performed by mu: https://github.com/djcb/mu
mu view -- "${FILE_PATH}" && exit 5
exit 1;;
## XLS
*ms-excel)
## Preview as csv conversion
@ -290,6 +325,93 @@ handle_mime() {
xls2csv -- "${FILE_PATH}" && exit 5
exit 1;;
## SQLite
*sqlite3)
## Preview as text conversion
sqlite_tables="$( sqlite3 "file:${FILE_PATH}?mode=ro" '.tables' )" \
|| exit 1
[ -z "${sqlite_tables}" ] &&
{ echo "Empty SQLite database." && exit 5; }
sqlite_show_query() {
sqlite-utils query "${FILE_PATH}" "${1}" --table --fmt fancy_grid \
|| sqlite3 "file:${FILE_PATH}?mode=ro" "${1}" -header -column
}
## Display basic table information
sqlite_rowcount_query="$(
sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
'SELECT group_concat(
"SELECT """ || name || """ AS tblname,
count(*) AS rowcount
FROM " || name,
" UNION ALL "
)
FROM sqlite_master
WHERE type="table" AND name NOT LIKE "sqlite_%";'
)"
sqlite_show_query \
"SELECT tblname AS 'table', rowcount AS 'count',
(
SELECT '(' || group_concat(name, ', ') || ')'
FROM pragma_table_info(tblname)
) AS 'columns',
(
SELECT '(' || group_concat(
upper(type) || (
CASE WHEN pk > 0 THEN ' PRIMARY KEY' ELSE '' END
),
', '
) || ')'
FROM pragma_table_info(tblname)
) AS 'types'
FROM (${sqlite_rowcount_query});"
if [ "${SQLITE_TABLE_LIMIT}" -gt 0 ] &&
[ "${SQLITE_ROW_LIMIT}" -ge 0 ]; then
## Do exhaustive preview
echo && printf '>%.0s' $( seq "${PV_WIDTH}" ) && echo
sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
"SELECT name FROM sqlite_master
WHERE type='table' AND name NOT LIKE 'sqlite_%'
LIMIT ${SQLITE_TABLE_LIMIT};" |
while read -r sqlite_table; do
sqlite_rowcount="$(
sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
"SELECT count(*) FROM ${sqlite_table}"
)"
echo
if [ "${SQLITE_ROW_LIMIT}" -gt 0 ] &&
[ "${SQLITE_ROW_LIMIT}" \
-lt "${sqlite_rowcount}" ]; then
echo "${sqlite_table} [${SQLITE_ROW_LIMIT} of ${sqlite_rowcount}]:"
sqlite_ellipsis_query="$(
sqlite3 "file:${FILE_PATH}?mode=ro" -noheader \
"SELECT 'SELECT ' || group_concat(
'''...''', ', '
)
FROM pragma_table_info(
'${sqlite_table}'
);"
)"
sqlite_show_query \
"SELECT * FROM (
SELECT * FROM ${sqlite_table} LIMIT 1
)
UNION ALL ${sqlite_ellipsis_query} UNION ALL
SELECT * FROM (
SELECT * FROM ${sqlite_table}
LIMIT (${SQLITE_ROW_LIMIT} - 1)
OFFSET (
${sqlite_rowcount}
- (${SQLITE_ROW_LIMIT} - 1)
)
);"
else
echo "${sqlite_table} [${sqlite_rowcount}]:"
sqlite_show_query "SELECT * FROM ${sqlite_table};"
fi
done
fi
exit 5;;
## Text
text/* | */xml)
## Syntax highlight
@ -306,7 +428,7 @@ handle_mime() {
env HIGHLIGHT_OPTIONS="${HIGHLIGHT_OPTIONS}" highlight \
--out-format="${highlight_format}" \
--force -- "${FILE_PATH}" && exit 5
env COLORTERM=8bit bat --color=always --style="plain" \
env COLORTERM=8bit bat --color=always --style="${BAT_STYLE}" \
-- "${FILE_PATH}" && exit 5
pygmentize -f "${pygmentize_format}" -O "style=${PYGMENTIZE_STYLE}"\
-- "${FILE_PATH}" && exit 5
@ -331,12 +453,16 @@ handle_mime() {
mediainfo "${FILE_PATH}" && exit 5
exiftool "${FILE_PATH}" && exit 5
exit 1;;
## ELF files (executables and shared objects)
application/x-executable | application/x-pie-executable | application/x-sharedlib)
readelf -WCa "${FILE_PATH}" && exit 5
exit 1;;
esac
}
handle_fallback() {
echo '----- File Type Classification -----' && file --dereference --brief -- "${FILE_PATH}" && exit 5
exit 1
}
@ -348,4 +474,4 @@ handle_extension
handle_mime "${MIMETYPE}"
handle_fallback
exit 1
exit 1

View file

@ -7,5 +7,9 @@
enableFishIntegration = true;
enableZshIntegration = true;
};
settings = {
window_padding_width = 5;
};
};
}

View file

@ -39,9 +39,14 @@
};
# Environment variables that will be set for zsh session.
sessionVariables = {
HISTORY_SUBSTRING_SEARCH_FUZZY = true;
};
# sessionVariables = {
# HISTORY_SUBSTRING_SEARCH_FUZZY = true; # Нечёткий поиск для стрелок вверх/вниз. Не работает
# };
# Extra commands that should be added to .zshrc
# initExtra = ''
# ssh-add ~/.ssh/id_ed25519
# '';
historySubstringSearch.enable = true; # Чтоб вверх/вниз учитывал уже написанную команду
@ -50,7 +55,7 @@
plugins = [ # Комментирую то, в надобности чего не уверен, но показалось интересным. Можно удалить
# "alias-finder" # Напомнит, если у написанной команды есть алиас (нет, так что заменил пакетом)
"aliases" # "als" в терминале покажет все алиасы (нет). Можно добавить слово для фильтрации
"autoenv" # If a directory contains an .env file, it will automatically be executed when you cd into it
# "autoenv" # If a directory contains an .env file, it will automatically be executed when you cd into it (нет)
"bgnotify" # Оповещения для долгих комманд. Make sure you have "notify-send" or "kdialog" installed
"colored-man-pages" # Adds colors to man pages
#"command-not-found" # Скажет какой пакет скачать, если команда не найдена
@ -91,7 +96,7 @@
};
home.packages = with pkgs; [
zsh-autoenv # Для плагина autoenv в oh-my-zsh
zsh-autoenv # Плагина autoenv в oh-my-zsh не работает. Мб этот заработает
zsh-you-should-use # Напомнит, если у написанной команды есть алиас
# zsh-nix-shell # zsh plugin that lets you use zsh in nix-shell shell
];

View file

@ -45,7 +45,7 @@ Copy of `man bspc`
## Узнать имя и класс окна
Чтобы узнать имя окна, пишем в терминал `xprop` и кликаем по нужному окну. Команда xprop выведет много информации о выбранном окне. . Ищите строки, содержащие `WM_CLASS` и `WM_NAME`. Или просто используем grep:
Чтобы узнать имя окна, пишем в терминал `xprop` и кликаем по нужному окну. Команда xprop выведет много информации о выбранном окне. Ищите строки, содержащие `WM_CLASS` и `WM_NAME`. Или просто используем grep:
```sh
xprop | grep -E 'WM_CLASS|WM_NAME'
```

View file

@ -50,6 +50,10 @@
"polybar" = { layer = "above"; };
"Screenkey" = { manage = false; };
"gcolor3" = { state = "floating"; };
"steam" = { state = "floating"; };
"steam:steamwebhelper:Steam" = { state = "tiled"; };
"SshAskpass" = { state = "floating"; };
"Nm-connection-editor" = { state = "floating"; };
"ksnip" = floating1600x900;
"ark" = floating1200x800;
"nekoray" = floating1200x800;
@ -58,19 +62,18 @@
"qt5ct" = floating1200x800;
"qt6ct" = floating1200x800;
"pavucontrol" = floating900x600;
"nm-connection-editor" = floating900x600;
# blueman-манагер надо флоатинг
};
settings = {
# Цвет бордера для не активного окна
normal_border_color = lib.mkForce "#${config.lib.stylix.colors.base0B}";
normal_border_color = lib.mkForce "#${config.lib.stylix.colors.base0B}"; # #b8bb26
# Цвет бордера для фокусед окна на анфокусед мониторе (считаей не активное окно)
active_border_color = lib.mkForce "#${config.lib.stylix.colors.base0B}";
active_border_color = lib.mkForce "#${config.lib.stylix.colors.base0B}"; # #b8bb26
# Цвет бордера для окна в фокусе
focused_border_color = lib.mkForce "#${config.lib.stylix.colors.base09}";
focused_border_color = lib.mkForce "#${config.lib.stylix.colors.base09}"; # #fe8019
# Устанавливает ширину границ окон в 2 пикселя.
border_width = 2;

View file

@ -77,7 +77,7 @@ in {
## rofi ##
##########
"super + a" = "rofi -show drun"; # Applications. Запускатор софта
"super + a" = "rofi -show drun -show-icons"; # Applications. Запускатор софта
"super + c" = "rofi -show calc -modi calc -no-show-match -no-sort"; # Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`.
"super + p" = "rofi-pass"; # Passwords. Пароли из утилиты pass
"super + v" = "clipmenu"; # История буфера обмена. Как ctrl+v, но через win.

View file

@ -66,7 +66,6 @@
##################################################
## Хули блять у всех работают темы для qt ##
## Один я далбаёб проебал 3 дня ##
## И нихуя не настроил блять ##
## Прочитал весь код ебаного stylix ##
## И нихуя не работает блять ##
## Так что поставлю руками грувбокс через qtct ##

View file

@ -14,21 +14,24 @@ in {
./packages.nix
];
boot.kernelPackages = pkgs.linuxPackages_latest; # Ядро линуха, ласт версия
# boot.plymouth.enable = true; # Логотип загрузки вместо спама?
boot = {
kernelPackages = pkgs.linuxPackages_latest; # Ядро линуха, ласт версия
boot.loader = {
# systemd-boot.enable = true;
grub = {
enable = true;
efiSupport = true;
device = "nodev"; # nodev позволяет не устанавливать grub в конкретное место, но видеть его ui
loader = {
# systemd-boot.enable = true;
grub = {
enable = true;
efiSupport = true;
device = "nodev"; # nodev позволяет не устанавливать grub в конкретное место, но видеть его ui
};
efi.canTouchEfiVariables = true;
# kernelParams = [ # https://nixos.wiki/wiki/AMD_GPU#Dual_Monitors
# "video=DP-3:1920x1080@165"
# "video=HDMI-A-1:1920x1080@75"
# ];
};
efi.canTouchEfiVariables = true;
# kernelParams = [ # https://nixos.wiki/wiki/AMD_GPU#Dual_Monitors
# "video=DP-3:1920x1080@165"
# "video=HDMI-A-1:1920x1080@75"
# ];
};
# Define a user account. Don't forget to set a password with passwd.

View file

@ -6,6 +6,7 @@
noto-fonts-cjk-serif # Отображение иероглифов. Версия с засечками
noto-fonts-cjk-sans # Отображение иероглифов. Версия без засечек
noto-fonts-color-emoji
noto-fonts-monochrome-emoji
(nerdfonts.override {fonts = ["JetBrainsMono" "Noto" "CascadiaCode"];})
carlito # Совместим с Calibri, разработан как его свободная альтернатива. Без засечек
terminus_font
@ -307,19 +308,18 @@
helix # A Kakoune / Neovim inspired editor, written in Rust.
###########
## Other ##
## Icons ##
###########
qmk # Прошивка для моих раздельных клавиатур
vial # GUI для qmk, если клавиатура поддерживает
fontconfig
zlib
google-fonts
libva-utils # Проверяет работоспособность VAAPI?
clinfo # Проверяет работоспособность OpenCL?
libcap # Мб надо для nekoray
adwaita-icon-theme
libsForQt5.breeze-icons # qt5
kdePackages.breeze-icons # qt6
papirus-icon-theme
############
## Vulkan ##
############
# Vulkan?
gfxreconstruct
glslang
spirv-cross
@ -339,6 +339,19 @@
vkd3d-proton
# vkbasalt # Баф Vulkan для улучшения визуальной графики игр https://github.com/DadSchoorse/vkBasalt
###########
## Other ##
###########
qmk # Прошивка для моих раздельных клавиатур
vial # GUI для qmk, если клавиатура поддерживает
fontconfig
zlib
google-fonts
libva-utils # Проверяет работоспособность VAAPI?
clinfo # Проверяет работоспособность OpenCL?
libcap # Мб надо для nekoray
# lxqt.lxqt-policykit # Меню для воода пароля при запуске с правами админа. Пока юзаю от гнома
];
}