ENH change screenshot directory to xdg_data
ADD browse screen captures
This commit is contained in:
parent
4daada9020
commit
7b52b34edb
|
@ -396,6 +396,7 @@ mkKeys ts c =
|
||||||
, ("M-C-s", "capture area", runAreaCapture)
|
, ("M-C-s", "capture area", runAreaCapture)
|
||||||
, ("M-C-S-s", "capture screen", runScreenCapture)
|
, ("M-C-S-s", "capture screen", runScreenCapture)
|
||||||
, ("M-C-d", "capture desktop", runDesktopCapture)
|
, ("M-C-d", "capture desktop", runDesktopCapture)
|
||||||
|
, ("M-C-b", "browse captures", runCaptureBrowser)
|
||||||
-- , ("M-C-S-s", "capture focused window", spawn myWindowCap)
|
-- , ("M-C-S-s", "capture focused window", spawn myWindowCap)
|
||||||
] ++
|
] ++
|
||||||
|
|
||||||
|
|
|
@ -26,11 +26,17 @@ module XMonad.Internal.Command.Desktop
|
||||||
, runAreaCapture
|
, runAreaCapture
|
||||||
, runScreenCapture
|
, runScreenCapture
|
||||||
, runDesktopCapture
|
, runDesktopCapture
|
||||||
|
, runCaptureBrowser
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Monad (void)
|
import Control.Monad (void)
|
||||||
|
|
||||||
import System.Directory (getHomeDirectory)
|
import System.Directory
|
||||||
|
( createDirectoryIfMissing
|
||||||
|
, getHomeDirectory
|
||||||
|
)
|
||||||
|
import System.Environment
|
||||||
|
import System.FilePath
|
||||||
|
|
||||||
import XMonad.Actions.Volume
|
import XMonad.Actions.Volume
|
||||||
import XMonad.Core hiding (spawn)
|
import XMonad.Core hiding (spawn)
|
||||||
|
@ -140,14 +146,23 @@ runRecompile = do
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- | Screen capture commands
|
-- | Screen capture commands
|
||||||
|
|
||||||
getScreenshotDir :: IO FilePath
|
getCaptureDir :: IO FilePath
|
||||||
getScreenshotDir = do
|
getCaptureDir = do
|
||||||
h <- getHomeDirectory
|
e <- lookupEnv "XDG_DATA_HOME"
|
||||||
return $ h ++ "/Pictures/screenshots"
|
parent <- case e of
|
||||||
|
Nothing -> fallback
|
||||||
|
Just path
|
||||||
|
| isRelative path -> fallback
|
||||||
|
| otherwise -> return path
|
||||||
|
let fullpath = parent </> "screenshots"
|
||||||
|
createDirectoryIfMissing True fullpath
|
||||||
|
return fullpath
|
||||||
|
where
|
||||||
|
fallback = (</> ".local/share") <$> getHomeDirectory
|
||||||
|
|
||||||
runFlameshot :: String -> X ()
|
runFlameshot :: String -> X ()
|
||||||
runFlameshot mode = do
|
runFlameshot mode = do
|
||||||
ssDir <- io getScreenshotDir
|
ssDir <- io getCaptureDir
|
||||||
spawnCmd "flameshot" $ mode : ["-p", ssDir]
|
spawnCmd "flameshot" $ mode : ["-p", ssDir]
|
||||||
|
|
||||||
-- TODO this will steal focus from the current window (and puts it
|
-- TODO this will steal focus from the current window (and puts it
|
||||||
|
@ -162,3 +177,8 @@ runScreenCapture = runFlameshot "screen"
|
||||||
|
|
||||||
runDesktopCapture :: X ()
|
runDesktopCapture :: X ()
|
||||||
runDesktopCapture = runFlameshot "full"
|
runDesktopCapture = runFlameshot "full"
|
||||||
|
|
||||||
|
runCaptureBrowser :: X ()
|
||||||
|
runCaptureBrowser = do
|
||||||
|
dir <- io getCaptureDir
|
||||||
|
spawnCmd "geeqie" [dir]
|
||||||
|
|
|
@ -37,6 +37,7 @@ library
|
||||||
, text >= 1.2.3.1
|
, text >= 1.2.3.1
|
||||||
, directory >= 1.3.3.0
|
, directory >= 1.3.3.0
|
||||||
, process >= 1.6.5.0
|
, process >= 1.6.5.0
|
||||||
|
, filepath >= 1.4.2.1
|
||||||
, xmobar
|
, xmobar
|
||||||
, xmonad-extras >= 0.15.2
|
, xmonad-extras >= 0.15.2
|
||||||
, xmonad >= 0.13
|
, xmonad >= 0.13
|
||||||
|
|
Loading…
Reference in New Issue