По первому вопросу:
Кажется, что ответ Томаса сработает, но это не так. Синтаксис файла xmobarrc выглядит как Haskell, но на самом деле он очень ограничивает форматирование и не поддерживает синтаксис Haskell, за исключением того, что уже есть в файле.
Тем не менее, очевидный ответ - просто раскрасить каждый из них по отдельности. В результате получается строка шаблона, которая немного длиннее и менее красива, чем, вероятно, должна быть, и было бы больше работы, чтобы изменить ее позже, но, честно говоря, всего четыре символа |
, так что это не так уж плохо .
Более привлекательным решением является установка fgColor = "#ffffff"
, а затем добавление "--low","#8080A1"
в список параметров каждой из ваших команд и перенос %StdinReader%
и %date%
в <fc=#8080A1></fc>
. В основном, установите цвет по умолчанию на |
цвет и явно раскрасьте все остальное. Таким образом, вы не будете писать все эти теги fc
, потому что этот цвет неявен. Я бы не советовал делать это таким образом, так как это несколько снижает четкость файла.
Теперь, на самом деле, есть гораздо лучший способ сделать это, который полностью решает эту проблему и все связанные с ней проблемы: напишите это в реальном Haskell. Что бы вы сделали, напишите программу на Haskell, которая в конечном итоге создает и форматирует правильный xmobarrc, а затем печатает его в файл. Лично я считаю, что это хороший вариант для любого раздражающего конфигурационного файла, но xmobarrc особенно хорош для этого, поскольку его синтаксис очень близок к синтаксису Haskell. Точнее говоря, синтаксис, который использует xmobarrc, полностью соответствует синтаксису, который использует Haskell для описания литеральных данных, что означает, что все, что нам нужно сделать, - это построить объект Config
и запустить его по умолчанию show
, и вся остальная работа будет выполнена. для нас, кроме нескольких крошечных различий. На самом деле, здесь, я напишу это очень быстро для вас ... здесь . Теперь, если вы импортируете это и определите основной файл следующим образом:
module Main (main) where
import XMobarHs
main = export $ config
{ lowerOnStart = False
, font = "xft:Terminus-12"
, bgColor = "#000000"
, fgColor = "#8080A1"
, position = Top
, commands = [ Run $ Network "eth0" ["-L","0","-H","32","--normal","#429942","--high","#A36666"] 10
, Run $ Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
, Run $ Memory ["-t","Mem: <usedratio>%"] 10
, Run $ Date "/%a/ %_d.%m.%Y / %H:%M" "date" 10
, Run $ Com "sh" ["~/bin/weather.sh"] "weather" 60
, Run $ StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = " %StdinReader% }{ W:<fc=#fce94f>%weather%</fc> | %cpu% | %memory% | %eth0% | %date%"
}
Это почти точно так же. Но это не обязательно, потому что сейчас это буквально Хаскель, так что вы на самом деле можете использовать идею Томаса или пойти намного дальше, в той степени, в какой вы чувствуете себя лучше. Единственным недостатком является то, что каждый раз, когда вы редактируете файл, вам нужно скомпилировать и запустить его снова, чтобы получить обновленный xmobarrc.
По второму вопросу:
В списке параметров команды добавьте "-w","3"
, заменив 3 на размер (в количестве символов), в котором вы хотите, чтобы поля команды были фиксированными. Это обрезает поле, если оно превышает этот размер, и заполняет поле пробелами, если оно меньше. Если вы хотите дополнить 0 (или другим символом) вместо пробелов, добавьте также "-c","0"
(или "-c","n"
, заменив n на символ, который хотите дополнить).