- Лёгкие приложения Linux для старого железа
- Легковесное окружение рабочего стола
- Быстрый софт
- Браузер: Midori
- Почтовые клиенты IMAP
- Установщик пакетов: Gdebi
- Центр программного обеспечения: App Grid
- Музыка и радио
- Видеоплеер: VLC
- Файловый менеджер: PCManFM
- Текстовый редактор и офисный пакет
- На правах рекламы
- Пишем свой браузер для Linux, и не только для Linux
- » + trUtf8(«Этот браузер создан на базе класса QWebView»)+ «
Лёгкие приложения Linux для старого железа
Окружение Xfce
Любую систему можно разогнать, есть стандартные способы оптимизации десктопа: минимум софта в автозагрузке, preload, оптимальное зеркало для пакетов, apt-fast вместо apt-get, настройки для оптимизации отдельных приложений и так далее.
Но всё это мелкие оптимизации по сравнению с фундаментальными столпами:
- Лёгкий дистрибутив
- Легковесное окружение рабочего стола
- Быстрый софт
Это в первую очередь актуально для старого железа, хотя в принципе на каждом ПК мы хотим, чтобы система работала максимально эффективно, разве нет? Даже на современном многоядерном CPU больно видеть запуск программы в несколько секунд или задержку интерфейса 100-200 миллисекунд после нажатия по клавиатуре. Всё должно реагировать мгновенно, со скоростью человеческого восприятия. В нативных приложениях нет места лагам, как у веб-интерфейсов.
Поэтому — легковесное окружение и быстрый софт.
Легковесное окружение рабочего стола
Легковесные окружения традиционно поставляются в комплекте с легковесными дистрибутивами, которые оптимизированы для работы на старом железе. Это Lubuntu, Linux Lite, Puppy Linux, TinyCore и др. Хотя самые аскетичные идут вообще без GUI. Например, TinyCore в варианте без GUI занимает всего 11 МБ. Базовая система размером 16 МБ предлагает десктопные окружения FLTK или FLWM, а версия CorePlus весом 106 МБ идёт с более продвинутыми менеджерами, такими как IceWM и FluxBox.
Но необязательно менять дистрибутив, чтобы повысить производительность системы. Для самого популярного Linux-дистрибутива — Ubuntu — тоже можно выбрать более легковесный рабочий стол, например, Xfce или LXDE.
Эти окружения требуют меньше оперативной памяти и вычислительных ресурсов процессора, а также поставляются со своим набором легковесных приложений, которые помогают ускорить систему.
Конечно, они выглядят не так современно, как Unity или GNOME, но приходится идти на какие-то компромиссы.
Быстрый софт
Кроме десктопного окружения, можно выбрать более производительные альтернативы для различных приложений Linux. Все перечисленные здесь программы доступны практически для любого дистрибутива, но в качестве примера указана Ubuntu.
Идея в том, чтобы на старом железе летала именно Ubuntu, то есть без смены дистрибутива.
Следующие приложения — не самые популярные, но достаточно надёжные, и при этом одни из самых производительных в своём классе.
Браузер: Midori
Midori — один из самых быстрых браузеров на движке WebKit и GTK3, который идёт в комплекте с некоторыми лёгкими дистрибутивами Linux, такими как Bodhi Linux, SilTaz и Raspbian. Раньше он был браузером по умолчанию в elementary OS, но в 2016 году разработка Midori приостановилась, так что его исключили из установок по умолчанию. Однако в конце 2018 года проект возобновился, и сейчас этот браузер входит в комплект приложений для десктопного окружения Xfce.
Поддерживаются вкладки, анонимные сессии, управление закладками, настраиваемый интерфейс, синхронизация через облако Astian Cloud. Поисковик по умолчанию DuckDuckGo.
У Midori множество опций, с которыми будет интересно повозиться опытному пользователю. Но нужно понимать, что он поддерживает не все современные технологии, поэтому в HTML5TEST даже не приблизится к максимальному результату. Да и список доступных расширений для него небогатый, но блокировщик рекламы есть.
Из других легковесных веб-браузеров под Linux можно назвать K-Meleon, Links, NetSurf и qutebrowser, все они в активной разработке.
Почтовые клиенты IMAP
Trojitá (Троица) на Qt — быстрый и эффективный почтовый клиент IMAP с открытым исходным кодом, один из лучших почтовых клиентов для Linux. Если вам достаточно поддержки только IMAP, то дальше можно и не искать.
Для достижения максимальной производительности Trojitá использует различные методы, в том числе автономное кэширование, режим экономии трафика, здесь минимальная нагрузка на память и CPU. Поддерживается IMAP по SSH, надёжная работа с HTML.
Эта программа является темой магистерской диссертации Яна Кундрата (Jan Kundrát), чешского разработчика. Собственно, подробнее всего о своём проекте он и рассказывает в этой диссертации, а также в блоге. Он вспоминает, что идея написать собственный клиент пришла к нему в районе 2005 года, потому что он не мог найти ничего подходящего его требованиям. KMail с многочисленными багами IMAP не впечатлял, Thunderbird падал минимум каждую неделю, а Evolution ему не нравился из-за Gnome. Многие программы выглядели как классические клиенты POP3, куда IMAP был добавлен в процессе разработки, а другие поддерживали весь набор функций IMAP, но страдали из-за непродуманного GUI.
Ян решил сначала закончить школу, а уже в университете плотно занялся разработкой нормального почтового клиента. Из языков программирования ему был известен только Python, поэтому он начал писать на нём, но вскоре открыл для себя Qt и C++ — и влюбился в них, как он сам рассказывает. К концу обучения клиент был готов.
Автор поддерживает проект до сих пор: последний коммит в основную ветку состоялся буквально пару дней назад. Но он уже не уделяет проекту слишком много внимания, например, больше не выкладывает на странице загрузки новые скомпилированные бинарники для Windows и разных дистрибутивов Linux.
Это необычная и легковесная альтернатива для известных, но более тяжеловесных почтовых клиентов, таких как вышеупомянутый Thunderbird, а также Evolution, Kmail, Geary, Mailspring (бывший Nylas Mail) и др. Хотя сторонникам полного аскетизма можно попробовать консольный клиент Mutt.
Mutt
Кстати, как раз в ноябре 2020 года состоялся выпуск версии Mutt 2.0, которой присвоен мажорный номер не из-за каких-то очень важных функций, а потому что некоторые из нововведений обратно несовместимы. Например, установлена настройка $ssl_force_tls по умолчанию, которую автор пробовал поставить в версии 1.3.0, но дал обратный ход из-за глюков. Кроме того, клиент научился автоматически инициировать заново соединение IMAP после обрыва.
У консольных почтовых клиентов по-прежнему большая аудитория, часть пользователей Mutt перешла на NeoMutt, OfflineIMAP и isync.
Установщик пакетов: Gdebi
Иногда на Ubuntu нужно быстренько установить пакет .deb. Конечно, можно использовать Ubuntu Software Center, но это ресурсоёмкое приложение, так что не слишком разумно использовать его для простой установки файлов .deb со всеми зависимостями. На этот случай есть утилита Gdebi, отличный инструмент для той же цели, только с минимальным графическим интерфейсом (или запускается из консоли).
Gdebi отлично справляется со своей работой, и его можно сделать установщиком по умолчанию для файлов .deb.
Установка Gdebi на Ubuntu:
Центр программного обеспечения: App Grid
Вообще, если говорить об альтернативе Ubuntu Software Center, то более легковесным вариантом представляется App Grid. Это практически обязательный инструмент, если вы часто используете центр ПО для поиска, установки и управления приложениями в Ubuntu. Наиболее визуально привлекательная и в то же время быстрая альтернатива стандартному софтверному центру.
App Grid поддерживает рейтинги, обзоры и скриншоты.
Установка в дистрибутивах на базе Ubuntu:
Музыка и радио
Yarock — элегантный музыкальный плеер с современным минималистичным интерфейсом. Плеер легковесный по дизайну, но в то же время обладает богатым набором продвинутых настроек.
Поддержка разных музыкальных коллекций, рейтинги, генератор умных плейлистов, простой поиск и фильтрация, дектопные уведомления, статистика по количеству воспроизведений песен, эквалайзер, управление из консоли и т. д. В качестве бэкенда могут работать Phonon, vlc и mpv. Список поддерживаемых аудиоформатов зависит от бэкенда: MP3, Ogg Vorbis, FLAC, WMA, MPEG-4 AAC.
Установка Yarock в дистрибутивах на базе Ubuntu:
Yarock умеет забирать поток с лучших сервисов интернет-радио: TuneIn, SHoutCast, Dirble. Кстати, разработчик Dirble устал от своего проекта и продал его в прошлом году, за что потом сильно извинялся.
С другой стороны, TuneIn до сих пор работает отлично, хотя у него нет нативного десктопного приложения. Однако TuneIn можно прослушивать через Yarock или через оболочку типа Nuvola Apps. Данный движок поддерживает множество стриминговых сервисов, включая Spotify, YouTube, Pandora и SoundCloud. Впрочем, Nuvola Apps нельзя назвать легковесным с зависимостями на 350 МБ.
Видеоплеер: VLC
Пожалуй, VLC — самое дефолтное приложение в этом списке. VLC действительно не нуждается в представлении, это стандарт де-факто на многих платформах, в том числе и под Linux. Плеер очень легковесный, это и одна из причин его популярности.
VLC — всё, что нужно для воспроизведения различных медиафайлов под Linux. В принципе, даже без отдельного музыкального плеера можно обойтись, потому что VLC понимает все аудиоформаты. Он безупречно работает даже на очень старых компьютерах и задействует аппаратное декодирование на всех платформах.
Файловый менеджер: PCManFM
PCManFM — стандартный файловый менеджер из среды LXDE. Как и другие приложения LXDE, он тоже лёгкий и быстрый. Создан как замена Nautilus, Konqueror и Thunar, а с 2010 полностью переписан заново с нуля, так что текущие версии сильно отличаются от семейства 0.5.х.
Несмотря PCManFM входит в комплект LXDE, но работает и с другими средами рабочего стола.
Установка PCManFM в дистрибутивах на базе Ubuntu:
Текстовый редактор и офисный пакет
По скорости работы ничто не сравнится с консольными редакторами, такими как nano, vim и emacs. Но некоторым людям в силу определённых причин больше нравится графический интерфейс. В этом случае можно посмотреть на Mousepad: чрезвычайно лёгкий и очень быстрый редактор. Поставляется с простым настраиваемым UI с несколькими темами.
Поддерживает подсветку синтаксиса. Таким образом, его можно использовать в качестве минимального редактора кода. Поставляется вместе со средой рабочего стола Xfce.
Кроме текстового редактора, бывают необходимы другие офисные приложения, в том числе электронные таблицы. Один самых легковесный вариантов — пакет Gnome Office с электронными таблицами Gnumeric и текстовым редактором AbiWord, который намного быстрее, чем другие текстовые процессоры, хотя здесь нет макросов, проверки грамматики и некоторых других функций.
Практически во всех категориях под Linux гораздо больше выбор различных программ, чем под Windows или macOS. Если поставить маленький дистрибутив и быстрый софт, то все нативные приложения будут летать даже на Raspberry Pi.
На правах рекламы
VDSina предлагает серверы в аренду под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата.
Источник
Пишем свой браузер для Linux, и не только для Linux
Задача создания приложений, насыщенных медиаконтентом, связана с двумя важными критериями — с богатством возможностей отображения информации и скоростью разработки.
Не секрет, что проекты, разработанные, к примеру, на Delphi c использованием компонента TWebBrowser, являются очень распространенным решением, применяемым во множестве случаев. А как быть, если вы все-таки предпочтете аналогичный проект в среде Linux? Как раз для такого случая стоит использовать программную платформу Qt (ru.wikipedia.org/wiki/Qt). У нее есть много достоинств, в том числе богатство средств и солидная история. К примеру, на базе Qt создана популярная графическая система KDE. Не менее важно, что теперь для написания программ на Qt можно применять современную кросс-платформенную IDE Qt Creator, что с того времени, когда разработчику были доступны только Qt Designer и KDevelop, порог вхождения в мир программирования на Qt стал значительно ниже. В общем, сейчас и в Linux можно программировать перетаскиванием «кнопочек» на «формочки», не рискуя запутаться между разными программными классами и утилитами.
Что такое WebKit и как его использовать
WebKit – современный распространенный движок (ru.wikipedia.org/wiki/WebKit) для отображения веб-контента. Если покопаться в генеалогическом древе, то выяснится, что этот движок находится в родственных отношениях (прямых и не очень) с браузерами Konqueror, Safari и Chrome.
Когда обсуждается возможность использования WebKit на платформе Qt, имеется в виду QWebKit, но имя соответствующего класса в Qt значится как QWebView. Именно этот класс можно так же, как и в Delphi или в C++Builder, визуально перетащить на форму и реализовать за 5 минут собственный веб-браузер.
Чтобы загрузить веб-страницу, нужно написать:
Следовательно, для QWebView требуется предоставить адрес в формате класса QUrl. Именно этот класс (а не какой-либо строковый тип) используется для работы с интернет-адресами.
Полное описание класса QWebView имеется на сайте doc.qt.nokia.com, а кроме того, в Qt Creator доступна контекстная справка. Базовые методы этого класса понятны и без справок. К ним относятся:
Собственно, это уже не просто описание методов, а фрагменты кода, и если вы еще не создавали проектов в QtCreator, то сделать это просто:
File -> New File or Project -> Qt C++Project->Qt Gui Application
По умолчанию в таком проекте уже будут существовать объекты menuBar, mainToolBar и statusBar.
В новый проект добавлен объект класса QWebView
Визуальный доступ к методам back, forward, reload и stop традиционно принято предоставлять из панели быстрого вызова (mainToolBar). Конечно, это можно реализовать в Qt-приложении, но следует соблюдать осторожность — не все в Qt Creator интуитивно понятно. Если пункт Add Tool Bar на дереве объектов легко найти через всплывающее меню, то добавить сами кнопки будет сложнее.
К примеру, требуется добавить возможность обновления страницы. Для этого сначала необходимо ввести нужное действие (Action) в Action Editor, а потом уже методом Drag-and-Drop связать его с mainToolBar и … о чудо! – в ToolBar появляется новая кнопка.
А теперь по порядку.
Класс QAction описывает какое-либо действие вне жесткой связи с источником и типом события, а также с его процедурой-обработчиком ((http://doc.crossplatform.ru/qt/4.7.x/qaction.html#details).
Такой посредник дает программисту более гибкий механизм создания интерактивного графического интерфейса, где, благодаря древнему принципу повторяемости кода, одновременно сохраняются и эффективность, и эстетика. Разработчик описывает заголовок (который потом может стать пунктом меню) и другие атрибуты действия. К примеру, мы можем один раз описать действие обновления страницы. Для этого нужно добавить это действие в Action Editor, привязать к нему кнопку быстрого запуска (Shortcut), задать его имя (Object name) и значок, а потом включить в mainToolBar и в menuBar. Причем дело даже не успевает дойти до фактического описания программного события.
. Редактирование информации о действиях в Action Editor
Осталось создать необходимый код, соответствующий нажатию кнопки, т.е. описать внутреннюю кухню этого нового действия.
Следует вернуться в Action Editor и для созданного действия actionReload через всплывающее меню в пункте Go to slot. найти подходящий сигнал. После чего нужно привязать к нему необходимый код (Qt Creator любезно подскажет, куда именно его вписать) и вставить одну строку программы:
Выбор нужного сигнала
Аналогично можно поступить с методами back(), forward() и stop().
Адресная строка
А вот чтобы создать в том же ToolBar адресную строку с помощью компонента QLineEdit, визуальное программирование уже не поможет. Нужно открыть файл mainwindows.h и добавить в описание класса MainWindow эту самую адресную строку следующим образом:
Чтобы компилятор понял, что такое QLineEdit, вверху файла необходимо добавить:
Теперь в конструкторе в файле mainwindow.h требуется создать адресную строку и привязать ее к mainToolBar:
Пора подумать, как привязать к созданной адресной строке нужный код. Для начала в файле mainwindow.h следует найти секцию private slots и декларировать там обработчик события нажатия клавиши в адресной строке:
а в файле mainwindow.cpp нужно описать соответствующую реализацию:
Если же осталось ощущение, что slotGoEnterPressed() и UrlPath на самом деле ничего не связывает, то оно верное, потому что нужно записать магическую строку в конструкторе главного окна в файле mainwindow.h. В этой строке будет описано, что к чему привязывается и на каких условиях:
Раскроем ее для непосвященных.
Функция connect предназначена для связи сигнала с обработчиком приемника, указанным в макросе SLOT. Адресная строка UrlPath посылает стандартный сигнал нажатия клавиши . А то, что обрабатывается именно этот сигнал, указано в макросе SIGNAL.
Ура! В самом первом приближении адресная строка готова.
Отображение степени загрузки страницы
Для отображения степени загрузки нужно выделить в визуальном редакторе объект WebView и через пункт Go to slot… выбрать в открывшемся списке сигналов сигнал loadProgress(int). Оказавшись в редакторе кода, следует заполнить автоматически сгенерированную заготовку обработчика:
Но этой строчкой просто отображается сам факт загрузки очередной страницы, а с процентами можно поступить хитрее. В файле mainwindow.h следует описать внутри класса MainWindow графический индикатор:
Таким образом PageProgress будет не только создан, но и размещен внутри statusBar. Предполагается, что PageProgress будет виден только в периоды загрузки страницы, в чем помогут сигналы loadStarted() и loadFinished(bool).
Теперь обработчик on_webView_loadProgress можно дополнить строкой:
В итоге получился вполне достойный результат. С одной стороны, все очень удобно: информация о реальной загружаемой странице отображается в левой части statusBar, а PageProgress сам собой точно расположился в правой части. А каплей дегтя оказались проблемы с русским языком — вместо слова «Загрузка» получилась «кракозябра». Решается это просто:
Отображение истории
Процесс создания главного меню браузера представляет собой рутинную работу, так что описывать его полностью вряд ли уместно. К тому же нет пределов совершенства любой программы. Но все же для примера динамически отобразим историю работы с браузером, т.е. будем перестраивать соответствующий пункт главного меню по мере необходимости:
Таким образом, в динамическом режиме перестраивается список интернет-адресов, и к каждому пункту вновь привязывается обработчик следующего содержания:
//Декларация обработчика пункта меню истории браузера в файле mainwindow.h
.
private slots:
void slotLoadHistPage();
…
/* Файл mainwindow.h
Реализация приемника сигнала пункта меню истории браузера выглядит очень загадочно */
void MainWindow::slotLoadHistPage() <
//Извлекаем из источника сигнала информацию для загрузки страницы
QAction* a = qobject_cast ( sender() );
//Загружаем страницу из истории
ui->webView->load(QUrl(a->text()));
>
Улучшение метода загрузки страницы
Попробуем запустить программу с реализованным вариантом адресной строки, набрав там, к примеру, www.mail.ru . В результате ничего не получится, потому что наш браузер оказался очень привередливым. Он знать ничего не хочет про тип ресурса, который ему хотят передать, если этот тип явно не указывают. Значит, имеет смысл написать некий универсальный метод загрузки, решающий эту проблему, например такой:
Это только пример решения проблемы адаптации возможностей браузера к непредсказуемости человека, не претендующий на универсальность.
Загрузка файла или HTML-строки
А если нужно загрузить HTML-страницу с диска? Тогда следует просто указать соответствующий тип данных:
И конечно, допустимо загрузить строку гипертекста напрямую, так можно поступить при выводе информации о браузере:
» +
trUtf8(«Этот браузер создан на базе класса QWebView»)+ «
Вылавливание инструкции на открытие новых окон
Теперь проведем следующий тест. Загрузим в наш браузер сайт www.mail.ru и попробуем перейти по одной из новостных ссылок, которые находятся примерно в середине экрана. Не выходит? А если добавить в конструктор главного окна строку:
Опять ничего? Действительно, мы просто попросили браузер не обрабатывать самостоятельно ссылки со страницы при щелчке, а вместо этого выдать сигнал, под который мы и сделаем обработчик. В списке сигналов для WebView найдем сигнал linkClicked(QUrl) и напишем для него обработчик:
На традиционный вопрос: «А что было?» — ответ прост: мы научили наш однооконный браузер загружать страницу, которую обычный браузер загружал бы в новое окно.
Три волшебные строки
В проекте нужно обязательно упомянуть про три строки, которые, скорее всего, при создании браузера придется добавить в функцию main (main.cpp) :
/* Разрешение на автоматическую загрузку картинок в странице*/
QWebSettings::globalSettings()->setAttribute(QWebSettings::AutoLoadImages,true);
/* Разрешение на запуск java-скриптов*/
QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true);
/* Разрешение на использование плагинов*/
QWebSettings::globalSettings()->setAttribute(QWebSettings::PluginsEnabled, true);
В руководстве написано, что первые две опции активны по умолчанию, но в Рунете много раз встречаются все три разрешения вместе, особенно когда речь идет об активизации Flash.
Новый браузер – почти за 5 минут
Браузер готов?
В заключение стоит отметить, что на форумах самыми проблемными темами, связанными с QWebView, являются вопросы взаимодействия с Flash и Java-скриптами. К примеру, если у вас наконец заработал в браузере Flash, то, возможно, радоваться еще рано, погоняйте браузер с разными сайтами — велика вероятность новых сюрпризов… Однако в тех случаях, когда речь идет не об обычном публичном браузере, а о проекте с заранее известными характеристиками отображаемого контента (например, платежный терминал), все становится проще. Но такой вариант уже будет темой отдельной статьи.
Источник