Справочник настроек

32 минуты чтения

Справочник по всем ключам конфига, таблицами по главам.

Что за возможность стоит за ключом и как это у других клиентов — список возможностей.

Как устроен конфиг

Здесь все настройки — со значениями по умолчанию и пояснениями. Поменяй, что нужно, и перезапусти fedtail. Программа этот файл только читает и никогда не перезаписывает.

Значение, записанное здесь, остаётся твоим, даже если в новой версии умолчание изменится. Хочешь всегда умолчание программы — закомментируй строку (# в начале) или удали её.

Новая версия принесла новые настройки — python3 -m fedtail --update-config допишет их в нужные главы (старый файл сохранится как config.toml.bak). Пересобрать файл заново по главам, с твоими значениями — python3 -m fedtail --rebuild-config. Полный справочник текущей версии всегда лежит рядом: config.example.ru.toml (и config.example.en.toml — то же по-английски).

Где лежит: ~/.config/fedtail/<профиль>/config.toml (без –profile — главный профиль, ★)

Ключи запуска

КлючЧто делает
-p, --profile ИМЯпрофиль = аккаунт со своим конфигом и данными (без него — главный)
-c, --config ФАЙЛдругой конфиг вместо конфига профиля
-d, --data ПАПКАдругая папка данных вместо папки профиля
--ui qt|tui|webокно, терминал или браузер (на один запуск; постоянно — ui.frontend)
--profilesкакие профили есть — и выйти
--update-configдописать в этот файл новые настройки с пояснениями — и выйти
--rebuild-configпересобрать этот файл по главам, с твоими значениями — и выйти
--install-desktopдобавить fedtail (этот профиль) в меню с иконкой — и выйти
--debugподробный журнал на этот запуск, и он же — в терминал
--bug-reportсобрать логи и сведения о системе в архив для разбора — и выйти
-V, --versionверсия — и выйти
КОМАНДАработа в терминале без окна: lanes, show, tail, read, post (fedtail КОМАНДА -h — подробно про каждую)

Главы

1. Вид и окно

Как выглядит

КлючПо умолчаниюЧто делает
ui.theme"system"Тема — файл в ~/.config/fedtail/themes/<имя>.toml или встроенная:
“system” — светлая/тёмная, как в KDE;
“terminal” — зелёным по чёрному, всё моноширинное;
“juick” — juick.com году в 2013-м: светло-серая страница, белые посты, синие ссылки;
“juick-classic” — juick.com году в 2011-м: оливковый фон, бежевые посты;
“bnw” — bnw.im: чёрная рамка, серые посты, всё моноширинное, зелёные кнопки;
“point” — point.im сегодня: белая страница, посты через тонкую линию, квадратные аватарки, имя над датой, #id | ответы под постом, кнопки справа;
“night” — тёмная, своими цветами, на любом рабочем столе;
“contrast” — для слабого зрения: крупно, чёрным по белому, чёткие линии;
“pink” — розовая: пудра и ягоды, мягкие углы, цветочки;
“nord” — арктическая тёмная: холодный сине-серый, морозные ссылки;
“solarized” — Solarized light: тёплая бумага, синие ссылки;
“paper” — тёплая бумага и книжный шрифт, для длинных тредов;
“debug” — для поиска недоделок: непрочитанное, курсор j/k, найденное, «увидено не целиком», фокус клавиатуры — каждое своей кричащей рамкой. Свои темы: см. ~/.config/fedtail/themes/README.txt
ui.font_size0Размер шрифта постов в пунктах, 0 = системный.
ui.font""Шрифт всего окна поверх темы и системы: "" — как в теме (а у неё — системный). Можно список через запятую, берётся первый установленный: “Inter, Noto Sans”. Шрифты не обязательно ставить в систему: файлы .ttf / .otf в ~/.config/fedtail/fonts/ подхватываются при запуске.
ui.mono_font""Моноширинный, для #id и /N: "" — как в теме (а у неё — системный).
ui.max_width760Ширина колонки постов в пикселях, 0 = во всю ширину. Кнопка ↔ вверху слева переключает на время (запоминается до следующего запуска), конфиг не трогает.
ui.layout"single"Как открывается окно: “single” — одна лента справа, “columns” — несколько лент рядом, колонками, как в TweetDeck. Переключается и кнопкой ❯ вверху слева, но при запуске окно всегда такое, как здесь.
ui.columns[]Какие ленты стоят колонками, слева направо, пока ты их не поменял в окне (клик по ленте слева добавляет колонку, ✕ на колонке убирает, ‹ › двигают; это запоминается). Имена — как в lanes.enabled; “list:Друзья” — список по названию. [] — Лента, Ответы мне и Активность.
ui.column_width460Ширина одной колонки в пикселях (не меньше 280). Не влезают в окно — прокрутка вбок.
ui.actions"both"Кнопки под постом: “both” — иконка и подпись, “icons” — только иконки (подписи всплывают при наведении), “text” — только подписи.
ui.expand_cwtrueТексты и картинки под предупреждением (CW) сразу развёрнуты. false — свёрнуты, разворачиваются кнопкой «показать».
ui.bookmark_buttontrueКнопка «В закладки» в ряду под постом (иначе — только в меню ⋯ и клавишей m).
ui.arts_modetrueРежим arts (в честь @arts, основателя Point.im): всё как автор выложил, без опеки. Включает разом: CW развёрнуты (expand_cw), «чувствительные» картинки без плашки (feed.sensitive_media = “show”), фильтры сервера не прячут и не сворачивают посты, пункта «Пожаловаться» нет. Твои собственные мьюты и блоки работают как обычно, а то, что режет сам сервер (блоки доменов на нём), до клиента не доходит вовсе — это не обойти. Рекомендуется. false — всё как у всех, каждая настройка по отдельности.
ui.sidebar_groupstrueЛенты слева по группам с заголовками: «Стандартные», «Личные», «Списки». false — одним списком.
ui.sidebar_width272Ширина левой колонки (аккаунт, ленты) в пикселях, не меньше 180. Её же можно тянуть мышью за край — тогда запоминается до следующего запуска, а это число остаётся как есть.
ui.sidebar_footertrueВнизу слева мелко: версия, сборка и кто это написал. false — убрать.
ui.app_icon"possum"Иконка окна, трея и уведомлений: “possum” — опоссум, обнявший свой хвост (он же в меню рабочего стола и в «О программе»); “bubble” — нарисованный пузырь-тред.
ui.themed_icontrueПузырь (“bubble” выше) — в цветах выбранной темы. false — всегда обычный. (В меню рабочего стола — опоссум: его ставит –install-desktop.)
ui.icon_count["replies", "mentions", "subs", "requests"]Число непрочитанного на иконке — в трее и на кнопке в панели задач (KDE: нужна запись в меню от –install-desktop и пакет python3-pyside6.qtdbus). Считаются ленты отсюда, кроме тех, что в icon_count_except; [] — без числа. Имена лент — те же, что слева (слово ленты видно и в подсказке к ней):
federated — Федерация home — Лента local — Локальная
bots — Боты my_posts — Мои записи direct — Личные
mentions — Упоминания replies — Ответы мне subs — Подписки
bookmarks — Закладки my_likes — Мои лайки activity — Активность
requests — Заявки
“lists” — все списки разом; один список — по названию (или id): “list:Друзья”.
“all” — все ленты сразу (только в первом из пары; лишнее убирается в except). federated и local не считаются никогда (их листают, непрочитанного там нет). Пример: [“replies”, “mentions”, “lists”] или [“all”] + except = [“home”, “bots”].
ui.icon_count["replies", "mentions", "subs", "requests"]Какие ленты не считать на иконке, даже если они есть в icon_count (например, при
ui.icon_count_except[]
ui.language"auto"Язык интерфейса: “auto” (из LANG), “ru”, “en”.
ui.frontend"qt"Интерфейс: “qt” — окно; “tui” — в терминале (нужен Textual: python3-textual или pip install textual), то же, что fedtail --ui tui; “web” — в браузере (--ui web).

Окно, клавиши, запуск

КлючПо умолчаниюЧто делает
ui.close_to_traytrueКрестик прячет окно в трей, а не закрывает программу.
ui.esc"curtain"Esc закрывает то, что сверху (картинку, поиск), а последний Esc:
“curtain” — закрывает все ленты шторкой: окно остаётся, слева счётчики, справа пусто; ничего не отмечается прочитанным — утром откроешь, а новое накопилось;
“tray” — сразу убирает окно в трей (без трея — сворачивает);
“off” — ничего не делает.
ui.start_lane"none"Что открыто при запуске:
“none” — ничего: все ленты за шторкой, слева счётчики (Enter откроет прошлую);
“last” — лента, открытая в прошлый раз;
имя ленты — всегда она: “home”, “replies”, “subs”… (как в [lanes]).
ui.compose"inline"Где писать пост: “inline” — панелью внутри главного окна (раскладка клавиатуры не сбрасывается: KDE помнит её для каждого окна, и новое окно может открыться с другой); “window” — отдельным окном, как раньше.
ui.compose_size0Размер панели поста — в процентах от главного окна (и следом за ним, когда окно меняет размер): 50, 80, 100… 0 — как было, не больше 820 × 540. Кнопка ⤡ в панели переключает между обычным и большим (90 %) и запоминает выбор.
ui.command_linetrueКомандная строка как на Point внизу окна (Ctrl+L покажет её, даже если false).
ui.whats_thisfalseРежим «Что это?» с самого запуска: наведи мышь на кнопку — подробная подсказка, что она делает, какой ключ конфига её меняет и где об этом в справке. На время включается и выключается в меню ≡ → «Что это?». Горячей клавиши нет нарочно (F1 рядом с Esc).

Картинки и ссылки

КлючПо умолчаниюЧто делает
ui.image_height360Высота одиночной картинки в ленте, пикселей (несколько картинок — плиткой поменьше).
ui.image_viewer"internal"Клик по картинке: “internal” — свой просмотрщик (← → листать, Esc закрыть), “browser” — открыть в браузере.
ui.video_player"internal"Видео и аудио: “internal” — прямо в окне (видео — поверх окна: пробел — пауза, ← → — перемотка, M — звук, O — в браузер, Esc — закрыть; аудио — плеер в карточке), “browser” — открывать в браузере. Нужен QtMultimedia (Debian: python3-pyside6.qtmultimedia python3-pyside6.qtmultimediawidgets); без него — браузер.
ui.video_decode"software"Чем декодировать видео: “software” — процессором (видео в федиверсе маленькие, ему легко), “hardware” — видеокартой, как решит Qt. На некоторых картах (NVIDIA: “CUDA_ERROR_INVALID_VALUE”, “more than 32 decode surfaces” в логе) аппаратное декодирование не заводится, и видео дёргается, встаёт или остаётся чёрным. Переменная QT_FFMPEG_DECODING_HW_DEVICE_TYPES, заданная руками, важнее этого флага.
ui.gifv"play"Гифки Мастодона (короткие беззвучные видео): “play” — крутятся прямо в карточке, пока она на экране (не больше трёх разом), “click” — стоп-кадр, клик — поверх окна.
ui.image_upscale2Во сколько раз просмотрщик может увеличить маленькую картинку, чтобы она заняла окно (1 — никогда не увеличивать).
ui.save_dir""Куда сохранять картинки (S в просмотрщике, правый клик по картинке в ленте). "" — папка «Загрузки» рабочего стола (~/Downloads, ~/Загрузки — как настроено в KDE).
ui.image_cache_mb128Сколько памяти, МБ, держать под уже скачанные и разжатые картинки (самые давние выбрасываются первыми; на диске кэш остаётся, перечитать оттуда — мгновенно).
ui.image_decode"box"Картинки в ленте разжимаются в памяти под размер своей рамки (с учётом плотности экрана): «box» — в несколько раз меньше памяти и работы процессору; «full» — как раньше, до 1200 точек по большей стороне (резче, если потом растянуть окно).
ui.image_disk_mb1000Сколько места на диске, МБ, держать под скачанные картинки: сверх этого выбрасываются те, что дольше всего не открывались (при старте и по ходу дела). 0 — не чистить.
ui.video_disk_mb10000То же для видео, гифок и звука — у них своя папка и свой лимит, МБ (ролик-другой и гигабайта нет). Видео, открытое раз, остаётся на диске и в следующий раз играет сразу. 0 — не держать видео на диске.
ui.unload_hidden_minutes10Лента, которую не открывали столько минут, отпускает свои карточки из памяти: открытый сутками клиент иначе держит сотни карточек со всеми картинками (больше гигабайта). Откроешь её снова — нарисуется заново, с первого непрочитанного (это быстро). Та лента, что сейчас открыта, не выгружается никогда. 0 — держать всё.
ui.links_in_apptrue@упоминания, #хэштеги и ссылки на посты и профили в федиверсе открывать внутри fedtail (профиль, лента тега, тред), а не в браузере. Не нашлось — браузер.

Несколько аккаунтов

КлючПо умолчаниюЧто делает
ui.switch_closestrueАккаунты — это профили (–profile имя): у каждого свой конфиг, тема и окно. Правый клик по аватарке (или ≡ → «Аккаунт и сервер») — список, выбрал — открылся тот. true — это окно при этом закрывается; false — остаются оба.
ui.merge[]Все аккаунты в одном окне: ленты с одинаковыми именами сливаются («Лента» обоих — одна), у постов других аккаунтов пометка «→ @ник» — ответ, лайк и буст уйдут от того аккаунта, который пост получил. Списки других аккаунтов — отдельными лентами. [“all”] — все аккаунты, [“work”] — только эти профили, [] — как выбрано в меню аккаунтов («Все аккаунты в одном окне»).
ui.account_colorstrueВ общем окне у постов других аккаунтов метка «→ @ник» — цветная: у каждого аккаунта свой цвет, всегда один и тот же. false — без цвета.
ui.act_astrueВ общем окне в меню ⋯ поста — «От другого аккаунта»: лайк, буст или ответ не тем аккаунтом, который пост получил. fedtail найдёт пост по адресу через сервер того аккаунта и сделает действие оттуда. false — нет такого пункта.
ui.post_keystrueКлавиши в ленте и треде, как в веб-клиентах: j / k — следующий / предыдущий пост, r — ответить, f — в избранное, b — продвинуть, m — в закладки, o или Enter — открыть тред. false — эти буквы ничего не делают.
ui.announcements"banner"Объявления сервера (от его админов: обновления, правила, работы): “banner” — полосой над лентой, пока не нажмёшь «Понятно» (сервер запоминает это и для других клиентов); “off” — не показывать.
ui.media_grid"natural"Несколько картинок в посте: “natural” — каждая целиком, своей формы; “square” — ровной сеткой квадратов, обрезанных вокруг точки фокуса, которую поставил автор (если поставил; иначе — по центру). Одна картинка не обрезается никогда.
ui.alt_text"tooltip"Описание картинки (alt-текст, его пишет автор для тех, кто не видит): “tooltip” — при наведении мыши; “caption” — ещё и подписью под картинками.

2. Чтение ленты

[feed]

КлючПо умолчаниюЧто делает
feed.order"oldest_first"Порядок: “oldest_first” — старое сверху, читаешь вниз (как RSS/Point); “newest_first” — свежее сверху (как у всех).
feed.start_at"first_unread"Где вставать при открытии ленты: “first_unread” или “newest”.
feed.on_new"keep_position"Что делать, когда пришло новое: “keep_position” — стоять где стоишь; “jump_to_newest” — прыгнуть к новому (как у всех).
feed.show_reply_contexttrueПолоска «↪ в ответ на…» над ответами.
feed.page_size40Сколько постов за один запрос к серверу.
feed.catch_up_limit400Сколько новых постов догонять за один опрос (остальное — следующим).
feed.render_limit300Сколько последних постов держать на экране в ленте (старые — по кнопке «раньше»).
feed.repeat_boostsfalseБуст поста, который уже был в этой ленте (сам или чужим бустом) или уже прочитан, — повтор: false — не показывать его, пост остаётся там, где пришёл впервые; true — каждый буст поднимает пост снова (как у всех). Сам пост, пришедший как пост, видно всегда.
feed.build_at_once40Сколько карточек строить сразу при открытии ленты — вокруг места, где ты читаешь; остальные достраиваются, когда подкручиваешь к краю (по полсотни карточек экран не ждёт). То, что ты читаешь, при этом не сдвигается. 0 — строить всю ленту сразу (как раньше: на сотнях постов это секунды).
feed.first_run_mark_readtrueПри самом первом запуске считать всё загруженное прочитанным (не начинать с завала).
feed.honest_countersfalseЧестные счётчики: открывая тред, спросить у сервера автора настоящие числа лайков, бустов и ответов публичных постов (твой сервер знает только те, что дошли до него). Это запрос к чужому серверу — без твоего токена, но с твоим IP.
feed.counters_via_accountstrueЕсли сервер автора не отдаёт числа без входа: спросить их как другой твой аккаунт (профиль fedtail) — у сервера автора, если ты там есть, или у сервера, где пост уже лежит. Токен каждого аккаунта уходит только на его собственный сервер. Работает вместе с honest_counters.
feed.remember_choicesfalseВыбор над лентой — «Всё / Только посты / Новое» и «Лентой / Беседами» — помнить между запусками. false — каждый запуск с чистого листа: «Всё» и «Лентой» (или что задано в [lanes] posts_only), выбранное держится до закрытия программы.
feed.complete_threadstrueПолные треды. Твой сервер знает только те ответы, что до него дошли (от тех, кого читают на твоей ноде, или адресованные вам), — поэтому чужие треды бывают с дырами. Открыл тред — fedtail спросит у сервера автора список ответов и попросит твой сервер подтянуть недостающие; тред дорастёт сам через пару секунд. Это запросы к чужим серверам без твоего токена (видят только IP). false — довольствоваться своим сервером. Mastodon 4.5+ и сам дособирает ответы — тогда тред дорастёт, когда сервер скажет, что готово.
feed.link_cards"full"Карточка ссылки под постом — заголовок, описание и картинка страницы, на которую он ссылается (их собирает сервер):
“full” — с картинкой; “text” — без картинки, одним-двумя строчками; “off” — не показывать. У поста с собственными картинками карточки нет.
feed.custom_emojitrueСвои эмодзи серверов (:blobcat: и прочие) — картинками в постах и именах. false — оставить текстом :blobcat: (и не качать их картинки).
feed.emojitrueЭмодзи в ленте вообще. false — выключить все до единого: и картинки серверов (:blobcat:), и обычные юникодные (🔥 😂 🇬🇪), и строку реакций под постом. Имя, состоявшее из одних эмодзи, показывается логином. Значки самого fedtail (⚠ ↔ ❯) не трогаются.
feed.quotes"card"Цитаты (пост внутри поста: Mastodon 4.5+, Akkoma, Misskey и другие):
“card” — цитируемый пост рамкой внутри; “link” — одной строкой со ссылкой; “off” — как
прислал сервер (обычно строка «RE: ссылка»).
feed.remote_profilestrueПрофиль человека с другого сервера, о котором твой сервер почти ничего не знает: fedtail прочитает его последние публичные посты прямо с его сервера (ActivityPub outbox) и попросит твой сервер подтянуть их — сколько — remote_posts. Это запросы к чужим серверам без твоего токена (видят только IP); серверы, требующие подписи запросов, просто ничего не отдадут.
feed.prefetch"previews"Картинки новых постов скачивать заранее, как только посты пришли, — откроешь ленту, а они уже на диске. “previews” — превью (и у видео тоже), аватарки и картинки ссылок; “all” — ещё и оригиналы картинок, сами видео и гифки (видео — по одному, своим потоком, не больше 300 МБ каждое; трафика и места на диске намного больше); “off” — только когда пост на экране.
feed.per_person_followtrueВ профиле того, на кого подписан, — две кнопки: «♻ без его бустов» (его бусты не приходят в «Ленту») и «🌐 языки» (только его посты на этих языках). Хранит сервер, так что действует во всех клиентах. false — без кнопок.
feed.show_movedtrueАккаунт переехал на другой сервер: в профиле плашка «переехал на @новый» с кнопками «открыть» и (если ты на него подписан) «подписаться там». false — без плашки.
feed.old_days30Пост старше стольких дней — пометка «старый, N дн.» рядом с датой: такие приходят из чужого outbox или старого треда, и их не спутать с новостями. 0 — без пометки.
feed.collapse_tagstrueАбзац из одних хэштегов (больше трёх) — набивка для поиска: в ленте он сворачивается в первые три и «… +N» мелким шрифтом, в открытом треде показан целиком, но тоже мелко. Хэштеги внутри текста не трогаются. false — как прислал сервер.
feed.server_infotrueНа чём работает сервер человека — в профиле, «🖥 GoToSocial 0.17» (из его nodeinfo, без твоего токена; запоминается на неделю). false — не спрашивать.
feed.long_formtrue«📄 Читать целиком» в меню ⋯ поста с другого сервера: пост как его хранит сервер автора. Статья (Article, Page) — вся, а не заголовок со ссылкой; событие (Event) — со временем и местом. Без твоего токена. false — нет такого пункта.
feed.text_markuptrueтекст — зачёркнутым, как автор и хотел: его клиент или сервер (Mastodon) Markdown не знает, и тильды пришли как есть. Не в ссылках и не в коде. false — тильды как пришли.
feed.follow_date_notetrueСерверы не хранят, с какого дня ты на кого-то подписан. Подписываясь через fedtail, дописываю дату последней строкой в твою приватную заметку о человеке — «[fedtail followed 2026-10-18]»: её видно с любого устройства и в других клиентах (в fedtail эта строка спрятана и при правке заметки сохраняется). false — помню только здесь.
feed.remote_posts20Сколько последних постов подтягивать так в профиль (не больше 40).
feed.remote_peopletrueПодписки и подписчики человека с другого сервера: твой сервер знает только часть. Внизу такого списка будет кнопка «ещё с его сервера» — fedtail прочитает списки прямо оттуда (ActivityPub, без твоего токена) и найдёт этих людей через твой сервер. false — без кнопки.
feed.sensitive_media"hide"Картинки и видео, помеченные автором как «чувствительные» (без предупреждения-CW):
“hide” — закрыты плашкой, клик — показать; “show” — сразу видны. Под CW они и так спрятаны вместе с текстом.
feed.profile_pinnedtrueЗакреплённые посты — сверху профиля, с пометкой 📌. false — профиль просто по времени.
feed.translatetrue«Перевести» в меню ⋯ у поста на чужом языке — если твой сервер умеет переводить (Mastodon с DeepL или LibreTranslate). Перевод — прямо в карточке, с кнопкой «оригинал».
feed.profile_featuredtrueВ профиле — избранные теги человека («Часто пишет о: #теги») и кого он рекомендует (Mastodon 4.4+). false — не спрашивать.

3. Прочитанное

[read]

КлючПо умолчаниюЧто делает
read.mark_read"on_scroll"Когда пост считается прочитанным:
“on_scroll” — когда прокрутил его целиком;
“on_open” — вся лента, как только её открыл;
“manual” — только руками: «Всё прочитано», а у поста в меню ⋯ «Прочитано» и «Прочитано до сюда» (этот и всё, что старше). Так лента всегда ждёт тебя ровно там, где ты остановился, хоть читай по одному посту. Пункты «Прочитано» и «Прочитано до сюда» в меню поста есть при любом режиме.
read.read_buttonfalseКнопка ✓ «Прочитано» прямо под каждым непрочитанным постом (удобно с “manual”).
read.sync_markerstrueОбщая позиция чтения с другими клиентами (Mastodon markers): дочитал «Ленту» или упоминания на телефоне — здесь это тоже прочитано, и наоборот. Работает с Mastodon, GoToSocial, Akkoma. false — прочитанное живёт только здесь.

4. Какие ленты

[lanes]

КлючПо умолчаниюЧто делает
lanes.global—Какие ленты показывать (и в каком порядке внутри группы слева). Группы: «Стандартные» — от самой широкой к своей:
federated — «Федерация» (Federated): всё, что твоя нода знает со всех серверов
home — «Лента» (Home): те, кого читаешь, без ботов (открывается по умолчанию)
local — «Локальная» (Local): вся твоя нода
bots — «Боты» (Bots): те, кого читаешь, только боты «Личные»:
my_posts — «Мои записи» (My posts)
direct — «Личные» (Direct): личные сообщения тебе (видимость «только упомянутым»)
mentions — «Упоминания» (Mentions): где тебя тегнули в чужом разговоре
replies — «Ответы мне» (Replies to me): ответы на мои посты и комменты
subs — «Подписки» (Subscriptions): новое в тредах, на которые подписан (как на Point)
bookmarks — «Закладки» (Bookmarks): посты, отложенные «в закладки» (меню ⋯ у поста)
my_likes — «Мои лайки» (My likes): посты, которые ты лайкнул (по умолчанию не включена)
activity — «Активность» (Activity): кто лайкнул, продвинул, подписался на тебя
requests — «Заявки» (Follow requests) в подписчики Внизу — «Списки» с сервера (секция [lists]). Слово ленты видно и в подсказке к ней слева. Старые имена (до 0.15) тоже понимаются: people = home, comments = replies,
lanes.enabled["federated", "home", "local", "bots", "my_posts", "direct", "mentions", "replies", "subs", "bookmarks", "activity", "requests"]federated и local подгружаются, только пока открыты, и без счётчиков: их листают, а не дочитывают.
lanes.extra_bots[]Аккаунты, которые считать ботами, даже если у них нет галки «бот». Свой сервер — просто “ник”, чужой — “ник@сервер”.
lanes.posts_only[]В каких лентах при запуске включено «только посты» (без комментариев/ответов). Переключается и галочкой над лентой — выбор запоминается.
lanes.mentions_allfalse«Упоминания» — это упоминания, которые НЕ ответы тебе: ответы на твои посты и комменты (даже с @тобой внутри) живут в «Ответах мне». true — «Упоминания» показывают вообще всё, где тебя упомянули, ответы тоже (они будут в обеих лентах).
lanes.direct_aparttrueЛичные сообщения (видимость «только упомянутым»), когда включена лента direct, живут только в ней — не дублируются в «Ответах мне» и «Упоминаниях». false — и там тоже.
lanes.tag_groups[]Ленты из нескольких тегов — в боковой панели, группой «Теги» (подгружаются, пока открыты, как «Федерация»). Каждая — таблица [[lanes.tag_groups]]: name — как назвать, any — любой из тегов, all — все сразу, none — кроме. То же можно набрать в поиске («#грузия #georgia -#политика») и сохранить кнопкой «+ в ленты» — тогда здесь писать не нужно. Пример (строку tag_groups = [] ниже тогда убери — TOML не даст и то, и то):
[[lanes.tag_groups]]
name = “Грузия”
any = [“грузия”, “georgia”, “tbilisi”]
none = [“политика”]

5. Посты

[post]

КлючПо умолчаниюЧто делает
post.default_visibility"private"Видимость нового поста: “public”, “unlisted”, “private” (подписчикам), “direct”; “server” — как выставлено в настройках на сервере (в его веб-интерфейсе).
post.send_timeout90Сколько секунд ждать ответа сервера на отправку поста. Медленная нода может делать пост дольше обычных 30 секунд; не дождался — fedtail сам смотрит, появился ли пост, прежде чем сказать «не отправлено» (чтобы повтор не дал дубль).
post.reply_never_widertrueОтвет не бывает открытее исходного поста.
post.drafts_autosavetrueЧерновики сохраняются на лету и переживают закрытие окна.
post.cw_fieldfalseПоле «предупреждение / заголовок под катом» (CW) открыто сразу. false — прячется за кнопкой «⚠ Предупреждение».
post.camelcase_hinttrueПодсказка под текстом, если хэштег написан одним регистром (#georgianews): экранные дикторы читают #GeorgiaNews по словам. false — не подсказывать.
post.plain_poststrueКомандная строка внизу (Ctrl+L), как на Point: #a3f — открыть, #a3f текст — ответить, S/U #a3f — подписка на тред, S/U @ник — на человека, ! — продвинуть, ~ — в закладки, D — удалить свой, @ник — профиль, ? — справка. Простой текст без команды — новый пост (false — только команды, без случайных постов).
post.language""Язык новых постов (код ISO 639: “ru”, “en”, “ka”…), по нему серверы и клиенты фильтруют и переводят. "" — не указывать, сервер возьмёт язык из настроек аккаунта. В окне поста его можно сменить для одного поста.
post.languages["ru", "en", "ka", "uk"]Языки в списке окна поста (сверху — «как в настройках»). Любой другой — впиши сюда кодом ISO 639 (“eo”, “es”, “cv”, “jbo”, “tok”…) или выбери в окне поста «Другой язык…»: добавленный там остаётся в списке и дальше.
post.complete_mentionstrueПишешь @ар — подсказать людей: сначала тех, кто чаще встречается в ленте, потом найденных сервером. false — не подсказывать.
post.complete_tagstrueПишешь #ге — подсказать теги: сначала те, на которые подписан, потом самые частые в ленте.
post.report_forwardtrueЖалоба модераторам на человека с другого сервера: галка «переслать и на его сервер» сразу стоит (кто пожаловался, там не узнают). false — по умолчанию снята.
post.quote_policy""Кто может цитировать твои новые посты (Mastodon 4.5+): “public” — все, “followers” — подписчики, “nobody” — никто; "" — как в настройках аккаунта на сервере.
post.quote_actiontrue«Цитировать» в меню ⋯ у поста, который его автор разрешил цитировать (Mastodon 4.5+).
post.invitetrue«Позвать в тред…» в меню ⋯ у поста: ответ на него, в котором пока только «@» и открыт список людей — названный получит уведомление и увидит тред у себя. Остальных участников не упоминает (их не дёргает). То же в командной строке: #a3f @кого текст.
post.who_can_reply""Кто может отвечать твои новые посты — только GoToSocial (interaction policy):
"" — как в настройках аккаунта; “everyone” — все; “followers” — подписчики и
упомянутые; “following” — те, на кого ты подписан, и упомянутые; “mentioned” — только
упомянутые; “me” — только ты. Другим серверам это не отправляется.
post.who_can_boost""Кто может продвигать твои новые посты (GoToSocial) — варианты те же, что у who_can_reply.
post.who_can_like""Кто может лайкать твои новые посты (GoToSocial) — варианты те же, что у who_can_reply.
post.scheduletrueКнопка «⏰ Позже» в окне поста: отправить в назначенное время (пост ждёт на сервере, даже если fedtail закрыт). Список ждущих — меню ≡ → «Запланированные». false — без кнопки.
post.alt_remindertrueКартинка без описания — перед отправкой спросить: «Описать» или «Отправить так». false — не спрашивать.
post.redrafttrue«Удалить и переписать» в меню ⋯ у своего поста: пост удаляется, а его текст (как ты его набирал), CW, видимость, язык и то, на что он отвечал, открываются новым черновиком. Картинки не возвращаются — сервер удаляет их вместе с постом. false — без пункта.
post.resize_imagestrueКартинка больше, чем принимает сервер (он сам говорит, сколько), — перед загрузкой уменьшить копию, а не получить отказ: под его предел в пикселях, в JPEG (с прозрачностью — PNG) — под предел в байтах. Твой файл не трогается. false — отправлять как есть.
post.chaintrueТред цепочкой: строка из одних «—» делит текст на посты — уходят разом, каждый ответом на предыдущий (картинки и опрос — у первого). Счётчик знаков считает каждую часть отдельно. false — «—» остаётся просто текстом (горизонтальной чертой в Markdown).
post.previewtrueКнопка «👁 Предпросмотр» в панели поста: как он будет выглядеть — Markdown уже разметкой (если сервер его понимает), CW, видимость, каждая часть цепочки; оттуда же «Отправить». false — без кнопки.
post.complete_emojitrueНабираешь :ко — подсказать эмодзи сервера (:коржик: и т.п.), Tab или Enter вставляет. false — не подсказывать.
post.focus_pointtrueДвойной клик по картинке в посте — подпись к ней и точка фокуса: щёлкни по картинке, где главное, и в превью (там, где её обрезают) будет видно именно это. false — только подпись.
post.quote_prefix"> "«Ответить с цитатой» в меню ⋯ поста и «Процитировать в ответ» на выделенном тексте: в ответ встаёт цитата — каждая строка с этим началом (Markdown-цитата). Панель ответа уже открыта — цитата встаёт туда, где курсор: выделил предложение, процитировал, ответил, выделил следующее… "" — без этих пунктов.

6. Уведомления

[notify]

КлючПо умолчаниюЧто делает
notify.enabledtrueВсплывающие уведомления рабочего стола.
notify.lanes["direct", "replies", "mentions", "subs", "activity", "requests"]О чём уведомлять. home по умолчанию молчит (там всё подряд), списки тоже. Имена лент — те же, что слева (слово ленты видно и в подсказке к ней):
federated — Федерация home — Лента local — Локальная
bots — Боты my_posts — Мои записи direct — Личные
mentions — Упоминания replies — Ответы мне subs — Подписки
bookmarks — Закладки my_likes — Мои лайки activity — Активность
requests — Заявки
“lists” — все списки разом; один список — по названию (или id): “list:Друзья”.
“all” — все ленты сразу (только в первом из пары; лишнее убирается в except). Пример: [“replies”, “mentions”, “list:Друзья”] или [“all”] + except = [“home”, “bots”].
notify.except[]О чём не уведомлять никогда, даже если оно есть в lanes (например, при lanes = [“all”]): те же имена — “bots”, “federated”, “lists”, “list:Новости”…
notify.privacy"full"Что показывать в уведомлении:
“full” — кто и что написал;
“sender” — только кто, без текста (можно читать при посторонних);
“count” — только сколько, без имён и текста.
notify.when_focusedfalseУведомлять и о ленте, которая сейчас открыта перед глазами (по умолчанию о ней молчим; о прочих лентах уведомления приходят, даже когда окно fedtail активно).
notify.backend"auto"Как показывать: “auto” (уведомления KDE, если есть notify-send, иначе через трей), “desktop” — только notify-send, “tray” — только через трей.
notify.filtered"remind"Отфильтрованные уведомления (Mastodon 4.3+: сервер придерживает упоминания от незнакомых, новых аккаунтов и т.п., пока не разрешишь): ≡ → «Для нежных и ранимых» → «Отфильтрованные уведомления…» — кто ждёт, «Пустить» / «Отклонить», и что именно фильтровать. “remind” — так, и при запуске строкой внизу, если кто-то ждёт; “menu” — только в меню; “off” — ни того, ни другого.

7. Активность

[activity]

КлючПо умолчаниюЧто делает
activity.types["favourite", "reblog", "follow"]Что показывать в «Активности» (и в уведомлениях о ней):
“favourite” — добавили в избранное, “reblog” — продвинули, “follow” — подписались,
“poll” — закончился опрос, “update” — отредактировали пост, который ты продвигал,
“status” — новый пост человека, на чьи посты ты включил колокольчик. [“all”] — всё перечисленное (и то, что добавится в новых версиях).
activity.approvalstrueОтветы, лайки и бусты, которые ждут твоего одобрения (GoToSocial: кто может отвечать, лайкать и бустить, задаётся в настройках поста). Приходят сюда же, с кнопками «Одобрить» и «Отклонить». false — не показывать (одобрять тогда на сайте сервера).
activity.server_noticestrueИзвещения самого сервера (Mastodon 4.3+): твой сервер (или чужой) заблокировал другой — и твои подписки и подписчики оттуда оборвались, сколько и почему; предупреждение от модераторов. Приходят сюда же. false — не показывать.

8. Списки

[lists]

КлючПо умолчаниюЧто делает
lists.enabledtrueСписки с сервера (Mastodon, GoToSocial) — отдельными лентами под основными. Завести список и добавить в него человека — правым кликом по посту.
lists.hide_members"all"Добавил человека или бота в список — его посты, его бусты и чужие бусты его постов читаются в ленте списка и уходят из общих лент, чтобы не мусорили:
“all” — так с любым списком;
“exclusive” — только со списками с галкой «исключающий» (сервер и сам убирает таких из домашней ленты);
“off” — не убирать ниоткуда.
lists.hide_in["home", "bots", "federated", "local"]Из каких лент убирать (названия — как в [lanes]).
lists.refresh_minutes10Как часто перечитывать сами списки и кто в них, минут.

9. Подписки на треды

[subs]

КлючПо умолчаниюЧто делает
subs.auto["posts", "comments"]Подписки на треды, как на Point. Сервер сообщает только об ответах, где тебя упомянули; если двое отвечают друг другу под твоим постом, ты об этом не узнаешь. fedtail сам перечитывает треды, на которые ты подписан, и складывает новое в «Подписки». Подписаться/отписаться — в меню ⋯ у поста или кнопкой в заголовке треда. На что подписываться самому: “posts” — свои посты, “comments” — треды, где комментишь.
subs.interval_minutes5Как часто перечитывать каждый тред, минут.
subs.active_days14Тред, где ничего не происходило столько дней, больше не проверяется.
subs.max_threads30Сколько тредов проверять за один заход (остальные — в следующий).
subs.replies_to_mefalseОтветы тебе и так приходят в «Ответы мне». true — показывать их и в «Подписках».
subs.leave_mutestrueОтписка от треда глушит и упоминания из него: ответы там сами тегают всех участников, а сервер (GoToSocial) тред заглушить не умеет. false — отписка только от «Подписок».

10. Опрос сервера

[poll]

КлючПо умолчаниюЧто делает
poll.interval_seconds90Как часто спрашивать сервер о новом, секунд (не меньше 30).
poll.stream_gap_seconds10Живой поток будит опрос, как только что-то пришло, — но не чаще раза в столько секунд: на оживлённом сервере события идут по многу раз в минуту, а каждый опрос — десяток запросов и немного процессора. Что придёт за эти секунды, придёт одним опросом. «Обновить» ждать не заставляет. 0 — сразу на каждое событие.
poll.stream"auto"Живой поток сервера: пришло новое — опросить сразу, а не через interval_seconds. “auto” — если сервер его даёт (GoToSocial, Mastodon, Akkoma); “off” — только опрос. Поток лишь будит опрос, так что если он рвётся (сон ноутбука, прокси), ничего не теряется.

11. Сервер

[account]

КлючПо умолчаниюЧто делает
account.markdown"auto"Понимает ли сервер Markdown: “auto” (спросить у сервера), “on”, “off”. GoToSocial / Akkoma — понимают, ванильный Mastodon — нет.

12. База и логи

[storage]

КлючПо умолчаниюЧто делает
storage.max_mb1024Сколько места может занять база профиля (state.db), мегабайт. Посты, на которые ничто не ссылается — ни лента, ни подписанный тред, ни активность, ни черновик ответа, — забываются сами (раз в gc_hours); надо будет — скачаются с сервера заново. Если база всё равно больше этого, ленты становятся короче, пока не влезет (не короче 300 постов), а когда места снова много — отрастают обратно. Короткие id (#a3f) не забываются никогда.
storage.keep_per_lane3000Сколько записей хранит каждая лента (самые новые). «Ещё» ниже них — снова с сервера.
storage.keep_activity3000Сколько последних записей хранит «Активность» (лайки, бусты, подписки на тебя).
storage.gc_hours6Как часто чистить базу, часов. Первый раз — в первый опрос после запуска.
storage.grace_hours48Пост, сохранённый недавно (открытый тред, чей-то профиль), не забывается столько часов, даже если ни одна лента на него не ссылается.

[debug]

КлючПо умолчаниюЧто делает
debug.mode"auto"Логи и диагностика. В режиме отладки всё подробно: клиент держат открытым сутками, и если он упадёт, зависнет или раздуется — нужны следы. Файлы — в папке logs/ папки данных профиля (меню ≡ → «Отладка» → «Открыть папку логов»):
2026-10-16_15-04-12.log — журнал: запросы с временем, опросы, действия (клики, ленты, вкладки — без текстов постов), ошибки с трассировкой, статистика. Новый файл при каждом запуске и каждый час;
latest.log — ссылка на тот, что пишется сейчас: его и присылай;
crash.log — стеки всех потоков, если процесс упал (segfault в Qt и т.п.);
stacks.log — стеки по запросу: kill -USR1 <pid>, меню, или сам при зависании окна. Собрать всё в архив для разбора: python3 -m fedtail –bug-report (последние двое суток, без токена и базы). Режим отладки: “auto” — включён в версиях для разработки (из git, номер с .dev), выключен в релизах и однофайловых сборках из них; “on” / “off” — всегда. Выключен: только предупреждения и ошибки, несколько МБ в папке данных профиля, logs/, без статистики и сторожа; crash.log остаётся. Ключ запуска –debug включает его на один раз, что бы ни было здесь.
debug.level"debug"Подробность журнала в режиме отладки: “debug”, “info”, “warning”.
debug.log_dir""Куда писать. "" — в папку данных профиля, logs/ (~/.local/share/fedtail/<профиль>/logs; меню ≡ → «Отладка» → «Открыть папку логов»). Своя папка — сюда, профиль добавится сам. Логи прошлой версии новая удаляет при первом запуске: они ей уже ни к чему.
debug.log_mb10Файл журнала больше стольких МБ — начать следующий, не дожидаясь нового часа.
debug.keep_mb500Сколько МБ журналов держать в папке: сверх этого самые старые удаляются.
debug.stats_minutes5Раз во сколько минут писать память, CPU, потоки, размеры кэшей (0 — не писать).
debug.trim_memorytrueВместе со статистикой отдавать системе память, которую fedtail уже освободил (на Linux с glibc она иначе остаётся за процессом: после ночи лент и картинок он так и держит свой пик). В лог пишется, сколько отдано.
debug.watchdog_seconds8Окно не отвечает столько секунд — записать стеки всех потоков (0 — не следить).
debug.stall_ms250Фриз окна короче сторожа: если окно не отвечало дольше стольких миллисекунд, в журнал идёт строка «GUI froze N ms» — и чем оно было занято в этот момент: ярлык работы (событие, отрисовка ленты, картинка) и стек. «Qt itself» — сам Qt раскладывал и рисовал. Только в режиме отладки; 0 — не следить.
debug.slow_request_seconds5Запрос к серверу дольше стольких секунд — предупреждение в журнале.
debug.rss_warn_mb1500Память больше стольких МБ — предупреждение в журнале.
debug.leak_samples12Поиск утечек. С каждой строкой статистики в журнал идёт строка «trend»: память, объекты, виджеты, карточки, картинки, потоки, файлы — сколько было при запуске, сколько сейчас и на сколько в час растёт. Если что-то из этого росло на каждой из последних стольких проверок (12 × stats_minutes = час) и не на крохи — предупреждение «possible leak» с цифрами. Первые полчаса не в счёт: ленты наполняются. Меньше 3 нельзя.
debug.object_censustrueВ режиме отладки, с каждой статистикой: какие объекты Python и какие виджеты Qt прибавились с прошлого раза и с запуска, самые растущие первыми (строки «census»). Ответ на вопрос «память растёт — чего именно?». Обход всех объектов занимает доли секунды раз в stats_minutes. false — не считать.
debug.tracemallocfalseТрассировка памяти с запуска (tracemalloc): каждое выделение памяти помнит, из какой строки кода оно. Медленнее и примерно вдвое больше памяти — только для охоты на утечку, например на ночь. Снимок — меню ≡ → «Отладка» → «Снимок памяти»: файл memory-<время>.txt в папке логов, кто держит больше всего и что выросло с первого снимка. Включить и без перезапуска можно там же.

13. В терминале

fedtail без окна: fedtail lanes, fedtail show replies -n 20, fedtail tail, fedtail post "текст", fedtail post --reply a3f "текст", fedtail read replies. Тот же профиль, та же база и те же отметки прочитанного, что и у окна.

[cli]

КлючПо умолчаниюЧто делает
cli.enabledtrueКоманды в терминале вообще. false — fedtail всегда открывает окно, а слова после ключей считаются ошибкой.
cli.color"auto"Цвет: “auto” — только в терминале (не в трубе и не в файле) и если не задан NO_COLOR; “always” / “never”.
cli.max_lines0Длинный пост обрезать до стольких строк (0 — показывать целиком).
cli.tail_lanes[]Какие ленты показывает fedtail tail без названий. [] — те, что в notify.lanes.

[tui]

Интерфейс в терминале — fedtail --ui tui (или ui.frontend = “tui”): слева ленты, справа посты, внизу командная строка как в окне. j / k — по постам, Enter — тред, r — ответить, f — лайк, b — буст, m — закладка, n — новый пост, x — лента прочитана, Tab — ленты/посты, : — командная строка, Esc — назад, q — выход. Прочитанное — по read.mark_read.

КлючПо умолчаниюЧто делает
tui.theme""Тема Textual: "" — его обычная; или имя: “textual-light”, “nord”, “gruvbox”, “dracula”, “tokyo-night”, “monokai”, “solarized-light” и др. (Ctrl+P → Change theme — посмотреть).
tui.lanes_width26Ширина колонки с лентами, в знаках.
tui.show_contexttrueНад ответом — строка «↳ @кто: начало того, на что он отвечает». false — без неё.
tui.pictures"inline"Картинки в терминале — полублоками (нужен Pillow, python3-pil; терминал с truecolor). “inline” — первая картинка поста маленькой прямо в ленте, v — все в полный экран; “key” — только по v; “off” — никак (o — открыть пост в браузере).
tui.picture_rows8Высота картинки в ленте, в строках.

14. В браузере

fedtail --ui web (или ui.frontend = “web”): fedtail во вкладке браузера. При запуске печатает ссылку с ключом (и открывает её); ключ лежит в папке данных профиля, web.key — удали файл, и будет новый (старые ссылки перестанут работать).

[web]

КлючПо умолчаниюЧто делает
web.host"127.0.0.1"На каком адресе ждать. “127.0.0.1” — только с этого компьютера; “0.0.0.0” — и из домашней сети (с телефона: одноразовая ссылка, которую fedtail печатает при запуске, с адресом компьютера вместо 127.0.0.1; действует 15 минут). Там всё идёт без шифрования, так что только для своей сети; снаружи — через VPN или прокси с TLS.
web.port8765Порт.
web.open_browsertrueОткрыть браузер при запуске.