forked from colonelpanic/dotfiles
Merge branch 'master' of github.com:IvanMalison/dotfiles
This commit is contained in:
commit
642ac30254
@ -39,6 +39,15 @@ SortByUsername=false
|
|||||||
SupportKphFields=true
|
SupportKphFields=true
|
||||||
UnlockDatabase=true
|
UnlockDatabase=true
|
||||||
|
|
||||||
|
[generator]
|
||||||
|
EnsureEvery=true
|
||||||
|
ExcludeAlike=true
|
||||||
|
Length=16
|
||||||
|
LowerCase=true
|
||||||
|
Numbers=true
|
||||||
|
SpecialChars=false
|
||||||
|
UpperCase=true
|
||||||
|
|
||||||
[security]
|
[security]
|
||||||
autotypeask=true
|
autotypeask=true
|
||||||
clearclipboard=true
|
clearclipboard=true
|
||||||
|
12
dotfiles/config/systemd/user/batterymon.service
Normal file
12
dotfiles/config/systemd/user/batterymon.service
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=BatteryMon
|
||||||
|
Wants=taffybar.service
|
||||||
|
After=taffybar.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/env batterymon
|
||||||
|
ExecStop=/usr/bin/pkill batterymon
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=wm.target
|
@ -1,7 +1,8 @@
|
|||||||
# -*- mode: org; -*-
|
# -*- mode: org; -*-
|
||||||
I suggest you read this document at [[http://ivanmalison.github.io/dotfiles/]] or,
|
This document is best read at [[http://ivanmalison.github.io/dotfiles/]] or, of
|
||||||
of course, in emacs, as the internal links that follow are unlikely to work
|
course, in emacs, as the internal links that follow are unlikely to work
|
||||||
anywhere else (including, for example, at https://github.com/IvanMalison/dotfiles).
|
anywhere else (including, for example, at
|
||||||
|
https://github.com/IvanMalison/dotfiles).
|
||||||
* About
|
* About
|
||||||
This is my emacs configuration in literate form. It aspires to be
|
This is my emacs configuration in literate form. It aspires to be
|
||||||
like the incredibly well commented literate configurations of [[http://pages.sachachua.com/.emacs.d/Sacha.html][Sacha Chua]] and
|
like the incredibly well commented literate configurations of [[http://pages.sachachua.com/.emacs.d/Sacha.html][Sacha Chua]] and
|
||||||
|
@ -2,15 +2,14 @@
|
|||||||
|
|
||||||
dpi="$1"
|
dpi="$1"
|
||||||
|
|
||||||
|
|
||||||
if [ -z $dpi ]; then
|
if [ -z $dpi ]; then
|
||||||
# Don't try to guess DPI. For a laptop, we don't want the same DPI as
|
# Don't try to guess DPI. For a laptop, we don't want the same DPI as
|
||||||
# for an external screen. Just hardcode stuff...
|
# for an external screen. Just hardcode stuff...
|
||||||
case $(hostname),$(xrandr --current | \
|
case $(hostname),$(xrandr --current | \
|
||||||
sed -n 's/\([^ ]*\) connected .*[0-9][0-9]*x[0-9][0-9]*+[0-9][0-9]*+[0-9][0-9]* .*/\1/p' | \
|
sed -n 's/\([^ ]*\) connected .*[0-9][0-9]*x[0-9][0-9]*+[0-9][0-9]*+[0-9][0-9]* .*/\1/p' | \
|
||||||
sort | tr '\n' ':') in
|
sort | tr '\n' ':') in
|
||||||
# imalison-arch,DVI-D-0:HDMI-0:) dpi=144 ;;
|
imalison-arch,DVI-D-0:HDMI-0:) dpi=96 ;;
|
||||||
imalison-uber-loaner,eDP1:) dpi=72 ;;
|
imalison-uber-loaner,eDP1:) dpi=96 ;;
|
||||||
*) dpi=96 ;;
|
*) dpi=96 ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
@ -18,6 +18,7 @@ executable imalison-xmonad
|
|||||||
xmonad-contrib>=0.12,
|
xmonad-contrib>=0.12,
|
||||||
X11>=1.6.1.2,
|
X11>=1.6.1.2,
|
||||||
gtk-traymanager>=0.1.6,
|
gtk-traymanager>=0.1.6,
|
||||||
|
-- I use a custom version
|
||||||
xmonad>=0.12,
|
xmonad>=0.12,
|
||||||
-- I use a custom version
|
-- I use a custom version
|
||||||
taffybar>=0.4.6,
|
taffybar>=0.4.6,
|
||||||
@ -27,6 +28,7 @@ executable imalison-xmonad
|
|||||||
containers>=0.5.7.1,
|
containers>=0.5.7.1,
|
||||||
directory>=1.2.6.2,
|
directory>=1.2.6.2,
|
||||||
filepath>=1.4.1.0,
|
filepath>=1.4.1.0,
|
||||||
multimap>=1.2.1
|
multimap>=1.2.1,
|
||||||
|
hostname>=1.0
|
||||||
hs-source-dirs: .
|
hs-source-dirs: .
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
@ -2,6 +2,9 @@ flags: {}
|
|||||||
extra-package-dbs: []
|
extra-package-dbs: []
|
||||||
packages:
|
packages:
|
||||||
- '.'
|
- '.'
|
||||||
|
- location:
|
||||||
|
git: git@github.com:IvanMalison/xmonad.git
|
||||||
|
commit: a501ee613f9be5a4b16c6427ce84fd425e976571
|
||||||
- location:
|
- location:
|
||||||
git: git@github.com:IvanMalison/xmonad-contrib.git
|
git: git@github.com:IvanMalison/xmonad-contrib.git
|
||||||
commit: 751bcbbfecc2b9be9811a7147524e798c7e53bec
|
commit: 751bcbbfecc2b9be9811a7147524e798c7e53bec
|
||||||
|
@ -3,15 +3,17 @@
|
|||||||
FlexibleInstances, FlexibleContexts #-}
|
FlexibleInstances, FlexibleContexts #-}
|
||||||
module Main where
|
module Main where
|
||||||
|
|
||||||
|
import qualified Control.Arrow as A
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Control.Monad.Trans.Maybe
|
import Control.Monad.Trans.Maybe
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
import qualified Data.ByteString.Lazy as B
|
import qualified Data.ByteString.Lazy as B
|
||||||
import Data.List
|
import Data.List
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import qualified Data.MultiMap as MM
|
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
|
import qualified Data.MultiMap as MM
|
||||||
import Graphics.X11.ExtraTypes.XF86
|
import Graphics.X11.ExtraTypes.XF86
|
||||||
|
import Network.HostName
|
||||||
import System.Directory
|
import System.Directory
|
||||||
import System.FilePath.Posix
|
import System.FilePath.Posix
|
||||||
import System.Taffybar.Hooks.PagerHints
|
import System.Taffybar.Hooks.PagerHints
|
||||||
@ -116,11 +118,11 @@ maybeRemap k = M.findWithDefault k k
|
|||||||
|
|
||||||
withFocusedR f = withWindowSet (f . W.peek)
|
withFocusedR f = withWindowSet (f . W.peek)
|
||||||
|
|
||||||
withFocusedD d f = maybe (return d) f <$> (withWindowSet (return . W.peek))
|
withFocusedD d f = maybe (return d) f <$> withWindowSet (return . W.peek)
|
||||||
|
|
||||||
mapP f l = mapP' id
|
mapP = mapP' id
|
||||||
|
|
||||||
mapP' f f' l = map (\i -> (f i, f' i)) l
|
mapP' f f' = map (f A.&&& f')
|
||||||
|
|
||||||
-- Selectors
|
-- Selectors
|
||||||
|
|
||||||
@ -150,7 +152,20 @@ transmissionCommand = "transmission-gtk"
|
|||||||
|
|
||||||
-- Startup hook
|
-- Startup hook
|
||||||
|
|
||||||
myStartup = spawn "systemctl --user start wm.target"
|
tvScreenId :: ScreenId
|
||||||
|
tvScreenId = 0
|
||||||
|
|
||||||
|
disableTVFading = setFading (Just tvScreenId) False
|
||||||
|
|
||||||
|
hostNameToAction =
|
||||||
|
M.fromList [ ("imalison-arch", disableTVFading)
|
||||||
|
, ("imalison-uber-loaner", return ())
|
||||||
|
]
|
||||||
|
|
||||||
|
myStartup = do
|
||||||
|
spawn "systemctl --user start wm.target"
|
||||||
|
hostName <- io getHostName
|
||||||
|
M.findWithDefault (return ()) hostName hostNameToAction
|
||||||
|
|
||||||
-- Manage hook
|
-- Manage hook
|
||||||
|
|
||||||
@ -201,7 +216,7 @@ toggleStateToString s =
|
|||||||
|
|
||||||
toggleToStringWithState :: (Transformer t Window, Show t) => t -> X String
|
toggleToStringWithState :: (Transformer t Window, Show t) => t -> X String
|
||||||
toggleToStringWithState toggle =
|
toggleToStringWithState toggle =
|
||||||
(printf "%s (%s)" (show toggle) . toggleStateToString) <$>
|
printf "%s (%s)" (show toggle) . toggleStateToString <$>
|
||||||
isToggleActive toggle
|
isToggleActive toggle
|
||||||
|
|
||||||
selectToggle =
|
selectToggle =
|
||||||
@ -253,7 +268,6 @@ selectLayout =
|
|||||||
DM.menuArgs "rofi" ["-dmenu", "-i"] layoutNames >>=
|
DM.menuArgs "rofi" ["-dmenu", "-i"] layoutNames >>=
|
||||||
(sendMessage . JumpToLayout)
|
(sendMessage . JumpToLayout)
|
||||||
|
|
||||||
|
|
||||||
myLayoutHook =
|
myLayoutHook =
|
||||||
avoidStruts . minimize . boringAuto . mkToggle1 MIRROR . mkToggle1 LIMIT .
|
avoidStruts . minimize . boringAuto . mkToggle1 MIRROR . mkToggle1 LIMIT .
|
||||||
mkToggle1 GAPS . mkToggle1 MAGICFOCUS . mkToggle1 NBFULL . workspaceNamesHook .
|
mkToggle1 GAPS . mkToggle1 MAGICFOCUS . mkToggle1 NBFULL . workspaceNamesHook .
|
||||||
@ -283,7 +297,7 @@ myDecorateName ws w = do
|
|||||||
classTitle <- getClass w
|
classTitle <- getClass w
|
||||||
workspaceToName <- getWorkspaceNames
|
workspaceToName <- getWorkspaceNames
|
||||||
return $ printf "%-20s%-40s %+30s" classTitle (take 40 name)
|
return $ printf "%-20s%-40s %+30s" classTitle (take 40 name)
|
||||||
"in " ++ workspaceToName (W.tag ws)
|
"in " ++ workspaceToName (W.tag ws)
|
||||||
|
|
||||||
-- This needs access to X in order to unminimize, which means that I can't be
|
-- This needs access to X in order to unminimize, which means that I can't be
|
||||||
-- done with the existing window bringer interface
|
-- done with the existing window bringer interface
|
||||||
@ -344,17 +358,20 @@ fadeEnabledFor query =
|
|||||||
|
|
||||||
fadeEnabledForWindow = fadeEnabledFor ask
|
fadeEnabledForWindow = fadeEnabledFor ask
|
||||||
fadeEnabledForWorkspace = fadeEnabledFor getWindowWorkspace
|
fadeEnabledForWorkspace = fadeEnabledFor getWindowWorkspace
|
||||||
|
fadeEnabledForScreen = fadeEnabledFor getWindowScreen
|
||||||
|
|
||||||
getScreens = withWindowSet $ return . W.screens
|
getScreens = withWindowSet $ return . W.screens
|
||||||
|
|
||||||
getWindowWorkspace' = W.findTag <$> ask <*> liftX (withWindowSet return)
|
getWindowWorkspace' = W.findTag <$> ask <*> liftX (withWindowSet return)
|
||||||
getWindowWorkspace = flip fromMaybe <$> getWindowWorkspace' <*> pure "1"
|
getWindowWorkspace = flip fromMaybe <$> getWindowWorkspace' <*> pure "1"
|
||||||
getWorkspaceToScreen = M.fromList . mapP' (W.tag . W.workspace) W.screen <$> getScreens
|
getWorkspaceToScreen = M.fromList . mapP' (W.tag . W.workspace) W.screen <$> getScreens
|
||||||
getWindowScreen = M.lookup <$> getWindowWorkspace <*> liftX getWorkspaceToScreen
|
getWindowScreen = M.lookup <$> getWindowWorkspace <*> liftX getWorkspaceToScreen
|
||||||
|
getCurrentScreen = join (withFocusedD Nothing (runQuery getWindowScreen))
|
||||||
|
|
||||||
toggleFadeInactiveLogHook =
|
fadeCondition =
|
||||||
fadeOutLogHook .
|
isUnfocused <&&> fadeEnabledForWindow <&&>
|
||||||
fadeIf (isUnfocused <&&> fadeEnabledForWindow <&&> fadeEnabledForWorkspace)
|
fadeEnabledForWorkspace <&&> fadeEnabledForScreen
|
||||||
|
|
||||||
|
toggleFadeInactiveLogHook = fadeOutLogHook . fadeIf fadeCondition
|
||||||
|
|
||||||
toggleFadingForActiveWindow = withWindowSet $
|
toggleFadingForActiveWindow = withWindowSet $
|
||||||
maybe (return ()) toggleFading . W.peek
|
maybe (return ()) toggleFading . W.peek
|
||||||
@ -362,6 +379,8 @@ toggleFadingForActiveWindow = withWindowSet $
|
|||||||
toggleFadingForActiveWorkspace =
|
toggleFadingForActiveWorkspace =
|
||||||
withWindowSet $ \ws -> toggleFading $ W.currentTag ws
|
withWindowSet $ \ws -> toggleFading $ W.currentTag ws
|
||||||
|
|
||||||
|
toggleFadingForActiveScreen = getCurrentScreen >>= toggleFading
|
||||||
|
|
||||||
toggleFading w = setFading' $ toggleInMap w
|
toggleFading w = setFading' $ toggleInMap w
|
||||||
|
|
||||||
setFading w f = setFading' $ M.insert w f
|
setFading w f = setFading' $ M.insert w f
|
||||||
@ -380,7 +399,7 @@ withWorkspace f = withWindowSet $ \ws -> maybe (return ()) f (getCurrentWS ws)
|
|||||||
|
|
||||||
currentWS = withWindowSet $ return . getCurrentWS
|
currentWS = withWindowSet $ return . getCurrentWS
|
||||||
|
|
||||||
workspaceWindows = (maybe [] W.integrate) <$> currentWS
|
workspaceWindows = maybe [] W.integrate <$> currentWS
|
||||||
|
|
||||||
minimizedWindows = withMinimized return
|
minimizedWindows = withMinimized return
|
||||||
|
|
||||||
@ -425,7 +444,7 @@ windowsSatisfyingPredicate workspace getPredicate = do
|
|||||||
getMatchingUnmatching =
|
getMatchingUnmatching =
|
||||||
partition <$> ((. snd) <$> getClassMatchesCurrent) <*> getWindowClassPairs
|
partition <$> ((. snd) <$> getClassMatchesCurrent) <*> getWindowClassPairs
|
||||||
|
|
||||||
getWindowClassPairs = join $ sequence . map windowToClassPair <$> workspaceWindows
|
getWindowClassPairs = join $ mapM windowToClassPair <$> workspaceWindows
|
||||||
|
|
||||||
windowToClassPair w = (,) w <$> getClass w
|
windowToClassPair w = (,) w <$> getClass w
|
||||||
|
|
||||||
@ -490,13 +509,13 @@ shiftToEmptyAndView =
|
|||||||
|
|
||||||
setFocusedScreen :: ScreenId -> WindowSet -> WindowSet
|
setFocusedScreen :: ScreenId -> WindowSet -> WindowSet
|
||||||
setFocusedScreen to ws =
|
setFocusedScreen to ws =
|
||||||
maybe ws (flip setFocusedScreen' ws) $ find ((to ==) . W.screen) (W.visible ws)
|
maybe ws (`setFocusedScreen'` ws) $ find ((to ==) . W.screen) (W.visible ws)
|
||||||
|
|
||||||
setFocusedScreen' to ws @ W.StackSet
|
setFocusedScreen' to ws @ W.StackSet
|
||||||
{ W.current = prevCurr
|
{ W.current = prevCurr
|
||||||
, W.visible = visible
|
, W.visible = visible
|
||||||
} = ws { W.current = to
|
} = ws { W.current = to
|
||||||
, W.visible = prevCurr:(deleteBy screenEq to visible)
|
, W.visible = prevCurr:deleteBy screenEq to visible
|
||||||
}
|
}
|
||||||
|
|
||||||
where screenEq a b = W.screen a == W.screen b
|
where screenEq a b = W.screen a == W.screen b
|
||||||
@ -508,7 +527,7 @@ nextScreen ws @ W.StackSet { W.visible = visible } =
|
|||||||
|
|
||||||
viewOtherScreen ws = W.greedyView ws . nextScreen
|
viewOtherScreen ws = W.greedyView ws . nextScreen
|
||||||
|
|
||||||
shiftThenViewOtherScreen ws w = (viewOtherScreen ws) . (W.shiftWin ws w)
|
shiftThenViewOtherScreen ws w = viewOtherScreen ws . W.shiftWin ws w
|
||||||
|
|
||||||
shiftCurrentToWSOnOtherScreen ws s =
|
shiftCurrentToWSOnOtherScreen ws s =
|
||||||
fromMaybe s (flip (shiftThenViewOtherScreen ws) s <$> W.peek s)
|
fromMaybe s (flip (shiftThenViewOtherScreen ws) s <$> W.peek s)
|
||||||
@ -602,6 +621,7 @@ addKeys conf@XConfig {modMask = modm} =
|
|||||||
-- Hyper bindings
|
-- Hyper bindings
|
||||||
, ((mod3Mask, xK_1), toggleFadingForActiveWindow)
|
, ((mod3Mask, xK_1), toggleFadingForActiveWindow)
|
||||||
, ((mod3Mask .|. shiftMask, xK_1), toggleFadingForActiveWorkspace)
|
, ((mod3Mask .|. shiftMask, xK_1), toggleFadingForActiveWorkspace)
|
||||||
|
, ((mod3Mask .|. controlMask, xK_1), toggleFadingForActiveScreen)
|
||||||
, ((mod3Mask, xK_e), moveTo Next EmptyWS)
|
, ((mod3Mask, xK_e), moveTo Next EmptyWS)
|
||||||
, ((mod3Mask, xK_v), spawn "copyq_rofi.sh")
|
, ((mod3Mask, xK_v), spawn "copyq_rofi.sh")
|
||||||
, ((mod3Mask, xK_p), spawn "system_password.sh")
|
, ((mod3Mask, xK_p), spawn "system_password.sh")
|
||||||
|
Loading…
Reference in New Issue
Block a user