<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@olegp</title><generator>teletype.in</generator><description><![CDATA[Блог itшника.  Предполагается пока публиковать тексты на околокомпьютерные темы. В сундуке лежат материалы про vim,  python, linux.  ]]></description><link>https://teletype.in/@olegp?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/olegp?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/olegp?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 08 Apr 2026 16:31:23 GMT</pubDate><lastBuildDate>Wed, 08 Apr 2026 16:31:23 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@olegp/gVSHPZ7jbWz</guid><link>https://teletype.in/@olegp/gVSHPZ7jbWz?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/gVSHPZ7jbWz?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Переезд в MX-Linux. Настраиваем терминал и делаем screencast.</title><pubDate>Wed, 20 Mar 2024 13:56:32 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/c0/e0/c0e0ed27-943e-4ba0-91c1-ab3b70e49107.png"></media:content><category>Linux</category><description><![CDATA[<img src="https://img1.teletype.in/files/c5/12/c51263f8-4ab5-4550-821e-673f58619efb.jpeg"></img>И хотя MX-Linux требует минимальных усилий по настройке системы, но некоторые мелочи заметно облегчают жизнь]]></description><content:encoded><![CDATA[
  <p id="ucTn">И хотя MX-Linux требует минимальных усилий по настройке системы, но некоторые мелочи заметно облегчают жизнь</p>
  <p id="8r6x">Современные пользователи linux это люди, разбалованные различными утилитами, и даже эмулятор терминала может быть допилен до удобного вида. Я настраивал xfce-terminal , но все, здесь написанное, применимо к большинству современных популярных эмуляторов терминалов. Собственно xfce-terminal довольно удобен в настройке, занимает примерно 60 мегабайт памяти, и единственная функция, которую вы там не найдете - это мультиплексирование сессий внутри окна приложения. Некоторые эмуляторы терминалов такое умеют tilix, например, но настройка такого терминала довольно запутана , если сессий вам нужно несколько, то вполне можно обойтись закладками в xfce-terminal.</p>
  <h2 id="sXZ7"> Шрифты</h2>
  <p id="6FUJ">Ситуация с терминальными шрифтами долгие годы была довольно непростой для пользователей кириллицы. Качество шрифтов было довольно посредственным, основная часть шрифтов не поддерживала кириллицу вовсе, часто встречались корявые начертания отдельных букв.</p>
  <blockquote id="zjzX">И тут есть определенная проблема для дизайнеров, разработчики шрифтов должны потратить некоторое время для того, чтобы почувствовать традиционное начертание символов, для родного алфавита это просто, а вот для алфавита, который вы не используете, вы почти наверняка наделаете массу ошибок. Попробуйте для примера нарисовать хотя бы пару иероглифов. вы легко справитесь с подобной задачей только в том случае, если эти иероглифы вы применяете в повседневной жизни и привыкли к их виду.</blockquote>
  <p id="xAWW">Но как бы там ни было, на сегодняшний день появились некоторое количество терминальных (моноширинных шрифтов) с довольно аккуратной поддержкой кириллицы В репозитории Debian можно найти как минимум пару десятков терминальных шрифтов разного качества, среди них я бы отметил Liberation mono, terminus, PT mono.</p>
  <p id="cY7o">Я установил Fira code в качестве терминального шрифта. Это определенно неплохой шрифт для терминала.</p>
  <p id="ubQn">Во-первых, полужирное начертание хорошо читается на экранах высокого разрешения даже при маленьком размере букв.</p>
  <p id="WKbO">Во-вторых, шрифт разборчиво отображает цифры, скобки и прочие символы, в частности буква &quot;о&quot; отличается от цифры &quot;0&quot;.</p>
  <p id="8FdR">В третьих, шрифт существует в различных вариантах, что позволяет использовать шрифт на терминалах разного разрешения.</p>
  <p id="NjiA">И, наконец, шрифт поддерживает большой набор символов , в который входят кириллица и варианты латиницы для подавляющего большинства европейских языков. Шрифт создан немецким дизайнером<a href="https://en.wikipedia.org/wiki/Erik_Spiekermann" target="_blank"> Erik Spiekermann.</a></p>
  <figure id="iFkn" class="m_retina">
    <img src="https://img1.teletype.in/files/c5/12/c51263f8-4ab5-4550-821e-673f58619efb.jpeg" width="589" />
  </figure>
  <p id="AunG"></p>
  <p id="0is7">Liberation mono - ещё один аккуратный шрифт с поддержкой большого количества языков.</p>
  <p id="oViG"><a href="https://ru.wikipedia.org/wiki/Terminus" target="_blank">Terminus</a>- старинный терминальный шрифт с поддержкой кириллицы. На HD мониторах выглядит несколько старомодно, буквы слишком тонкие . Есть жирное начертание, которое слегка улучшает вид на HD мониторах</p>
  <p id="2nsO">PT mono поддерживает наборы символов для большинства языков народов РФ, что делает его практически незаменимым, если вы пользуетесь в терминале, например, татарским языком. Шрифт разработан московской компанией <a href="http://(https://www.paratype.ru/" target="_blank"> Paratype </a></p>
  <h2 id="2S9z">Улучшаем prompt</h2>
  <p id="34dx">Тема улучшения подсказки для системного shell прочно владеет умами разработчиков . Наиболее популярны:<br />starship<br />liquidprompt<br />Oh My Posh</p>
  <blockquote id="XNZi">Про чайник на ядерных батарейках...<br /><br />Пару лет назад я поглядывал на подобные программы, но не прижилось. Если вы используете готовые настройки, то всё в общем работает. А когда вы пытаетесь внести изменения и настроить программу, то выясняется что изменить настройки очень трудоёмко так как под капотом находится конгломерат из shell скриптов, многострочных файлов конфигурации (иногда в формате json) и программных модулей на python или rust .Я такие программы называю чайником на ядерных батарейках. Такие чайники иногда выглядят довольно мощно, но если вы захотите выпить чаю, то сначала вы должны подумать об утилизации отработанного топлива и только потом вы можете пить чай Это тот самый случай, когда избыточные средства для решения задачи и приводят к появлению дополнительных трудностей. Лучше всего задачу получения чая решает обычный чайник без ядерных батареек.</blockquote>
  <p id="KdyH"><br />Попался вариант небольшой и вменяемой программы. <a href="https://github.com/andresgongora/synth-shell" target="_blank">https://github.com/andresgongora/synth-shell</a><br /><br />Всё написано на bash. Всё что от нас потребуется -это запустить установку и ответить на вопросы. Еще можно исправить один несложный и подробно документированный текстовый файл.<br /><br />vim ~/.config/synth-shell/synth-shell-prompt.config<br /><br />Там можно изменить поля, которые будут отображаться и изменить цвета элементов. Получился вот такой результат: </p>
  <figure id="U7wB" class="m_retina">
    <img src="https://img3.teletype.in/files/e0/10/e0104298-a78b-4380-84d8-63df7f78f5d0.png" width="276" />
  </figure>
  <p id="jCzp">В prompt здесь выводится [HOST&gt; PWD &gt;PYENV ]<br /></p>
  <h2 id="ks4f">Цветовые темы для терминала</h2>
  <p id="VLA8">Коллекцию готовых тем для терминала берем здесь:</p>
  <p id="CFla"><a href="https://github.com/Gogh-Co/Gogh" target="_blank">https://github.com/Gogh-Co/Gogh</a></p>
  <p id="YnCp"></p>
  <p id="w5EP">Если вам не нужно 255 цветовых тем для терминала, то следуйте инcтрукции на сайте, которые позволят вам установить отдельные темы используя только терминал.</p>
  <p id="9wqd">Сначала придется установить недостающий пакет.</p>
  <pre id="0agG">sudo apt-get install dconf-cli uuid-runtime</pre>
  <pre id="LzIV">bash -c &quot;$(wget -qO- https://git.io/vQgMr)&quot;</pre>
  <p id="gUjY"></p>
  <p id="irGX">Выбираeм из списка темы и они устанавливаются.</p>
  <p id="7wDk">Заведомо хорошие темы с темным фоном и неплохим контрастом Apprentice, Sea Shell , Toy Chest.</p>
  <p id="1SQZ">Тема Sea Shell выглядит так:</p>
  <figure id="AD13" class="m_retina">
    <img src="https://img3.teletype.in/files/e2/c7/e2c747e2-865b-45b1-a675-35b27672926a.jpeg" width="486" />
  </figure>
  <h2 id="VlmR">Делаем screencast</h2>
  <p id="1gdv"></p>
  <p id="x7EN">Если вы не хотите заниматься установкой довольно сложных программ для работы с видео, разбираться с особенностями настройки и использования кодеков, превращаться в матерого видео инженера, а все что вам необходимо - это сделать запись экрана и разместить гифку на вашей страничке, то программа peek это то, что вы искали. Кстати, и видео в стандартном mp4 можно сразу получить.</p>
  <p id="4Txx">Программа зависит от минимального количества библиотек, содержит одну кнопку управления и при этом просто работает .</p>
  <p id="eUE6">Запускаем алфавитно-цифровых рыбок в терминале и записываем их в гифку.</p>
  <figure id="22lI" class="m_original">
    <img src="https://img4.teletype.in/files/b3/c7/b3c747b3-7783-4173-a456-1e13336e7cd9.gif" width="624" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/90ySdAGe5FM</guid><link>https://teletype.in/@olegp/90ySdAGe5FM?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/90ySdAGe5FM?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Переезд в MX-Linux и антикварные часы</title><pubDate>Fri, 16 Feb 2024 10:50:18 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/bb/74/bb747540-35bf-49a7-8f5a-05f6811525c8.png"></media:content><category>Linux</category><description><![CDATA[<img src="https://img4.teletype.in/files/f8/49/f849234a-f337-4297-8580-c73d0a985d8a.jpeg"></img>Как то незаметно все наши домашние ноутбуки оказались под MX-Linux. Случилось это незаметно и без особых потерь.]]></description><content:encoded><![CDATA[
  <h2 id="QDNv">Про MX-Linux</h2>
  <p id="5Dup"></p>
  <p id="ZRWu">Как то незаметно все наши домашние ноутбуки оказались под MX-Linux. Случилось это незаметно и без особых потерь.</p>
  <blockquote id="ieNJ">До этого основной системой дома был Manjaro. Собственно Manjaro Linux вполне рабочая система и обычному пользователю она предлагает лёгкую установку на основе программы Calamares, довольно современную и красивую рабочую систему, большой набор новейших приложений из своего репозитория.</blockquote>
  <p id="vL8R">Меня же всегда интересовала возможность установки дополнительных приложений из репозитория Arch Linux aur. А с этим как раз стали возникать проблемы. С каждым обновлением Manjaro, совместимость с aur становится хуже. Исчезают старые библиотеки, и значительное количество программ из aur, по этой причине, становится неработоспособными. Желание сделать систему современнее приводит к тому, что в первую очередь разработчики стремятся пополнить собственный репозиторий новыми версиями программ, а совместимость с aur при таком развитии системы становится скорее исключением чем правилом.</p>
  <p id="yG0s">Желание пользоваться классическими проверенными приложениями неизбежно нас приводит либо к Debian, либо к Arch . А если мы хотим упростить установку системы, и пользоваться современными программами, то в этом случае MX-Linux ( дериватив Debian) и EndeavourOS ( дериватив Arch) будут неплохим выбором, который предоставит нам современную настольную систему и доступ к классическим репозиториям. Как показывает нам статистика на Disrtowatch, такой выбор дистрибутивов Linux очень популярен последние 5 лет.</p>
  <p id="JGZM">Мы выбрали MX-Linux и репозиторий Debian. Несколько слов про систему. Дистрибутив основан на Debian, для установки используется всё тот же Calamares, поддерживается XFCE, KDE и flubox из коробки. Следует отметить собственные утилиты mx-tools, заметно облегчающие настройку системы . В целом всё очень легко устанавливается, работоспособно и мало чем отличается от других популярных дистрибутивов. Зато теперь мы можем легко и непринужденно подключиться к репозиторию традиционным способом с помощью консольной утилиты apt и программой synaptic . Система содержит довольно полезное добавление - MX Package Installer, которое позволит нам не только быстро установить популярные десктопные приложения из стандартных репозиториев, но и flatpack пакеты из flathub, Так мы можем дополнить нашу систему современными приложениями. Такое вот сочетание классики и модерна.</p>
  <p id="bCNF">Напоследок следует упомянуть, что для загрузки системы используется старый добрый SysV init, в отличие от Debian, который перешёл на systemd. В результате даже на очень слабых компьютерах система загружается очень быстро, и все текстовые файлы конфигурации находятся в привычных для пользователей unix/linux местах. Мне очень давно не приходилось исправлять конфигурационные файлы вручную, всё работает и без того. Но заглядывать в конфигурационные файлы очень полезно для понимания настроек системы и приложений. Иногда это существенно экономит время. Впрочем разработчики утверждают, что systemd в MX-Linux поддерживается и может быть установлена по умолчанию.</p>
  <h3 id="xXB9">MX-Linux. Основные факты</h3>
  <ul id="kxNy">
    <li id="oiLS">Основан на Debian stable</li>
    <li id="nTYx">Легкая установка системы с помощью Сalamares</li>
    <li id="X6Fv">Простая установка популярных приложений включая пакеты flatpack</li>
    <li id="aafb">Стандартная установка приложений Debian</li>
    <li id="Xlj5">Не нужна systemd и снижены требования к оборудованию</li>
    <li id="5nhq">Рабочие столы: XFCE, KDE</li>
    <li id="FpTJ">Дополнительный набор инструментов для настройки системы.(MX-Tools)</li>
  </ul>
  <h3 id="rezyume">Резюме</h3>
  <p id="7VnM">Система очень стабильна, не слишком требовательна к оборудованию, легко настраивается, подходит для домашнего использования и не ограничивает в выборе приложений.</p>
  <h2 id="nastoyashie-shvejcarskie-chasy">Настоящие швейцарские часы</h2>
  <p id="xOy4">Репозиторий Debian это настоящая лавка древностей или софтверный склад антиквариата. Если вы бросите взгляд на содержимое репозитория, то вы не найдёте там, например, свежего клиента для telegram, но зато найдете большое собрание утилит и средств разработки не самой последней версии,но зато всё работает “из коробки”. Такова философия Debian.</p>
  <p id="Iwmk">Там я и нашел железнодорожные швейцарские часы. Так называется программа, изображающая часы.</p>
  <blockquote id="ddnz">Конструкция была разработана в середине XX века для швейцарских железных дорог и считается классическим образцом промышленного дизайна. В википедии есть статья, посвящённая этим часам и всем любопытным читателям я советую перейти по ссылке.</blockquote>
  <figure id="lKkM" class="m_retina">
    <img src="https://img4.teletype.in/files/f8/49/f849234a-f337-4297-8580-c73d0a985d8a.jpeg" width="234" />
  </figure>
  <p id="HPRq"><a href="https://ru.wikipedia.org/wiki/%D0%A8%D0%B2%D0%B5%D0%B9%D1%86%D0%B0%D1%80%D1%81%D0%BA%D0%B8%D0%B5_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D1%8B%D0%B5_%D1%87%D0%B0%D1%81%D1%8B" target="_blank">&gt;Статья в wikipedia про железнодорожные швейцарские часы</a></p>
  <p id="WrPS">И хотя программа из прошлого тысячелетия, удивительным образом она не только работает с современным оконными менеджерами, но и вполне себе хорошо отображается на современных экранах высокого разрешения и достаточно неплохо выглядит. Иногда эту программу называют матерью компьютерных часов. Как любая приличная программа для Linux, она допускает конфигурирование и предоставляет информацию с помощью man.</p>
  <p id="keRe">Я запустил программу следующим образом:</p>
  <p id="icAx"><code>swisswatch -geometry 180x180+148+64</code></p>
  <p id="9hq1">параметр -geometry позволяет задать размер и координаты окна и имеет следующий формат: “Ширина x Высота + координатаX + координатаY”. То есть при запуске окно шириной в 180 единиц и высотой 180 единиц будет находиться на 148 пикселей вправо и на 64 пикселей вниз от верхнего левого угла экрана.</p>
  <figure id="PzZf" class="m_retina">
    <img src="https://img4.teletype.in/files/31/c3/31c3a93d-174f-47dd-8708-f0439b4f3875.jpeg" width="125" />
  </figure>
  <p id="3XTS">Теперь можно добавить строчку в автозапуск …</p>
  <p id="0YzG"></p>
  <figure id="YJpw" class="m_retina">
    <img src="https://img3.teletype.in/files/a1/f5/a1f5078c-3025-4c96-99a8-3f0cb4cfe29c.png" width="960" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/_2j-AXLqyxL</guid><link>https://teletype.in/@olegp/_2j-AXLqyxL?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/_2j-AXLqyxL?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Именованные цвета в tkinter </title><pubDate>Mon, 10 Jul 2023 05:20:54 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/a9/11/a911cd0b-c0a5-453a-bfba-ab6889cfbcd9.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/52/30/5230b048-5eef-4df3-9993-1805669fbd01.jpeg"></img>В этой небольшой заметке  я рассказываю про именованные цвета tkinter и  показываю как с ними можно работать. Попутно вы узнаете как с помощью python можно вытащить и обработать данные из web страницы и получить список всех возможных цветов. И, наконец, мы соорудим, две простецкие программы для просмотра списка цветов.]]></description><content:encoded><![CDATA[
  <p id="zGqm"><em>В этой небольшой заметке  я рассказываю про именованные цвета tkinter и  показываю как с ними можно работать. Попутно вы узнаете как с помощью python можно вытащить и обработать данные из web страницы и получить список всех возможных цветов. И, наконец, мы соорудим, две простецкие программы для просмотра списка цветов.</em></p>
  <p id="59hM">Tkinter использует именованные цвета. Поэтому для задания кода цвета можно задать rgb код цвета или мы можем написать название. Так вместо &#x27;#C0C0C0&#x27; можем написать &#x27;silver&#x27;, вместо &#x27;#800000&#x27; - &#x27;maroon&#x27;</p>
  <p id="oeVi">Всё это замечательно, но в этой бочке мёда есть ложка дёгтя. Если вы знаете имена цветов, то вы получите правильный результат. А получить список доступных цветов из программы практически невозможно. Вызов тулкита, возвращающий список имен, видимо, отсутствует. Тем не менее, таблицу-справочник доступных имён можно найти в системной документации на tcl/tk,который лежит здесь:<a href="http://www.tcl.tk/man/tcl8.6.13/TkCmd/colors.htm" target="_blank"> http://www.tcl.tk/man/tcl8.6.13/TkCmd/colors.htm </a>.</p>
  <p id="WJ90">Просмотр системной документации наводит нас на мысль, что в основе лежит список цветов системы X11. Кроме того, абсолютной точности тут может и не быть - этот список изменялся со временем, так что возможна небольшая разница между разными версиями этого списка. Поэтому мы просто обращаемся к последней версии документации.</p>
  <p id="sSZa">Отметим, что некоторые цвета встречаются дважды, - например, &quot;antique white&quot; и &quot;AntiqueWhite&quot; представляют один и тот же цвет. Сделано это для удобства и упрощения кодирования программ.                                                                                                                                                                         </p>
  <h2 id="9vHo">Получаем список цветов из сети.</h2>
  <p id="8SdT">Я написал небольшое приложение gettkcolors.py, которое обращается к сайту с документацией, вытаскивает таблицу именованных цветов из системной документации и сохраняет все системные цвета в два локальных файла следующим образом:</p>
  <p id="sN8A">CSVFILENAME = PROJECT_PATH / &#x27;tkcolors.csv&#x27;</p>
  <p id="p9Xx">PYFILENAME = PROJECT_PATH / &#x27;tknamedcolors.py&#x27;</p>
  <figure id="6U1z" class="m_column">
    <img src="https://img2.teletype.in/files/52/30/5230b048-5eef-4df3-9993-1805669fbd01.jpeg" width="1025" />
  </figure>
  <p id="B3dO">Программа использует модуль requests, забирает страницу в буфер и передаёт её в в процедуру разбора и получения списка цветов.</p>
  <blockquote id="HhaQ">Вытащить цвета из страницы можно с помощью <a href="https://www.crummy.com/software/BeautifulSoup/" target="_blank">BeautifulSoup4</a>. Это очень популярная библиотека для анализа страниц  и извлечения данных из hmtl и xml. С её помощью мы можем вытаскивать данные из html таблиц в том числе. С помощью модулей requests и BeatifulSoup4, мы получаем универсальный механизм для вытаскивания данных из веб страниц для наших приложений.</blockquote>
  <p id="0Cn3">Собственно сам разбор страницы занял 20 строк, а вся программа около 150. Реализовывать на python подобные алгоритмы очень удобно.</p>
  <p id="aUHL">Таким способом мы получили внешний файл tknamedcolors.py, который содержит tuple со всеми именами цветов:</p>
  <pre id="ZexU">
tkColorNames = [&quot;alice blue&quot;,&quot;AliceBlue&quot;,&quot;antique white&quot;, &quot;AntiqueWhite&quot;,
    &quot;AntiqueWhite1&quot;,&quot;AntiqueWhite2&quot;,&quot;AntiqueWhite3&quot;,&quot;AntiqueWhite4&quot;,
    &quot;aqua&quot;,&quot;aquamarine&quot;,&quot;aquamarine1&quot;,&quot;aquamarine2&quot;,
    &quot;aquamarine3&quot;,&quot;aquamarine4&quot;,&quot;azure&quot;,&quot;azure1&quot;,
    &quot;azure2&quot;,&quot;azure3&quot;,&quot;azure4&quot;,&quot;beige&quot;,
    &quot;bisque&quot;,&quot;bisque1&quot;,&quot;bisque2&quot;,&quot;bisque3&quot;,
    &quot;bisque4&quot;,&quot;black&quot;,&quot;blanched almond&quot;,&quot;BlanchedAlmond&quot;,
    &quot;blue&quot;,&quot;blue violet&quot;,&quot;blue1&quot;,&quot;blue2&quot;,
    &quot;blue3&quot;,&quot;blue4&quot;,&quot;BlueViolet&quot;,&quot;brown&quot;,
    &quot;brown1&quot;,&quot;brown2&quot;,&quot;brown3&quot;,&quot;brown4&quot;,
    
...
</pre>
  <p id="y7gk">Быстренько делаем программу для визуализации полученного кортежа. И неожиданно обнаруживаем небольшое препятствие.  При первоначальном запуске оказалось, что в системной документации есть две опечатки в именах цветов. При попытке установить цвета &#x27;agua&#x27; и &#x27;crymson&#x27; мы получаем ошибку. Вносим в нашу программу загрузки цветов исправление :</p>
  <pre id="UycP">if cn == &#x27;agua&#x27; :
	cn = &#x27;aqua&#x27;
if cn == &#x27;crymson&#x27; :
	cn = &#x27;crimson&#x27;</pre>
  <p id="eU2n">Теперь мы можем закончить простейший просмотрщик имен цветов ( showmetkcolors.py ).</p>
  <figure id="g3zi" class="m_column">
    <img src="https://img4.teletype.in/files/74/ab/74ab18ba-cafc-47df-8b7e-fbd2450cf9d4.jpeg" width="948" />
  </figure>
  <p id="92Gr">Если внимательно посмотреть на таблицу, то можно обнаружить, что некоторые цвета встречаются дважды. Например, все оттенки серого.</p>
  <h2 id="hgp4">Как преобразовать название цвета в RGB</h2>
  <p id="0GZR">Сделать это можно с помощью вызова winfo_rgb(colorname) экземпляра toplevel.</p>
  <pre id="aEJK">r,g,b=self.mainwindow.winfo_rgb(colorname)</pre>
  <p id="BFmN"></p>
  <h2 id="zm6M">Справочник цветов</h2>
  <p id="9QT6">Теперь мы можем соорудить приложение, которое показывает все имена цветов и коды в виде дерева-showmecolorstree.py.</p>
  <blockquote id="4Uab">С помощью pygubu-designer (<a href="https://teletype.in/@olegp/XwhcuhtgEZ_" target="_blank">см. про pygubu-designer</a>) мы делаем несложный интерфейс. И используем небольшой трюк для изображения цветных прямоугольников в качестве элементов treeview. Для отображения мы загружаем монохромное изображение прозрачного прямоугольника, и устанавливаем для него цвет фона:</blockquote>
  <pre id="4yWG">def fill_colors(self):
		&quot;fill treeview with colors&quot; 
		self.ccim=[]
		i=1
		for colorname in tkColorNames:
			#load xpm , set backround color
			self.xpmrect=BitmapImage(file=xxpm, background=colorname,foreground=&#x27;black&#x27;)
			r,g,b=self.mainwindow.winfo_rgb(colorname)
			rgbvalue=listrgb2hexrgb((r,g,b))
			self.ccim.append(self  .xpmrect)
			self.tree.insert(&#x27;&#x27;,&#x27;end&#x27;,image = self.xpmrect,text=&#x27; &#x27;,value=(colorname, rgbvalue))
			i+=1</pre>
  <p id="wBAE"></p>
  <p id="lnox"></p>
  <figure id="laaU" class="m_column">
    <img src="https://img1.teletype.in/files/8a/b1/8ab1207c-ae94-490e-93cc-5b17edbbb65f.jpeg" width="608" />
  </figure>
  <p id="Imzv">Вот мы и получили программу из 82 строк включая пробелы. Теперь вы можете просматривать доступные имена для стандартных цветов и соответствующие им коды. Можно скачать  <a href="https://drive.google.com/file/d/1XY-s9dKwHE6cmUp4V93EWlhQyZ_LkRKM/view?usp=drive_link" target="_blank">исходный код примеров этой статьи</a></p>
  <h2 id="pwJt">Ссылки</h2>
  <p id="cnJt"><a href="https://teletype.in/@olegp/XwhcuhtgEZ_" target="_blank">Моя заметка про pygubu-designer</a></p>
  <p id="cupw"><a href="https://www.crummy.com/software/BeautifulSoup/" target="_blank">BeautifulSoup4</a></p>
  <p id="ml4U"><a href="https://www.tcl.tk/man/tcl8.6.13/TkCmd/colors.html" target="_blank">Страница tcl.tk с кодами цветов</a></p>
  <p id="J4cm"><a href="https://drive.google.com/file/d/1XY-s9dKwHE6cmUp4V93EWlhQyZ_LkRKM/view?usp=drive_link" target="_blank">Исходный код примеров этой статьи</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/XwhcuhtgEZ_</guid><link>https://teletype.in/@olegp/XwhcuhtgEZ_?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/XwhcuhtgEZ_?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title> GUI BUILDER ДЛЯ TKINTER.</title><pubDate>Wed, 21 Jun 2023 10:38:28 GMT</pubDate><category>gui</category><description><![CDATA[<img src="https://img2.teletype.in/files/98/20/98209f11-6e72-4d6e-858e-6da5fb49cd95.jpeg"></img>Технология tkinter  мне чертовски нравится - вам предлагают создавать gui компактно, переносимо и лаконично.  Как я отмечал в предыдущих заметках ( Некорявый tkinter - Часть 1 и  Некорявый tkinter - Часть 2  ), старомодный и неказистый интерфейс  в последние годы был модернизирован  с помощью новейших библиотек.   Учитывая, что python (с которым я начал работать в далёком 2000 г.,  и тогда же опубликовал забавную заметку про работу с данными на python, в ту пору python выглядел как реактивный самолёт после   паровоза-perl), ныне оказался на пике технологий,  возрастающий интерес к этой библиотеке можно легко объяснить.]]></description><content:encoded><![CDATA[
  <p id="Q0QA">Технология tkinter  мне чертовски нравится - вам предлагают создавать gui компактно, переносимо и лаконично.  Как я отмечал в предыдущих заметках ( <a href="https://teletype.in/@olegp/vcLgpALl1di" target="_blank">Некорявый tkinter - Часть 1</a> и <a href="https://teletype.in/@olegp/10bZy3Gwcb9" target="_blank"> Некорявый tkinter - Часть 2  </a>), старомодный и неказистый интерфейс  в последние годы был модернизирован  с помощью новейших библиотек.   Учитывая, что python (с которым я начал работать в далёком 2000 г.,  и тогда же опубликовал забавную заметку про работу с данными на python, в ту пору python выглядел как реактивный самолёт после   паровоза-perl), ныне оказался на пике технологий,  возрастающий интерес к этой библиотеке можно легко объяснить.</p>
  <p id="nEir">В этой заметке  речь пойдёт о графических интерфейсах и средстве  визуального проектирования графических интерфейсов для tkinter. </p>
  <blockquote id="IALo">Напомню, что tkinter - это компактная библиотека для создания мультиплатформеногого gui в python. И, хотя, этот набор виджетов довольно ограничен, но он давно присутствует во всех версиях python , и, в качестве инструмента для создания несложного графического интерфейса, вполне подходит и довольно часто используется вместе с современными библиотеками (pandas, matplotlib и пр.). </blockquote>
  <p id="3zxZ">Большим недостатком библиотеки, по-моему мнению, являлось отсутствие визуальных средств создания форм. В других графических тулкитах (gtk, QT или wxwidgets) подобные средства существует давно и такой способ визуальной разработки графических интерфейсов для программистов привычен, понятен и удобен. В случае с tkinter подобные попытки неоднократно предпринимались. Не могу сказать, что они были удачными. Но вот кажется что-то похожее на желаемое уже появилось.</p>
  <p id="eO2u">Программа явно создана создана под влиянием glade, который хорошо знают пользователи Gnome/gtk. Так что теперь можно создавать экранные формы визуально, с помощью программы-дизайнера, сохранять созданные формы во внешний файл, который можно впоследствии использовать для автоматического создания форм и дописывать обработчики событий. И хотя программа довольно сыровата и не все функции реализованы, но лучшего решения я пока не видел, задачу быстрого создания форм программа вполне решает.</p>
  <p id="c1wN">Способ работы с программой очень нагляден. Совершенно естественным способом, ссылки, на нарисованные виджеты, можно получить внутри вашей программы, после чего вы можете модифицировать свойства и реализовать все желаемые обработчики событий, и это не потребует сложных усилий. Собственно нарисовать интерфейс в визуальной манере, сохранить его виде xml ресурса, затем загрузить и получить работающий прототип графического интерфейса за несколько минут - это как раз тот самый способ, который сильно упрощает жизнь и экономит время. Удивительную  лаконичность и компактность кода tkinter и pygubu я бы назвал рекордными. Код получается заметно короче чем в gtk, QT или wxwidgets...</p>
  <h2 id="iDtF">Установка</h2>
  <p id="4vo3">Самый простой способ для установки пакетов это pip.</p>
  <pre id="AJe9">python -m pip install pygubu</pre>
  <pre id="ZKyg">python -m pip install pygubu-designer</pre>
  <h2 id="FeLI"><br />Традиционный HELLO WORLD</h2>
  <p id="lgZX">Попробуем создать простейшее приложение.</p>
  <blockquote id="ej9g">Поскольку мы пользуемся pygubu - оберткой вокруг tkinter, то мы должны позаботиться об аккуратной инициализации программы. В качестве видежета верхнего уровня рекомендуется использовать tk.Toplevel. В него вкладываем виджет-контейнер ttk.Frame, далее можно добавлять любые виджеты.</blockquote>
  <p id="elih">Создадим следующие элементы интерфейса:</p>
  <p id="G48p">* tk.Toplevel</p>
  <blockquote id="mO7L">* ttk.Frame</blockquote>
  <blockquote id="nrSG">* ttk.Label</blockquote>
  <blockquote id="NN6z">* ttk.Label</blockquote>
  <blockquote id="bpz0">* ttk.Button</blockquote>
  <p id="7njj">Для меток зададим текстовые надписи, скомпонуем объекты, укажем расстояния между элементами и для ttk.Button укажем property command=on_ok_clicked. Компоновка объектов немного утомительна и требует понимания принципов компоновщика tkinter. Но программа позволяет поиграться с компоновкой объектов визуально и очень сильно ускоряет процесс понимания принципов работы разных алгоритмов компоновки.</p>
  <figure id="HYoK" class="m_column">
    <img src="https://img2.teletype.in/files/98/20/98209f11-6e72-4d6e-858e-6da5fb49cd95.jpeg" width="1066" />
  </figure>
  <p id="DdYc">Думаю вы согласитесь, визуально всё-таки намного проще задать разумные интервалы между объектами. По умолчанию tkinter создаёт слишком плотное расположение элементов, поэтому очень часто программы имеют довольно &quot;скомканный&quot; интерфейс.</p>
  <p id="3xoU">Сохраняем созданную форму hello.ui</p>
  <h2 id="WiOx">Про генерацию кода</h2>
  <figure id="2CuY" class="m_column">
    <img src="https://img3.teletype.in/files/af/1b/af1b7309-a2e1-4c07-9f21-4d2396eb9fac.jpeg" width="1066" />
  </figure>
  <p id="fE1T">Программа предполагает три режима генерации кода :</p>
  <p id="hDuY">Application/Code Script/Custom Widget .</p>
  <p id="aHbP">Полностью работоспособен  и наиболее полезен режим application, который создаёт динамический класс приложения способом загрузки ХМL ресурса в конструкторе класса. Получается очень компактный прототип для последующей доработки. Доработка обычно заключается в получении ссылки на виджет, изменении свойств виджетов, включая заполнение данными элементов форм и реализацию обработчиков различных событий ( их обычно называют функциями обратного вызова). Большим плюсом такого подхода является возможность изменить визуальное представление формы с помощью pygubu-designer с минимальными изменениями кода программы.</p>
  <p id="wP44">Получаем следующий код и дописываем метод on_ok_clicked.</p>
  <pre id="38Iv">      
#!/usr/bin/env python 
# -*- coding: UTF-8 -*- 

# pygubu demo 
# last update : 29.05.2023 09:31:59
# hello world

import os
import pygubu


PROJECT_PATH = os.path.dirname(__file__)
PROJECT_UI = os.path.join(PROJECT_PATH, &quot;hello.ui&quot;)


class HelloApp:
	def __init__(self):
		self.builder = builder = pygubu.Builder()
		builder.add_resource_path(PROJECT_PATH)
		builder.add_from_file(PROJECT_UI)
		self.mainwindow = builder.get_object(&#x27;main&#x27;)
		builder.connect_callbacks(self)
	
	def on_ok_clicked(self):
		self.mainwindow.quit()
		

	def run(self):
		self.mainwindow.mainloop()

if __name__ == &#x27;__main__&#x27;:
	app = HelloApp()
	app.run()


</pre>
  <p id="oMZP">На этом процесс создания приложения закончен.</p>
  <p id="9X4A">Запускаем нашу программу.</p>
  <figure id="W9Fg" class="m_original">
    <img src="https://img2.teletype.in/files/56/36/56361fbd-00ed-4bc9-af1c-4056a2919e89.jpeg" width="315" />
  </figure>
  <p id="rhq0">Два других режима создают последовательность команд для создания интерфейса.</p>
  <p id="LJGs">Сама эта возможность неплоха, но код генерируется не вполне корректный. Если вы хорошо знаете tkinter, то и в этом случае вы сможете полученный сценарий доработать до работоспособного состояния. Но в дальнейшем при изменении графического интерфейса придётся заново генерировать код формы, и заново дописывать код для заполнения виджетов данными, функции обратного вызова и т.д.</p>
  <h2 id="EscX"> Пример 2. Получаем ссылки на виджеты и дописываем код</h2>
  <p id="nfDI">Со своей основной задачей-созданием экранных форм и генерацией прототипа приложения pygubu в основном справляется. Для реализации свойств виджетов и функций обратного вызова вполне достаточно получить ссылку на экземпляр любого виджета формы. Такой функционал позволяет реализовать необходимый код.</p>
  <p id="5SdJ">Каким образом можно это сделать я попробую показать на следующем примере.</p>
  <p id="fwgm">В следующем примере в нашей форме присутствуют следующие виджеты:</p>
  <p id="W9SL"> listboxBooks  - type: tk.Listbox </p>
  <p id="MMuj">labelSelBook    - type:  ttk.Label</p>
  <p id="B4Gf">scrollbarBooks   - type:  ttk.Scrollbar</p>
  <p id="wZl1">Ссылки на экземпляры виджетов мы можем получить следующим образом:</p>
  <pre id="6Xgt">        #get gui widgets
		self.mainwindow = builder.get_object(&#x27;toplevel&#x27;)
		self.listboxBooks = builder.get_object(&#x27;listboxBooks&#x27;)
		self.labelSelBook = builder.get_object(&#x27;labelSelBook&#x27;)</pre>
  <p id="ZkpC">После чего можно использовать экземпляры виджетов самым обычным образом. Например, можно привязать scrollbar к listbox:</p>
  <pre id="Szgm">        # attach  scrollbar to listbox 
		self.listboxBooks.config(yscrollcommand=self.scrollbarBooks.set)
		self.scrollbarBooks.config(command=self.listboxBooks.yview)
</pre>
  <p id="54tf">И реализовать функцию обратного вызова(call back) при выборе элемента из списка:</p>
  <pre id="ngaj">
def onSelectBook(self, event=None):
		lbox=event.widget
		idx=lbox.curselection()
		bookname=lbox.get(idx)
		self.labelSelBook[&#x27;text&#x27;]=bookname</pre>
  <p id="7yD4">Вот что получилось:</p>
  <figure id="JLod" class="m_original">
    <img src="https://img3.teletype.in/files/a0/16/a016106e-6f73-4edc-be7e-6b08a47d54fd.jpeg" width="651" />
  </figure>
  <p id="UEMU"></p>
  <blockquote id="Jxum">При первом знакомстве с программой я обнаружил, что не работает, например, привязка скроллбаров к виджeтам. Такой код пришлось добавлять вручную. Последующее изучение программы показало, что задачу автоматичесикого связывания скроллбаров с виджетами решает специальный класс библиотеки pygubu - scrollbarhelper. Его применение оказалось крайне простым. Этот класс выступает контейнером для вложенного в него виджета. В этом случае связывание двух виджетов происходит автоматически.</blockquote>
  <h2 id="g4De">Заключение</h2>
  <p id="jeXt">В общем и целом, pygubu уже позволяет создавать графические интерфейсы визуально и получить сравнительно простым способом работающий прототип приложения. Переоценить выгоды тут сложно. Код получается короткий, лаконичный и единообразный, его легко развивать, модифицировать и сопровождать.</p>
  <blockquote id="VYVy">Это то самое упрощение работы, которое снижает нагрузку на разработчика и позволяет сосредоточиться на реализации прикладной части.</blockquote>
  <p id="8VOF">Кроме того, полагаю, что эта программа будет очень полезна при изучении tkinter. Вы можете визуально поиграть с различными вариантами компоновки, посмотреть свойства виджетов и увидеть их взаимосвязь.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/iBOyz1D4use</guid><link>https://teletype.in/@olegp/iBOyz1D4use?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/iBOyz1D4use?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Window Maker не просто жив, </title><pubDate>Thu, 01 Jun 2023 06:08:23 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/26/dc/26dc932f-438b-4baf-afc1-0bae48a8c505.png"></media:content><category>Linux</category><description><![CDATA[<img src="https://img2.teletype.in/files/d1/de/d1de1f27-3695-479e-a195-19bdfb9b4a6a.jpeg"></img> я его иногда использую.]]></description><content:encoded><![CDATA[
  <p id="pjs1"> я его иногда использую.</p>
  <p id="fTa8">Соорудил очередную темную тему для WM и темы для приложений gtk2 и gtk3 — clarividenciaII, и иконки — clarividencia. Создано исключительно для удобной работы, без особых изысков.</p>
  <p id="0S1T"></p>
  <p id="NCns"></p>
  <figure id="hQ0l" class="m_column">
    <img src="https://img2.teletype.in/files/d1/de/d1de1f27-3695-479e-a195-19bdfb9b4a6a.jpeg" width="1920" />
  </figure>
  <p id="Zz1w"></p>
  <p id="Ldoe">В dock запихнуто следующее:</p>
  <p id="DKdc">- wmCalClock;</p>
  <p id="MonR">- /lib/GNUstep/Applications/WPrefs.app/WPrefs;</p>
  <p id="rckn">- xfce4-terminal;</p>
  <p id="zoAn">- xfe;</p>
  <p id="t22x">- gvim;</p>
  <p id="6GWw">- docker-tray -wmaker -iconsize 24</p>
  <p id="WBrz"></p>
  <p id="p4jC"></p>
  <p id="OggV">Скачать можно здесь:</p>
  <p id="B5lP"><a href="https://drive.google.com/file/d/1NdxexLKMeK5jcEe5WeiU4z12l_tPBzvH/view?usp=share_link" target="_blank">GlassHexagons window maker theme</a></p>
  <p id="yg84"><a href="https://drive.google.com/file/d/1MZ-hAmFAi5How56jLJkOM_gXhxvi49Rg/view?usp=share_link" target="_blank">ClarividenciaII gtk2+gtk3 theme</a></p>
  <p id="FnZI"><u><a href="https://drive.google.com/file/d/1oCW6EIcY_OSGpXTKuAgXd_QHCH_IDPbH/view?usp=share_link" target="_blank">Clarividencia icons</a></u></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/m_0gWriQqqF</guid><link>https://teletype.in/@olegp/m_0gWriQqqF?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/m_0gWriQqqF?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Готовим vim для markdown </title><pubDate>Tue, 23 May 2023 05:53:18 GMT</pubDate><category>vim</category><description><![CDATA[<img src="https://img3.teletype.in/files/67/41/6741ba5f-ad8c-4e5e-a7a0-dd68d718862c.png"></img>В этом тексте коротко рассказывается о возможностях работы с markdown, которые предоставляет Vim.  Vim довольно часто включается в обзоры лучших редакторов markdown.  Но небольшие настройки редактора в этом случае всё же существенно облегчают работу.]]></description><content:encoded><![CDATA[
  <p id="Rwrc">В этом тексте коротко рассказывается о возможностях работы с markdown, которые предоставляет Vim.  Vim довольно часто включается в обзоры лучших редакторов markdown.  Но небольшие настройки редактора в этом случае всё же существенно облегчают работу.</p>
  <p id="mvZe"> Markdown последние годы набирает популярность. Использование простой  разметки для структурированных текстов  позволяет без особых усилий преобразовать документ практически в любой формат,  простота и гибкость это именно то, что вы можете получить взяв на вооружение эту технологию<br />Будете  ли вы использовать  markdown или нет, - это вы должны решать сами. Но если вы читаете эту статью, то, очевидно, есть некоторый интерес к теме. </p>
  <h2 id="QNDE">Базовые настройки</h2>
  <blockquote id="wv4q">Здоровый критицизм к подбору плагинов позволит вам избежать пустых затрат времени. Некоторые плагины работают не всегда хорошо, либо требуют времени на их настройку и изучение. Понимание базовых настроек при этом останется с вами,  и  впоследствии повысит вашу продуктивность.</blockquote>
  <p id="kaPf">Даже без плагинов vim позволяет редактировать тексты удобным способом. При правильной настройке, vim поддерживает синтаксическую подсветку  и механизм сворачивания документа(<strong>folding</strong>) .  Небольшой коррекции требует механизм автоматического переноса длинных строк. Кроме того, мы здесь затронем вопрос   об автоматической проверке орфографии.</p>
  <p id="NonN">Будет сказано несколько слов про плагин vim-markdown, и про механизм сокрытия разметки (<strong>concealing</strong>). Также вы узнаете о том, как  добавить функции  для просмотра  документов  в консоли и браузерах.   </p>
  <h3 id="kJXz">Переносы строк    </h3>
  <p id="j5hl">Автоматический перенос строк довольно неудобен при наборе разметки markdown. В этом случае редактор ограничивает длину строки и автоматически вставляет символы конца строки, а это часто приводит некорректному отображению текста в других программах и при преобразовании документа к другим форматам(особенно это касается формата HTML). </p>
  <blockquote id="IqJm"> По  спецификации markdown  CommonMark,  символы конца строки не  должны приводить при преобразовании в html к появлению &lt;/br&gt;. Но если вы, например, пишете	 readme для проекта на gitlab, то именно такой эффект вы и получите. Разные сайты и разные программы при преобразовании документов могут вести себя по-разному.  </blockquote>
  <p id="sUKz">Отключить автоперенос строк можно с помощью установки параметра </p>
  <pre id="kNCw">:set textwidh=0</pre>
  <p id="nuzT">Поскольку автоперенос довольно удобен во многих случаях, то мы его отключаем только для файлов типа md.<br />Для этого добавляем в vimrc строчку:</p>
  <pre id="nuzT">autocmd Bufread *.md  setlocal textwidth=0</pre>
  <p id="JmX6">Напомним, что за отображение строк отвечает также и параметр line wrapping. Он изменяет только режим отображения длинных строк, никакие символы при этом в строку не добавляются. Его можно переключить в любое время:</p>
  <pre id="g7or">:set wrap!</pre>
  <h3 id="y3IV">Folding   </h3>
  <p id="iIbj">Сворачивание/разворачивание текста(т.н. folding)  настраивается с помощью нескольких параметров .vimrc. <br />На текущий момент я использую следующие параметры для различных типов документов:</p>
  <pre id="HhZm">&quot;&quot;----------------------------------------------
&quot; folding
&quot;-----------------------------------------------
set foldenable
set foldmethod=indent
set foldminlines=4
set foldnestmax=4</pre>
  <p id="NASn">Для активации этой функции  для markdown в .vimrc следует добавить ещё одну строчку. </p>
  <pre id="kbU1">let g:markdown_folding=1</pre>
  <figure id="Lvlk" class="m_column">
    <img src="https://img3.teletype.in/files/67/41/6741ba5f-ad8c-4e5e-a7a0-dd68d718862c.png" width="1312" />
    <figcaption>folding</figcaption>
  </figure>
  <h3 id="yDml">Автоматическая проверка правописания - spell</h3>
  <p id="V3sd">Словари для vim-spell можно скачать по ссылке: <a href="http://ftp.vim.org/pub/vim/runtime/spell/" target="_blank">http://ftp.vim.org/pub/vim/runtime/spell/</a></p>
  <p id="PvzM">Независимо от локали системы, вы можете установить проверку правописания для любого языка.  Необходимые словари должны быть в установлены в системе, или их можно просто положить в папку $HOME/.vim/spell/.</p>
  <p id="j9b9">Включаем автоматическую проверку правописания для русского языка.  Для этого следует добавить  в .vimrc  настройки языка для документов типа markdown.</p>
  <pre id="E4Jd">&quot; Set spell check to Russian
autocmd FileType markdown setlocal spell spelllang=ru</pre>
  <p id="OLH7">Включить или выключить проверку правописания можно с помощью команд:</p>
  <pre id="nXPq">:set spell
:set nospell</pre>
  <h2 id="mucL">Плагины</h2>
  <h3 id="pa5O"> Оглавления и плагин tagbar </h3>
  <p id="BiXj">Этот плагин воистину универсальный швейцарский нож.<br />Без каких-либо специальных настроек он просто показывает оглавление в отдельном окне в том числе и для markdown.</p>
  <h3 id="b7k1">Плагин vim-markdown.</h3>
  <p id="Mpvw">Дополнительный  набор функций для работы с markdown  реализован в плагине  <a href="https://github.com/preservim/vim-markdown/" target="_blank">vim-markdown</a>. В первую очередь он содержит набор функций для сокрытия разметки(режим conceal).  Кроме того, плагин позволяет  создавать оглавления документа в отдельном окне и добавляет дополнительные  клавиатурные комбинации для быстрого перемещения по структуре документа.  </p>
  <p id="zIUl">При этом в  vim для MS Windows  перестает работать folding. В vim для Linux folding работает как с плагином так и без оного. Нужен ли вам такой плагин, если вы пользуетесь Windows,  решайте сами.</p>
  <blockquote id="85Ql">OS MS Windows существенно ограничивает набор применяемых утилит и программ, так, например, иногда попадаются плагины для vim, которые не работают в этой OS.  Поскольку значительная часть инструментов для системных администраторов и  программистов развивается на открытых платформах, то использование MS Windows становится для профессионалов не очень привлекательным </blockquote>
  <p id="IZI6">Я бы сказал, что ситуация с плагинами для  vim довольно неоднозначная. Во-первых, плагинов очень много и, во-вторых, не все они полезны и, наконец, не все они работают хорошо. В большинстве случаев неплохим ориентиром служит сайт  <a href="https://vimawesome.com/" target="_blank">https://vimawesome.com/</a>, на котором самые собраны самые популярные и, чаще всего, работоспособные плагины.</p>
  <h3 id="z5Xe">Conceal или нужен ли нам WISIWIG в текстовом редакторе?</h3>
  <p id="d1Q2">Vim имеет механизм для сокрытия разметки. В случае с markdown мы можем отображать разметку полностью или частично скрывать. Но текущая строка всегда будет отображать разметку полностью.  В последней версии vim 9, этот механизм с файлами типа markdown не работает вовсе,  его реализовали в плагине  vim-markdown. Правда,  как я упоминал выше, после установки этого плагина перестаёт работать folding в системах MS Windows.</p>
  <figure id="f8Eq" class="m_column">
    <img src="https://img4.teletype.in/files/70/5e/705ef896-a348-4a0f-b74c-2637f68d7951.png" width="1027" />
    <figcaption> Механизм conceal</figcaption>
  </figure>
  <p id="hXFZ"><br />Для настройки conceal в .vimrc  добавляем параметры:</p>
  <pre id="tcJs">let g:vim_markdown_conceal=1 
autocmd Bufread *.md  setlocal conceallevel=2</pre>
  <p id="yYzE">Параметр set conceallevel можно изменять динамически.</p>
  <pre id="Aly2">:set conceallevel=3</pre>
  <p id="OohI">Для этого параметра можно указать значение от 0 до 3. Значение 0 выключает этот режим, а значение 3 позволяет скрыть разметку максимальным образом.<br />Можно поэкспериментировать  задавая это значение и наблюдая при этом как меняется отображение ссылок, иллюстраций и прочих элементов разметки.</p>
  <blockquote id="tkaV"> Некоторые текстовые редакторы(<a href="https://typora.io/" target="_blank">typora</a>, например) имеют такой механизм. Выглядит это довольно эффектно, но для набора текста это не очень удобно.  Желание реализовать режим WYSYWIG до некоторой степени противоречит философии консольного редактора,  IMHO, разумеется.</blockquote>
  <h3 id="8700"><br /> Preview</h3>
  <p id="8uZr">Редакторы markdown обычно имеют механизм preview, который обычно отображает html страницу в браузере, полученную из документа с применением CSS, при этом можно увидеть как ошибки форматирования, так и ошибки преобразования md в html.</p>
  <p id="Z7rc">Для vim существует несколько плагинов такого рода.  Их существенным недостатком являются неуниверсальность - они работают не во всех операционных системах и не со всеми браузерами. </p>
  <blockquote id="V8qG">Так, например, <a href="https://github.com/JamshedVesuna/vim-markdown-preview" target="_blank">vim-markdown-preview</a> будет работать только в Linux и Mac OS X, a <a href="https://github.com/iamcco/markdown-preview.nvim" target="_blank">sparkles Markdown Preview</a> требует наличия JavaScript и дополнительных библиотек. Это имеет некоторый смысл, если вы используете эти инструменты для выполнения другой работы, устанавливать их для только для просмотра документов из vim мне кажется избыточным.  </blockquote>
  <p id="cJkn">Простейший вариант предварительного просмотра документа можно получить безо всяких плагинов с помощью непосредственного запуска в окне Vim консольной программы для просмотра документов. Например, запуск <a href="https://github.com/charmbracelet/glow" target="_blank">glow</a> в консоли выглядит вот так:</p>
  <pre id="OAh5">:vert term glow %</pre>
  <figure id="jiwp" class="m_column">
    <img src="https://img3.teletype.in/files/69/47/6947d36b-21f5-4aef-9b16-c47cce9e94a1.png" width="1366" />
    <figcaption>markdown preview in glow</figcaption>
  </figure>
  <p id="l77C"></p>
  <p id="WPJr">Я полагаю, что на этом можно было бы и закончить тему.  Мне кажется, что описанных настроек   и механизмов  достаточно для  выполнения работ с документами в формате markdown.</p>
  <p id="YPug">Если кому-то потребуются более сложные инструменты, то можно  посмотреть ещё пару плагинов.</p>
  <h3 id="7SQx"><a href="https://vimawesome.com/plugin/mkdx-vim" target="_blank">mkdx-vim</a></h3>
  <p id="lS8t">Плагин содержит довольно значительное количество функций для форматирования документов. В том числе:</p>
  <p id="4J9B">* Свертывание встроенных блоков кода<br />* Оглавление<br />* Обнаружение мертвых ссылок<br />* Улучшенную  синтаксическую подсветку  для таблиц, элементов списков,  тегов kbd и выделенных полужирным шрифтом и курсивом маркеров.</p>
  <h3 id="2oBO"><a href="https://github.com/dense-analysis/ale" target="_blank">Asynchronous Lint Engine</a></h3>
  <p id="olTo">Этот плагин является клиентом для Language Server. Если вы используете vim для написания исходных текстов на каком-либо языке программирования, то вы можете использовать этот плагин в том числе и для  проверки синтаксиса и семантики текстов в формате markdown.</p>
  <h2 id="2rUh">Заключение</h2>
  <p id="Y1dU">Вот таким образом выглядят основные возможности редактора  для написания текстов в формате  markdown. Совсем неплохо даже по сравнению со специализированными  программами.<br /></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/10bZy3Gwcb9</guid><link>https://teletype.in/@olegp/10bZy3Gwcb9?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/10bZy3Gwcb9?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Некорявый tkinter -  ttkbootstrap</title><pubDate>Wed, 17 May 2023 07:16:26 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/4b/54/4b545409-a6d2-4bf2-85af-f5bfdf3715e5.png"></media:content><category>gui</category><description><![CDATA[<img src="https://img2.teletype.in/files/5b/77/5b77b7f5-9112-4999-932a-d0e64ccf7b08.jpeg"></img>Часть 2]]></description><content:encoded><![CDATA[
  <p id="uiwF" data-align="center">Часть 2</p>
  <p id="xYP0">Продолжаем тему модернизации графического интерфейса tkinter.  Первая часть <a href="https://teletype.in/@olegp/vcLgpALl1di" target="_blank">здесь&gt;&gt; </a> </p>
  <h2 id="HeRv">ttkbootstrap - радикальная модернизация tkinnter</h2>
  <p id="99Rk">Это, видимо, самая существенная модернизация для tkinter,  сделанная под влиянием современного css фреймворка bootstrap. Пакет использует цветовые схемы из проекта bootstrap. В результате отрисовка интерфейса приблизилась к спецификации Material Design и внешнему виду современных веб приложений. Кроме того поддерживаются как тёмные, так и светлые темы</p>
  <p id="Dw1F">Установка через pip:</p>
  <pre id="OKpS">pip install ttkbootstrap</pre>
  <p id="vBrN">Запуск demo приложения:</p>
  <pre id="4zCc">python -m ttkbootstrap</pre>
  <figure id="2ByV" class="m_column">
    <img src="https://img2.teletype.in/files/5b/77/5b77b7f5-9112-4999-932a-d0e64ccf7b08.jpeg" width="1020" />
  </figure>
  <p id="PZuG">После привычного интерфейса tkitner, выглядит всё это  довольно современно. Старые виджеты получили новые свойства.  Так, например, теперь у кнопок появились варианты цвета по умолчанию, виджет checkbutton получил два новых потомка - roundedtoggle и squaredtoggle.</p>
  <p id="oDxH">Для хранения тем используется собственный формат описания стилей (структура данных для описания стиля использует json).</p>
  <h2 id="BuEe">Новые виджеты</h2>
  <p id="fBUX">Помимо модернизации стандартных виджетов, ttkbootstrap расширяет библиотеку новыми виджетами.</p>
  <p id="p6Cw">Здесь сделано довольно много. Среди новых виджетов  можно найти meter widget для отображения и ввода данных с помощью круглого циферблата, календарь для ввода дат, color picker, и table view.</p>
  <figure id="QJ61" class="m_column">
    <img src="https://img1.teletype.in/files/01/ec/01ec1343-ffeb-48b2-ba8d-21fa91fd3ba0.jpeg" width="700" />
    <figcaption>Тестовая программа для table view</figcaption>
  </figure>
  <h2 id="r08D">Редактор стилей</h2>
  <p id="OfAl">И, наконец,  теперь можно создавать свои собственные цветовые варианты с помощью визуального редактора.</p>
  <pre id="jEyU">python -m ttkcreator</pre>
  <figure id="gDjk" class="m_column">
    <img src="https://img1.teletype.in/files/85/ea/85eaa56c-b9ee-42c6-85e9-5c26bb9b26cc.jpeg" width="1219" />
  </figure>
  <h2 id="Wh8d">Вместо заключения</h2>
  <p id="OERh">Во время написания небольшого тестового приложения вот что выяснилось. Ttkthemes и ttkbootstrap позволяют добавлять темы к готовому приложению с минимальными изменениями кода. Потребуется добавить только пару строк кода для задания темы. Но вот программные интерфейсы у них все-таки слегка разные, так что одновременно использовать эти два комплекта тем можно, но довольно неудобно.</p>
  <p id="IHn5">Если вы хотите использовать дополнительные виджеты из ttkbootstrap, то в этом случае вы потеряете совместимость со стилями ttkthemes.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/yQ0skeBKvsN</guid><link>https://teletype.in/@olegp/yQ0skeBKvsN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/yQ0skeBKvsN?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Краткое введение в vim</title><pubDate>Wed, 10 May 2023 10:04:47 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/e5/57/e5570085-b3ef-414c-8b75-20ebd145c31f.png"></media:content><category>vim</category><description><![CDATA[<img src="https://img4.teletype.in/files/fd/07/fd0759d3-3a9e-4154-8a91-6eda0e6d4686.jpeg"></img>Будем мы использовать vim в 2023г.?]]></description><content:encoded><![CDATA[
  <p id="Gwq9" data-align="center"><em>Будем мы использовать vim в 2023г.?</em></p>
  <p id="3wFx">Эту статью я написал во время ковидного карантина, пытаясь объяснить своему старшему сыну что же такое vim. Придать понятную форму этому тексту было непросто, но раз текст написан и хранить его в сундуке нет никакого резона, я его публикую.</p>
  <blockquote id="7ZO3"> Мастер использует тот инструмент, который, по его мнению, даст наилучший результат, независимо от того, используется ли он всеми остальными или нет. А хороший мастер делает свои собственные инструменты, когда это необходимо. <em>Брам Муленар, создатель vim</em></blockquote>
  <h2 id="Hoxl">Вместо предисловия</h2>
  <p id="njfp">В начале 2022 года появилось очередное небольшое интервью с создателем vim Брамом Муленаром. В интервью уважаемый создатель ничего сенсационного не сообщил. В июне 2022 г. вышла очередная версия vim. Она содержит несколько полезных улучшений, но ничего революционного там не появилось. Vim по-прежнему развивается совершенно естественным образом. Эволюционным. Ну а я, как многолетний пользователь vim, решил опубликовать эти небольшие заметки. Надеюсь, что они могут оказаться полезными в первую очередь для тех, кто vim до сих пор не использовал.</p>
  <p id="LP65">Vim/gvim-это свободный текстовый редактор, который разрабатывался для того, чтобы создавать и редактировать тексты удобным способом.</p>
  <p id="7vad">В качестве текстовых файлов чаще всего используются:</p>
  <p id="u651">* Файлы конфигураций различных систем и программ.</p>
  <p id="pSPL">* Исходные тексты программ на различных языках программирования.</p>
  <p id="9N9g">* Структурированные тексты с различной разметкой.</p>
  <p id="axtH">* Неструктурированные тексты на естественном(человеческом) языке.</p>
  <blockquote id="aUh1">Заметим, что сигнальные систему пчёл и язык дельфинов vim не только не поддерживает, но у разработчиков нет никаких планов развивать редактор этих направлениях. И это просто возмутительно.</blockquote>
  <p id="YN0N">Если быть совсем точным, то vim/gvim - это не одна единственная программа, а две разных программы - консольный редактор vim и редактор с графическим интерфейсом gvim. Различия между ними минимальны и в основном касаются настроек консоли/графического интерфейса, дополнения(плагины) в большинстве случаев работают с обоими вариантами программы. И хотя консольный редактор vim, и его потомок с графическим интерфейсом - gvim, наиболее известны, в семействе есть и другие родственники, как уже усопшие, так и вполне живые. Можно сказать, что современный vim является результатом довольно длительной эволюции.</p>
  <blockquote id="sU8y"> Vim ведёт свою родословную от консольного редактора ОС Unix vi. Появление редактора vi запустило лавинообразный процесс его копирования и переделывания. <a href="http://www.linfo.org/vi/clones.htm" target="_blank">В этой статье </a>упоминаются уже ныне забытые клоны vi: calvin, elvis, elwin, lemmy,nvi, stevie, vile, viper. В качестве живого и вполне процветающего родственника следует упомянуть <a href="https://neovim.io/" target="_blank">neovim</a>.</blockquote>
  <p id="FBb6">Следует также сказать, что vim - это <strong>переносимая программа</strong>, которая многократно портировалась на большинство операционных систем, включая Unix\Linux\macOS-Х\Windows.</p>
  <blockquote id="Gfpl">Vim работает на следующих операционных системах: весьма обширном семействе Unix-подобных OS(IBM AIX, HP-UX, SGI IRIX, Sun Solaris, SCO OpenServer , Linux, BSD, macOS, Raspberry Pi OS), в популярных системах от компании Microsoft (начиная с Windows 3.x), и прочем зоопарке включая DOS, Android, iOS, AmigaOS, Atari , BeOS, NextStep, OS/2, VMS. Исчерпывающий список составить трудно. Возможно, существуют и другие операционные системы, про которых я никогда не слышал, и портирован ли туда vim, cказать сложно.  Если говорить о самой популярной когда-то настольной ОС MS Windows, то vim вполне функционален в большинстве версий, и предоставляет все необходимые для полноценной работы функции. Но следует сказать, что некоторые дополнения vim слишком сильно интегрированы с архитектурой систем, похожих на Unix, и некоторые проблемы в среде Windows с их функционированием могут возникать.</blockquote>
  <p id="bSOP">Vim - это<strong> открытая и гибкая программа </strong>и может взаимодействовать с внешними системами и утилитами с помощью плагинов. Поведение редактора и выполняемые функции могут быть существенно изменены с помощью файла конфигурации.</p>
  <p id="tN86">Фактически vim предоставляет удобный и настраиваемый способ интеграции различных технологий. Ну а под капотом может быть разное.</p>
  <blockquote id="Ne6e">Совершенно естественно, что с течением времени и развитием технологий, потребности в интеграции существенно меняются. Кроме того, разные люди используют разные наборы технологий. Это означает, что настройки редактора и набор плагинов у разных людей могут быть различными.</blockquote>
  <p id="ERIc">Vim использует для редактирования текстов различные режимы. Этим он существенно отличается от большинства текстовых редакторов. Vim был разработан для работы с клавиатурой и без помощи мыши. Ну а поскольку количество комбинаций клавиш для управления ограниченно, то для выполнения отдельных операций над текстом, появились специализированные множества управляющих клавиатурных комбинаций, которые называют режимами.</p>
  <p id="eBT4">При запуске редактора, он находится в нормальном режиме, который не предполагает ввод текста, но позволяет быструю навигацию по тексту, удаление, поиск и замену фрагментов текста. В этом режиме для навигации по тексту и управления активно используются клавиши с буквами латинского алфавита.</p>
  <blockquote id="rYNW"> С точки зрения неопытного пользователя, нажимающего на клавиши с целью напечатать текст в нормальном режиме, vim бибикает и загадочным образом портит текст. Если вас угораздило запустить vim и вы не знаете как теперь выйти из программы, то в качестве спасательного круга подскажем простой способ, который в большинстве случаев работает: нажмите клавишу &lt;esc&gt; и наберите команду :q!. Содержимое буфера редактора при этом не будет сохранено, но редактор вы покинете.</blockquote>
  <p id="qAf3">Существует ещё одна область деятельности в которой vim применяется очень часто. Консольный vim часто используется для удаленной работы в текстовых терминалах. Такое применение редактора очень удобно, так как скорость каналов может изменяться, но даже на медленных каналах вполне можно работать, и если учесть, что программы-эмуляторы терминалов очень архаичны и до сих пор не всегда полноценно поддерживают современные клавиатуры, стандартные клавиатурные комбинации vim в таких ситуациях обычно работают без особых проблем.</p>
  <p id="gXJj">Так что для системных администраторов знакомство с vim часто остаётся насущной необходимостью.</p>
  <p id="IzNL">Современный Vim появился в результате длительной эволюции. Первые версии писались во времена, когда процессоры были большими и медленными, оперативная память измерялась в килобайтах, скорость сети - в килобитах в секунду. Первая версия вышла в 1991 г.</p>
  <p id="XaOp">Если ваш текстовый редактор, при открытии большого файла уходит в длительные раздумья, то может быть вам следует попробовать vim.</p>
  <blockquote id="MXhv">Когда я работал администратором баз данных, мне приходилось отрабатывать сценарии загрузки данных. В процессе работы было нужно исправлять строки с ошибочной разметкой в файле размером в несколько десятков мегабайт. Даже просто открыть такие файлы и просто посмотреть содержимое позволяют далеко не все текстовые редакторы.</blockquote>
  <p id="1Msu">На современном оборудовании vim крайне нетребователен к ресурсам, работает достаточно быстро и этим он отличается от большинства новейших текстовых редакторов и IDE. Кроме того, vim позволяет открывать файлы достаточно большого размера, с достаточно экономным использованием памяти.</p>
  <h2 id="LI90">Чем vim не является</h2>
  <p id="XNG4">Не следует считать Vim полноценной IDE, поэтому всё, что связано с отладкой кода, профилированием приложений и прочими, функциями, которые реализовывают современные IDE, vim не располагает. Плагины дополняют редактор отдельными функциями, но в качестве полноценной замены IDE vim  всё же не годится. И хотя отдельные энтузиасты пытаются и, часто небезуспешно сделать узкоспециализированные варианты настроек для изготовления узкоспециализированной IDE на базе vim, в результате зачастую получается очень сложный в настройке конгломерат из плагинов, практическая польза от которых не всегда понятна.</p>
  <blockquote id="km8N">Плагинов на самом деле очень много. Но это просто отражение простого факта, что редактор на протяжении десятилетий активно использовался для выполнения самой разнообразной работы. В конце статьи приведена ссылка на сайт vimawesome.com. Там можно познакомится с наиболее популярными дополнениями к vim, так что если у вас возникает потребность расширить функции редактора с помощью плагинов, начинайте ваш поиск с знакомства с наиболее популярными плагинами. Начинающие пользователи очень часто пытаются установить большое количество плагинов, и в результате обнаруживают, что редактор стал работать как-то странно и, иногда, медленно. Я бы сказал, что это вредная привычка. Совершенно необязательно устанавливать все возможные плагины, особенно если вы плохо понимаете базовый функционал редактора. Но некоторые из плагинов могут существенно упростить жизнь и повысить скорость работы. Плагины следует устанавливать по мере возникновения потребностей в недостающем функционале.</blockquote>
  <p id="tv4h">Vim не ориентирован на графический интерфейс и не является очень дружественной программой. Большинство современных программ использует графический интерфейс, с системой меню и подсказок, что облегчает работу, и сокращает время обучения.</p>
  <p id="yfwE">Работа без мыши позволяет радикально ускорить работу с текстом. Именно в таком режиме vim демонстрирует свои чемпионские качества в полном блеске, обеспечивая быстрый доступ к многочисленным и многообразным операциям над текстом.</p>
  <blockquote id="5TFS"> Тем не менее, современная версия gvim поддерживает работу с мышью, имеет систему меню для основных операций с файлами, но для эффективной работы с редактором гораздо продуктивнее использовать клавиатурные команды.</blockquote>
  <p id="BOo1">Vim не поддерживает современные офисные форматы документов и в качестве офисного редактора не подходит.</p>
  <blockquote id="pw5F"> Впрочем vim довольно хорошо поддерживает обработку структурированных текстов в форматах markdown, html и пр., которые в свою очередь можно автоматически преобразовывать в различные офисные форматы документов. Заметим, что <strong><em>никакого технологического барьера между структурированным текстом и офисными форматами давно не существует.</em></strong></blockquote>
  <h2 id="iqDZ">Устарел ли Vim ?</h2>
  <p id="fWUf">Я полагаю, что нет. Если судить по различным обзорам (<a href="https://swordstoday.ie/visual-studio-code-warring-state-era-text-editor-unifies-the-world-gigasine/" target="_blank">например, вот здесь</a>), примерно, от 15 до 25 процентов программистов используют vim. Учитывая, что продвижением программы никто специально не занимается, это очень значительные цифры. Появляющиеся в последнее время плагины очень точно отражают современный набор технологий и типовые виды работ в отрасли. А это как раз говорит о том, что редактор активно используется профессионалами для ежедневной работы.</p>
  <blockquote id="o50f">Используя vim, вы можете выполнять работу достаточно удобным способом. Вы можете редактировать программы практически на всех современных языках программирования, включая самые новые, вы можете создавать HTML страницы и таблицы стилей, вы можете писать структурированные тексты с разметкой markdown. Кроме того, вы можете приспособить редактор под ваши индивидуальные привычки.</blockquote>
  <p id="bDeV">Практический все операционные системы семейства Unix/Linux очень часто используют vim в качестве основного редактора текстов в режиме консоли. Администраторы подобных ОС составляют заметную часть пользователей vim. Так что для некоторых инженеров использование vim может оказаться профессиональной необходимостью.</p>
  <blockquote id="PjEm">Вполне возможно, что появление новых программ и операционных систем может существенно сократить количество пользователей vim. Но, как показывает практика, такие процессы никогда не носят одномоментного характера.</blockquote>
  <p id="FI5D">Vim - открытая программа. Но не очень дружелюбная.</p>
  <blockquote id="Kdl5">Освоение vim занимает некоторое время, но это <strong>плата за универсальность и приспособляемость</strong>, и такие свойства редактора в настоящее время востребованы у специалистов. Вполне вероятно, вскоре вы обнаружите, что с помощью vim некоторые работы выполнять очень удобно, и в разных операционных системах вы можете использовать один и тот же инструмент.</blockquote>
  <h2 id="vOdl">Вместо заключения</h2>
  <p id="W62a">Инструменты для разработчиков непрерывно развиваются, в этом контексте невозможно не упомянуть Visual Studio Code от компании Microsoft. Это замечательная программа, обеспечивающая разработчика множеством инструментов. И, казалось бы, можно отказаться от использования старых инструментов, и от vim в том числе. Но ... режим работы без мыши позволяет практически в несколько касаний получить к самым разнообразным операциям над текстом. Именно по этой причине vim остается эффективным инструментом для обработки текстов, и вполне может быть использован для эффективной работы. И не сомневаюсь, что тысячи людей продолжат пользоваться этой замечательной программой.</p>
  <p id="27In">И вы, уважаемые читатели, можете также присоединиться к их числу.</p>
  <h2 id="Obk7">P.S.</h2>
  <p id="iM2h">Эта статья была набрана в VIM 8.2 на двух различных компьютерах в различных операционных системах.</p>
  <blockquote id="RTEN">&gt;Vi IMproved 8.2 (2019 Dec 12, compiled Dec 12 2019 13:30:17)MS-Windows 32-bit GUI version with OLE support</blockquote>
  <p id="rwHP"></p>
  <blockquote id="rqS9">&gt;Vi IMproved 8.2 (2019 Dec 12, compiled Feb 24 2022 18:41:57) <br />Included patches: 1-4464<br />Compiled by Arch Linux</blockquote>
  <p id="3QAH">Markdown в последние годы набирает популярность. На мой взгляд это простой и эффективный способ подготовки электронных публикаций.</p>
  <p id="ncfZ">Написав текст в разметке markdown, вы можете без особых усилий преобразовать его практически в любой формат документов. Vim отлично справляется с подобной работой.</p>
  <p id="b7jE"></p>
  <figure id="D5ef" class="m_column">
    <img src="https://img4.teletype.in/files/fd/07/fd0759d3-3a9e-4154-8a91-6eda0e6d4686.jpeg" width="835" />
  </figure>
  <p id="it2a"></p>
  <p id="DSy0">Скриншот иллюстрирует процесс написания этой статьи. Плагин tagbar, на мой взгляд, относится к категории самых востребованных, он использует утилиту ctags для получения списка тэгов и отображает оглавления для исходных текстов программ и структурированных текстов. Tagbar умеет показывать оглавление документа и для текстов в формате markdown, что довольно удобно.</p>
  <h2 id="v68H">Ссылки</h2>
  <p id="FnTg">[<a href="https://evrone.com/bram-moolenaar-interview" target="_blank">Vim Creator Bram Moolenaar Interview by Evrone</a>]</p>
  <p id="mzdC">[<a href="https://www.vim.org/" target="_blank">Домашняя страница vim</a>]</p>
  <p id="vPkn">[<a href="https://vimawesome.com/" target="_blank">Самые популярные дополнения для Vim</a>]</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/pBvCu3gpTNt</guid><link>https://teletype.in/@olegp/pBvCu3gpTNt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/pBvCu3gpTNt?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Openbox - мутант. А нужна ли нам панель?</title><pubDate>Fri, 28 Apr 2023 07:12:07 GMT</pubDate><category>openbox</category><description><![CDATA[<img src="https://img4.teletype.in/files/b0/be/b0be85a1-e29f-4027-bb3b-c13c385d682d.jpeg"></img>Нужны ли разные DE для Linux?  Мне кажется ответ на этот вопрос довольно очевиден.  Людям, для которых компьютеры всего лишь инструмент для чего-нибудь вроде написания текстов, просмотра web страниц,  нужны  DE.   Желательно по возможности более простые и понятные.]]></description><content:encoded><![CDATA[
  <p id="NfQx">Нужны ли разные DE для Linux?  Мне кажется ответ на этот вопрос довольно очевиден.  Людям, для которых компьютеры всего лишь инструмент для чего-нибудь вроде написания текстов, просмотра web страниц,  нужны  DE.   Желательно по возможности более простые и понятные.</p>
  <p id="v7sG">Лично для меня это всё очень избыточно, и хочется вообще не трогать мышь. И тут openbox самое оно.  Особенно если учесть, что клавиатурные раскладки сделаны и переделаны, и конфиги при всех катаклизмах с  компьютерами и ноутбуками я обычно бэкаплю  рефлективно.</p>
  <p id="Y0qR">Openbox   очень аккуратно поддерживает dock, туда можно запихнуть system tray и прочие свистелки. Так зачем нам какая-нибудь панель ещё? </p>
  <figure id="0VQS" class="m_column">
    <img src="https://img4.teletype.in/files/b0/be/b0be85a1-e29f-4027-bb3b-c13c385d682d.jpeg" width="1920" />
  </figure>
  <p id="ghs0">Кстати, если вам нужен openbox, то Manjaro Linux  в этом случае не очень удачный дистрибутив. </p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@olegp/vcLgpALl1di</guid><link>https://teletype.in/@olegp/vcLgpALl1di?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp</link><comments>https://teletype.in/@olegp/vcLgpALl1di?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=olegp#comments</comments><dc:creator>olegp</dc:creator><title>Некорявый tkinter </title><pubDate>Tue, 25 Apr 2023 09:26:26 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/6e/9c/6e9c9711-659c-4fd4-a9d1-8714662d55ea.png"></media:content><category>gui</category><description><![CDATA[<img src="https://img2.teletype.in/files/5b/6f/5b6f25fe-5d51-48a2-b973-141a936cbbdc.jpeg"></img>Часть 1]]></description><content:encoded><![CDATA[
  <p id="697C" data-align="center">Часть 1</p>
  <p id="mG0U">Традиционно считается, что tk выглядит коряво. Одна из самых старых библиотек для создания графических интерфейсов действительно выглядит не особенно модно, но правда заключается в том, что она есть, она работает в большинстве современных операционных систем, на ней написано некоторое количество программ, включая IDLE - редактор исходных текстов, который всегда устанавливается вместе с python, и, судя по заметно возрастающему количеству сайтов, на которых можно найти примеры программ, она не собирается никуда исчезать.</p>
  <p id="gvGq">И мы по-прежнему можем легко приделать к нашим питоновским скриптам минималистический графический интерфейс с помощью очень простого и лаконичного набора виджетов. Кода придётся писать немного, а потому затраты времени и сложность таких работ обычно невелики.</p>
  <p id="3nMu">У корявости tk есть свои исторические причины. В годы написания этой библиотеки графические интерфейсы в ОС вроде DEC/VMS или SUN/SOLARIS примерно таким образом и выглядели.</p>
  <figure id="pbyb" class="m_column">
    <img src="https://img2.teletype.in/files/5b/6f/5b6f25fe-5d51-48a2-b973-141a936cbbdc.jpeg" width="995" />
    <figcaption>Классичесский вид виджетов</figcaption>
  </figure>
  <p id="mLW0">Но технологии не стоят на месте. Так современный tk вполне себе меняет внешний вид виджетов с помощью подключения библиотек. Или вы сами можете изменить внешний вид виджетов с помощью создания собственных стилей.</p>
  <blockquote id="TEvR">Процесс модернизации tk никогда не останавливался. В последние годы темпы изменений только возросли. Тут сыграла свою роль возрастающая популярность python и технологий с ним связанных. Data Sсiense, AI, ML и прочие модные вещи привели к росту интереса в том числе и к tk.</blockquote>
  <p id="KpnB">Современный tk содержит модернизированный набор виджетов, который называется ttk. Именно этот набор виджетов лучше всего использовать для современных программ, так как он поддерживает стили оформления.</p>
  <figure id="scvj" class="m_column">
    <img src="https://img4.teletype.in/files/32/7c/327c6af2-569e-43ac-959e-d5524ac3fb70.jpeg" width="981" />
    <figcaption>Тема по умолчанию</figcaption>
  </figure>
  <p id="XkVX">Для того, чтобы разобраться с программными интерфейсами и посмотреть на механизмы отрисовки виджетов , я написал небольшое приложение для тестирования этих библиотек.</p>
  <h2 id="cmOg">Стандартные темы</h2>
  <p id="wufI">Они входят в стандартный комплект и достаточно аккуратны. Главный недостаток - они все светлые, в то время как многие пользователи предпочитают тёмные темы.</p>
  <h2 id="MAxv">ttkthemes</h2>
  <p id="4zM3">Ttkthemes - это просто комплект тем разных авторов, собранный в один пакет. </p>
  <p id="WGq6">В этом комплекте присутствуют как тёмные, так и светлые темы, он предоставляет возможность мимикрии приложения под внешний вид различных ОС.</p>
  <figure id="OOVO" class="m_column">
    <img src="https://img2.teletype.in/files/d2/d2/d2d20a7f-521c-409c-8e9f-d19d02bf511d.jpeg" width="1045" />
    <figcaption>Они сделали это! Аккуратная тёмная тема здесь есть.</figcaption>
  </figure>
  <p id="JA2d">Обычная установка через pip:</p>
  <pre id="StRQ">pip install ttkthemes</pre>
  <figure id="QvR8" class="m_column">
    <img src="https://img3.teletype.in/files/a3/f3/a3f38682-402f-40c1-9921-0b82dc9de788.jpeg" width="1054" />
    <figcaption>Тот самый clearlooks из гнома 2.0  По мнению очень  многих пользователей это   эталонный интерфейс до сих пор.</figcaption>
  </figure>
  <p id="0GDb"></p>
  <p id="aOuf">Две темы(ubuntu и smog) из этого комплекта имеют небольшие дефекты - они не устанавливают правильный цвет фона для выбранного элемента treeview. Впрочем если вам нужны именно эти темы, то исправить это нетрудно как внутри кода ttkthemes, так и внутри кода вашего приложения.</p>
  <p id="WinK"><a href="https://teletype.in/@olegp/10bZy3Gwcb9" target="_blank">Продолжение здесь &gt;&gt;</a></p>

]]></content:encoded></item></channel></rss>