1
0
Fork 0
mirror of https://gitlab.com/dwt1/dotfiles.git synced 2023-02-13 20:55:19 -05:00

Adding README.org

This commit is contained in:
Derek Taylor 2020-07-17 14:46:34 -05:00
parent 5fa8e80ec8
commit f14e0d1050
3 changed files with 173 additions and 63 deletions

View file

@ -1,19 +1,6 @@
#+TITLE: DT's Doom Emacs Config
#+AUTHOR: Derek Taylor (DT)
* Table of Content :TOC:
- [[#fonts][FONTS]]
- [[#doom-theme][DOOM THEME]]
- [[#org-mode][ORG MODE]]
- [[#line-settings][LINE SETTINGS]]
- [[#neotree][NEOTREE]]
- [[#browser-eww][BROWSER (eww)]]
- [[#splits][SPLITS]]
- [[#file-manager-dired][FILE MANAGER (dired)]]
- [[#audio-player-emms][AUDIO PLAYER (emms)]]
- [[#email-client-mu4e][EMAIL CLIENT (mu4e)]]
- [[#mastodon-client-mastodon][MASTODON CLIENT (mastodon)]]
** FONTS
Doom exposes five (optional) variables for controlling fonts in Doom. Here
are the three important ones:

173
.xmonad/README.org Normal file
View file

@ -0,0 +1,173 @@
#+TITLE: Xmonad
#+PROPERTY: header-args :tangle xmonad.hs
* TABLE OF CONTENTS :toc:
- [[#imports][IMPORTS]]
- [[#autostart][AUTOSTART]]
- [[#workspaces][WORKSPACES]]
- [[#managehook][MANAGEHOOK]]
- [[#loghook][LOGHOOK]]
- [[#main][MAIN]]
* IMPORTS
Xmonad is a dynamically tiling X11 window manager that is written and
er the imports for
"Custom" modules. Those are my config files and they can be found in:
~/.xmonad/lib/Custom
Keep in mind, that my configs are purposely bloated with examples of
what you can do with xmonad. It is written more as a study guide rather
than a config that you should download and use.
#+BEGIN_SRC haskell
-- Custom (my personal configs)
import Custom.MyGridMenu
import Custom.MyKeys
import Custom.MyLayouts
import Custom.MyPrompts
import Custom.MyScratchpads
import Custom.MyTreeMenu
import Custom.MyVariables
-- Base
import XMonad
import Data.Monoid
import System.IO (hPutStrLn)
import XMonad.Actions.MouseResize
-- Hooks
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
import XMonad.Hooks.EwmhDesktops -- for some fullscreen events, also for xcomposite in obs.
import XMonad.Hooks.FadeInactive
import XMonad.Hooks.ManageDocks (avoidStruts, docksEventHook, manageDocks, ToggleStruts(..))
import XMonad.Hooks.ManageHelpers (isFullscreen, doFullFloat)
import XMonad.Hooks.ServerMode
import XMonad.Hooks.SetWMName
import XMonad.Hooks.WorkspaceHistory
-- Utilities
import XMonad.Util.EZConfig (additionalKeysP)
import XMonad.Util.NamedScratchpad
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
import XMonad.Util.SpawnOnce
#+END_SRC
* AUTOSTART
This is where your programs for auto start belong.
#+BEGIN_SRC haskell
myStartupHook :: X ()
myStartupHook = do
spawnOnce "nitrogen --restore &"
spawnOnce "picom &"
spawnOnce "nm-applet &"
spawnOnce "volumeicon &"
spawnOnce "trayer --edge top --align right --widthtype request --padding 6 --SetDockType true --SetPartialStrut true --expand true --monitor 1 --transparent true --alpha 0 --tint 0x292d3e --height 22 &"
spawnOnce "/usr/bin/emacs --daemon &"
-- spawnOnce "kak -d -s mysession &"
setWMName "LG3D"
#+END_SRC
* WORKSPACES
My workspaces are clickable meaning that the mouse can be used to switch
workspaces. This requires xdotool. You need to use UnsafeStdInReader instead
of simply StdInReader in xmobar config so you can pass actions to it. Also,
you will notice I add <fn> tags to the clickable workspaces to select from
the additionalFonts that I have set in my xmobar configs.
#+BEGIN_SRC haskell
xmobarEscape :: String -> String
xmobarEscape = concatMap doubleLts
where
doubleLts '<' = "<<"
doubleLts x = [x]
myWorkspaces :: [String]
myWorkspaces = clickable . (map xmobarEscape)
-- $ ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
$ ["dev", "www", "sys", "doc", "vbox", "chat", "mus", "vid", "gfx"]
where
clickable l = [ "<action=xdotool key super+" ++ show (n) ++ "> " ++ ws ++ " </action>" |
(i,ws) <- zip [1..9] l,
let n = i ]
#+END_SRC
* MANAGEHOOK
Sets some rules for certain programs. Examples include forcing certain
programs to always float, or to always appear on a certain workspace.
Forcing programs to a certain workspace with a doShift requires xdotool
if you are using clickable workspaces. You need the className or title
of the program. Use xprop to get this info.
#+BEGIN_SRC haskell
myManageHook :: XMonad.Query (Data.Monoid.Endo WindowSet)
myManageHook = composeAll
-- using 'doShift ( myWorkspaces !! 7)' sends program to workspace 8!
-- I'm doing it this way because otherwise I would have to write out
-- the full name of my workspaces.
[ className =? "obs" --> doShift ( myWorkspaces !! 7 )
, title =? "firefox" --> doShift ( myWorkspaces !! 1 )
, className =? "mpv" --> doShift ( myWorkspaces !! 7 )
, className =? "vlc" --> doShift ( myWorkspaces !! 7 )
, className =? "Gimp" --> doShift ( myWorkspaces !! 8 )
, className =? "Gimp" --> doFloat
, title =? "Oracle VM VirtualBox Manager" --> doFloat
, className =? "VirtualBox Manager" --> doShift ( myWorkspaces !! 4 )
, (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
] <+> namedScratchpadManageHook myScratchPads
#+END_SRC
* LOGHOOK
Sets opacity for inactive (unfocused) windows. I prefer to not use
this feature so I've set opacity to 1.0. If you want opacity, set
this to a value of less than 1 (such as 0.9 for 90% opacity).
#+BEGIN_SRC haskell
myLogHook :: X ()
myLogHook = fadeInactiveLogHook fadeAmount
where fadeAmount = 1.0
#+END_SRC
* MAIN
This is the main of XMonad.
#+BEGIN_SRC haskell
main :: IO ()
main = do
-- Launching three instances of xmobar on their monitors.
xmproc0 <- spawnPipe "xmobar -x 0 /home/dt/.config/xmobar/xmobarrc0"
xmproc1 <- spawnPipe "xmobar -x 1 /home/dt/.config/xmobar/xmobarrc2"
xmproc2 <- spawnPipe "xmobar -x 2 /home/dt/.config/xmobar/xmobarrc1"
-- the xmonad, ya know...what the WM is named after!
xmonad $ ewmh def
{ manageHook = ( isFullscreen --> doFullFloat ) <+> myManageHook <+> manageDocks
-- Run xmonad commands from command line with "xmonadctl command". Commands include:
-- shrink, expand, next-layout, default-layout, restart-wm, xterm, kill, refresh, run,
-- focus-up, focus-down, swap-up, swap-down, swap-master, sink, quit-wm. You can run
-- "xmonadctl 0" to generate full list of commands written to ~/.xsession-errors.
, handleEventHook = serverModeEventHookCmd
<+> serverModeEventHook
<+> serverModeEventHookF "XMONAD_PRINT" (io . putStrLn)
<+> docksEventHook
, modMask = myModMask
, terminal = myTerminal
, startupHook = myStartupHook
, layoutHook = myLayoutHook
, workspaces = myWorkspaces
, borderWidth = myBorderWidth
, normalBorderColor = myNormColor
, focusedBorderColor = myFocusColor
, logHook = workspaceHistoryHook <+> myLogHook <+> dynamicLogWithPP xmobarPP
{ ppOutput = \x -> hPutStrLn xmproc0 x >> hPutStrLn xmproc1 x >> hPutStrLn xmproc2 x
, ppCurrent = xmobarColor "#c3e88d" "" . wrap "[" "]" -- Current workspace in xmobar
, ppVisible = xmobarColor "#c3e88d" "" -- Visible but not current workspace
, ppHidden = xmobarColor "#82AAFF" "" . wrap "*" "" -- Hidden workspaces in xmobar
, ppHiddenNoWindows = xmobarColor "#c792ea" "" -- Hidden workspaces (no windows)
, ppTitle = xmobarColor "#b3afc2" "" . shorten 60 -- Title of active window in xmobar
, ppSep = "<fc=#666666> <fn=2>|</fn> </fc>" -- Separators in xmobar
, ppUrgent = xmobarColor "#C45500" "" . wrap "!" "!" -- Urgent workspace
, ppExtras = [windowCount] -- # of windows current workspace
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]
}
} `additionalKeysP` myKeys
#+END_SRC

View file

@ -1,23 +1,3 @@
-- Xmonad is a dynamically tiling X11 window manager that is written and
-- configured in Haskell. Official documentation: https://xmonad.org
-- This is the xmonad configuration of Derek Taylor (DistroTube)
-- My YouTube: http://www.youtube.com/c/DistroTube
-- My GitLab: http://www.gitlab.com/dwt1/
-- This config was getting massively long, so I have made this a modular
-- config that sources multiple config files. Look under the imports for
-- "Custom" modules. Those are my config files and they can be found in:
-- ~/.xmonad/lib/Custom
-- Keep in mind, that my configs are purposely bloated with examples of
-- what you can do with xmonad. It is written more as a study guide rather
-- than a config that you should download and use.
------------------------------------------------------------------------
-- IMPORTS
------------------------------------------------------------------------
-- Custom (my personal configs)
import Custom.MyGridMenu
import Custom.MyKeys
@ -49,9 +29,6 @@ import XMonad.Util.NamedScratchpad
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
import XMonad.Util.SpawnOnce
------------------------------------------------------------------------
-- AUTOSTART
------------------------------------------------------------------------
myStartupHook :: X ()
myStartupHook = do
spawnOnce "nitrogen --restore &"
@ -63,15 +40,6 @@ myStartupHook = do
-- spawnOnce "kak -d -s mysession &"
setWMName "LG3D"
------------------------------------------------------------------------
-- WORKSPACES
------------------------------------------------------------------------
-- My workspaces are clickable meaning that the mouse can be used to switch
-- workspaces. This requires xdotool. You need to use UnsafeStdInReader instead
-- of simply StdInReader in xmobar config so you can pass actions to it. Also,
-- you will notice I add <fn> tags to the clickable workspaces to select from
-- the additionalFonts that I have set in my xmobar configs.
xmobarEscape :: String -> String
xmobarEscape = concatMap doubleLts
where
@ -87,15 +55,6 @@ myWorkspaces = clickable . (map xmobarEscape)
(i,ws) <- zip [1..9] l,
let n = i ]
------------------------------------------------------------------------
-- MANAGEHOOK
------------------------------------------------------------------------
-- Sets some rules for certain programs. Examples include forcing certain
-- programs to always float, or to always appear on a certain workspace.
-- Forcing programs to a certain workspace with a doShift requires xdotool
-- if you are using clickable workspaces. You need the className or title
-- of the program. Use xprop to get this info.
myManageHook :: XMonad.Query (Data.Monoid.Endo WindowSet)
myManageHook = composeAll
-- using 'doShift ( myWorkspaces !! 7)' sends program to workspace 8!
@ -112,19 +71,10 @@ myManageHook = composeAll
, (className =? "firefox" <&&> resource =? "Dialog") --> doFloat -- Float Firefox Dialog
] <+> namedScratchpadManageHook myScratchPads
------------------------------------------------------------------------
-- LOGHOOK
------------------------------------------------------------------------
-- Sets opacity for inactive (unfocused) windows. I prefer to not use
-- this feature so I've set opacity to 1.0. If you want opacity, set
-- this to a value of less than 1 (such as 0.9 for 90% opacity).
myLogHook :: X ()
myLogHook = fadeInactiveLogHook fadeAmount
where fadeAmount = 1.0
------------------------------------------------------------------------
-- MAIN
------------------------------------------------------------------------
main :: IO ()
main = do
-- Launching three instances of xmobar on their monitors.