Автор Тема: Xmonad, xmobar. Делимся полезными наработками.  (Прочитано 16908 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ogis1975

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #45 : 25 Июня 2018, 16:42:36 »
Можно таким же способом организовать работу с калькулятором.
Полезная вещь. Спасибо.
 

Оффлайн ChubaDuba

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #46 : 11 Января 2019, 20:06:20 »
XMonad.Layout.Spacing
Добавляем пространство вокруг окон.

Очередная заметка по настройке xmonad. XMonad.Layout.Spacing позволяет добавить отступы вокруг открытых окон. Наличие отступов даёт лучшую визуализацию на
экране компьютера при работе с несколькими отрытыми окнами.

Цитировать
Чтобы добавить отступы ко всем окнам, за исключением случаев, когда окно является единственным видимым окном в текущей рабочей области, нужно использовать функцию smartSpacing. Если использовать функцию spacing, то заданное свободное простраство вокруг окон будет добавляться в любом случае.

Добавляем в наш xmonad.hs данный модуль:
import XMonad.Layout.Spacing

После чего модифицируем секцию Layouts. В моём случае это выглядит так:
-- Layouts
myLayouts = minimize (avoidStruts tiled
           ||| threecolmid
           ||| onebig
           ||| imTkabber
           ||| full)
 where
    tiled   = smartSpacing 5 $ ResizableTall nmaster delta ratio []
    nmaster = 1
    ratio   = 1/2
    delta   = 3/100

-- basic layouts
full        = noBorders Full
onebig      = smartSpacing 5 $ OneBig (3/4) (3/4)
threecolmid = smartSpacing 5 $ ThreeColMid 1 (3/100) (1/2)
imTkabber   = withIM (1%7) (ClassName "Tkabber") Grid

Если в какой-то компановке вам не нужны отступы, то просто не прописывайте их. Например, я в компановке окон imTkabber отступы не использую.

Остаётся сохранить xmonad.hs и перекомпилировать наш xmonad.

Чтобы изменения вступили в силу необходимо перезайти в систему!


« Последнее редактирование: 11 Января 2019, 20:26:53 от ChubaDuba »
Бλог   @chuba_duba
 
Пользователи, которые поблагодарили этот пост: Ogis1975

Оффлайн Ogis1975

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #47 : 26 Марта 2019, 16:35:20 »
Компоновка окон- XMonad.Layout.Maximize

Данная компоновка окон, временно как бы "вырывает" сфокусированное окно из видимых в фокусе окон, и заполняет собой экран.

 Выглядит вот так:



Как видно из скриншота, у меня Firefox заполнил все рабочее пространство. Это очень удобно, и по моему субьективному мнению, позволяет отказаться от стандартного лайаута "fulscreen".

Но как его настроить? Очень легко!

Добавляем модуль:
import XMonad.Layout.Maximize
Затем отредактируйте свой layoutHook, добавив модификатор  Maximize layout

У меня вот так:
myLayouts = maximizeWithPadding 10 (Tall 1 (3/100) (1/2)) ||| emptyBSP ||| Column 1.6
Обратите внимание, что я добавил значение "10". Это значение помогает регулировать отступы между окном. Если вы не хотите иметь такие отступы, вам нужно, вместо  maximizeWithPadding 10 просто добавить maximize
Теперь, нам только осталось назначить горячую клавишу.
 У меня вот так:

   `additionalKeysP`
     [
        ...
      , ("M-<Esc>", withFocused (sendMessage . maximizeRestore))
      ]
...

Удачи!
 

Оффлайн ChubaDuba

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #48 : 30 Июня 2019, 17:36:59 »
XMonad.Actions.Search
Быстрый поиск информации в internet

XMonad.Actions.Search - удобный инструмент для быстрого поиска информации в internet. Как видно из описания, модуль поддерживает большое количество поисковых движков.
Я сравнительно часто пользуюсь тремя:

deb - Debian package search;
duckduckgo - DuckDuckGo search engine;
youtube - Youtube video search.

Поэтому и добавил функционал только для них.
Чтобы всё это у нас заработало, добавляем в наш файл конфигурации xmonad.hs:
Сам модуль:
import XMonad.Actions.Search

Сконфигурируем окно, в которое мы будем вводить поисковый запрос:
-- Search Prompt
mySearchConfig = def
        { font                = myFont
        , bgColor             = "#1E2320"
        , fgColor             = "#E0AF8F"
        , promptBorderWidth   = 0
        , position            = Top
        , historySize         = 0
        , historyFilter       = deleteConsecutive
        }
Здесь ничего объяснять, думаю, не нужно. Все параметры задаются в зависимости от личных предпочтений пользователя.

И последнее, что нужно сделать - это добавить в конфигурационный файл сочетания горячих клавиш для каждого поискового движка.
Я выбрал следующие сочетания:

deb - mod4 + Shift + d;
duckduckgo - mod4 + Shift + s;
youtube - mod4 + Shift + y.

Соответственно добавляем в конфиг:
- Search prompt
, ((mod4Mask .|. shiftMask, xK_s), promptSearchBrowser mySearchConfig myBrowser duckduckgo)
, ((mod4Mask .|. shiftMask, xK_y), promptSearchBrowser mySearchConfig myBrowser youtube)
, ((mod4Mask .|. shiftMask, xK_d), promptSearchBrowser mySearchConfig myBrowser deb)
где
mySearchConfig - имя нашего окна, которое мы сконфигурировали ранее;
myBrowser - браузер используемый по умолчанию.

Я пользуюсь браузером Chromium поэтому в xmonad.hs прописал константу:
myBrowser = "chromium"

Остаётся перекомпилировать и перезагрузить xmonad, чтобы все изменения вступили в силу.
А вот как это выглядит, например, при нажатии сочетания клавиш mod4 + Shift + s:

После ввода запроса и нажатия клавиши Enter откроется браузер с результатами поиска.
Бλог   @chuba_duba
 
Пользователи, которые поблагодарили этот пост: Ogis1975

Оффлайн ChubaDuba

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #49 : 04 Апреля 2020, 14:49:47 »
Xmobar.
Мониторинг статуса подключения к сети интернет (online/offline).

Последнее время периодически стал отваливаться интернет.
Решил автоматизировать процедуру проверки, а результат проверки
вывести в xmobar.

Скрипт:
#!/bin/bash

color1="#709180"
color2="#DC8BC3"
ip="8.8.8.8"
count=3
default_status="0%"

count_loss=$(ping -c ${count} ${ip} | sed -e '$!{h;d;}' -e x | \
sed -r 's!^[^0]+!!' | sed 's/^\(..\).*/\1/')

if [[ $count_loss == *"$default_status"* ]]; then
echo "<fc=$color1>online</fc>"
else
echo "<fc=$color2>offline</fc>"
fi

Бλог   @chuba_duba
 

Оффлайн Ogis1975

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #50 : 04 Апреля 2020, 16:07:53 »
Решил автоматизировать процедуру проверки, а результат проверки
вывести в xmobar.
Отличное решение. Спасибо, что поделились!
 

Оффлайн ChubaDuba

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #51 : 13 Июня 2020, 20:32:59 »
Xmobar. Мониторим почтовый ящик Gmail.

Следить за нашим почтовым ящиком будет утилита fetchmail
Установим её:
$ sudo apt-get install fetchmail

Сконфигурируем её для работы с нашим почтовым ящиком. Создаём файл с настройками:
nano /home/username/.fetchmailrc

В который прописываем имя нашего почтового ящика и пароль:
poll imap.gmail.com with proto IMAP
    user "ваш e-mail" there with password "пароль"
    options nofethmail keep ssl

Присвоим права 600 для созданного файла:
$ chmod 600 /home/username/.fetchmailrc

Создаём скрипт для xmobar:
mail:
#!/bin/sh

color1="#6781A2"
color2="#95B8E7"

IMAPDIRS="INBOX"
totalmsg=0
seenmsg=0

CHECKMAIL=`fetchmail -c -r $IMAPDIRS`

_TOTALMSG=`echo $CHECKMAIL | cut -d " " -f 1`
_SEENMSG=`echo $CHECKMAIL | cut -d "(" -f 2 | cut -d " " -f 1`

TOTALMSG=`echo $_TOTALMSG | awk -v _totalmsg="$_TOTALMSG" \
'{ totalmsg += $1} END {print totalmsg}'`

SEENMSG=`echo $_SEENMSG | awk -v _seenmsg="$_SEENMSG" \
'{ seenmsg += $1} END {print seenmsg}'`

NEWMSG=$(($TOTALMSG - $SEENMSG))

if [ $TOTALMSG -eq $SEENMSG ]; then
echo "<fc=$color1>mail:$NEWMSG/$TOTALMSG</fc>"
else
echo "<fc=$color1>mail:</fc><fc=$color2>$NEWMSG</fc><fc=$color1>/$TOTALMSG</fc>"
fi

И теперь остаётся добавить в файл конфигурации xmobarrc результат работы скрипта:
commands = [ ...
                  , ...
                  , Run Com "/home/username/.../mail" [] "mail" 120
                  , ...
                ]
       , sepChar = "%"
       , alignSep = "}{"
       , template = "...%mail%..."
       }

Результат:
Бλог   @chuba_duba
 

Оффлайн ChubaDuba

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #52 : 05 Октября 2020, 22:53:49 »
Bash скрипт для вывода погоды в xmobar...
Добавил в скрипт вывод информации о направлении и скорости ветра:

weather
#!/bin/bash

s1="OK"
COLOR1="#b2b2a0"
COLOR2="#709180"

CITY_URL="http://old.meteoinfo.ru/rss/forecasts/34630"

SITE="`curl -Is $CITY_URL | head -1 | grep -Eo '.{3}$'`"

if [[ $SITE == *"$s1"* ]]; then

     TOMORROW_TEMP="`wget -O - $CITY_URL 2>/dev/null | \
              grep -w 'Температура' | sed '2!d' | \
              sed -r 's/^[^Т]+//' | sed -r 's/^[^д]+//' | \
              sed -r 's/°.+//' | sed 's/днём //'`"

     POSSIBILITY_RAIN="`wget -O - $CITY_URL 2>/dev/null | \
              grep -w 'Вероятность' | sed '2!d' | \
              sed -r 's/^[^ф]+//' | sed -r 's/^[^к]+//' | \
              sed 's/ков //' | grep -o '^[^<]*'`"

     BREEZE="`wget -O - $CITY_URL 2>/dev/null | \
              grep -w 'Ветер' | sed '2!d' | \
              sed -r 's/^[^В]+//' | grep -o '^[^.]*'`"
             
     
     echo "<fc=$COLOR1>$TOMORROW_TEMP°C($POSSIBILITY_RAIN)</fc> <fc=$COLOR2>$BREEZE</fc>"
     
else

     echo "n/a"
fi



« Последнее редактирование: 05 Октября 2020, 22:59:29 от ChubaDuba »
Бλог   @chuba_duba
 

Оффлайн ChubaDuba

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #53 : 15 Февраля 2021, 22:16:08 »
Google переводчик в один клик с помощью Scratchpad.

Про Scratchpad уже было выше

Делаем с помощью него быстрый доступ к Google переводчику:

-- Scratchpads
scratchpads = [
         ...
         NS "translate" "chromium --app=http://translate.google.com/#"
          (className =? "Chromium")
          (customFloating $ W.RationalRect 0 0.6 1 0.4)
         ...
        ]
...

-- Keybindings
-- Scratchpads
         ...
         , ((mod4Mask .|. shiftMask,     xK_t), namedScratchpadAction scratchpads "translate")
         ...

Бλог   @chuba_duba
 

Оффлайн ChubaDuba

Re: Xmonad, xmobar. Делимся полезными наработками.
« Ответ #54 : 06 Апреля 2021, 10:16:00 »
Xmobar. Курсы валют.

За основу взят скрипт currencyrates.py, написанный на языке Python.
Скрипт не мой, был найден на просторах internet. Поддерживает 169 валют,
в том числе основные криптовалюты. вывести можно любые кросс-курсы.
Скрипт мне понравился, поэтому я решил использовать его.

currencyrates.py:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import json,sys,urllib

if len(sys.argv) != 3:
    print("Usage: ./currencyrates.py \
    comma_separated_currency_list base_currency. \
    Example: ./currencyrates.py usd,eur,btc nok")
    sys.exit()

currencies = sys.argv[1]
basecurrency = sys.argv[2]

currencyurl = \
"http://freecurrencyrates.com/api/action.php?do=cvals&iso=" \
+ currencies.replace(',','') + "&f=" \
+ basecurrency + "&v=1&s=cbr"
f = urllib.urlopen(currencyurl)
obj = json.loads(f.read())
res="";
for c in currencies.split(','):
    res += c.upper() + \
    ":{:,.2f}".format(1/obj[c.upper()]).replace(',',' ')

# some unicode currency code replacement (optional)
res = res.replace("USD", "$")
res = res.replace("EUR", "€")
res = res.replace("BTC", "btc")

sys.stdout.write(res);

Чтобы было понимание как он работает, приведу несколько команд:

Текущий курс доллара по отношению к рублю:
   ./currencyrates.py usd rub
   $:74.14

Текущий курс евро по отношению к рублю:
   ./currencyrates.py eur rub
   €:88.43

Вывод сразу нескольких валют по отношению к рублю:
   ./currencyrates.py usd,eur,gbp,uah,nok rub
   $:74.14 €:88.43 GBP:93.76 UAH:2.36 NOK:7.54

Остаётся только применить его к нашему xmobar.
Для этого я создал bash скрипт currency с таким содержимым:
COLORUSD="#709180"
COLOREUR="#C3C19C"

USD=`~/.xmonad/scripts/currencyrates.py usd rub`
EUR=`~/.xmonad/scripts/currencyrates.py eur rub`

echo "<fc=$COLORUSD>$USD</fc> <fc=$COLOREUR>$EUR</fc>"

Редактируем наш .xmobarrc. Добавляем в него:
commands = ...
           ...
           , Run Com "/home/chubaduba/.xmonad/scripts/currency" [] "currency" 7200
           ...
, template = ... %currency% ...

Сохраняемся, перезагружаем xmobar и смотрим результат:

« Последнее редактирование: 06 Апреля 2021, 12:33:52 от ChubaDuba »
Бλог   @chuba_duba
 
Пользователи, которые поблагодарили этот пост: dogsleg

Теги:
 

[решено]xmonad - открытие диалоговых окон

Автор redVi

Ответов: 0
Просмотров: 1932
Последний ответ 19 Октября 2012, 10:16:16
от redVi