initial commit

This commit is contained in:
Mars 2024-08-29 21:00:10 -04:00
commit 51912118ce
Signed by: pupbrained
GPG key ID: 0FF5B8826803F895
79 changed files with 4129 additions and 0 deletions

19
.direnv/bin/nix-direnv-reload Executable file
View file

@ -0,0 +1,19 @@
#!/usr/bin/env bash
set -e
if [[ ! -d "/home/marshall/.xmonad" ]]; then
echo "Cannot find source directory; Did you move it?"
echo "(Looking for "/home/marshall/.xmonad")"
echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
exit 1
fi
# rebuild the cache forcefully
_nix_direnv_force_reload=1 direnv exec "/home/marshall/.xmonad" true
# Update the mtime for .envrc.
# This will cause direnv to reload again - but without re-building.
touch "/home/marshall/.xmonad/.envrc"
# Also update the timestamp of whatever profile_rc we have.
# This makes sure that we know we are up to date.
touch -r "/home/marshall/.xmonad/.envrc" "/home/marshall/.xmonad/.direnv"/*.rc

View file

@ -0,0 +1 @@
/nix/store/56phnjmz0f3wgaw1fx2z9r5dfyxsdr04-source

View file

@ -0,0 +1 @@
/nix/store/8ygqf1lsg66scp6dqqqpvaix941nz97p-source

View file

@ -0,0 +1 @@
/nix/store/c7glknqmag8glk2kgslfxvskq6w4pml8-source

View file

@ -0,0 +1 @@
/nix/store/dizbqa4nym7h5xw3s027gpjngxmm14fb-source

View file

@ -0,0 +1 @@
/nix/store/fg1mxx3wpkfy7k8vlq6vlcyw6ndgfsrl-source

View file

@ -0,0 +1 @@
/nix/store/g5v3sgqy6a0fsmas7mnapc196flrplix-source

View file

@ -0,0 +1 @@
/nix/store/ia1zpg1s63v6b3vin3n7bxxjgcs51s2r-source

View file

@ -0,0 +1 @@
/nix/store/ibjqb84y0n5s9xzxhqzci81bnj9i4gsd-source

View file

@ -0,0 +1 @@
/nix/store/n2vs91b24vp5h01f99g7vwfcbk6h2mxh-source

View file

@ -0,0 +1 @@
/nix/store/na7sykizsgkzh9i3wc8m8pz5xfqib2rv-source

View file

@ -0,0 +1 @@
/nix/store/yj1wxm9hh8610iyzqnz75kvs6xl8j3my-source

View file

@ -0,0 +1 @@
/nix/store/z9fb20cvdm807zyvn1hmm6lv08wc3lkp-source

View file

@ -0,0 +1 @@
/nix/store/qgy7969hgvj7kf3zpgvdxxixhx3dmip5-ghc-shell-for-xmonadConfig-0.1.0.0-0-env

File diff suppressed because one or more lines are too long

1
.envrc Normal file
View file

@ -0,0 +1 @@
use_flake

481
.stylish-haskell.yml Normal file
View file

@ -0,0 +1,481 @@
# stylish-haskell configuration file
# ==================================
# The stylish-haskell tool is mainly configured by specifying steps. These steps
# are a list, so they have an order, and one specific step may appear more than
# once (if needed). Each file is processed by these steps in the given order.
steps:
# Convert some ASCII sequences to their Unicode equivalents. This is disabled
# by default.
# - unicode_syntax:
# # In order to make this work, we also need to insert the UnicodeSyntax
# # language pragma. If this flag is set to true, we insert it when it's
# # not already present. You may want to disable it if you configure
# # language extensions using some other method than pragmas. Default:
# # true.
# add_language_pragma: true
# Format module header
#
# Currently, this option is not configurable and will format all exports and
# module declarations to minimize diffs
#
# - module_header:
# # How many spaces use for indentation in the module header.
# indent: 4
#
# # Should export lists be sorted? Sorting is only performed within the
# # export section, as delineated by Haddock comments.
# sort: true
#
# # See `separate_lists` for the `imports` step.
# separate_lists: true
#
# # When to break the "where".
# # Possible values:
# # - exports: only break when there is an explicit export list.
# # - single: only break when the export list counts more than one export.
# # - inline: only break when the export list is too long. This is
# # determined by the `columns` setting. Not applicable when the export
# # list contains comments as newlines will be required.
# # - always: always break before the "where".
# break_where: exports
#
# # Where to put open bracket
# # Possible values:
# # - same_line: put open bracket on the same line as the module name, before the
# # comment of the module
# # - next_line: put open bracket on the next line, after module comment
# open_bracket: next_line
# Format record definitions. This is disabled by default.
#
# You can control the layout of record fields. The only rules that can't be configured
# are these:
#
# - "|" is always aligned with "="
# - "," in fields is always aligned with "{"
# - "}" is likewise always aligned with "{"
#
# - records:
# # How to format equals sign between type constructor and data constructor.
# # Possible values:
# # - "same_line" -- leave "=" AND data constructor on the same line as the type constructor.
# # - "indent N" -- insert a new line and N spaces from the beginning of the next line.
# equals: "indent 2"
#
# # How to format first field of each record constructor.
# # Possible values:
# # - "same_line" -- "{" and first field goes on the same line as the data constructor.
# # - "indent N" -- insert a new line and N spaces from the beginning of the data constructor
# first_field: "indent 2"
#
# # How many spaces to insert between the column with "," and the beginning of the comment in the next line.
# field_comment: 2
#
# # How many spaces to insert before "deriving" clause. Deriving clauses are always on separate lines.
# deriving: 2
#
# # How many spaces to insert before "via" clause counted from indentation of deriving clause
# # Possible values:
# # - "same_line" -- "via" part goes on the same line as "deriving" keyword.
# # - "indent N" -- insert a new line and N spaces from the beginning of "deriving" keyword.
# via: "indent 2"
#
# # Sort typeclass names in the "deriving" list alphabetically.
# sort_deriving: true
#
# # Whether or not to break enums onto several lines
# #
# # Default: false
# break_enums: false
#
# # Whether or not to break single constructor data types before `=` sign
# #
# # Default: true
# break_single_constructors: true
#
# # Whether or not to curry constraints on function.
# #
# # E.g: @allValues :: Enum a => Bounded a => Proxy a -> [a]@
# #
# # Instead of @allValues :: (Enum a, Bounded a) => Proxy a -> [a]@
# #
# # Default: false
# curried_context: false
# Align the right hand side of some elements. This is quite conservative
# and only applies to statements where each element occupies a single
# line.
# Possible values:
# - always - Always align statements.
# - adjacent - Align statements that are on adjacent lines in groups.
# - never - Never align statements.
# All default to always.
- simple_align:
cases: always
top_level_patterns: always
records: always
multi_way_if: always
# Import cleanup
- imports:
# There are different ways we can align names and lists.
#
# - global: Align the import names and import list throughout the entire
# file.
#
# - file: Like global, but don't add padding when there are no qualified
# imports in the file.
#
# - group: Only align the imports per group (a group is formed by adjacent
# import lines).
#
# - none: Do not perform any alignment.
#
# Default: global.
align: global
# The following options affect only import list alignment.
#
# List align has following options:
#
# - after_alias: Import list is aligned with end of import including
# 'as' and 'hiding' keywords.
#
# > import qualified Data.List as List (concat, foldl, foldr, head,
# > init, last, length)
#
# - with_alias: Import list is aligned with start of alias or hiding.
#
# > import qualified Data.List as List (concat, foldl, foldr, head,
# > init, last, length)
#
# - with_module_name: Import list is aligned `list_padding` spaces after
# the module name.
#
# > import qualified Data.List as List (concat, foldl, foldr, head,
# init, last, length)
#
# This is mainly intended for use with `pad_module_names: false`.
#
# > import qualified Data.List as List (concat, foldl, foldr, head,
# init, last, length, scanl, scanr, take, drop,
# sort, nub)
#
# - new_line: Import list starts always on new line.
#
# > import qualified Data.List as List
# > (concat, foldl, foldr, head, init, last, length)
#
# - repeat: Repeat the module name to align the import list.
#
# > import qualified Data.List as List (concat, foldl, foldr, head)
# > import qualified Data.List as List (init, last, length)
#
# Default: after_alias
list_align: after_alias
# Right-pad the module names to align imports in a group:
#
# - true: a little more readable
#
# > import qualified Data.List as List (concat, foldl, foldr,
# > init, last, length)
# > import qualified Data.List.Extra as List (concat, foldl, foldr,
# > init, last, length)
#
# - false: diff-safe
#
# > import qualified Data.List as List (concat, foldl, foldr, init,
# > last, length)
# > import qualified Data.List.Extra as List (concat, foldl, foldr,
# > init, last, length)
#
# Default: true
pad_module_names: true
# Long list align style takes effect when import is too long. This is
# determined by 'columns' setting.
#
# - inline: This option will put as much specs on same line as possible.
#
# - new_line: Import list will start on new line.
#
# - new_line_multiline: Import list will start on new line when it's
# short enough to fit to single line. Otherwise it'll be multiline.
#
# - multiline: One line per import list entry.
# Type with constructor list acts like single import.
#
# > import qualified Data.Map as M
# > ( empty
# > , singleton
# > , ...
# > , delete
# > )
#
# Default: inline
long_list_align: inline
# Align empty list (importing instances)
#
# Empty list align has following options
#
# - inherit: inherit list_align setting
#
# - right_after: () is right after the module name:
#
# > import Vector.Instances ()
#
# Default: inherit
empty_list_align: inherit
# List padding determines indentation of import list on lines after import.
# This option affects 'long_list_align'.
#
# - <integer>: constant value
#
# - module_name: align under start of module name.
# Useful for 'file' and 'group' align settings.
#
# Default: 4
list_padding: 4
# Separate lists option affects formatting of import list for type
# or class. The only difference is single space between type and list
# of constructors, selectors and class functions.
#
# - true: There is single space between Foldable type and list of it's
# functions.
#
# > import Data.Foldable (Foldable (fold, foldl, foldMap))
#
# - false: There is no space between Foldable type and list of it's
# functions.
#
# > import Data.Foldable (Foldable(fold, foldl, foldMap))
#
# Default: true
separate_lists: true
# Space surround option affects formatting of import lists on a single
# line. The only difference is single space after the initial
# parenthesis and a single space before the terminal parenthesis.
#
# - true: There is single space associated with the enclosing
# parenthesis.
#
# > import Data.Foo ( foo )
#
# - false: There is no space associated with the enclosing parenthesis
#
# > import Data.Foo (foo)
#
# Default: false
space_surround: false
# Post qualify option moves any qualifies found in import declarations
# to the end of the declaration. This also adjust padding for any
# unqualified import declarations.
#
# - true: Qualified as <module name> is moved to the end of the
# declaration.
#
# > import Data.Bar
# > import Data.Foo qualified as F
#
# - false: Qualified remains in the default location and unqualified
# imports are padded to align with qualified imports.
#
# > import Data.Bar
# > import qualified Data.Foo as F
#
# Default: false
post_qualify: false
# Automatically group imports based on their module names, with
# a blank line separating each group. Groups are ordered in
# alphabetical order.
#
# By default, this groups by the first part of each module's
# name (Control.* will be grouped together, Data.*... etc), but
# this can be configured with the group_patterns setting.
#
# When enabled, this rewrites existing blank lines and groups.
#
# - true: Group imports by the first part of the module name.
#
# > import Control.Applicative
# > import Control.Monad
# > import Control.Monad.MonadError
# >
# > import Data.Functor
#
# - false: Keep import groups as-is (still sorting and
# formatting the imports within each group)
#
# > import Control.Monad
# > import Data.Functor
# >
# > import Control.Applicative
# > import Control.Monad.MonadError
#
# Default: false
group_imports: true
# A list of rules specifying how to group modules and how to
# order the groups.
#
# Each rule has a match field; the rule only applies to module
# names matched by this pattern. Patterns are POSIX extended
# regular expressions; see the documentation of Text.Regex.TDFA
# for details:
# https://hackage.haskell.org/package/regex-tdfa-1.3.1.2/docs/Text-Regex-TDFA.html
#
# Rules are processed in order, so only the *first* rule that
# matches a specific module will apply. Any module names that do
# not match a single rule will be put into a single group at the
# end of the import block.
#
# Example: group MyApp modules first, with everything else in
# one group at the end.
#
# group_rules:
# - match: "^MyApp\\>"
#
# > import MyApp
# > import MyApp.Foo
# >
# > import Control.Monad
# > import MyApps
# > import Test.MyApp
#
# A rule can also optionally have a sub_group pattern. Imports
# that match the rule will be broken up into further groups by
# the part of the module name matched by the sub_group pattern.
#
# Example: group MyApp modules first, then everything else
# sub-grouped by the first part of the module name.
#
# group_rules:
# - match: "^MyApp\\>"
# - match: "."
# sub_group: "^[^.]+"
#
# > import MyApp
# > import MyApp.Foo
# >
# > import Control.Applicative
# > import Control.Monad
# >
# > import Data.Map
#
# A pattern only needs to match part of the module name, which
# could be in the middle. You can use ^pattern to anchor to the
# beginning of the module name, pattern$ to anchor to the end
# and ^pattern$ to force a full match. Example:
#
# - "Test\\." would match "Test.Foo" and "Foo.Test.Lib"
# - "^Test\\." would match "Test.Foo" but not "Foo.Test.Lib"
# - "\\.Test$" would match "Foo.Test" but not "Foo.Test.Lib"
# - "^Test$" would *only* match "Test"
#
# You can use \\< and \\> to anchor against the beginning and
# end of words, respectively. For example:
#
# - "^Test\\." would match "Test.Foo" but not "Test" or "Tests"
# - "^Test\\>" would match "Test.Foo" and "Test", but not
# "Tests"
#
# The default is a single rule that matches everything and
# sub-groups based on the first component of the module name.
#
# Default: [{ "match" : ".*", "sub_group": "^[^.]+" }]
group_rules:
- match: ".*"
sub_group: "^[^.]+"
# Language pragmas
- language_pragmas:
# We can generate different styles of language pragma lists.
#
# - vertical: Vertical-spaced language pragmas, one per line.
#
# - compact: A more compact style.
#
# - compact_line: Similar to compact, but wrap each line with
# `{-# LANGUAGE #-}'.
#
# - vertical_compact: Similar to vertical, but use only one language pragma.
#
# Default: vertical.
style: vertical
# Align affects alignment of closing pragma brackets.
#
# - true: Brackets are aligned in same column.
#
# - false: Brackets are not aligned together. There is only one space
# between actual import and closing bracket.
#
# Default: true
align: true
# stylish-haskell can detect redundancy of some language pragmas. If this
# is set to true, it will remove those redundant pragmas. Default: true.
remove_redundant: true
# Language prefix to be used for pragma declaration, this allows you to
# use other options non case-sensitive like "language" or "Language".
# If a non correct String is provided, it will default to: LANGUAGE.
language_prefix: LANGUAGE
# Replace tabs by spaces. This is disabled by default.
# - tabs:
# # Number of spaces to use for each tab. Default: 8, as specified by the
# # Haskell report.
# spaces: 8
# Remove trailing whitespace
- trailing_whitespace: {}
# Squash multiple spaces between the left and right hand sides of some
# elements into single spaces. Basically, this undoes the effect of
# simple_align but is a bit less conservative.
# - squash: {}
# A common setting is the number of columns (parts of) code will be wrapped
# to. Different steps take this into account.
#
# Set this to null to disable all line wrapping.
#
# Default: 80.
columns: 80
# By default, line endings are converted according to the OS. You can override
# preferred format here.
#
# - native: Native newline format. CRLF on Windows, LF on other OSes.
#
# - lf: Convert to LF ("\n").
#
# - crlf: Convert to CRLF ("\r\n").
#
# Default: native.
newline: native
# Sometimes, language extensions are specified in a cabal file or from the
# command line instead of using language pragmas in the file. stylish-haskell
# needs to be aware of these, so it can parse the file correctly.
#
# No language extensions are enabled by default.
# language_extensions:
# - TemplateHaskell
# - QuasiQuotes
# Attempt to find the cabal file in ancestors of the current directory, and
# parse options (currently only language extensions) from that.
#
# Default: true
cabal: true

2
cabal.project.local Normal file
View file

@ -0,0 +1,2 @@
package *
ghc-options: -fwrite-ide-info

View file

@ -0,0 +1,25 @@
{-# LANGUAGE NoRebindableSyntax #-}
{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
{-# OPTIONS_GHC -w #-}
module PackageInfo_xmonadConfig (
name,
version,
synopsis,
copyright,
homepage,
) where
import Data.Version (Version(..))
import Prelude
name :: String
name = "xmonadConfig"
version :: Version
version = Version [0,1,0,0] []
synopsis :: String
synopsis = ""
copyright :: String
copyright = ""
homepage :: String
homepage = ""

View file

@ -0,0 +1,77 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE NoRebindableSyntax #-}
#if __GLASGOW_HASKELL__ >= 810
{-# OPTIONS_GHC -Wno-prepositive-qualified-module #-}
#endif
{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
{-# OPTIONS_GHC -w #-}
module Paths_xmonadConfig (
version,
getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir,
getDataFileName, getSysconfDir
) where
import qualified Control.Exception as Exception
import qualified Data.List as List
import Data.Version (Version(..))
import System.Environment (getEnv)
import Prelude
#if defined(VERSION_base)
#if MIN_VERSION_base(4,0,0)
catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
#else
catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a
#endif
#else
catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
#endif
catchIO = Exception.catch
version :: Version
version = Version [0,1,0,0] []
getDataFileName :: FilePath -> IO FilePath
getDataFileName name = do
dir <- getDataDir
return (dir `joinFileName` name)
getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath
bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath
bindir = "/home/marshall/.cabal/bin"
libdir = "/home/marshall/.cabal/lib/x86_64-linux-ghc-9.6.5/xmonadConfig-0.1.0.0-inplace-xmonadConfig"
dynlibdir = "/home/marshall/.cabal/lib/x86_64-linux-ghc-9.6.5"
datadir = "/home/marshall/.cabal/share/x86_64-linux-ghc-9.6.5/xmonadConfig-0.1.0.0"
libexecdir = "/home/marshall/.cabal/libexec/x86_64-linux-ghc-9.6.5/xmonadConfig-0.1.0.0"
sysconfdir = "/home/marshall/.cabal/etc"
getBinDir = catchIO (getEnv "xmonadConfig_bindir") (\_ -> return bindir)
getLibDir = catchIO (getEnv "xmonadConfig_libdir") (\_ -> return libdir)
getDynLibDir = catchIO (getEnv "xmonadConfig_dynlibdir") (\_ -> return dynlibdir)
getDataDir = catchIO (getEnv "xmonadConfig_datadir") (\_ -> return datadir)
getLibexecDir = catchIO (getEnv "xmonadConfig_libexecdir") (\_ -> return libexecdir)
getSysconfDir = catchIO (getEnv "xmonadConfig_sysconfdir") (\_ -> return sysconfdir)
joinFileName :: String -> String -> FilePath
joinFileName "" fname = fname
joinFileName "." fname = fname
joinFileName dir "" = dir
joinFileName dir fname
| isPathSeparator (List.last dir) = dir ++ fname
| otherwise = dir ++ pathSeparator : fname
pathSeparator :: Char
pathSeparator = '/'
isPathSeparator :: Char -> Bool
isPathSeparator c = c == '/'

View file

@ -0,0 +1,170 @@
/* DO NOT EDIT: This file is automatically generated by Cabal */
/* package xmonadConfig-0.1.0.0 */
#ifndef VERSION_xmonadConfig
#define VERSION_xmonadConfig "0.1.0.0"
#endif /* VERSION_xmonadConfig */
#ifndef MIN_VERSION_xmonadConfig
#define MIN_VERSION_xmonadConfig(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 1 || \
(major1) == 0 && (major2) == 1 && (minor) <= 0)
#endif /* MIN_VERSION_xmonadConfig */
/* package X11-1.10.3 */
#ifndef VERSION_X11
#define VERSION_X11 "1.10.3"
#endif /* VERSION_X11 */
#ifndef MIN_VERSION_X11
#define MIN_VERSION_X11(major1,major2,minor) (\
(major1) < 1 || \
(major1) == 1 && (major2) < 10 || \
(major1) == 1 && (major2) == 10 && (minor) <= 3)
#endif /* MIN_VERSION_X11 */
/* package base-4.18.2.1 */
#ifndef VERSION_base
#define VERSION_base "4.18.2.1"
#endif /* VERSION_base */
#ifndef MIN_VERSION_base
#define MIN_VERSION_base(major1,major2,minor) (\
(major1) < 4 || \
(major1) == 4 && (major2) < 18 || \
(major1) == 4 && (major2) == 18 && (minor) <= 2)
#endif /* MIN_VERSION_base */
/* package containers-0.6.7 */
#ifndef VERSION_containers
#define VERSION_containers "0.6.7"
#endif /* VERSION_containers */
#ifndef MIN_VERSION_containers
#define MIN_VERSION_containers(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 6 || \
(major1) == 0 && (major2) == 6 && (minor) <= 7)
#endif /* MIN_VERSION_containers */
/* package xmonad-0.18.0.9 */
#ifndef VERSION_xmonad
#define VERSION_xmonad "0.18.0.9"
#endif /* VERSION_xmonad */
#ifndef MIN_VERSION_xmonad
#define MIN_VERSION_xmonad(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 18 || \
(major1) == 0 && (major2) == 18 && (minor) <= 0)
#endif /* MIN_VERSION_xmonad */
/* package xmonad-contrib-0.18.0.9 */
#ifndef VERSION_xmonad_contrib
#define VERSION_xmonad_contrib "0.18.0.9"
#endif /* VERSION_xmonad_contrib */
#ifndef MIN_VERSION_xmonad_contrib
#define MIN_VERSION_xmonad_contrib(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 18 || \
(major1) == 0 && (major2) == 18 && (minor) <= 0)
#endif /* MIN_VERSION_xmonad_contrib */
/* tool cpphs-1.20.9 */
#ifndef TOOL_VERSION_cpphs
#define TOOL_VERSION_cpphs "1.20.9"
#endif /* TOOL_VERSION_cpphs */
#ifndef MIN_TOOL_VERSION_cpphs
#define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\
(major1) < 1 || \
(major1) == 1 && (major2) < 20 || \
(major1) == 1 && (major2) == 20 && (minor) <= 9)
#endif /* MIN_TOOL_VERSION_cpphs */
/* tool gcc-13.2.0 */
#ifndef TOOL_VERSION_gcc
#define TOOL_VERSION_gcc "13.2.0"
#endif /* TOOL_VERSION_gcc */
#ifndef MIN_TOOL_VERSION_gcc
#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
(major1) < 13 || \
(major1) == 13 && (major2) < 2 || \
(major1) == 13 && (major2) == 2 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_gcc */
/* tool ghc-9.6.5 */
#ifndef TOOL_VERSION_ghc
#define TOOL_VERSION_ghc "9.6.5"
#endif /* TOOL_VERSION_ghc */
#ifndef MIN_TOOL_VERSION_ghc
#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
(major1) < 9 || \
(major1) == 9 && (major2) < 6 || \
(major1) == 9 && (major2) == 6 && (minor) <= 5)
#endif /* MIN_TOOL_VERSION_ghc */
/* tool ghc-pkg-9.6.5 */
#ifndef TOOL_VERSION_ghc_pkg
#define TOOL_VERSION_ghc_pkg "9.6.5"
#endif /* TOOL_VERSION_ghc_pkg */
#ifndef MIN_TOOL_VERSION_ghc_pkg
#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
(major1) < 9 || \
(major1) == 9 && (major2) < 6 || \
(major1) == 9 && (major2) == 6 && (minor) <= 5)
#endif /* MIN_TOOL_VERSION_ghc_pkg */
/* tool haddock-2.29.2 */
#ifndef TOOL_VERSION_haddock
#define TOOL_VERSION_haddock "2.29.2"
#endif /* TOOL_VERSION_haddock */
#ifndef MIN_TOOL_VERSION_haddock
#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
(major1) < 2 || \
(major1) == 2 && (major2) < 29 || \
(major1) == 2 && (major2) == 29 && (minor) <= 2)
#endif /* MIN_TOOL_VERSION_haddock */
/* tool hpc-0.68 */
#ifndef TOOL_VERSION_hpc
#define TOOL_VERSION_hpc "0.68"
#endif /* TOOL_VERSION_hpc */
#ifndef MIN_TOOL_VERSION_hpc
#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 68 || \
(major1) == 0 && (major2) == 68 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_hpc */
/* tool hsc2hs-0.68.9 */
#ifndef TOOL_VERSION_hsc2hs
#define TOOL_VERSION_hsc2hs "0.68.9"
#endif /* TOOL_VERSION_hsc2hs */
#ifndef MIN_TOOL_VERSION_hsc2hs
#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 68 || \
(major1) == 0 && (major2) == 68 && (minor) <= 9)
#endif /* MIN_TOOL_VERSION_hsc2hs */
/* tool hscolour-1.25 */
#ifndef TOOL_VERSION_hscolour
#define TOOL_VERSION_hscolour "1.25"
#endif /* TOOL_VERSION_hscolour */
#ifndef MIN_TOOL_VERSION_hscolour
#define MIN_TOOL_VERSION_hscolour(major1,major2,minor) (\
(major1) < 1 || \
(major1) == 1 && (major2) < 25 || \
(major1) == 1 && (major2) == 25 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_hscolour */
/* tool runghc-9.6.5 */
#ifndef TOOL_VERSION_runghc
#define TOOL_VERSION_runghc "9.6.5"
#endif /* TOOL_VERSION_runghc */
#ifndef MIN_TOOL_VERSION_runghc
#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
(major1) < 9 || \
(major1) == 9 && (major2) < 6 || \
(major1) == 9 && (major2) == 6 && (minor) <= 5)
#endif /* MIN_TOOL_VERSION_runghc */
/* tool strip-2.41 */
#ifndef TOOL_VERSION_strip
#define TOOL_VERSION_strip "2.41"
#endif /* TOOL_VERSION_strip */
#ifndef MIN_TOOL_VERSION_strip
#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
(major1) < 2 || \
(major1) == 2 && (major2) < 41 || \
(major1) == 2 && (major2) == 41 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_strip */
#ifndef CURRENT_COMPONENT_ID
#define CURRENT_COMPONENT_ID "xmonadConfig-0.1.0.0-inplace-xmonadConfig"
#endif /* CURRENT_COMPONENT_ID */
#ifndef CURRENT_PACKAGE_VERSION
#define CURRENT_PACKAGE_VERSION "0.1.0.0"
#endif /* CURRENT_PACKAGE_VERSION */

View file

@ -0,0 +1,25 @@
{-# LANGUAGE NoRebindableSyntax #-}
{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
{-# OPTIONS_GHC -w #-}
module PackageInfo_xmonadConfig (
name,
version,
synopsis,
copyright,
homepage,
) where
import Data.Version (Version(..))
import Prelude
name :: String
name = "xmonadConfig"
version :: Version
version = Version [0,1,0,0] []
synopsis :: String
synopsis = ""
copyright :: String
copyright = ""
homepage :: String
homepage = ""

View file

@ -0,0 +1,77 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE NoRebindableSyntax #-}
#if __GLASGOW_HASKELL__ >= 810
{-# OPTIONS_GHC -Wno-prepositive-qualified-module #-}
#endif
{-# OPTIONS_GHC -fno-warn-missing-import-lists #-}
{-# OPTIONS_GHC -w #-}
module Paths_xmonadConfig (
version,
getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir,
getDataFileName, getSysconfDir
) where
import qualified Control.Exception as Exception
import qualified Data.List as List
import Data.Version (Version(..))
import System.Environment (getEnv)
import Prelude
#if defined(VERSION_base)
#if MIN_VERSION_base(4,0,0)
catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
#else
catchIO :: IO a -> (Exception.Exception -> IO a) -> IO a
#endif
#else
catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
#endif
catchIO = Exception.catch
version :: Version
version = Version [0,1,0,0] []
getDataFileName :: FilePath -> IO FilePath
getDataFileName name = do
dir <- getDataDir
return (dir `joinFileName` name)
getBinDir, getLibDir, getDynLibDir, getDataDir, getLibexecDir, getSysconfDir :: IO FilePath
bindir, libdir, dynlibdir, datadir, libexecdir, sysconfdir :: FilePath
bindir = "/home/marshall/.cabal/bin"
libdir = "/home/marshall/.cabal/lib/x86_64-linux-ghc-9.8.2/xmonadConfig-0.1.0.0-inplace-xmonadConfig"
dynlibdir = "/home/marshall/.cabal/lib/x86_64-linux-ghc-9.8.2"
datadir = "/home/marshall/.cabal/share/x86_64-linux-ghc-9.8.2/xmonadConfig-0.1.0.0"
libexecdir = "/home/marshall/.cabal/libexec/x86_64-linux-ghc-9.8.2/xmonadConfig-0.1.0.0"
sysconfdir = "/home/marshall/.cabal/etc"
getBinDir = catchIO (getEnv "xmonadConfig_bindir") (\_ -> return bindir)
getLibDir = catchIO (getEnv "xmonadConfig_libdir") (\_ -> return libdir)
getDynLibDir = catchIO (getEnv "xmonadConfig_dynlibdir") (\_ -> return dynlibdir)
getDataDir = catchIO (getEnv "xmonadConfig_datadir") (\_ -> return datadir)
getLibexecDir = catchIO (getEnv "xmonadConfig_libexecdir") (\_ -> return libexecdir)
getSysconfDir = catchIO (getEnv "xmonadConfig_sysconfdir") (\_ -> return sysconfdir)
joinFileName :: String -> String -> FilePath
joinFileName "" fname = fname
joinFileName "." fname = fname
joinFileName dir "" = dir
joinFileName dir fname
| isPathSeparator (List.last dir) = dir ++ fname
| otherwise = dir ++ pathSeparator : fname
pathSeparator :: Char
pathSeparator = '/'
isPathSeparator :: Char -> Bool
isPathSeparator c = c == '/'

View file

@ -0,0 +1,190 @@
/* DO NOT EDIT: This file is automatically generated by Cabal */
/* package xmonadConfig-0.1.0.0 */
#ifndef VERSION_xmonadConfig
#define VERSION_xmonadConfig "0.1.0.0"
#endif /* VERSION_xmonadConfig */
#ifndef MIN_VERSION_xmonadConfig
#define MIN_VERSION_xmonadConfig(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 1 || \
(major1) == 0 && (major2) == 1 && (minor) <= 0)
#endif /* MIN_VERSION_xmonadConfig */
/* package X11-1.10.3 */
#ifndef VERSION_X11
#define VERSION_X11 "1.10.3"
#endif /* VERSION_X11 */
#ifndef MIN_VERSION_X11
#define MIN_VERSION_X11(major1,major2,minor) (\
(major1) < 1 || \
(major1) == 1 && (major2) < 10 || \
(major1) == 1 && (major2) == 10 && (minor) <= 3)
#endif /* MIN_VERSION_X11 */
/* package base-4.19.1.0 */
#ifndef VERSION_base
#define VERSION_base "4.19.1.0"
#endif /* VERSION_base */
#ifndef MIN_VERSION_base
#define MIN_VERSION_base(major1,major2,minor) (\
(major1) < 4 || \
(major1) == 4 && (major2) < 19 || \
(major1) == 4 && (major2) == 19 && (minor) <= 1)
#endif /* MIN_VERSION_base */
/* package containers-0.6.8 */
#ifndef VERSION_containers
#define VERSION_containers "0.6.8"
#endif /* VERSION_containers */
#ifndef MIN_VERSION_containers
#define MIN_VERSION_containers(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 6 || \
(major1) == 0 && (major2) == 6 && (minor) <= 8)
#endif /* MIN_VERSION_containers */
/* package dbus-1.3.5 */
#ifndef VERSION_dbus
#define VERSION_dbus "1.3.5"
#endif /* VERSION_dbus */
#ifndef MIN_VERSION_dbus
#define MIN_VERSION_dbus(major1,major2,minor) (\
(major1) < 1 || \
(major1) == 1 && (major2) < 3 || \
(major1) == 1 && (major2) == 3 && (minor) <= 5)
#endif /* MIN_VERSION_dbus */
/* package xmonad-0.18.0.9 */
#ifndef VERSION_xmonad
#define VERSION_xmonad "0.18.0.9"
#endif /* VERSION_xmonad */
#ifndef MIN_VERSION_xmonad
#define MIN_VERSION_xmonad(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 18 || \
(major1) == 0 && (major2) == 18 && (minor) <= 0)
#endif /* MIN_VERSION_xmonad */
/* package xmonad-contrib-0.18.0.9 */
#ifndef VERSION_xmonad_contrib
#define VERSION_xmonad_contrib "0.18.0.9"
#endif /* VERSION_xmonad_contrib */
#ifndef MIN_VERSION_xmonad_contrib
#define MIN_VERSION_xmonad_contrib(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 18 || \
(major1) == 0 && (major2) == 18 && (minor) <= 0)
#endif /* MIN_VERSION_xmonad_contrib */
/* package xmonad-dbus-0.1.0.2 */
#ifndef VERSION_xmonad_dbus
#define VERSION_xmonad_dbus "0.1.0.2"
#endif /* VERSION_xmonad_dbus */
#ifndef MIN_VERSION_xmonad_dbus
#define MIN_VERSION_xmonad_dbus(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 1 || \
(major1) == 0 && (major2) == 1 && (minor) <= 0)
#endif /* MIN_VERSION_xmonad_dbus */
/* tool cpphs-1.20.9 */
#ifndef TOOL_VERSION_cpphs
#define TOOL_VERSION_cpphs "1.20.9"
#endif /* TOOL_VERSION_cpphs */
#ifndef MIN_TOOL_VERSION_cpphs
#define MIN_TOOL_VERSION_cpphs(major1,major2,minor) (\
(major1) < 1 || \
(major1) == 1 && (major2) < 20 || \
(major1) == 1 && (major2) == 20 && (minor) <= 9)
#endif /* MIN_TOOL_VERSION_cpphs */
/* tool gcc-13.2.0 */
#ifndef TOOL_VERSION_gcc
#define TOOL_VERSION_gcc "13.2.0"
#endif /* TOOL_VERSION_gcc */
#ifndef MIN_TOOL_VERSION_gcc
#define MIN_TOOL_VERSION_gcc(major1,major2,minor) (\
(major1) < 13 || \
(major1) == 13 && (major2) < 2 || \
(major1) == 13 && (major2) == 2 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_gcc */
/* tool ghc-9.8.2 */
#ifndef TOOL_VERSION_ghc
#define TOOL_VERSION_ghc "9.8.2"
#endif /* TOOL_VERSION_ghc */
#ifndef MIN_TOOL_VERSION_ghc
#define MIN_TOOL_VERSION_ghc(major1,major2,minor) (\
(major1) < 9 || \
(major1) == 9 && (major2) < 8 || \
(major1) == 9 && (major2) == 8 && (minor) <= 2)
#endif /* MIN_TOOL_VERSION_ghc */
/* tool ghc-pkg-9.8.2 */
#ifndef TOOL_VERSION_ghc_pkg
#define TOOL_VERSION_ghc_pkg "9.8.2"
#endif /* TOOL_VERSION_ghc_pkg */
#ifndef MIN_TOOL_VERSION_ghc_pkg
#define MIN_TOOL_VERSION_ghc_pkg(major1,major2,minor) (\
(major1) < 9 || \
(major1) == 9 && (major2) < 8 || \
(major1) == 9 && (major2) == 8 && (minor) <= 2)
#endif /* MIN_TOOL_VERSION_ghc_pkg */
/* tool haddock-2.30.0 */
#ifndef TOOL_VERSION_haddock
#define TOOL_VERSION_haddock "2.30.0"
#endif /* TOOL_VERSION_haddock */
#ifndef MIN_TOOL_VERSION_haddock
#define MIN_TOOL_VERSION_haddock(major1,major2,minor) (\
(major1) < 2 || \
(major1) == 2 && (major2) < 30 || \
(major1) == 2 && (major2) == 30 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_haddock */
/* tool hpc-0.69 */
#ifndef TOOL_VERSION_hpc
#define TOOL_VERSION_hpc "0.69"
#endif /* TOOL_VERSION_hpc */
#ifndef MIN_TOOL_VERSION_hpc
#define MIN_TOOL_VERSION_hpc(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 69 || \
(major1) == 0 && (major2) == 69 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_hpc */
/* tool hsc2hs-0.68.10 */
#ifndef TOOL_VERSION_hsc2hs
#define TOOL_VERSION_hsc2hs "0.68.10"
#endif /* TOOL_VERSION_hsc2hs */
#ifndef MIN_TOOL_VERSION_hsc2hs
#define MIN_TOOL_VERSION_hsc2hs(major1,major2,minor) (\
(major1) < 0 || \
(major1) == 0 && (major2) < 68 || \
(major1) == 0 && (major2) == 68 && (minor) <= 10)
#endif /* MIN_TOOL_VERSION_hsc2hs */
/* tool hscolour-1.25 */
#ifndef TOOL_VERSION_hscolour
#define TOOL_VERSION_hscolour "1.25"
#endif /* TOOL_VERSION_hscolour */
#ifndef MIN_TOOL_VERSION_hscolour
#define MIN_TOOL_VERSION_hscolour(major1,major2,minor) (\
(major1) < 1 || \
(major1) == 1 && (major2) < 25 || \
(major1) == 1 && (major2) == 25 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_hscolour */
/* tool runghc-9.8.2 */
#ifndef TOOL_VERSION_runghc
#define TOOL_VERSION_runghc "9.8.2"
#endif /* TOOL_VERSION_runghc */
#ifndef MIN_TOOL_VERSION_runghc
#define MIN_TOOL_VERSION_runghc(major1,major2,minor) (\
(major1) < 9 || \
(major1) == 9 && (major2) < 8 || \
(major1) == 9 && (major2) == 8 && (minor) <= 2)
#endif /* MIN_TOOL_VERSION_runghc */
/* tool strip-2.41 */
#ifndef TOOL_VERSION_strip
#define TOOL_VERSION_strip "2.41"
#endif /* TOOL_VERSION_strip */
#ifndef MIN_TOOL_VERSION_strip
#define MIN_TOOL_VERSION_strip(major1,major2,minor) (\
(major1) < 2 || \
(major1) == 2 && (major2) < 41 || \
(major1) == 2 && (major2) == 41 && (minor) <= 0)
#endif /* MIN_TOOL_VERSION_strip */
#ifndef CURRENT_COMPONENT_ID
#define CURRENT_COMPONENT_ID "xmonadConfig-0.1.0.0-inplace-xmonadConfig"
#endif /* CURRENT_COMPONENT_ID */
#ifndef CURRENT_PACKAGE_VERSION
#define CURRENT_PACKAGE_VERSION "0.1.0.0"
#endif /* CURRENT_PACKAGE_VERSION */

BIN
dist-newstyle/cache/compiler vendored Normal file

Binary file not shown.

BIN
dist-newstyle/cache/config vendored Normal file

Binary file not shown.

BIN
dist-newstyle/cache/elaborated-plan vendored Normal file

Binary file not shown.

BIN
dist-newstyle/cache/improved-plan vendored Normal file

Binary file not shown.

1
dist-newstyle/cache/plan.json vendored Normal file

File diff suppressed because one or more lines are too long

BIN
dist-newstyle/cache/solver-plan vendored Normal file

Binary file not shown.

BIN
dist-newstyle/cache/source-hashes vendored Normal file

Binary file not shown.

BIN
dist-newstyle/cache/up-to-date vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

439
flake.lock Normal file
View file

@ -0,0 +1,439 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_5": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"git-ignore-nix": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1646480205,
"narHash": "sha256-kekOlTlu45vuK2L9nq8iVN17V3sB0WWPqTTW3a2SQG0=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "bff2832ec341cf30acb3a4d3e2e7f1f7b590116a",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"ref": "master",
"repo": "gitignore.nix",
"type": "github"
}
},
"git-ignore-nix_2": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"ref": "master",
"repo": "gitignore.nix",
"type": "github"
}
},
"git-ignore-nix_3": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"ref": "master",
"repo": "gitignore.nix",
"type": "github"
}
},
"git-ignore-nix_4": {
"inputs": {
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"ref": "master",
"repo": "gitignore.nix",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 0,
"narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=",
"path": "/nix/store/ia1zpg1s63v6b3vin3n7bxxjgcs51s2r-source",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1632846328,
"narHash": "sha256-sFi6YtlGK30TBB9o6CW7LG9mYHkgtKeWbSLAjjrNTX0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "2b71ddd869ad592510553d09fe89c9709fa26b2b",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1666603677,
"narHash": "sha256-apAEIj+z1iwMaMJ4tB21r/VTetfGDLDzuhXRHJknIAU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "074da18a72269cc5a6cf444dce42daea5649b2fe",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1666603677,
"narHash": "sha256-apAEIj+z1iwMaMJ4tB21r/VTetfGDLDzuhXRHJknIAU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "074da18a72269cc5a6cf444dce42daea5649b2fe",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1666603677,
"narHash": "sha256-apAEIj+z1iwMaMJ4tB21r/VTetfGDLDzuhXRHJknIAU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "074da18a72269cc5a6cf444dce42daea5649b2fe",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 0,
"narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=",
"path": "/nix/store/ia1zpg1s63v6b3vin3n7bxxjgcs51s2r-source",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"xmobar": "xmobar",
"xmonad": "xmonad",
"xmonad-contrib": "xmonad-contrib"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"unstable": {
"locked": {
"lastModified": 1724479785,
"narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"unstable_2": {
"locked": {
"lastModified": 1724479785,
"narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"xmobar": {
"inputs": {
"flake-utils": "flake-utils_2",
"git-ignore-nix": "git-ignore-nix",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1724605107,
"narHash": "sha256-B99WPfzDKCUDv0YiWKdF2R9mFmb+KFcambjWDMZ/IaI=",
"ref": "refs/heads/master",
"rev": "3500eb6c7ba57fd2ce32f89fdde6edd6918679f9",
"revCount": 1912,
"type": "git",
"url": "https://codeberg.org/xmobar/xmobar"
},
"original": {
"type": "git",
"url": "https://codeberg.org/xmobar/xmobar"
}
},
"xmonad": {
"inputs": {
"flake-utils": "flake-utils_3",
"git-ignore-nix": "git-ignore-nix_2",
"nixpkgs": [
"nixpkgs"
],
"unstable": "unstable"
},
"locked": {
"lastModified": 1722277235,
"narHash": "sha256-fuEgR51OPzwff+ygFhBqJm51oA17rR0KtPfuDLv0Fp0=",
"owner": "xmonad",
"repo": "xmonad",
"rev": "a58ccac7ba46414915de6c7f2b4da08b37784016",
"type": "github"
},
"original": {
"owner": "xmonad",
"repo": "xmonad",
"type": "github"
}
},
"xmonad-contrib": {
"inputs": {
"flake-utils": "flake-utils_4",
"git-ignore-nix": "git-ignore-nix_3",
"nixpkgs": [
"nixpkgs"
],
"xmonad": "xmonad_2"
},
"locked": {
"lastModified": 1724739799,
"narHash": "sha256-Fb91gmKkT7Ngruz6PbYCOpvF/oN00HgNX/aPAsGm+UA=",
"owner": "xmonad",
"repo": "xmonad-contrib",
"rev": "b3c249434d7482eb9dee236b150f7a8fba0380ce",
"type": "github"
},
"original": {
"owner": "xmonad",
"repo": "xmonad-contrib",
"type": "github"
}
},
"xmonad_2": {
"inputs": {
"flake-utils": "flake-utils_5",
"git-ignore-nix": "git-ignore-nix_4",
"nixpkgs": "nixpkgs_6",
"unstable": "unstable_2"
},
"locked": {
"lastModified": 1722277235,
"narHash": "sha256-fuEgR51OPzwff+ygFhBqJm51oA17rR0KtPfuDLv0Fp0=",
"owner": "xmonad",
"repo": "xmonad",
"rev": "a58ccac7ba46414915de6c7f2b4da08b37784016",
"type": "github"
},
"original": {
"owner": "xmonad",
"repo": "xmonad",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

75
flake.nix Normal file
View file

@ -0,0 +1,75 @@
{
inputs = {
flake-utils.url = "github:numtide/flake-utils";
xmonad = {
url = "github:xmonad/xmonad";
inputs.nixpkgs.follows = "nixpkgs";
};
xmonad-contrib = {
url = "github:xmonad/xmonad-contrib";
inputs.nixpkgs.follows = "nixpkgs";
};
xmobar = {
url = "git+https://codeberg.org/xmobar/xmobar";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
flake-utils,
nixpkgs,
xmonad,
xmonad-contrib,
xmobar,
}: let
overlay = _: pkgs: {
haskellPackages = pkgs.haskellPackages.override (old: {
overrides =
pkgs.lib.composeExtensions (old.overrides or (_: _: {}))
(final: _: {
xmonadConfig = final.callCabal2nix "xmonadConfig" ./. {};
});
});
};
overlays = [
overlay
xmonad.overlay
xmonad-contrib.overlay
xmobar.overlay
];
in
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system overlays;
config.allowBroken = true;
};
in {
devShells.default = pkgs.haskellPackages.shellFor {
packages = p: [p.xmonadConfig];
buildInputs = with pkgs.haskellPackages;
[
cabal-fmt
cabal-install
ghcid
haskell-language-server
hlint
implicit-hie
stylish-haskell
]
++ (with pkgs; [
alejandra
zlib
]);
};
packages.default = pkgs.haskellPackages.xmonadConfig;
})
// {
inherit overlays overlay;
};
}

16
fourmolu.yaml Normal file
View file

@ -0,0 +1,16 @@
indentation: 2
column-limit: none
function-arrows: trailing
comma-style: leading
import-export-style: diff-friendly
indent-wheres: true
record-brace-space: true
newlines-between-decls: 1
haddock-style: single-line
haddock-style-module: null
let-style: auto
in-style: left-align
single-constraint-parens: auto
single-deriving-parens: never
unicode: never
respectful: true

1
result Symbolic link
View file

@ -0,0 +1 @@
/nix/store/6ap04pcla8gzz3lv6rs9wblzfcw6ydxd-xmonadConfig-0.1.0.0

18
xmobar/bluetooth.sh Executable file
View file

@ -0,0 +1,18 @@
#!/bin/bash
regex="([0-9A-Z]*:)+"
DEVICES=$(bluetoothctl devices)
ICON=""
COLOR="#696B71"
for DEVICE in $DEVICES
do
if [[ $DEVICE =~ $regex ]]; then
STATUS=$(bluetoothctl info $DEVICE | grep "Connected" | awk '{print $2}')
if [ $STATUS = "yes" ]; then
ICON=""
COLOR="#DFDFDF"
fi
fi
done
echo "<fc=$COLOR><fn=4>$ICON</fn></fc>"

16
xmobar/cpu_temp.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/sh
temp1=75
temp2=90
temp=$(sensors | grep 'Package id 0:' | awk '{print $4}' | sed 's/+//'| sed 's/.0°C//')
temp=${temp%???}
if [ "$temp" -ge "$temp2" ] ; then
echo "Cpu: <fc=#C1514E>$temp</fc>°C"
elif [ "$temp" -ge "$temp1" ] ; then
echo "Cpu: <fc=#C1A24E>$temp</fc>°C"
else
echo "Cpu: <fc=#AAC0F0>$temp</fc>°C"
fi

16
xmobar/gpu_temp.sh Executable file
View file

@ -0,0 +1,16 @@
#!/bin/sh
temp1=70
temp2=85
temp=$(nvidia-smi | grep 'Default' | awk '{print $3}' | sed 's/C//')
temp=${temp%???}
if [ "$temp" -ge "$temp2" ] ; then
echo "Gpu: <fc=#C1514E>$temp</fc>°C"
elif [ "$temp" -ge "$temp1" ] ; then
echo "Gpu: <fc=#C1A24E>$temp</fc>°C"
else
echo "Gpu: <fc=#AAC0F0>$temp</fc>°C"
fi

23
xmobar/icons/full.xpm Normal file
View file

@ -0,0 +1,23 @@
/* XPM */
static char * run_xpm[] = {
"16 16 2 1",
" c #2B2E37",
". c #555E70",
" ",
" .............. ",
" .............. ",
" .............. ",
" .............. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .............. ",
" .............. ",
" ",
" ",
" "};

View file

@ -0,0 +1,23 @@
/* XPM */
static char * run_xpm[] = {
"16 16 2 1",
" c #2B2E37",
". c #8BABF0",
" ",
" .............. ",
" .............. ",
" .............. ",
" .............. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .. .. ",
" .............. ",
" .............. ",
" ",
" ",
" "};

23
xmobar/icons/grid.xpm Normal file
View file

@ -0,0 +1,23 @@
/* XPM */
static char * run_xpm[] = {
"16 16 2 1",
" c #2B2E37",
". c #555E70",
" ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ",
" ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ",
" ",
" "};

View file

@ -0,0 +1,23 @@
/* XPM */
static char * run_xpm[] = {
"16 16 2 1",
" c #2B2E37",
". c #8BABF0",
" ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ",
" ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ",
" ",
" "};

23
xmobar/icons/menu.xpm Normal file
View file

@ -0,0 +1,23 @@
/* XPM */
static char * run_xpm[] = {
"16 16 2 1",
" c #2B2E37",
". c #555E70",
" ",
"................",
"................",
" ",
" ",
" ",
" ",
"................",
"................",
" ",
" ",
" ",
" ",
"................",
"................",
" ",
" ",
" "};

23
xmobar/icons/tall.xpm Normal file
View file

@ -0,0 +1,23 @@
/* XPM */
static char * run_xpm[] = {
"16 16 2 1",
" c #2B2E37",
". c #555E70",
" ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ",
" ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ",
" ",
" "};

View file

@ -0,0 +1,22 @@
/* XPM */
static char * run_xpm[] = {
"16 16 2 1",
" c #2B2E37",
". c #8BABF0",
" ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ",
" ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ...... ...... ",
" ",
" "};

4
xmobar/keyboard_layout.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/sh
LANG=`setxkbmap -query | awk '/layout/{print $2}'`
echo "$LANG"

53
xmobar/trayer-padding.sh Executable file
View file

@ -0,0 +1,53 @@
#!/bin/sh
# Detects the width of running window with name given as first
# argument (xprop name '$1') and creates an XPM icon of that width,
# 1px height, and transparent. Outputs an <icon>-tag for use in
# xmobar to display the generated XPM icon.
#
# Run script from xmobar and trayer:
# `Run Com "/where/ever/padding-icon.sh" ["panel"] "trayerpad" 10`
# and use `%trayerpad%` in your template.
# or, if you're using for instance stalonetray:
# `Run Com "/where/ever/padding-icon.sh" ["stalonetray"] "tray" 10`
# Very heavily based on Jonas Camillus Jeppensen code
# https://github.com/jaor/xmobar/issues/239#issuecomment-233206552
# Function to create a transparent Wx1 px XPM icon
create_xpm_icon () {
timestamp=$(date)
pixels=$(for i in `seq $1`; do echo -n "."; done)
cat << EOF > "$2"
/* XPM *
static char * trayer_pad_xpm[] = {
/* This XPM icon is used for padding in xmobar to */
/* leave room for trayer-srg. It is dynamically */
/* updated by by trayer-pad-icon.sh which is run */
/* by xmobar. */
/* Created: ${timestamp} */
/* <w/cols> <h/rows> <colors> <chars per pixel> */
"$1 1 1 1",
/* Colors (none: transparent) */
". c none",
/* Pixels */
"$pixels"
};
EOF
}
# Width of the trayer window
width=$(xprop -name panel | grep 'program specified minimum size' | cut -d ' ' -f 5)
# Icon file name
iconfile="/tmp/$pname-padding-${width:-0}px.xpm"
# If the desired icon does not exist create it
if [ ! -f $iconfile ]
then
create_xpm_icon $width $iconfile
fi
# Output the icon tag for xmobar
echo "<icon=${iconfile}/>"

13
xmobar/volume.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/bash
MUTE=$(pulseaudio-ctl full-status | awk '{print $2}')
VOLUME=$(pulseaudio-ctl full-status | awk '{print $1}')
if [ "$MUTE" = "yes" ]; then
echo "<fc=#696B71><fn=3></fn></fc> "
elif [ "$VOLUME" -eq 0 ]; then
echo "<fc=#696B71><fn=3></fn></fc> "
elif [ "$VOLUME" -lt 77 ]; then
echo "<fc=#DFDFDF><fn=3></fn></fc> "
else
echo "<fc=#DFDFDF><fn=3></fn></fc>"
fi

14
xmobar/wifi.sh Executable file
View file

@ -0,0 +1,14 @@
#!/bin/bash
TYPES=($(nmcli device show | grep "GENERAL.TYPE" | awk '{print $2}'))
STATES=($(nmcli device show | grep "GENERAL.STATE" | awk '{print $3}'))
for ((i = 0; i < "${#TYPES[@]}"; i++)); do
if [[ ${STATES[$i]} = "(connected)" ]]; then
if [[ ${TYPES[$i]} == *"wifi"* ]]; then
echo "<fc=#DFDFDF><fn=5>直</fn></fc>"
else
echo "<fc=#DFDFDF><fn=4>ﯱ</fn></fc>"
fi
fi
done
echo "<fc=#696B71><fn=4>ﯱ</fn></fc>"

26
xmobar/xmobar.hs Normal file
View file

@ -0,0 +1,26 @@
Config { font = "Maple Mono NF 12"
, border = NoBorder
, bgColor = "#1e1e2e"
, fgColor = "#cdd6f4"
, alpha = 255
, position = TopSize L 100 40
, lowerOnStart = False
, allDesktops = True
, persistent = False
, hideOnStart = False
, iconRoot = "/home/marshall/.xmobar/icons/"
, commands =
[ Run UnsafeXMonadLog
, Run Date "%a, %d %b <fn=5>󰥔</fn> %l:%M %p" "date" 10
, Run Memory ["-t","Mem: <fc=#AAC0F0><usedratio></fc>%"] 10
, Run Com "/home/marshall/.xmobar/cpu_temp.sh" [] "cpu" 10
, Run Com "/home/marshall/.xmobar/gpu_temp.sh" [] "gpu" 10
, Run Com "/home/marshall/.xmobar/volume.sh" [] "volume" 10
, Run Com "/home/marshall/.xmobar/bluetooth.sh" [] "bluetooth" 10
, Run Com "/home/marshall/.xmobar/wifi.sh" [] "network" 10
, Run Com "/home/marshall/.xmobar/trayer-padding.sh" [] "trayerpad" 10
]
, sepChar = "%"
, alignSep = "}{"
, template = "%UnsafeXMonadLog% } <action=xdotool key super+r>%date%</action> { <action=xdotool key super+y> %memory% | %cpu% | %gpu% </action> | %trayerpad%"
}

BIN
xmonad-x86_64-linux Executable file

Binary file not shown.

14
xmonad.errors Normal file
View file

@ -0,0 +1,14 @@
$ nix build
copying path '/nix/store/izrapklxwba42ncw8ssfmdpajmwx53v7-distribution-nixpkgs-1.7.1-data' from 'https://cache.nixos.org'...
copying path '/nix/store/dkpi8hi25fc2g4lqsagkbzsawdgah1dl-cabal2nix-2.19.1' from 'https://cache.nixos.org'...
building '/nix/store/5i3v21ys61s1bq0523436frl3wa65iiz-cabal2nix-xmonadConfig.drv'...
building '/nix/store/pd8msq4vyy7sfisp0ym5sf58y53xyhi0-cabal2nix-xmonad.drv'...
building '/nix/store/4zdsdl9sh94nmcpgyazkjwhy82lddg5k-cabal2nix-xmonad-contrib.drv'...
these 2 derivations will be built:
/nix/store/1h15nwhqymsrl1wdffmckn8d426qaldq-haskell-generic-builder-test-wrapper.sh.drv
/nix/store/cqwm7isfwgzhg87k0w7jwqh0fg0zlv1v-xmonadConfig-0.1.0.0.drv
this path will be fetched (0.00 MiB download, 0.00 MiB unpacked):
/nix/store/2klclm31nr44ikrjaqmyqr9hzsxxsz7v-remove-references-to
copying path '/nix/store/2klclm31nr44ikrjaqmyqr9hzsxxsz7v-remove-references-to' from 'https://cache.nixos.org'...
building '/nix/store/1h15nwhqymsrl1wdffmckn8d426qaldq-haskell-generic-builder-test-wrapper.sh.drv'...
building '/nix/store/cqwm7isfwgzhg87k0w7jwqh0fg0zlv1v-xmonadConfig-0.1.0.0.drv'...

171
xmonad.hs Normal file
View file

@ -0,0 +1,171 @@
{-# LANGUAGE ImportQualifiedPost #-}
import Data.Map qualified as M
import System.Exit
import XMonad
import XMonad.Actions.Navigation2D
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.FloatConfigureReq
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.StatusBar
import XMonad.Layout.BinarySpacePartition
import XMonad.Layout.BorderResize
import XMonad.Layout.NoBorders
import XMonad.Layout.Spacing
import XMonad.Layout.ToggleLayouts
import XMonad.StackSet qualified as W
import XMonad.Util.ClickableWorkspaces
import XMonad.Util.EZConfig
import XMonad.Util.Hacks
import XMonad.Util.NamedScratchpad
import XMonad.Util.Run
import XMonad.Util.WorkspaceCompare
-- Define the color scheme using the Catppuccin palette
catppuccinColors :: (String, String, String, String, String, String, String)
catppuccinColors =
( "#89b4fa" -- blue
, "#f38ba8" -- red
, "#a6e3a1" -- green
, "#f9e2af" -- yellow
, "#f5c2e7" -- pink
, "#cdd6f4" -- white
, "#45475a" -- grey
)
-- XMobar configuration
xmobarConf :: PP
xmobarConf =
def
{ ppSep = yellowC " | "
, ppTitleSanitize = xmobarStrip
, ppCurrent = xmobarBorder "Top" blue 2 . pad
, ppHidden = whiteC . pad
, ppHiddenNoWindows = greyC . pad
, ppUrgent = redC . wrap (yellowC "!") (yellowC "!")
, ppOrder = \[ws, l, _] -> [ws, l]
}
where
(blue, red, _, yellow, _, white, grey) = catppuccinColors
xmobarColorWith :: String -> String -> String
xmobarColorWith color = xmobarColor color ""
redC = xmobarColorWith red
yellowC = xmobarColorWith yellow
whiteC = xmobarColorWith white
greyC = xmobarColorWith grey
main :: IO ()
main = do
xmproc <- spawnPipe "xmobar"
xmonad
$ javaHack
$ navigation2D
def
(xK_k, xK_h, xK_j, xK_l)
[ (mod4Mask, windowGo)
, (mod4Mask .|. shiftMask, windowSwap)
]
False
$ docks
$ addEwmhWorkspaceSort (pure (filterOutWs [scratchpadWorkspaceTag]))
$ ewmhFullscreen
$ ewmh
$ withEasySB
(statusBarProp "xmobar ~/.xmonad/xmobar/xmobar.hs" (clickablePP (filterOutWsPP [scratchpadWorkspaceTag] xmobarConf)))
defToggleStrutsKey
myConfig
myConfig =
def
{ modMask = mod4Mask
, layoutHook =
lessBorders OnlyScreenFloat $
avoidStruts $
spacingRaw False (Border 10 10 10 10) True (Border 10 10 10 10) True $
borderResize emptyBSP
, terminal = myTerminal
, keys = myKeys
, borderWidth = 2
, normalBorderColor = "#6c7086"
, focusedBorderColor = "#a6e3a1"
, handleEventHook = fixSteamFlicker
, startupHook = addExclusives [["vesktop", "telegram"]]
, manageHook =
composeAll
[ namedScratchpadManageHook scratchpads
, isFullscreen --> doFullFloat
]
}
`additionalKeysP` myAdditionalKeys
scratchpads :: [NamedScratchpad]
scratchpads =
[ NS "vesktop" "vesktop" (className =? "vesktop") (rectCentered 0.7)
, NS "telegram" "telegram-desktop" (className =? "TelegramDesktop") (rectCentered 0.7)
]
where
rectCentered percentage = customFloating $ W.RationalRect offset offset percentage percentage
where
offset = (1 - percentage) / 2
-- Application Launchers
myFileManager, myBrowser, myTerminal :: String
myFileManager = "nautilus"
myBrowser = "firefox-nightly"
myTerminal = "wezterm"
rofiMacro :: String
rofiMacro = "rofi -show"
centerRect :: W.RationalRect
centerRect = W.RationalRect 0.25 0.25 0.5 0.5
-- Functions for Floating Windows
floatOrNot :: X () -> X () -> X ()
floatOrNot float notFloat = withFocused $ \windowId -> do
floats <- gets (W.floating . windowset)
if windowId `M.member` floats then float else notFloat
centerFloat' :: Window -> X ()
centerFloat' window = windows $ W.float window centerRect
toggleFloat :: X ()
toggleFloat = floatOrNot (withFocused $ windows . W.sink) (withFocused centerFloat')
-- Keybindings
myAdditionalKeys :: [(String, X ())]
myAdditionalKeys =
[ ("M-<Return>", spawn myTerminal)
, ("M-r", spawn $ rofiMacro ++ " drun")
, ("M-w", spawn myBrowser)
, ("M-e", spawn myFileManager)
, ("M-q", kill)
, ("M-d", namedScratchpadAction scratchpads "vesktop")
, ("M-t", namedScratchpadAction scratchpads "telegram")
, ("M-S-e", resetFocusedNSP)
, ("M-S-s", spawn "screenshot --window")
, ("M-C-3", spawn "screenshot --screen")
, ("M-C-4", spawn "screenshot --area")
, ("M-C-h", sendMessage $ ExpandTowards L)
, ("M-C-j", sendMessage $ ExpandTowards D)
, ("M-C-k", sendMessage $ ExpandTowards U)
, ("M-C-l", sendMessage $ ExpandTowards R)
, ("M-<Space>", toggleFloat)
, ("M-m", withFocused hide)
, ("M-n", sendMessage $ Toggle "Full")
, ("M-S-q", io exitSuccess)
, ("M-S-r", spawn "xmonad --recompile; xmonad --restart")
, ("<XF86AudioPlay>", spawn "playerctl play-pause")
, ("<XF86AudioNext>", spawn "playerctl next")
, ("<XF86AudioPrev>", spawn "playerctl previous")
]
myKeys :: XConfig l -> M.Map (KeyMask, KeySym) (X ())
myKeys conf@XConfig {XMonad.modMask = modm} =
M.fromList $
[ ((m .|. modm, k), windows $ f i)
| (i, k) <- zip (workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
]

18
xmonadConfig.cabal Normal file
View file

@ -0,0 +1,18 @@
name: xmonadConfig
version: 0.1.0.0
build-type: Simple
cabal-version: >=1.10
executable xmonadConfig
main-is: xmonad.hs
build-depends:
base >=4.7
, containers >=0.4.0.0
, dbus >=1.3.3
, X11 >=1.8
, xmonad >=0.18.0
, xmonad-contrib >=0.18.0
, xmonad-dbus >=0.1.0.2
hs-source-dirs: .
default-language: Haskell2010