Compare commits
No commits in common. "d5c86cddeee937d31fbfcc7f6486e2c4c15a5b02" and "164582b9e875dd0fd1991489f1a0a72fbbce64e9" have entirely different histories.
d5c86cddee
...
164582b9e8
@ -13,9 +13,7 @@ matrix:
|
|||||||
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-18.09.tar.gz
|
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-18.09.tar.gz
|
||||||
- env:
|
- env:
|
||||||
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-19.03.tar.gz
|
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-19.03.tar.gz
|
||||||
- env:
|
|
||||||
- NIXPKGS=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- nix run nixpkgs.haskellPackages.hlint -c hlint src
|
# - nix run nixpkgs.haskellPackages.hlint -c hlint src
|
||||||
- nix build -I nixpkgs=$NIXPKGS -f ./release.nix xmonad-masser
|
- nix build -I nixpkgs=$NIXPKGS -f ./release.nix xmonad-masser
|
||||||
|
@ -184,7 +184,7 @@ myKeys extraConfig conf =
|
|||||||
, ("M-n", scratchSubmaps conf)
|
, ("M-n", scratchSubmaps conf)
|
||||||
, ("M-s", searchSubmaps conf)
|
, ("M-s", searchSubmaps conf)
|
||||||
, ("M-p", addName "Retrieve password" $ passPrompt def)
|
, ("M-p", addName "Retrieve password" $ passPrompt def)
|
||||||
, ("M-S-e", addName "Open with app" xdgOpen)
|
, ("M-S-e", addName "Open with app" xdg_open)
|
||||||
, ("M-e", addName "Run app" $ runOrRaisePrompt def)] ^++^
|
, ("M-e", addName "Run app" $ runOrRaisePrompt def)] ^++^
|
||||||
subKeys "Windows" [ ("M-j", addName "Go down" $ windowGo D False)
|
subKeys "Windows" [ ("M-j", addName "Go down" $ windowGo D False)
|
||||||
, ("M-k", addName "Go up" $ windowGo U False)
|
, ("M-k", addName "Go up" $ windowGo U False)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
module XMonad.CustomPrompt (xdgOpen, browser) where
|
module XMonad.CustomPrompt (xdg_open, browser) where
|
||||||
|
|
||||||
import qualified XMonad.Prompt.AppLauncher as AL
|
import qualified XMonad.Prompt.AppLauncher as AL
|
||||||
import XMonad.Prompt
|
import XMonad.Prompt
|
||||||
@ -7,8 +7,8 @@ import XMonad (X)
|
|||||||
launchApp :: AL.Application -> X ()
|
launchApp :: AL.Application -> X ()
|
||||||
launchApp = AL.launchApp def
|
launchApp = AL.launchApp def
|
||||||
|
|
||||||
xdgOpen :: X ()
|
xdg_open :: X ()
|
||||||
xdgOpen = launchApp "xdg-open"
|
xdg_open = launchApp "xdg-open"
|
||||||
|
|
||||||
browser :: X ()
|
browser :: X ()
|
||||||
browser = launchApp "qutebrowser"
|
browser = launchApp "qutebrowser"
|
||||||
|
@ -10,7 +10,7 @@ import XMonad.Core
|
|||||||
import XMonad.Prompt
|
import XMonad.Prompt
|
||||||
import XMonad.Util.Run (runProcessWithInput)
|
import XMonad.Util.Run (runProcessWithInput)
|
||||||
|
|
||||||
newtype Pass = Pass { passLabel :: String }
|
data Pass = Pass { passLabel :: String }
|
||||||
|
|
||||||
-- Rosetta code levenshtein
|
-- Rosetta code levenshtein
|
||||||
levenshtein :: String -> String -> Int
|
levenshtein :: String -> String -> Int
|
||||||
@ -37,7 +37,7 @@ mkPassPrompt label f conf = do
|
|||||||
-- I'm just sorting here, but could use some kind of fuzzy matching instead, but it requires a bit more effort
|
-- I'm just sorting here, but could use some kind of fuzzy matching instead, but it requires a bit more effort
|
||||||
passwords <- sort <$> liftIO getPasswords
|
passwords <- sort <$> liftIO getPasswords
|
||||||
-- Other change, use infixof instead of prefixof
|
-- Other change, use infixof instead of prefixof
|
||||||
mkXPrompt (Pass label) conf (\input -> pure (sortBy (compare `on` levenshtein input) . filter (consumes input) $ passwords)) f
|
mkXPrompt (Pass label) conf (\input -> pure (sortBy (compare `on` (levenshtein input)) . filter (consumes input) $ passwords)) f
|
||||||
where
|
where
|
||||||
consumes [] _ = True -- everything consumed
|
consumes [] _ = True -- everything consumed
|
||||||
consumes (_:_) [] = False -- all not consumed
|
consumes (_:_) [] = False -- all not consumed
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
{-# LANGUAGE TupleSections #-}
|
|
||||||
module XMonad.TopicUtils where
|
module XMonad.TopicUtils where
|
||||||
|
|
||||||
import Data.Maybe (fromMaybe, listToMaybe, mapMaybe)
|
import Data.Maybe (fromMaybe, listToMaybe, mapMaybe)
|
||||||
import Data.List (isPrefixOf, nub, sortOn)
|
import Data.List (isPrefixOf, sort, nub)
|
||||||
import XMonad.Actions.TopicSpace
|
import XMonad.Actions.TopicSpace
|
||||||
import XMonad
|
import XMonad
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
@ -12,7 +11,6 @@ import qualified XMonad.StackSet as W
|
|||||||
import XMonad.Util.Dmenu (dmenu)
|
import XMonad.Util.Dmenu (dmenu)
|
||||||
import XMonad.Actions.DynamicWorkspaces
|
import XMonad.Actions.DynamicWorkspaces
|
||||||
import XMonad.Util.NamedWindows (getName)
|
import XMonad.Util.NamedWindows (getName)
|
||||||
import Data.Ord
|
|
||||||
|
|
||||||
|
|
||||||
realTopicDir :: M.Map String FilePath -> X String
|
realTopicDir :: M.Map String FilePath -> X String
|
||||||
@ -60,7 +58,7 @@ gridselectCurrentWindows :: GSConfig Window -> X (Maybe Window)
|
|||||||
gridselectCurrentWindows gsconf = windowMap >>= gridselect gsconf
|
gridselectCurrentWindows gsconf = windowMap >>= gridselect gsconf
|
||||||
where
|
where
|
||||||
getName' = fmap show . getName
|
getName' = fmap show . getName
|
||||||
kvPair w = (, w) <$> getName' w
|
kvPair w = flip (,) w `fmap` getName' w
|
||||||
windowMap = do
|
windowMap = do
|
||||||
ws <- gets (nub . W.integrate' . W.stack . W.workspace . W.current . windowset)
|
ws <- gets (nub . W.integrate' . W.stack . W.workspace . W.current . windowset)
|
||||||
mapM kvPair ws
|
mapM kvPair ws
|
||||||
@ -80,11 +78,11 @@ currentTopicAction' tg = do
|
|||||||
copyTopic :: X ()
|
copyTopic :: X ()
|
||||||
copyTopic = do
|
copyTopic = do
|
||||||
currentTopic <- realTopic
|
currentTopic <- realTopic
|
||||||
lastN <- gets (listToMaybe . sortOn Down . mapMaybe (subset currentTopic . W.tag) . W.workspaces . windowset)
|
lastN <- gets (listToMaybe . reverse . sort . mapMaybe (subset currentTopic . W.tag) . W.workspaces . windowset)
|
||||||
addWorkspace (currentTopic ++ ":" ++ show (maybe 2 (+1) lastN))
|
addWorkspace (currentTopic ++ ":" ++ (show $ maybe 2 (+1) lastN))
|
||||||
where
|
where
|
||||||
subset :: String -> String -> Maybe Int
|
subset :: String -> String -> Maybe Int
|
||||||
subset topic other = if topic `isPrefixOf` other then readM $ tail' $ dropWhile (/= ':') other else Nothing
|
subset topic other = if topic `isPrefixOf` other then (readM $ tail' $ snd $ break (== ':') other) else Nothing
|
||||||
readM a = case reads a of
|
readM a = case reads a of
|
||||||
[(x,_)] -> Just x
|
[(x,_)] -> Just x
|
||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
|
@ -25,7 +25,7 @@ library
|
|||||||
, XMonad.TopicSpace
|
, XMonad.TopicSpace
|
||||||
, XMonad.XMobar
|
, XMonad.XMobar
|
||||||
-- other-extensions:
|
-- other-extensions:
|
||||||
build-depends: base >=4.11 && <4.13
|
build-depends: base >=4.11 && <4.12
|
||||||
, xmonad
|
, xmonad
|
||||||
, xmonad-contrib
|
, xmonad-contrib
|
||||||
, mtl
|
, mtl
|
||||||
|
Loading…
Reference in New Issue
Block a user