Xmonad, xmobar. Делимся полезными наработками.

Автор ChubaDuba, 23 января 2018, 15:02:35

« назад - далее »

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

ChubaDuba

Переключение между двумя рабочими столами

Очень удобная вещь, если есть необходимость в многократном переключении между двумя рабочими столами. Например, с 1-го на 9-й и обратно с 9-го на 1-й.
,((mod4Mask,          0xff1b), toggleWS)
0xff1b - клавиша Esc

ChubaDuba

Hotkey's на выключение/включение внешнего монитора

mod4Mask+F1 - выключение внешнего монитора;
mod4Mask+F2 - включение внешнего монитора.

single_monitor:

#!/bin/sh

xrandr --output VGA-1 --off
xrandr --dpi 125 --output LVDS-1 --auto
feh --bg-center --no-fehbg ~/wallpapers/vw_0.png
xmonad --restart


dual_monitors:

#!/bin/sh

xrandr --output VGA-1 --on
xrandr --dpi 125 --output LVDS-1 --auto --right-of VGA-1 --output VGA-1 --auto
feh --bg-center --no-fehbg ~/wallpapers/vw_0.png ~/wallpapers/vw_1.png
xmonad --restart


xmonad.hs:

-- Single or dual monitor's
        ,((mod4Mask,                0xffbe), spawn "single_monitor")
        ,((mod4Mask,                0xffbf), spawn "dual_monitors")




ChubaDuba

#62
Hotkey для Fullscreen

Добавим в xmonad.hs функцию toggleFullscreen:
-- toggleFullscreen
toggleFullscreen :: X ()
toggleFullscreen =
    withWindowSet $ \ws ->
    withFocused $ \w -> do
        let fullRect = W.RationalRect 0 0 1 1
        let isFullFloat = w `M.lookup` W.floating ws == Just fullRect
        windows $ if isFullFloat then W.sink w else W.float w fullRect

Добавляем hotkey для выполнения toggleFullscreen:
,((mod4Mask .|. shiftMask,  xK_w), toggleFullscreen)
При нажатии комбинации клавиш активное окно разворачивается на весь экран.
При повторном нажатии окно возвращается на своё место.

ChubaDuba

#63
Быстрые заметки.
У меня заметки как правило в формате одна заметка - одна строка. Заметки хранятся в обычном текстовом файле с именем NOTES. Новые заметки добавляются в конец файла. Для просмотра использую текстовый редактор Vim (мне так удобно).

Добавляем функцию:
  -- Notes
  newtype AppendFile = AppendFile FilePath

  instance XPrompt AppendFile where
    showXPrompt (AppendFile fn) = "заметка: "

  appendFilePrompt :: XPConfig -> FilePath -> X ()
  appendFilePrompt c = appendFilePrompt' c id

  appendFilePrompt' :: XPConfig -> (String -> String) -> FilePath -> X ()
  appendFilePrompt' c trans fn = mkXPrompt (AppendFile fn)
                                  c
                                  (const (return []))
                                  (doAppend trans fn)
 
  doAppend :: (String -> String) -> FilePath -> String -> X ()
  doAppend trans fn s = mkAbsolutePath fn >>= \f ->
    (io . withFile f AppendMode . flip hPutStrLn . trans) s

Свойства окна в которое вводятся заметки:
  -- FilePrompt
  myFilePrompt                = def
        { font                = myFont
        , bgColor             = "#1d2021"
        , fgColor             = "#fe8019"
        , promptBorderWidth   = 0
        , position            = Bottom
        , height              = 32
        }

Горячие клавиши (mod4Mask+Shift+n) для добавления заметки:
        -- Quick notes
        ,((mod4Mask .|. shiftMask,    xK_n), do
           date <- io $ fmap (formatTime
                              defaultTimeLocale "%d.%m.%Y  %H:%M  -  ") getZonedTime
           appendFilePrompt' myFilePrompt (date ++) $ "/home/chubaduba/NOTES")

Чтобы заметки были всегда под рукой заворачиваем окно текстового редактора в Scratchpad:
-- Scratchpads
  scratchpads :: [NamedScratchpad]
  scratchpads =
        [
        -- Open notes on vim
        NS "notes" "urxvtc -uc -title notes -e vim /home/chubaduba/NOTES"
          (title =? "notes")
          (customFloating $ W.RationalRect (1/40) (4/60) (38/40) (54/60))
        ]

Горячие клавиши (mod4Mask+Ctrl+n) для просмотра заметок:
-- ScratchPad's
        ,((mod4Mask .|. controlMask,   xK_n), namedScratchpadAction scratchpads "notes")

Работает всё это дело так:
Жмёт mod4Mask+Shift+n, вводим заметку:

Жмём Enter, окно ввода закрывается...

Смотрим заметки...
Жмём mod4Mask+Ctrl+n:

Повторное нажатие mod4Mask+Ctrl+n свернёт окно. Чтобы закрыть окно нужно нажать стандартные mod4Mask+Shift+c