emacs/var/elfeed/db/data/5f/5f4cea4653a8180ffedfa35214006774e581e7c6
2022-01-03 12:49:32 -06:00

1 line
17 KiB
Plaintext

<!-- SC_OFF --><div class="md"><p>I&#39;m trying to display my workspaces in my Xmobar and I am able to display them using UnsafeStdinReader, but it seems to be using some sort of default because when I try to configure dynamicLogWithPP in my Xmonad config nothing changes. I&#39;m kinda new to this Arch and this might be a good learning experience for me because I&#39;m not even 100% sure how this works. From what I can tell UnsafeStdinReader just takes some sort of input and dynamicLogWithPP is an input that works with it?</p> <p>Here are my Xmobar and Xmonad config files (sorry for messy code):</p> <pre><code>-- -- xmonad example config file. -- -- A template showing all available configuration hooks, -- and how to override the defaults in your own xmonad.hs conf file. -- -- Normally, you&#39;d only override those defaults you care about. -- import XMonad import Data.Monoid import System.Exit import XMonad.Layout.NoBorders import XMonad.Layout.Gaps import XMonad.Layout.Spacing import XMonad.Layout.ResizableTile import XMonad.Hooks.ManageDocks import XMonad.Util.Run import XMonad.Util.SpawnOnce import XMonad.Hooks.DynamicLog import XMonad.Hooks.WorkspaceHistory import qualified XMonad.StackSet as W import qualified Data.Map as M import Codec.Binary.UTF8.String (encodeString) import Control.Monad (liftM2, msum) import Data.Char ( isSpace, ord ) import Data.List (intersperse, stripPrefix, isPrefixOf, sortBy) import Data.Maybe ( isJust, catMaybes, mapMaybe, fromMaybe ) import Data.Ord ( comparing ) import qualified Data.Map as M import qualified XMonad.StackSet as S import Foreign.C (CChar) import XMonad.Util.WorkspaceCompare import XMonad.Util.NamedWindows import XMonad.Layout.LayoutModifier import XMonad.Hooks.UrgencyHook import XMonad.Hooks.ManageDocks import XMonad.Hooks.StatusBar import XMonad.Hooks.StatusBar.PP -- The preferred terminal program, which is used in a binding below and by -- certain contrib modules. -- myTerminal = &quot;alacritty&quot; -- Whether focus follows the mouse pointer. myFocusFollowsMouse :: Bool myFocusFollowsMouse = True -- Whether clicking on a window to focus also passes the click to the window myClickJustFocuses :: Bool myClickJustFocuses = False -- Width of the window border in pixels. -- myBorderWidth = 2 -- modMask lets you specify which modkey you want to use. The default -- is mod1Mask (&quot;left alt&quot;). You may also consider using mod3Mask -- (&quot;right alt&quot;), which does not conflict with emacs keybindings. The -- &quot;windows key&quot; is usually mod4Mask. -- myModMask = mod4Mask -- The default number of workspaces (virtual screens) and their names. -- By default we use numeric strings, but any string may be used as a -- workspace name. The number of workspaces is determined by the length -- of this list. -- -- A tagging example: -- -- &gt; workspaces = [&quot;web&quot;, &quot;irc&quot;, &quot;code&quot; ] ++ map show [4..9] -- myWorkspaces = [&quot;1&quot;,&quot;2&quot;,&quot;3&quot;,&quot;4&quot;,&quot;5&quot;,&quot;6&quot;,&quot;7&quot;,&quot;8&quot;,&quot;9&quot;] -- Border colors for unfocused and focused windows, respectively. -- myNormalBorderColor = &quot;#414868&quot; myFocusedBorderColor = &quot;#7aa2f7&quot; ------------------------------------------------------------------------ -- Key bindings. Add, modify or remove key bindings here. -- myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $ -- launch a terminal [ ((modm, xK_Return), spawn $ XMonad.terminal conf) , ((modm, xK_Down), sendMessage MirrorShrink) , ((modm, xK_Up), sendMessage MirrorExpand) -- launch dmenu , ((modm, xK_d ), spawn &quot;dmenu_run&quot;) -- launch gmrun , ((modm .|. shiftMask, xK_p ), spawn &quot;gmrun&quot;) -- close focused window , ((modm .|. shiftMask, xK_c ), kill) -- Rotate through the available layout algorithms , ((modm, xK_space ), sendMessage NextLayout) -- Reset the layouts on the current workspace to default , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf) -- Resize viewed windows to the correct size , ((modm, xK_n ), refresh) -- Move focus to the next window , ((modm, xK_Tab ), windows W.focusDown) -- Move focus to the next window , ((modm, xK_Right ), windows W.focusDown) -- Move focus to the previous window , ((modm, xK_Left ), windows W.focusUp ) -- Move focus to the master window , ((modm, xK_m ), windows W.focusMaster ) -- Swap the focused window and the master windowmicLogWithPP $ namedScratchpadFilterOutWorkspacePP $ xmobarPP , ((modm .|. shiftMask, xK_Return), windows W.swapMaster) -- Swap the focused window with the next window , ((modm .|. shiftMask, xK_Right ), windows W.swapDown ) -- Swap the focused window with the previous window , ((modm .|. shiftMask, xK_Left ), windows W.swapUp ) -- Shrink the master area , ((modm, xK_h ), sendMessage Shrink) -- Expand the master area , ((modm, xK_l ), sendMessage Expand) -- Push window back into tiling , ((modm, xK_t ), withFocused $ windows . W.sink) -- Increment the number of windows in the master area , ((modm , xK_comma ), sendMessage (IncMasterN 1)) -- Deincrement the number of windows in the master area , ((modm , xK_period), sendMessage (IncMasterN (-1))) -- Toggle the status bar gap -- Use this binding with avoidStruts from Hooks.ManageDocks. -- See also the statusBar function from Hooks.DynamicLog. -- -- , ((modm , xK_b ), sendMessage ToggleStruts) -- Quit xmonad , ((modm .|. shiftMask, xK_q ), io (exitWith ExitSuccess)) -- Restart xmonad , ((modm , xK_q ), spawn &quot;xmonad --recompile; killall xmobar; xmonad --restart&quot;) -- Run xmessage with a summary of the default keybindings (useful for beginners) , ((modm .|. shiftMask, xK_slash ), spawn (&quot;echo \&quot;&quot; ++ help ++ &quot;\&quot; | xmessage -file -&quot;)) ] ++ -- -- mod-[1..9], Switch to workspace N -- mod-shift-[1..9], Move client to workspace N -- [((m .|. modm, k), windows $ f i) | (i, k) &lt;- zip (XMonad.workspaces conf) [xK_1 .. xK_9] , (f, m) &lt;- [(W.greedyView, 0), (W.shift, shiftMask)]] ++ -- -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3 -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3 -- [((m .|. modm, key), screenWorkspace sc &gt;&gt;= flip whenJust (windows . f)) | (key, sc) &lt;- zip [xK_w, xK_e, xK_r] [0..] , (f, m) &lt;- [(W.view, 0), (W.shift, shiftMask)]] ------------------------------------------------------------------------ -- Mouse bindings: default actions bound to mouse events -- myMouseBindings (XConfig {XMonad.modMask = modm}) = M.fromList $ -- mod-button1, Set the window to floating mode and move by dragging [ ((modm, button1), (\w -&gt; focus w &gt;&gt; mouseMoveWindow w &gt;&gt; windows W.shiftMaster)) -- mod-button2, Raise the window to the top of the stack , ((modm, button2), (\w -&gt; focus w &gt;&gt; windows W.shiftMaster)) -- mod-button3, Set the window to floating mode and resize by dragging , ((modm, button3), (\w -&gt; focus w &gt;&gt; mouseResizeWindow w &gt;&gt; windows W.shiftMaster)) -- you may also bind events to the mouse scroll wheel (button4 and button5) ] ------------------------------------------------------------------------ -- Layouts: -- You can specify and transform your layouts by modifying these values. -- If you change layout bindings be sure to use &#39;mod-shift-space&#39; after -- restarting (with &#39;mod-q&#39;) to reset your layout state to the new -- defaults, as xmonad preserves your old layout settings by default. -- -- The available layouts. Note that each layout is separated by |||, -- which denotes layout choice. -- myLayout = avoidStruts tiled ||| noBorders Full where -- default tiling algorithm partitions the screen into two panes tiled = spacingWithEdge 5 $ ResizableTall 1 (3/100) (1/2) [] -- The default number of windows in the master pane nmaster = 1 -- Default proportion of screen occupied by master pane ratio = 1/2 -- Percent of screen to increment by when resizing panes delta = 3/100 ------------------------------------------------------------------------ -- Window rules: -- Execute arbitrary actions and WindowSet manipulations when managing -- a new window. You can use this to, for example, always float a -- particular program, or have a client always appear on a particular -- workspace. -- -- To find the property name associated with a program, use -- &gt; xprop | grep WM_CLASS -- and click on the client you&#39;re interested in. -- -- To match on the WM_NAME, you can use &#39;title&#39; in the same way that -- &#39;className&#39; and &#39;resource&#39; are used below. -- myManageHook = composeAll [ className =? &quot;MPlayer&quot; --&gt; doFloat , className =? &quot;Gimp&quot; --&gt; doFloat , resource =? &quot;desktop_window&quot; --&gt; doIgnore , resource =? &quot;kdesktop&quot; --&gt; doIgnore ] ------------------------------------------------------------------------ -- Event handling -- * EwmhDesktops users should change this to ewmhDesktopsEventHook -- -- Defines a custom handler function for X Events. The function should -- return (All True) if the default handler is to be run afterwards. To -- combine event hooks use mappend or mconcat from Data.Monoid. -- myEventHook = mempty ------------------------------------------------------------------------ -- Status bars and logging -- Perform an arbitrary action on each internal state change or X event. -- See the &#39;XMonad.Hooks.DynamicLog&#39; extension for examples. -- myLogHook = return () ------------------------------------------------------------------------ -- Startup hook -- Perform an arbitrary action each time xmonad starts or is restarted -- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize -- per-workspace layout choices. -- -- By default, do nothing. myStartupHook = do spawnOnce &quot;nitrogen --restore &amp;&quot; spawnOnce &quot;picom &amp;&quot; spawnOnce &quot;xsetroot -cursor_name left_ptr &amp;&quot; ------------------------------------------------------------------------ -- Now run xmonad with all the defaults we set up. -- Run xmonad with the settings you specify. No need to modify this. -- main = do xmproc0 &lt;- spawnPipe &quot;xmobar -x 0 /home/fromliam2u/.config/xmobar/.xmobarrc&quot; xmonad $ def { logHook = dynamicLogWithPP $ xmobarPP { ppOutput = hPutStrLn xmproc0 , ppVisible = xmobarColor &quot;#7F7F7F&quot; &quot;&quot; , ppTitle = xmobarColor &quot;#76E57A&quot; &quot;&quot; , ppCurrent = xmobarColor &quot;#f7984c&quot; &quot;&quot; , ppHidden = xmobarColor &quot;#7F7F7F&quot; &quot;&quot; , ppHidden = xmobarColor &quot;#82AAFF&quot; &quot;&quot; , ppHiddenNoWindows = xmobarColor &quot;#82AAFF&quot; &quot;&quot; , ppLayout = xmobarColor&quot;#76E57A&quot; &quot;&quot; , ppUrgent = xmobarColor &quot;#900000&quot; &quot;&quot; , ppOrder = \(ws:l:t:_) -&gt; [ws] } , manageHook = manageDocks &lt;+&gt; myManageHook , startupHook = myStartupHook -- A structure containing your configuration settings, overriding -- fields in the default config. Any you don&#39;t override, will -- use the defaults defined in xmonad/XMonad/Config.hs -- -- No need to modify this. -- -- defaults = def { -- simple stuff , terminal = myTerminal, focusFollowsMouse = myFocusFollowsMouse, clickJustFocuses = myClickJustFocuses, borderWidth = myBorderWidth, modMask = myModMask, workspaces = myWorkspaces, normalBorderColor = myNormalBorderColor, focusedBorderColor = myFocusedBorderColor, -- key bindings keys = myKeys, mouseBindings = myMouseBindings, -- hooks, layouts layoutHook = myLayout, manageHook = myManageHook, handleEventHook = myEventHook, -- logHook = myLogHook, startupHook = myStartupHook } -- | Finally, a copy of the default bindings in simple textual tabular format. help :: String help = unlines [&quot;The default modifier key is &#39;alt&#39;. Default keybindings:&quot;, &quot;&quot;, &quot;-- launching and killing programs&quot;, &quot;mod-Shift-Enter Launch xterminal&quot;, &quot;mod-p Launch dmenu&quot;, &quot;mod-Shift-p Launch gmrun&quot;, &quot;mod-Shift-c Close/kill the focused window&quot;, &quot;mod-Space Rotate through the available layout algorithms&quot;, &quot;mod-Shift-Space Reset the layouts on the current workSpace to default&quot;, &quot;mod-n Resize/refresh viewed windows to the correct size&quot;, &quot;&quot;, &quot;-- move focus up or down the window stack&quot;, &quot;mod-Tab Move focus to the next window&quot;, &quot;mod-Shift-Tab Move focus to the previous window&quot;, &quot;mod-j Move focus to the next window&quot;, &quot;mod-k Move focus to the previous window&quot;, &quot;mod-m Move focus to the master window&quot;, &quot;&quot;, &quot;-- modifying the window order&quot;, &quot;mod-Return Swap the focused window and the master window&quot;, &quot;mod-Shift-j Swap the focused window with the next window&quot;, &quot;mod-Shift-k Swap the focused window with the previous window&quot;, &quot;&quot;, &quot;-- resizing the master/slave ratio&quot;, &quot;mod-h Shrink the master area&quot;, &quot;mod-l Expand the master area&quot;, &quot;&quot;, &quot;-- floating layer support&quot;, &quot;mod-t Push window back into tiling; unfloat and re-tile it&quot;, &quot;&quot;, &quot;-- increase or decrease number of windows in the master area&quot;, &quot;mod-comma (mod-,) Increment the number of windows in the master area&quot;, &quot;mod-period (mod-.) Deincrement the number of windows in the master area&quot;, &quot;&quot;, &quot;-- quit, or restart&quot;, &quot;mod-Shift-q Quit xmonad&quot;, &quot;mod-q Restart xmonad&quot;, &quot;mod-[1..9] Switch to workSpace N&quot;, &quot;&quot;, &quot;-- Workspaces &amp; screens&quot;, &quot;mod-Shift-[1..9] Move client to workspace N&quot;, &quot;mod-{w,e,r} Switch to physical/Xinerama screens 1, 2, or 3&quot;, &quot;mod-Shift-{w,e,r} Move client to screen 1, 2, or 3&quot;, &quot;&quot;, &quot;-- Mouse bindings: default actions bound to mouse events&quot;, &quot;mod-button1 Set the window to floating mode and move by dragging&quot;, &quot;mod-button2 Raise the window to the top of the stack&quot;, &quot;mod-button3 Set the window to floating mode and resize by dragging&quot;bar] --Xmobar config Config { font = &quot;xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=true&quot; , additionalFonts = [ &quot;xft:Mononoki Nerd Font:pixelsize=11:antialias=true:hinting=true&quot; , &quot;xft:Font Awesome 5 Free Solid:style=solid:pixelsize=11:antialias=true:hinting=true&quot; , &quot;xft:Mononoki Nerd Font:pixelsize=13:antialias=true:hinting=true&quot; , &quot;xft:Mononoki Nerd Font:pixelsize=15:antialias=true:hinting=true&quot; ] , borderColor = &quot;#24283b&quot; , border = TopB , bgColor = &quot;#24283b&quot; , fgColor = &quot;grey&quot; , alpha = 255 , position = Top , textOffset = -1 , iconOffset = -1 , lowerOnStart = True , pickBroadest = False , persistent = False , hideOnStart = False , iconRoot = &quot;.&quot; , allDesktops = True , overrideRedirect = True , commands = [ -- Run Weather &quot;EGPF&quot; [&quot;-t&quot;,&quot;&lt;station&gt;: &lt;tempC&gt;C&quot;, -- &quot;-L&quot;,&quot;18&quot;,&quot;-H&quot;,&quot;25&quot;, -- &quot;--normal&quot;,&quot;green&quot;, -- &quot;--high&quot;,&quot;red&quot;, -- &quot;--low&quot;,&quot;lightblue&quot;] 36000 --, Run Network &quot;eth0&quot; [&quot;-L&quot;,&quot;0&quot;,&quot;-H&quot;,&quot;32&quot;, -- &quot;--normal&quot;,&quot;green&quot;,&quot;--high&quot;,&quot;red&quot;] 10 --, Run Network &quot;eth1&quot; [&quot;-L&quot;,&quot;0&quot;,&quot;-H&quot;,&quot;32&quot;, -- &quot;--normal&quot;,&quot;green&quot;,&quot;--high&quot;,&quot;red&quot;] 10 --, Run Cpu [&quot;-L&quot;,&quot;3&quot;,&quot;-H&quot;,&quot;50&quot;, -- &quot;--normal&quot;,&quot;green&quot;,&quot;--high&quot;,&quot;red&quot;] 10 --, Run Memory [&quot;-t&quot;,&quot;Mem: &lt;usedratio&gt;%&quot;] 10 --, Run Swap [] 10 Run Com &quot;uname&quot; [&quot;-r&quot;] &quot;&quot; 36000 , Run Com &quot;.local/bin/pacupdate&quot; [] &quot;pacupdate&quot; 6000 --, Run DynNetwork [ &quot;--template&quot; , &quot;&lt;dev&gt;: &lt;tx&gt;kB/s|&lt;rx&gt;kB/s&quot; ] 10 --, Run Volume &quot;default&quot; &quot;Master&quot; [] 10 , Run DiskU [(&quot;/&quot;, &quot;&lt;free&gt;&quot;), (&quot;/mnt/iomega&quot;, &quot;&lt;free&gt;&quot;)] [] 20 , Run Date &quot;%a %_d&quot; &quot;day&quot; 10 , Run Date &quot;%H:%M&quot; &quot;time&quot; 10 , Run Com &quot;.local/bin/kernel&quot; [] &quot;kernel&quot; 36000 , Run UnsafeStdinReader ] , sepChar = &quot;%&quot; , alignSep = &quot;}{&quot; , template = &quot;&lt;fc=#1692d0&gt;&lt;fn=4&gt; &lt;/fn&gt;&lt;/fc&gt; | %UnsafeStdinReader%}\ \{ &lt;fc=#f7768e&gt;&lt;fn=3&gt; &lt;/fn&gt; %kernel%&lt;/fc&gt; | &lt;fc=#e0af68&gt;&lt;fn=1&gt; &lt;/fn&gt; %pacupdate%&lt;/fc&gt; | &lt;fc=#9ece6a&gt;&lt;fn=2&gt; &lt;/fn&gt; %disku% free&lt;/fc&gt; | &lt;fc=#7dcfff&gt;&lt;fn=2&gt; &lt;/fn&gt; %day%&lt;/fc&gt; | &lt;fc=#b48ead&gt;&lt;fn=2&gt; &lt;/fn&gt; %time%&lt;/fc&gt; &quot; } </code></pre> </div><!-- SC_ON --> &#32; submitted by &#32; <a href="https://www.reddit.com/user/fromliam2u"> /u/fromliam2u </a> <br/> <span><a href="https://www.reddit.com/r/archlinux/comments/qz3kyu/cant_configure_dynamiclogwithpp_in_xmonad/">[link]</a></span> &#32; <span><a href="https://www.reddit.com/r/archlinux/comments/qz3kyu/cant_configure_dynamiclogwithpp_in_xmonad/">[comments]</a></span>