let Prelude = https://prelude.dhall-lang.org/v20.1.0/package.dhall sha256:26b0ef498663d269e4dc6a82b0ee289ec565d683ef4c00d0ebdd25333a5a3c98 let Config = /home/masse/git/xmonad-masser/dhall/package.dhall sha256:8cca83716bc75d06cb22c7f45091606159404289d9866601817b2ab81170afcb let pkgs = { qutebrowser = "@qutebrowser@" , prompt = "@prompt@" , signal = "@signal@" , element = "@element@" , emacs = "@emacs@" , urxvt = "@urxvt@" , flameshot = "@flameshot@" , obsidian = "@obsidian@" , vim = "@vim@" , calibre = "@calibre@" , spotify = "@spotify@" , hledger = "@hledger@" , hledger-ui = "@hledger_ui@" } let browser = "${pkgs.qutebrowser}/bin/qutebrowser" let terminal = "${pkgs.urxvt}/bin/urxvt" let prompt = "${pkgs.prompt}/bin/prompt" let shellIn = \(path : Text) -> "${terminal} -cd ${path}" let paths = let pathElement = \(x : Prelude.Map.Entry Text Text) -> x.mapValue in Prelude.Text.concatMapSep ":" (Prelude.Map.Entry Text Text) pathElement (toMap pkgs) let runOnTopic = \(name : Text) -> \(action : Text) -> Config.Topic::{ name, action = [ Config.Command.Spawn action ] } let spawn = Config.Command.Spawn in Config::{ , path = paths , applications = { terminal, prompt = pkgs.prompt } , topics = [ runOnTopic "signal" "${pkgs.signal}/bin/signal-desktop" , runOnTopic "element" "${pkgs.element}/bin/element-desktop" , runOnTopic "xmonad" (shellIn "/home/masse/git/xmonad-masser") , runOnTopic "adhoc" (shellIn "/home/masse/code_practice") , Config.Topic::{ , name = "zettel" , action = [ spawn "${pkgs.obsidian}/bin/obsidian" , spawn "${pkgs.vim}/bin/vim -g" ] } , runOnTopic "conf" (shellIn "/etc/nixos") , runOnTopic "web" browser , Config.Topic::{ , name = "ledger" , action = [ spawn "${pkgs.vim}/bin/vim -g /home/masse/wikidata/accounting/2021.journal" , spawn (shellIn "/home/masse/wikidata/accounting") , spawn ( shellIn "/home/masse/wikidata/accounting -e ${pkgs.hledger-ui}/bin/hledger-ui --watch --register checking -U -P" ) , spawn ( shellIn "/home/masse/wikidata/accounting -e ${pkgs.hledger-ui}/bin/hledger-ui --watch --register savings -U -P" ) , spawn ( shellIn "/home/masse/wikidata/accounting -e ${pkgs.hledger-ui}/bin/hledger-ui --watch --register lunchcard -U -P" ) ] } , runOnTopic "pdf" "${pkgs.calibre}/bin/calibre" , runOnTopic "music" "${pkgs.spotify}/bin/spotify" ] , bindings = let mkCommand = \(prefix : Text) -> \(name : Text) -> \(command : Text) -> Config.SubCommand.act { prefix, name, command = Config.Command.Spawn command } let mkSearch = \(prefix : Text) -> \(name : Text) -> \(site : Text) -> Config.SubCommand.act { prefix , name , command = Config.Command.Search { name, browser, site } } in [ mkCommand "M-" "Take a screenshot" "${pkgs.flameshot}/bin/flameshot gui" , Config.SubCommand.subMap { prefix = "M-s" , name = "Search" , sub = [ mkSearch "h" "hoogle" "https://hoogle.haskell.org?hoogle=" , mkSearch "g" "google" "https://google.com/search?q=" , mkSearch "d" "duckduckgo" "https://duckduckgo.com/?q=" ] } ] }