/ FarManager

Far Manager

AppVeyor Трэвис Azure
VS
GCC TBD
Clang TBD

Far Manager — что такое it?

Far Manager — это программа для управления файлами и архивами в операционных системах Windows. Far Manager работает в текстовом режиме и предоставляет простой и понятный интерфейс для выполнения большинства необходимых действий:

  • просмотр файлов и каталогов;
  • редактирование , копирование и переименование файлов;
  • и многие другие действия.

Настроить

Far Manager имеет мульти- язык, легко настраиваемый интерфейс. Навигация по файловой системе упрощена за счет использования цветового выделения и групп сортировки.

Ваша задача — ваш путь

Функциональность Far Manager значительно расширена за счет внешней DLL модули — плагины (стало возможным благодаря специальному набору интерфейсов — Plugins API). Например: поддержка архивов, FTP-клиент, временная панель и сетевой браузер реализованы как плагины, включенные в стандартный дистрибутив Far.

Форум поддержки

https://enforum.farmanager.com/
https://forum.farmanager.com/

Отслеживание ошибок

https://bugs.farmanager. com/

Список рассылки разработчиков (английский)

https://groups.google.com/group/fardeven
fardeven@googlegroups.com

Список рассылки разработчиков (русский)

https://groups.google.com/group/fardev
fardev@googlegroups.com

Фиксирует список рассылки

https://groups.google.com/group/farcommits
farcommits@googlegroups.com

Источник код

https://github.com/FarGroup/FarManager



/far2l

Порт для Linux FAR Manager v2 (http://farmanager.com/)
Работает также на OSX/MacOS и BSD (но позже не тестировался регулярно)
АЛЬФА-ВЕРСИЯ.
На данный момент интересно только энтузиастам !!! g>

Плагины, которые в настоящее время работают: NetRocks (SFTP/SCP/FTP/FTPS/SMB/NFS/WebDAV), colorer, multiarc, tmppanel, align, autowrap, drawline, editcase, SimpleIndent, Calculator, Python (необязательная поддержка сценариев)

Linux/MacOS (Travis CI):

FreeBSD (Cirrus CI):

Лицензия: GNU/GPLv2

Используемый код из проектов

  • FAR для Windows
  • WINE
  • ANSICON
  • Portable UnRAR
  • 7z ANSI-C Decoder

Содействие, взлом

Необходимые зависимости

  • gawk
  • m4
  • libwxgtk3.0-dev (или в Ubuntu 19.04+ — libwxgtk3.0-gtk3-dev)
  • libxerces-c-dev
  • libspdlog-dev
  • libuchardet-dev
  • libssh-dev (требуется для NetRocks/SFTP)
  • libssl-dev (требуется для NetRocks/FTPS)
  • libsmbclient-dev (требуется для NetRocks/SMB)
  • libnfs-dev (требуется для NetRocks/NFS)
  • libneon27-dev ( или более поздней версии, требуется для NetRocks/WebDAV)
  • libarchive-dev (требуется для лучшей поддержки архивов в multiarc)
  • libpcre2-dev (или в последних дистрибутивах — libpcre3- dev) (требуется для поддержки пользовательских архивов в multiarc)
  • cmake (> = 3.2.2)
  • g ++
  • git (необходимо для загрузки исходного кода)

Или сим ply на Debian/Ubuntu:

 apt-get install gawk m4 libwxgtk3.0-dev libxerces-c-dev libspdlog-dev libuchardet-dev libssh-dev libssl-dev libsmbclient-  dev libnfs-dev libneon27-dev libarchive-dev cmake g ++ git 

(если в Ubuntu 19.04+ или другом, в котором отсутствует libwxgtk3.0-dev — попробуйте libwxgtk3.0-gtk3- dev)

Клонирование и сборка

 git clone https://github.com/elfmz/far2lcd far2lmkdir buildcd build 

с make:

 cmake -DUSEWX = yes -DCMAKE_BUILD_TYPE = Release ..make -j $ (nproc  --all) 

или с помощью ninja (вам нужен установленный пакет ninja-build )

 cmake -DUSEWX = yes -DCMAKE_BUILD_TYPE = Release -G Ninja ..ninja -j $ (nproc --all) 

OSX/ Установка MacOS

  • Поддерживаемый компилятор: AppleClang 8.0.0.x или новее. Проверьте свою версию и при необходимости установите/обновите XCode.
 clang ++ -v 

  • Если у вас нет Homebrew, зайдите на https://brew.sh/, чтобы получить инструкции по установке.
Установка OSX/MacOS в одну строку
  • Установите последнюю версию far2l git master с помощью неофициального крана brew:
 brew install --HEAD yurikoles/yurikoles/far2l 

  • Доступные варианты:
    • - with-python@3.9 : сборка с поддержкой python
    • - with-wxmac : сборка с поддержкой wxmac
Жесткая установка OSX/MacOS — со сборкой из исходников:

или

 sudo port install cmake gawk pkgconfig wxWidgets-3.2 libssh openssl xercesc3 libfmt spdlog 

Libarchive в MacPorts может конфликтовать с версией системы, если far2l собран с заголовками MacPorts, но связан с системным dylib. Вы можете не устанавливать его.

  • Clone: ​​
 git clone https://github. com/elfmz/far2lcd far2l 

  • Установите необходимые пакеты:
 brew bundle 

с make:

 mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX =/usr/local -DUSEWX =  да -DCMAKE_BUILD_TYPE = Release ..make -j $ (sysctl -n hw.logicalcpu) 

или с помощью ниндзя

 mkdir buildcd buildcmake -DCMAKE_INSTALL_PREFIX =/usr/local -DUSEWX = yes -DCMAKE_BUILD_TYPE = Release -G Ninja ..ninja -j $ (sysctl -n hw.logicalcpu) 

Для сборки без серверной части WX (только для консольной версии): измените -DUSEWX = yes на -DUSEWX = no Чтобы сэкономить место за счет исключения поддержки набора кодовых страниц Восточной Азии: add -DEACP = no

Для сборки с помощью плагина Python: добавьте аргумент -DPYTHON = yes

Создание на Gentoo (и его производных)

Для абсолютного минимума вам необходимо:

  emerge -avn dev-libs/xerces-c app-i18n/uchardet dev-util/cmake dev-libs/spdlog  

Если хотите для сборки far2l с поддержкой wxGTK также установите i t:

  emerge -avn x11-libs/wxGTK  

И если вам также нужен плагин Python, подумайте об установке virtualenv:

  emerge -avn dev-python/virtualenv  

Кроме того, для NetRocks вам понадобятся:

  emerge -avn net-libs/neon net-libs/libssh net-fs/libnfs net-fs/samba  

После установки следуйте разделу Clone and Build выше.

Сборка пакетов DMG, DEB и TGZ

Следуйте инструкциям, связанным с CMake из предыдущего шага, чтобы построить проект, затем запустите:

 cpack 

для создания следующих пакетов (в зависимости от архитектуры):

  • far2l-2. XXdmg
  • far2l_2.X.X_ARCH.deb
  • far2l-2.XXtar.gz

Все пакеты можно найти в папке build .

Установка и сборка на NixOS

Для общесистемной установки добавьте far2l в ваш configuration.nix environment.systemPackag es список. Чтобы запустить приложение по запросу, не влияя на состояние системы, выполните nix-shell -p far2l --command far2l . Они используют версию пакета из вашего текущего канала.

Адаптация Far2l для nix — это небольшой файл на GitHub, в нем указывается, какую версию Git из репозитория Far2l нужно получить , с какими зависимостями его построить и как исправить его ссылки на другое программное обеспечение, чтобы оно работало изолированно независимо от других версий, доступных в системе.

Вы можете собрать и запустить far2l для любой версии:

  • Непосредственно из GitHub (репозиторий NixOS/nixpkgs или ваша собственная вилка и ветка ):
 nix-shell -I nixpkgs = https://github.com//nixpkgs/archive/  .tar. gz -p far2l --command far2l 

  • Из локально клонированного рабочего каталога репозитория:
 nix-shell -I nixpkgs =/path/to/nixpkgs -p far2l --command far2l 

Чтобы переместить пакет в новую ревизию Far2l, отредактируйте fetchFromGitHub установить атрибуты rev (хэш версии) и sha256 (хэш содержимого версии). Важно! Если вы оставите старый хэш содержимого, старое кэшированное содержимое для этого хэша может быть использовано без попытки загрузки новой версии. Если вы не ожидаете, что сборка сломается, проще всего сделать форк, отправить изменение и собрать прямо из github.

Настройка IDE

Вы можете импортировать проект в свою любимую IDE, например QtCreator, CodeLite или любую другую, которая поддерживает cmake или для которой cmake может создавать проекты.

  • QtCreator : выберите «Открыть проект» и укажите QtCreator на файл CMakeLists.txt в корневом каталоге far2l.
  • CodeLite : используйте это руководство для настройки проекта : https://wiki.codelite.org/pmwiki.php/Main/TheCMakePlugin (чтобы избежать загрязнения исходного дерева, не создавайте рабочее пространство внутри каталога far2l)

Полезные сторонние дополнения

  • Коллекция макросов для far2l: https://github.com/corporateshark/far2l-macros
  • Fork из Putty (SSH-клиент Windows) с добавленной поддержкой расширений TTY far2l (плавное нажатие клавиш, совместное использование буфера обмена и т. д.): https://github.com/unxed/putty4far2l
  • Инструмент для импортировать цветовые схемы из Windows FAR manager 2 в формате .reg: https://github.com/unxed/far2l-deb/blob/master/far2l_import.pl

Примечания по портированию

Я реализовал/позаимствовал из WINE некоторые часто используемые функции WinAPI. Все они объявлены в WinPort/WinPort.h, а соответствующие определения можно найти в WinPort/WinCompat.h (оба включены в WinPort/windows.h). Обратите внимание, что этот материал не может быть однозначным для соответствующей функциональности Win32, также не обеспечивает полной функциональности UNIX, но упрощает перенос и может рассматриваться как временный каркас.

Однако только основной исполняемый файл статически связан с WinPort, хотя он также экспортирует функциональность WinPort, поэтому плагины используют его без необходимости приносить свои собственные копии этого кода. Это причина того, что двоичный файл каждого плагина не должен статически связываться с WinPort.

В то время как FAR внутренне является UTF16 (поскольку WinPort содержит материал, связанный с UTF16), собственный размер wchar_t в Linux составляет 4 байта (а не 2). байтов), поэтому потенциально Linux FAR может быть полностью совместим с UTF32 консольным взаимодействием в будущем, но, хотя он использует функции UTF16 в стиле Win32, это не так. Однако программисты должны знать, что wchar_t больше не имеет длины 2 байта.

Проверяйте все строки формата printf: в отличие от Windows, в Linux как широкие, так и многобайтовые функции printf имеют одинаковые многобайтовые и широкие спецификаторы. Это означает, что% s всегда многобайтовый, а% ls всегда широкий. Таким образом, любой% s, используемый в wide-printf-s, или% ws, используемый в любом printf, следует заменить на% ls.

Обновление от 27aug: теперь это возможно, указав WINPORT_DIRECT, чтобы избежать переименования используемой Windows API, а также во избежание изменения строк формата, поскольку swprintf будет перехвачен оболочкой совместимости.

Plugin API

Plugins API на основе FAR Manager v2 плюс следующие изменения:

В FarStandardFunctions добавлены следующие записи:

  • int Execute (const wchar_t * CmdStr, unsigned int ExecFlags); … где ExecFlags — комбинация значений EXECUTEFLAGS. Выполняет заданную командную строку, если EF_HIDEOUT и EF_NOWAIT не указаны, то команда будет выполнена на виртуальном терминале far2l.

  • int ExecuteLibrary (const wchar_t * Library, const wchar_t * Symbol, const wchar_t * CmdStr, unsigned int ExecFlags) Выполняет данный символ разделяемой библиотеки в отдельном процессе (поведение создания процесса такое же, как и для Execute). Символьная функция должна быть определена как: int ‘ Символ ‘(int argc, char * argv [])

  • void DisplayNotification (const wchar_t * action, const wchar_t * object); Показывает (в зависимости от настроек — всегда или если far2l в фоновом режиме) системное уведомление оболочки с заданным заголовком и текстом.

  • int DispatchInterThreadCalls (); far2l поддерживает вызов API-интерфейсов из разных потоков путем маршалинга Вызовы API из неосновных потоков в основной и отправка их в основной поток в определенных заведомо безопасных точках внутри циклов обработки диалогов. DispatchInterThreadCalls () позволяет плагину явно отправлять такие вызовы, и плагин должен использовать его периодически, если он блокирует основной поток некоторыми действиями, не связанными с пользовательским интерфейсом, которые могут ждать других потоков.

В FILE_CONTROL_COMMANDS добавлены следующие команды:

  • FCTL_GETPANELPLUGINHANDLEC Может использоваться для взаимодействия с плагином, который отображает другую панель. hPlugin может быть установлен на PANEL_ACTIVE или PANEL_PASSIVE.Param2 игнорирует значение. типа HANDLE, call устанавливает это значение для дескриптора плагина, который отображает указанную панель или INVALID_HANDLE_VALUE.

Добавлены следующие функции, экспортируемые плагином:

  • int MayExitFARW (); far2l спрашивает плагин, может ли он выйти сейчас. Если у плагина есть отложенные фоновые задачи, он может заблокировать выход из far2l, однако настоятельно рекомендуется предоставить пользователю выбор с помощью подсказки пользовательского интерфейса.

Добавлены следующие диалоговые сообщения:

  • DM_GETCOLOR — получает текущие атрибуты цвета выбранного элемента диалога
  • DM_SETCOLOR — изменяет текущие атрибуты цвета выбранного элемента диалога
Оцените статью
clickpad.ru
Добавить комментарий