Вернуться назад

lf


    # Конфигурационный файл находится в ~/.config/lf/lfrc
    # Системного конфига больше нигде нет. Дефолтные шорткаты определены в бинарнике
    
    # Назначаем горячие клавиши:
    map i %/usr/bin/imv "$f"        # Клавиша i запускает imv
    map m %mpv "$f"                 # Клавиша m запускает mpv
    map p %zathura "$f"             # Для pdf-файлов
    map a %atool -x "$f"            # Для архивов
    map h %lapce "$f"               # Для текстовых файлов
        
    map o %xdg-open "$f"            # Клавиша o открывает файл с помощью "программы по умолчанию"
    # Задать "программу по умолчанию" для определённого вида клавиш можно с помощью xdg-mime
    xdg-mime query default image/png        # Узнать с помощью какой программы по умолчанию открываются файлы .png
    xdg-mime query default image/jpg        # Узнать с помощью какой программы по умолчанию открываются файлы .jgp
    xdg-mime query default text/html        # Узнать с помощью какой программы по умолчанию открываются файлы .html
    xdg-mime default imv.desktop image/png  # Мы присвоили файлам .png программу imv
    
    
    map p :paste
    # map r :rename - по умолчанию
    # map y :copy - по умолчанию
    # map d :cut - по умолчанию - но позже мы его заменим на d - delete
    
    # Создание нового файла:
    map n :newfile
    cmd newfile %{{
        printf "File name: "                    # Показываем приглашение
        read name                               # Ждём ввод имени
        [ -n "$name" ] && touch -- "$name"      # Если переменная не пустая, то создаём файл
        lf -remote "send $id reload"            # Обновляем список файлов
        lf -remote "send $id select '$name'"    # выделяем новый файл
    }}
    
    # Создание новой папки:
    map f :mkdir
        cmd mkdir %{{
            printf "Folder name: "
            read name
            [ -n "$name" ] && mkdir -p -- "$name"
            lf -remote "send $id reload"
            lf -remote "send $id select '$name'"
        }}
    
    # Удалить файл или папку:
    map d :delete
    
    # Команда delete уже определена в lf. Нам надо только присвоить её клавише d. По умолчанию d - это cut.
    # cmd delete %{{
    #     printf "Delete '$f'? [y/N] "
    #     read ans
    #     if [ "$ans" = y ];  then
    #         rm -r -- "$f"
    #         reload              # то же самое, что и lf -remote "send $id reload"
    #     else
    #         lf -remote "send $is select '$f'"   # Восстанавливает выделение и перерисовывает статусную строку
    # }}
    
    ## Открыть текущую папку в файловом менеджере pcmanfm:
    cmd openfm %{{
        pcmanfm "$PWD"
    }}
    
    ## Открыть терминал foot в текущей директории:
    cmd foot %{{
        foot -e bash -c "cd '$PWD'; exec bash "
    }}
    
        e — указывает foot, что дальше идёт команда.
        bash -c "cd '$PWD'; exec bash" — выполняет cd в нужную директорию, а потом запускает bash (или другой шелл).
        exec — гарантирует, что оболочка заменит процесс, а не вложится внутрь.
        
        
    # Дополнительные полезные команды
    
    # Очистить статусную строку:
    printf "\r\033[K"