8M       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF G H I J K L M N O P Q R S T U V W X YZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m!n!o!p!q"r"s"t#u#v#w#x#y#z#{$|$}$~$$$$$$%%%%&&&'''''(((((((()**********************+++++++++++++++++++++,,,,,------.....////000000000000111122222222223333449Gives access to wifi statusongy experimentalLinuxNone#Wifi network connection information  Signal type: Ahttp://lxr.free-electrons.com/source/net/wireless/nl80211.c#L6944  Signal MBM Strength 0-100 4http://lxr.mein.io/source/iwinfo/api/nl80211.h#L3388 Enum for connection change -Nothing changed, connection unrelated message#The current network was disconnectd A new connection was establishedThe socket type for this module The first socket is general operation/event based the seconds socket will be used to get extended information. We use 2 sockets, to not get event/request mixed up.The interface identifierConvert raw values from netlink"Get WifiStats from netlink message3Get the stats of a currently connected wifi network1Get only the name of the currently connected wifiGet the interface id by nameget the raw fd for eventing.This should be called when the fd returned by  got readableBGet some additional information about the currently connected wifiSubscribe to multicast groupMGet a netlink socket bound to nl80211 Before this is used event based, call !       !Allows access to read system timeongytestingLinuxSafe#The handle exported by this module.7Get the current time in the format given to the handle.>Get the current time (HH:MM) format for the current time zone.Get a handle for this module#The format that should be used for  in strftime format@Provides helper functions for output generators that use unicodeongytestingLinuxSafe*Unicode block char for vertical bar (in %) 6Horizontalblock char for horizontal bar (in % of char)    The module definition used by  startLoop ongy, moepi experimentalLinuxNoneAT!Wrapper around & and $+ so we can pass all modules in one list to  startLoop$7A wrapper around EvtModule for so they can be in a list&AA wrapper around module instances so they can be put into a list.(The class for eventing modules)NStart your own event loop. The second argument is the consumer of your output.ODoing this in an opaque way gives a way to chain actions to your event handling*The New class for collection modules+Get the current (new) output-.Class that output converters have to implement.ACreate one tick of output from a list of collection module output/*A data type to encode general output types0Plaintext output1A Vertical bar, in %2A horizontal bar, in pixel Temporary (FG,BG) Color format (and somewhat image) are not fix yet, so don't rely on them to much3/Colorize the enclosed output TODO: Color format4MPath to an image to display (for icons), or Unicode glyph that should be used5)Function to make packaging modules easier65 for (s!"#$%&'()*+,-./012345 The refresh rate for this module*The function to get a module (get??Handle)'The packed module ready to be given to  startLoop67!"#$%&'()*+,-./4012356/01234-.*+,()!"#$%&'56 !"#$%&'()*+,-./01234567Output module for AsciiongytestingLinuxNone:"The output handle for a ascii pipe;?Get an output handle for ascii formatting. Divider Defaults to " | "<)Get an output handle for ascii formatting:;< The Divider=:;<:;<:;<=Output module for dzen2ongytestingLinuxNone> The output handle for dzen2 pipe?3Get an output handle for dzen2 formatting Assumes " | " as divider@^Get the output handle for dzen2 formatting. Will asume your .xbm files are in <monkydir>/xbm/A)Get an output handle for dzen2 formatting>?AThe height of your dzen bar in pixel (required for block-drawing)2Path to the directory cointaining your .xbm files.@8The height of your dzen bar in pixel (for block drawing)AAThe height of your dzen bar in pixel (required for block-drawing)1Path to the directory containing your .xbm files.DividerB>?@A>?@A>?@ABOutput module for i3-barongytestingLinuxNoneCOutput handle for i3-barDNGet output handle for i3-bar. This initializes the communication on generation C    DECDCDC    DE 2Monky module that modifies other outputs behaviourongytestingLinuxNoneF<Handle for modifying a line before it's passed to the outputG$Get a handle to purely modify a lineF GHFGFGF GH Output module for storingongytestingLinuxNoneI)The output handle for using show instanceK(Get an output handle for show formattingIJKLIJKKIJIJKL Output module for storingongytestingLinuxNoneM)The output handle for using show instanceO(Get an output handle for show formattingMNOPMNOOMNMNOP Output module for utf8ongytestingLinuxNoneQ!The output handle for a utf8 pipeR>Get an output handle for utf8 formatting. Divider defaults to " | "S)Get an output handle for utf8 formatting.QRSThe divider between segmentsTQRSQRSQRST &Output module for doing a "best guess"ongytestingLinuxNoneATU(The datatype for wrapping outher outputsVMLowerlevel access to guess which terminal out to use based on system encodingW=Wrapper for normal outputs that tries to find the best outputjThis function will check if stdout is a terminal and switch to AsciiOut or UTf8Out depending on the localeUVW'The output to use for non-terminal modeXUVWUWVUVWX2Guess the output that should be used based on pipeongytestingLinuxNoneATYType wrapper for this to workZ<Guess output based on isatty and other side of the stdout fd[<Guess output based on isatty and other side of the stdout fdYZ Dzen height Dzen xbm path[ Dzen height Dzen xbm pathThe Divider to use\YZ[ZY[ YZ[\.Allows to query information from an mpd serverongytestingLinuxNone`9Haskell type for the data returned by MPDs status commandxInformation about an songCollection of tags MPD supports-The current state of the MPD player submodulePlayingStoppedPaused6A type safe socket for this module, basically a handle Close the  when it is no longer required=Open one MPDSock connected to a host specified by one of the MPDInfoP or throw an exception (either ran out of hosts or something underlying failed) Get a new  Get the raw  from the  for eventing apiJSend a query to the MPD server and return a list of answers (line by line)sThis does not filter out errors, error checking has to be done by the user. This does filter out the last OK though1Get the OK sent by mpd after idle out of the pipe Go into MPDs idleY mode, this does return, but MPD wont time us out and will notify us if something happens6Get the current status or an error from the MPD serverNGet the information about the song currently beeing player from the MPD serverW`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'The host the server is onThe port the server listens on()=The string that should be send with idle (list of subsystems)*+,-./F`aqibcdefghjklmnoprstuvwxyz{|}~Fxyz{|}~`abcdefghijklmnopqrstuvw`abcdefghijklmnopqrstuvwx yz{|}~ !"#$%&'()*+,-./Lowlevel IP interfacesongy experimentalLinuxNone%AddressFamilies support for libraries/Datatype for IP addresses, abstracts over v4/v6IPv6 addressesIPv4 addressesParse an IP4 from a StringSRead an IP from a ByteString. The type is determined by the size of the ByteString.YGet the number associated with the family address. This is for interfacing with libraries-Get the address family for a given ip address0123456789:; 0123456789:; IP information collection moduleongy experimentalLinuxNoneL8Handle to access information about the IPs on the system>Get an IPHandle to gather information about IPs on the system.EGet all addresses on the system (filtered by interface and type, see ) Get the raw H used by this handle. This can be used to block in RTS controlled mannerWSubscribe to the multicast group(s) for this handle. This has to be called ONCE before  can be used."Handle the next event from NetlinkWThis will handle the next event reported by the handle. Before this ever does anything p has to be called ONCE! This function can then be called as often as needed and should be called in a main loop.The functions passed may be called multiple times, and sometimes both may be called. This is a limitation by the netlink api, that cannot be avoided without user space buffers. <=>?@The interface to monitorThe AddressFamily to useAThe handle to use&Function to call with new ip addresses'Function to call with removed addresses <=>?@A5Provides utility functions for module implementationsongytestingLinuxNone%Utility Function for eventing modules,Convert a number into a fixed length strings9Convert a number into a reasonable scale for binary units5Convert a number into a reasonable scale for SI unitsSome kind of module handleThe FD to block onThe update consume function#The function to generate the outputThis will loop for youBB%The event based wifi module interfaceongy experimentalLinuxNoneT %A typesafe version of a format string"Print the current networks channelHPrint the ESSID of the current network, may look weird because SSIDs areEPrint the frequency the current network sends on (related to channel)Print a plaintext stringThe handle type for this module Apply the  to show some  information as text.Get a wifi handleLower level version of  if you need exted information.Lower level version of  for more control&Get a wifi handle, guess the interfaceuGuess isn't quite the right word here. This asks the NL80211 subsystem for a list of devices and picks the first one.CDFormat String for output generation7Text that should be displayed when wifi is disconnectedName of the interface7Text that should be displayed when wifi is disconnectedFormat String for output generation7Text that should be displayed when wifi is disconnectedE CDE5#Backwards compatability module for Monky.Examples.Wifi.Eventongy experimentalLinuxNone$The polling api for wifi informationongy experimentalLinuxNone T5Enum-ish type for converting Wifi information to textThe MCSIndex for our connection'The minimum MCSIndex for our connectionThe Signal width (in MHz)The Bitrate of our connection)Minimum of TX/RX Bitrate for this station!Signal strength from other sourceSignal strength average"Print the current networks channelHPrint the ESSID of the current network, may look weird because SSIDs areEPrint the frequency the current network sends on (related to channel)Print a plaintext string/Helper type for WifiFormat to specify directionUse TX informationUse TX information%The type for polling wifi informationF=Do the calculation for MBM This is taken from NetworkManagerGZThis function is the easiest, but also a bit limited way to get extended wifi information.aWith this, all "normal" information will be first, and the extended information will be appended.Lower level version of  for more level of controlGet a wifi handleLower level version of  for more control&Get a wifi handle, guess the interfaceuGuess isn't quite the right word here. This asks the NL80211 subsystem for a list of devices and picks the first one.HFIJKLGFormat String for output generation7Text that should be displayed when wifi is disconnectedName of the interface7Text that should be displayed when wifi is disconnectedFormat String for output generation7Text that should be displayed when wifi is disconnected HFIJKLG*Countdown clock for a specific time of daytestingNoneMmRender a number of seconds as a human-readable amount. Shows the two most significant places. For instance: renderSecs 121 = "2m 1s"NLike M;, but takes a TimeDiff instead of an integer second count. O4Convert a list of hour, minute, seconds to seconds. PQMNORSPQMNORS+Integration example for pulseaudio library.ongy experimentalLinuxNoneLPulse handle. This module uses continuations, the handle is not really usedT)Format a given sink to the output string.U9Find the index of our sink and register the event handler'Try to start pulse loop. silently fail!GConnect to pulse server and try to start the main loop for this module.%Get the handle for pulse integration.VTU$The continuation if everything fails!Sink to use (Nothing for default)Output function6The servername (Nothing will use environment variable)VTUPrepend something to a moduleongytestinglinuxNoneAT( append type( prepend typeEThe handle used by this module, contains underlying module and stringEThe handle used by this module, contains underlying module and string9Create a module that should be prepended with some stringGThis allows you to prepend an instance of a module with a fixed String.For usage look at 5.8Create a module that should be appended with some stringFThis allows you to append an instance of a module with a fixed String.For usage look at 5. for (s for (sThe String to prepend The refresh rate for this moduleThe function to get the moduleThe returned handleThe String to prepend The refresh rate for this moduleThe function to get the moduleThe returned handle   Print some constant valuesongytestinglinuxNone The type for this functionality Get a   for familiar syntax                /Monky module that modifies other modules outputongytestingLinuxNone'Handle for modifying output in IO monad3Handle for duing pure modification of module output4Get a handle to purely modify another modules outputCGet a handle that can modify another handles output in the IO monadvChange the replacemant char in an monky image (if your font doesn't support it), returns initial value if not an image WX WX-An example module instance for the MPD moduleongytestingLinuxNone/The handle for this exampleGet an 1 (server has to be running when this is executed)Get the = with a custom conversion function. You will need to import 46" to get the definitions into scopeYZ[\]^_`abThe host to connect toThe port to connect toThe host to connect toThe port to connect to The function to extract the text YZ[\]^_`abExports 4s that can/should be used.ongytestingLinuxNone0MonkyImage for disk (primary persistent storage)(MonkyImage for memory (RAM (it's a ram))-MonkyImage for time with custom image supportMonkyImage for time (clock) 4MonkyImage with custom image support (loadding etc.)!MonkyImage to be used for CPU ! ! ! !.An example module instance for the time module ongy, moepitestingLinuxNone"Like #) but uses a fancy variant of clock images# Handle for accessing system time$Get a #%Get a " "c#d$#The format that should be used for  in strftime formate%#The format that should be used for  in strftime format&'"#$%$%#""c#d$e%&'7Combine multiple modules into one (to avoid seperators)ongytestinglinuxNone9;AT(#Wrapper type for mixed combination.)#Wrapper type for mixed combination.*Wrapper type for (s+Wrapper type for *s, Combine two *3s. The first arguments output will be printed first- Combine two (,s. The first argument will be printed first.. Combine a ( with a *. This will alwasy create a *J. |Event updates will not be displayed until the poll modules ticks once./Look at . for documentation(f)g*h+i,-./0123()*+,-./+,*-).(/ (f)g*h+i,-./0123(Allows the user to get a connected stateongy experimentalLinuxNone[4!The handle exposed by this modulej*The Haskell type for the C struct sockaddrkRaw socket calls, we node those5/Get the current connected state from the handle6&Get a handle to check for connectivity4lmnjopqrks5t6(The Host to use for connectivity probing7Which port to use for connecivity probing (drop is bad)7456465 4lmnjopqrks5t67Simple Connectivity exampleongytestingLinuxNoneAT<The handle type for this module==Get a handle that allows testing for connectivity to a server<uv=(The Host to use for connectivity probing7Which port to use for connecivity probing (drop is bad)><==<<uv=>7Provides C utility functionsongytestingLinuxNone?+The haskell type for Cs utsname (man uname)w,Get a UName structure for the current kernel ?xyz{|}~w?xyz{|}w?xyz{|}~wProvides utility functions ongy, moepitestingLinuxNone9;@7type alias to distinguish system functions from utilityA Find a line in a list of StringsB7Read the first line of the file and convert it into an C7Read the first line of the file and convert it into an DARead the first line of the file and convert the words in it into sERead the first line of the file"Read a File as String line by line&Read a File as ByteString line by lineF>Rewind the file descriptor and read the complete file as linesGopen a file read onlyHClose a file opened by GI!Split ys at every occurence of xsJ6fmap fopen would give Maybe (IO File), this fixes thatK.0 save divide, uses maxbound for default valueL!0 save divide, uses default valueMGet the kernel nameversionrelease and so forthN(Get the kernel version as (major, minor)@ABCDEFGHIJKLMNOPQR?@ABCDEFGHIJKLMNBCDGH@EFAIJKL?MN@ABCDEFGHIJKLMNOPQRK7L7 #Provides the common disk interfacesmoepi experimentalLinuxNoneATUExistential datatype to wrap W instancesW>Type class that should be instanciated by file system handlersThe Monky.Disk module is designed to work with different handlers specialized for different file systems and a generic block device handler.WThis typeclass gives the interface a file system handler has to implement to be usable.X%Get the bytes free on the file systemY%Get the total size of the file systemZ%Get the bytes used by the file system[9Get all data, might be more efficient (Size, Free, Used);Get the real device (e.g. dm-0) that's behind a device namecWrap a W into an Ud,The base path of block devices on the system>Go from the FileStatus record to Major and Minor device number]Traverse the device tree downwards (find all devices used) in kernel | devcice name hirarchye5Get the physical block devices supporting some device_Traverse the device tree upwards (find all users of a device) in | kernel device name hirarchyfAGet the "top most" virtual device(s) based on the physical deviceUVWXYZ[\]^_`abcdefUVWXYZ[\]^_`abcdefUVWXYZ[cdfe\]^_`abUVWXYZ[\]^_`abcdef!/Allows access to information about a btrfs poolongy experimentalLinuxNonem"The FsInfo exported by this modulenZGet the block devices used by a btrfs FileSystem. This resolves mappers as far as possibleo)Try to create a btfshanlde given the UUIDThis will create a m_ which is an instance of FsInfo and a list of block devices that are slaves of our file system.This allows the upper layer to monitor the read/write rates of all block devices that belong to our file system and report them as read/write rate for the file system.Due to compression and encryption the read/write rate on the block device may be quite different to the one that application see. mno&The UUID of the file system to monitorpmnomon mnop"*Display the first line in a file each tickongytestingLinuxNoneqThe handle type for this modulerGet the file handleqrPath to the filesqrqrqrs#;Allows to access information about they systems main memoryongytestingLinuxNonet(The memory handle used for all functionsu(Return the memory available to userspaceyThis is accurate (read from kernel) for current kernels. Old kernel (~3.13) estimates this. Old kernels may overestimate.v,Get the total amount of memory in the systemw6Get the amount of memory rported as free by the kernelx9Get the amount of memory used by the kernel and processesyPGet memory statistics in one got (with only one read) (total, avail, free, used)zGet a memory handle tuvwxyztuvwxyztuzvxwy tuvwxyz$0An example module instance for the memory module ongy, moepitestingLinuxNone{0Handle to display the current memory usage (usedcachesfree) as horizontal bar|,Simple handle to display current free memory}1Simple handle to display current memory available~%Get the the memory handle (available) Get the the memory handle (free)Get the {{|}~2A factor to modify bar length. Total-length: 100/f{|}~~}|{ {|}~%7Allows access to information about they systems networkongytestingLinuxNone 2Internal handle represanting exactly one interfaceCurrent state of network deviceIt is down, consider offIt is up, consider on(Unknown, kernel docu says to consider onDormant, consider off1Get the current network adapter state from kernelaGet the (read, write) rate of the network interface. This is averaged over the time between callsGet a LClose a network handle after it is no longer needed (the device disappeared) Name of the interface to monitor &7Allows access to information about they systems networkongytestingLinuxNone"The handle exported by this moduleLGet the read/write rate of the first interface in the list that is connected4The value will be a tuple (Read, Write) in bit/s or  if no network is connected. Create a  for the list of networksWA list of interface names, the display order will be the same as the order in this list'7Allows access to information about they systems networkongytestingLinuxNone9;1The actual handel exposed and used by this moduleJThe map we keep our handles in (the Int is the Interface ID on the system)5A Wrapper than also carries the name, for comparisionThe fold function used for  handling the IO and Maybe stuffYGet the sum of all read/write rates from our network devices or Nothing if none is active,Logic for adding a new device to our HandlesDLogic for removing a handle form Handles after we lost the interface4The packet used to drump all current network devices'Read the interface name and index from *Get all current interfaces from our systemGet the # wrapper for all current interfaces;Handle an incomming rtneltink message and update the handleEUpdater loop, it blocks on the netlink socker until it gets a message4Start the update loop for adding/removing interfacesAGet the new handle this module exports and start its updater loopWill be given the name of the handle, only add interface if this returns true (think of it as filter over all possible interfaces)(1An example module instance for the network moduleongytestingLinuxNone9;2HAndle for a staticly configured network interface#Handle for dynamic network handlingActually get the network handle+Get a handle for a static network interfaceIGet a handle that will update with new or disappearing network interfaces2The string to use when the network is disconnectedThe Network adapters to monitor.The string to use when network is disconnectedName of the network interface.The string to use when network is disconnected*The filter function for the dynamic handle 8EThis module provides a template haskell splice for including librarys ongy, moepitestingLinuxNoneImport a library!The name of the library data typeThe name of the library7The functions in the library (Name, CName, Declaration)94The TemplateHaskell splice required by Monky.VersionongytestingLinuxNoneBGet the version string from monky.cabal and convert it to a 4tupel)>The current version of the package, this updates from monky.hsongytestingLinuxNoneThe current version as 4tupel*2Allows access to information about the systems cpuongytestingLinuxNone-Which values should be returned by getCPUFreq"Use the maximum frequencie allowedUse the current frequencie used%Don't open any files for scaling typeNuma aware version of The handle for cpu frequencyThe handle for themperature"The handle exported by this module%Check if thermal zone is x86_pkg_temp3Get the filter function for the thermal zone getterTry to guess the thermal zones-Tries to guess the thermal zone based on type1Calcualate the work done by the cores (all, work)3Get the cpu usage in percent for each (virtual) cpuRead node informationget current CPU temperature0This function returns a frequency according the  of the handle.OThe returned valued will be the max of all (virtual) proceessors on the system.Get a frequency handle by type?Get a frequency handle limited to the cpus the numa handle usesSRaw-ish access to numa handle, this can be (ab)used to make your own filter on cpus Create an Get the CPUs thermal zoneHGet the CPUs thermal zones, will be same order as numa nodes (hopefully)Get the Numa aware handle./CPU "names" to include ([cpu0, cpu1, cpu2, ..])%+-An example module instance for the cpu moduleongytestingLinuxNone2The handle type for the default setup (numa aware)%The handle type for the default setup(Handle to acces thermal zone information*Handle to access cpu frequency information(Numa aware handle to get cpu usage stats!Handle to get the cpu usage stats)Get a handle to access max node frequencyNuma away version of Get the ) for the system (tries to guess CPU zone)Get a f for each cpu termal zone on the system. will be infinite list, with invalidated zones for convinienceGet a  for the specified thermal zoneGet a raw CPU handleGet raw numa aware cpu handlesGet a FThis is a shiny combination of the raw handles exported by this moduleSame as $ but tries to guess the thermal zoneNuma aware version of Same as $ but tries to guess the thermal zone$5The type of scaling frequency that should be reportedThe thermal zone of the cpu5The type of scaling frequency that should be reported,A list of thermal zones for our numa handles,Minimal access to liblkidongy experimentalLinuxNoneVersion to reuse the LibBlkidversion to reuse the LibBlkidEvaluate a tagEvaluate a spec1Execute an IO action with an instance of LibBlkid           -7Allows access to information about generic block deviceongy experimentalLinuxNone)The FsInfo handle exported by this module"Get "the" mountpoint of a device. Returns a mointpoint of a device. If there are multiple mountpoints, this will return the first one found. First one is mostly determined by order in procFmounts and should be the one that was mounted first (time since boot).Get a fs handle for normal devices0This uses fsStat to get file system information.TfsStat takes the mount point of the file system, so we need to find the mount point.MIn case of mapper devices, this is done by going through the chain of slaves.Same as ' but allow to pass the tag for libblkid ./Allows access to information about a btrfs poolmoepi experimentalLinuxNoneeThe handle xported by this module A disk may have multiple physical devices so we use lists for them3Get the read write rates from the disk (in bytes/s)Get the space left on the disk6Get a disk handle from uuid. This special-cases btrfs.1Get the disk handle from a user chosen blkid tag. /.An example module instance for the disk modulemoepitestingLinuxNoneThe handle type for this module3Get a disk handle by uuid. This special cases btrfs"Get a disk handle from a given tagIThe UUID of the device to monitor. It has to be mounted at monky startup!Which tag to give to libblkidThe value of the tag0DAllows access to information about a battery connected to the systemongytestingLinuxNone #Datatype to represent battery state"The handle exported by this module&Internal function for getCurrentStatus-Get the current state of the battery (loadingdrainingfull)%Internal function for getcurrentLevel.Get the charge left in the battery in percent.!Internal function for getTimeLeft#Get current loading speed in Watt/sEGet an approximated amount of seconds left until the battery runs out 2Create a power handle that uses the power_now file!3Create a power handle that uses the charge_now file Create a Version which defaults to BAT0"#$%&'()*+,-./ !7The name of the wall socket adapter used by the batteryThe name of the battery  "#$%&'()*+,-./ !11An example module instance for the battery module ongy, moepitestingLinuxNoneThe handle type for this module Create a  Version of  that defaults to BAT00127The name of the wall socket adapter used by the batteryThe name of the battery01227Allows acces to information about the alsa sound systemongytestingLinuxNone "The handle exported by this moduleUpdate the volume handle.This function has to be called to update the handle internally. Calling this will get the current state into the handle, which can then by queried by the other functions. Until this is called again, the results of other functions will not update to the current state of the system."Get the raw volume value from alsa4Get the volume in percent (100% = loudest 0%=lowest)!0% does not equal a muted device.return 3 if the device is muted/Check if there was an error creating the handle!Get PollFds for polling interface.Close the mixer handle and unload alsa library Create an HThis function returns a type save error value if any alsa function failsK456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstThe audio-card to use  6456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst3.An example module instance for the alsa moduleongytestingLinuxNoneThe handle type for this moduleFGet a handle which allows access to audio (alsa) subsystem informationuvwThe audio-card to useuvw:@Proxy module for backwards compat. See Monky.Examples.Sound.AlsaongytestingLinuxNone4The main module for monky ongy, moepitestingLinuxNonex=Packs a module into a wrapper with an IORef for cached output;Start the mainLoop of monky. With custom tick timer (in s)For 1s tick-timer pass 1000000V to this. This does not scale the timers for collection modules passed into it. So if 500000v is passed here, and a collector should update every second it needs to update every 2nd tick, so it has to be scaled. s startLoop getAsciiOut [ pollPack 1 $ getRawCPU ] startLoopT 500000 getAsciiOut [ pollPack 2 $ getRawCPU ] HStart the mainLoop of monky. This should be the return type of your main yzx{|}~ yzx{|}~;<=>>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 !"#$%&'()*+,-./01234567789:;<=>?@ABCDEFGHIJKLMNOPZQRSTUVWXYZ[\]^_`abcdefghbi7jklmnopqrstuvwxyz{|}~                        !!!!"""#######$$$$$$$$$%%%%&&&'''''(((((((()**********************+++++++++++++++++++++,,,,,------.....////000000000000111122222222 2 2 3 3 3 344Lvz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTPUVWXYZ[\\]^_`"aDbcdefghijklmnopqrstuvrwxyz{h|7}7j7~77777777k           !!!!!!""####l$$$$$$%%%%%%;%%%%%%%.&&''''''''''''(((((((888888888888888888...9*******l*****************+++++l++++++++++ , , , , , ,,,,,,,---..../00000000 0!0"0#0$0%0&0'0(0)0*0+1,1-1./202122232425262728292:2;2<2=2>2?2@2@2 2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n3o3p3q4r4s4t4u4v4w4x4yz$monky-2.2.1.0-AmyF9pXWTEDCFZ2ChkkJxd Monky.Utility Monky.Wifi Monky.TimeMonky.Outputs.Unicode Monky.ModulesMonky.Outputs.AsciiMonky.Outputs.Dzen2Monky.Outputs.I3Monky.Outputs.ModifyMonky.Outputs.SerializeMonky.Outputs.ShowMonky.Outputs.Utf8Monky.Outputs.FallbackMonky.Outputs.Guess Monky.MPD Monky.IP.RawMonky.IPMonky.Examples.UtilityMonky.Examples.Wifi.EventMonky.Examples.Wifi.PollMonky.Examples.TminusMonky.Examples.Sound.PulseMonky.Examples.PrependMonky.Examples.PlainMonky.Examples.ModifyMonky.Examples.MPDMonky.Examples.ImagesMonky.Examples.TimeMonky.Examples.CombineMonky.ConnectivityMonky.Examples.ConnectivityMonky.Disk.CommonMonky.Disk.BtrfsMonky.Examples.File Monky.MemoryMonky.Examples.MemoryMonky.Network.Static Monky.NetworkMonky.Network.DynamicMonky.Examples.Network Monky.Version Monky.CPUMonky.Examples.CPU Monky.BlkidMonky.Disk.Device Monky.DiskMonky.Examples.Disk Monky.BatteryMonky.Examples.Battery Monky.AlsaMonky.Examples.Sound.AlsaMonkyMonky.Examples.WifiMPD Monky.CUtilMonky.TemplateMonky.VersionTHMonky.Examples.Alsadirectory-1.3.0.0System.Directory listDirectory WifiStats wifiChannel wifiRateswifiNamewifiFreqwifiSig wifiBSSIDSignalSigMBM SigUNSPECWifiConnWifiNoneWifiDisconnect WifiConnect SSIDSocket InterfacegetCurrentWifiStatsgetCurrentWifi getInterfaceguessInterface getWifiFd gotReadablegetExtendedWifi prepareEvents getSSIDSocket TimeHandlegetTimegetHM getTimeHandlebarCharhBarCharModulesPollEvt EvtModulesDW PollModulesNMW EvtModule startEvtLoop PollModule getOutput initialize MonkyOutputdoLineMonkyOut MonkyPlainMonkyBar MonkyHBar MonkyColor MonkyImagepollPackevtPack$fSerializeMonkyOut$fShowMonkyOut$fReadMonkyOut AsciiOutput getAsciiOutgetAsciiOutDiv$fMonkyOutputAsciiOutput DzenOutput getDzenOut getDzenOut' getDzenOutDiv$fMonkyOutputDzenOutputI3Output getI3Output$fMonkyOutputI3Output ModifyOutputgetModifyOutput$fMonkyOutputModifyOutputSerializeOutputgetSerializeOut$fMonkyOutputSerializeOutput ShowOutput getShowOut$fMonkyOutputShowOutput Utf8Output getUtf8Out getUtf8OutDiv$fMonkyOutputUtf8OutputWrapOutschooseTerminalOutgetFallbackOut$fMonkyOutputWrapOutsGuessOut guessOutputguessOutputDiv$fMonkyOutputGuessOut $fEqOutput $fOrdOutput $fShowOutputStatusvolumerepeatsrandomsingleconsumeplaylistplaylistLengthstate mixrAmpdbxfade mixrAmpDelaysongsongIdnextSong nextSongIdtimeelapsedbitratedurationaudioupdatingmpderrorSongInfosongFile songRange songMTimesongTime songDurationsongTagssongPos songInfoId songPriority TagCollection tagArtist tagArtistSorttagAlbum tagAlbumSorttagAlbumArtisttagAlbumArtistSorttagTitletagTracktagNametagGenretagDate tagComposer tagPerformer tagCommenttagDisc tagMArtistid tagMAlbumidtagMAlbumArtistid tagMTrackidtagMReleaseTrackidStatePlayingStoppedPaused MPDSocketcloseMPDSocket getMPDSocketgetMPDFddoQueryreadOkgoIdle getMPDStatus getMPDSong $fShowState $fEqState$fShowTagCollection$fEqTagCollection$fShowSongInfo $fEqSongInfo $fShowStatus $fEqStatus AddressFamily AF_UNSPECAF_INETAF_INET6IPIPv4IPv6IP6IP4parseIPipFromBS familyToNum getAddrFamily $fShowIP4 $fShowIP6$fShowIP $fStorableIP6 $fStorableIP4$fEqIP4$fEqIP6$fEqIPIPHandle getSocket getAddressesgetRawFdsubscribeToEvents handleNextloopFd convertUnit convertUnitB convertUnitSI WifiFormat FormatChannel FormatName FormatFreq FormatText WifiEvtHandle getTextify getWifiHandlegetWifiHandle'guessWifiHandle'guessWifiHandle$fEvtModuleWifiEvtHandle FormatMCS FormatMCSMinFormatWifiWidth FormatBitrateFormatBitrateMin FormatSignalFormatSignalAverage DirectionDirTXDirRXWifiPollHandle$fPollModuleWifiPollHandle$fShowDirection $fEqDirection$fShowWifiFormat$fEqWifiFormatgetTargetHandle$fPollModuleTargetTimePulseH startPulsestartPulseMaybegetPulseHandle$fEvtModulePulseH EvtPostHandleEvtPost EvtPrepHandleEvtPrep PostHandlePost PrepHandlePrep packPrepend packAppend evtPrepend evtAppend$fEvtModuleEvtPostHandle$fEvtModuleEvtPrepHandle$fPollModulePostHandle$fPollModulePrepHandle MonkyListgetPlain$fEvtModuleMonkyList$fPollModuleMonkyListIOModifyHandle ModifyHandlegetModifyHandlegetIOModifyHandle changeImage$fEvtModuleIOModifyHandle$fPollModuleIOModifyHandle$fEvtModuleModifyHandle$fPollModuleModifyHandle MPDHandle getMPDHandle getMPDHandleF$fEvtModuleMPDHandle$fPollModuleMPDHandle diskImage memoryImagefancyTimeImage timeImage batteryImagecpuImageFTHandleTHandlegetFancyTimeHandle$fPollModuleFTHandle$fPollModuleTHandlePECombiEPCombiEvtCombi CombiHandlecombinecombineEcombineFcombineD$fPollModulePECombi$fPollModuleEPCombi$fEvtModuleEvtCombi$fPollModuleCombiHandle ConnHandlehasConngetConnH$fStorableSockaddr$fEqPort $fShowPort $fEqSockaddr$fShowSockaddrConn$fPollModuleConnUNameFilefindLine readValue readValueI readValuesreadLine readContentfopenfclose splitAtEvery maybeOpenFile sdivBound sdivUBoundgetUnamegetKernelVersion$fFileReadableByteString$fFileReadable[]$fLineReadableByteString$fLineReadable[] $fShowFile$fEqFileFSIFsInfo getFsFree getFsSize getFsUsedgetFsAllDevgetDevLabelgetLabel labelToDevfsToFSI blBasePath mapperToDev devToMapper $fShowLabel $fEqLabel $fOrdLabel $fShowDev$fEqDev$fOrdDev BtrfsHandle getFSDevicesgetBtrfsHandle$fFsInfoBtrfsHandle FileHandle getFileHandle$fPollModuleFileHandle MemoryHandlegetMemoryAvailablegetMemoryTotal getMemoryFree getMemoryUsedgetMemoryStatsgetMemoryHandleMBHandleMFHandleMHandlegetMemoryFreeHandlegetMemoryBarHandle$fPollModuleMBHandle$fPollModuleMFHandle$fPollModuleMHandle NetworkHandle getReadWritegetNetworkHandlecloseNetworkHandleNetworkHandlesgetReadWriteMultigetNetworkHandlesUHandlesHandlesgetMultiReadWrite getUHandles$fShowNetHandleNetworkStaticHandleNetworkDynHandlegetNetworkHandles'getStaticHandlegetDynamicHandle$fPollModuleNetworkStaticHandle$fPollModuleNetworkHandles'$fPollModuleNetworkDynHandle getVersion ScalingType ScalingMax ScalingCur ScalingNone NumaHandlenumaCpus numaHandle FreqHandle TempHandle CPUHandleguessThermalZone getCPUPercentgetNumaPercent getCPUTempgetCPUMaxScalingFreq getFreqHandle getFreqNuma getCPUHandlegetThermalZonegetThermalZonesgetNumaHandlesgetTempHandle'getTempHandles getTempHandle getRawCPU getRawNumas getCPUHandle'getNumaHandles'$fPollModuleNumaHandle$fPollModuleCPUHandle$fPollModuleTempHandle$fPollModuleFreqHandle$fPollModuleRawNuma$fPollModuleRawCPU evaluateTag' evaluateSpec' evaluateTag evaluateSpec withLibBlkid BlockHandleBlockH devToMountgetBlockHandlegetBlockHandleTag$fFsInfoBlockHandle DiskHandlegetDiskReadWrite getDiskFree getDiskHandlegetDiskHandleTagDiskH$fPollModuleDiskH BatteryStateBatFull BatLoading BatDraining BatteryHandlegetCurrentStatusgetCurrentLevel getLoading getTimeLeftgetBatteryHandlegetBatteryHandle'$fShowFilesArrayBatteryH$fPollModuleBatteryH$fStorablePollFD VOLHandle updateVOLH getVolumeRawgetVolumePercentgetMuteisLoaded getPollFDsdestroyVOLHandle getVOLHandleAlsaH$fEvtModuleAlsaH$fPollModuleAlsaH startLoopT startLoop getSignal attrToStatuDecode uGetWord32 getBssAttrs getStationTimeHdoTimedoOut doSegmenti3Full makeColorgetOut outputLineMHWOGOOutputTerminalProcessOther networkOutsfdToPath getProcFdshasPipe pickCandidate getOutputTypechooseProcessOut openMPDSocketbaseSystem.Posix.TypesFdMPDSockreadText rethrowSExcpt trySExcptrecoverableCon tryConnect doMPDConnInit recvMessage sendMessage getAudioTuplegetStateparseStatusRecparseSongInfoRec parseStatus parseSongInfomemcpyhtonlntohlc_ntopc_ptonshowIPIOshowIP parseIPIO showIP6IOshowIP6cRTNLGRP_IPV4_IFADDRcRTNLGRP_IPV6_IFADDR linkQuerygetInterfaceID addressQuery convertUnitTWH getFunctiongetEventOutputdoMBM getCombiFun getFromDir pollToEvt getExtFungetExtFunction renderSecsrenderTD timeToSeconds TargetTimediffTime getCurrent printSink startLoopMIOMH_host_port_sock_convert ConvertFun getSongTitlegetEventgetFddefaultConvertFTHTH timeToXBMPEEPECCPortc_socketConnHSockaddrSockahtons c_connectc_closetryConn updateLoopshowConuname _uSysName _uNodeName _uRelease _uVersion _uMachinec_unamec_strlen peekCString$fStorableUNameghc-prim GHC.TypesInt integer-gmpGHC.Integer.TypeIntegerreadStringLines readBSLines FileReadablehGetFile LineReadable hGetReadable getMapperDevstatToMM mapperToDev' devToMapper'ltddtl getLabelPairs getLabelMap getDeviceMap labelToDev' devToLabel'BtrfsH fsBasePath sectorSizegetSizegetUsedgetBtrfsHandle'FHgetFileMemoryHpathgetValMBHMFHgetUsagePercentsnewBar getNMemoryOutNetStateDownUpUnknownDormantNetHbasePathreadPath writePath statePathcalculateRatesgetReadWriteRealGHC.BaseNothingNetHsgetMultiReadWriteInt NetHandlefoldFgotNewlostOld requestPacket readInterface&netlink-1.1.0.0-7O2NI1b4aWo3P9EqotVcX5System.Linux.Netlink.Route RoutePacketgetCurrentDevsdoUpdate updaterLoopupdaterSHDHNetworkHandles'NH'formatNNetworkTextgetNNetworkTextgetNDNetworkText importLib monkyStrictltrimrtrimtrim prepareFungetNamegetType applyArrows mkFunDesc cleanName transNamegetFunQmkRet mkGetHandlemkGetFun mkTransformer mkDestroyFunGHC.PtrPtrFunPtr castFunPtr versionTH checkTypethermalGuesserguessThermalZones calculateWork getNumaHandleCPUHpathStat pathCPUBase thermalBasePpathTemppathMaxScalingpathCurScaling pathNumaBasegetCPUFreqsCurgetCPUFreqsMaxcalculatePercentreadVals getPercentgetMax getCPUFreqsgetCPUs getHandleRawNumaRawCPUNUHCPHcpuColorprintBarprintXbmprintFrequency printThemp getNumaNodeformatNumaNodeCacheLibBlkidrawDLc_evtc_evsmkFunCStringPtrCacheIOCString$mkFunCStringCStringPtrCacheIOCStringdestroyLibBlkid getLibBlkidgetAndFreeStringmaybeGetStringgetFreegetBlockHandle' getBtrfsDH getBlockDHgetCurrentStatusIntgetCurrentLevelIntgetTimeLeftIntcreatePowerNowHandlecreateChargeNowHandle FilesArrayPowerNow ChargeNowBatHpnowPathenowPath efullPathvnowPathcnowPathcavgPath chnowPath chfullPathadpPathgetCurrentStatusMBH batteryColor batterySymbolTrue ElemHandleElemSidHandleAlloc SidHandleSidMixerHandleAlloc MixerHandleMixerMClassRegOpt PollFDPtrPollFDPOLLFD liftExceptTVOLHErrLibAlsa mixer_open mixer_attachmixer_register mixer_load sid_sindex sid_sname sid_allocsid_free elem_gvrange elem_gvol elem_gmute elem_findmixer_handle_events get_pdescs get_pdescc mixer_closemkFunMixerHandleIOInt#mkFunMixerHandlePollFDPtrCIntIOCIntmkFunMixerHandleIOvoid%mkFunMixerHandleSidHandleIOElemHandle mkFunElemHandleCIntPtrCIntIOCInt#mkFunElemHandlePtrCIntPtrCIntIOCIntmkFunSidHandleIOvoidmkFunSidHandleAllocIOCIntmkFunSidHandleCStringIOvoidmkFunSidHandleCIntIOvoidmkFunMixerHandleIOCInt(mkFunMixerHandlePtrRegOptPtrMClassIOCIntmkFunMixerHandleCStringIOCIntmkFunMixerHandleAllocIntIOCIntdestroyLibAlsa getLibAlsa getPollDescs openMixer mixerAttach mixerRegister mixerLoadwithSidsidSetgetElemisMutegetVolumeRange getVolumegetMixerHandle percentizegetVOLHandleIntAH getVolumeStr getVOLOutputpackMod ModuleWrapperMWrappergetWrapperText doMonkyLine doCachedLinewaitTickmainLoop