mirror of
https://gitlab.com/dwt1/dotfiles.git
synced 2026-04-22 11:00:27 +10:00
Some minor edits.
This commit is contained in:
@@ -25,10 +25,6 @@ retain_absent_episodes = False
|
|||||||
# default: False
|
# default: False
|
||||||
disable_vertical_borders = False
|
disable_vertical_borders = False
|
||||||
|
|
||||||
# Disable the "Found x feeds with y total episodes..." default footer message.
|
|
||||||
# default: False
|
|
||||||
disable_default_status = False
|
|
||||||
|
|
||||||
# Whether to remove HTML tags from feed/episode descriptions.
|
# Whether to remove HTML tags from feed/episode descriptions.
|
||||||
# default: True
|
# default: True
|
||||||
clean_html_descriptions = True
|
clean_html_descriptions = True
|
||||||
@@ -37,6 +33,10 @@ clean_html_descriptions = True
|
|||||||
# default: False
|
# default: False
|
||||||
right_align_time = False
|
right_align_time = False
|
||||||
|
|
||||||
|
# The display refresh delay, in ms. Increase to reduce idle CPU usage.
|
||||||
|
# default: 30
|
||||||
|
refresh_delay = 30
|
||||||
|
|
||||||
# The external player to use for media playback.
|
# The external player to use for media playback.
|
||||||
# If the given player is not valid or a dependency is not met, the client will
|
# If the given player is not valid or a dependency is not met, the client will
|
||||||
# instead try to use the first valid interface.
|
# instead try to use the first valid interface.
|
||||||
@@ -45,6 +45,21 @@ right_align_time = False
|
|||||||
# default: (blank)
|
# default: (blank)
|
||||||
player =
|
player =
|
||||||
|
|
||||||
|
# The command to run when you press key_execute (default e). All instances of
|
||||||
|
# the following tokens are replaced with the corresponding episode attributes:
|
||||||
|
# {file} - the episode enclosure, usually a remote mp3 file
|
||||||
|
# {title} - the episode name
|
||||||
|
# {description} - the episode description
|
||||||
|
# {link} - the link to the episode, which is often a blog post
|
||||||
|
# {pubdate} - the publish date/time of the episode
|
||||||
|
# {copyright} - the copyright of the episode
|
||||||
|
# Most of these attributes have spaces, so you will probably want to enclose
|
||||||
|
# the token with quotations.
|
||||||
|
# For example, `firefox "{file}"` would open the file in Firefox.
|
||||||
|
# The client executes the text you enter as a shell command. Use with caution!
|
||||||
|
# default: (blank)
|
||||||
|
execute_command =
|
||||||
|
|
||||||
|
|
||||||
[feeds]
|
[feeds]
|
||||||
# Whether to reload/refresh your feeds when the client starts. Depending on how
|
# Whether to reload/refresh your feeds when the client starts. Depending on how
|
||||||
@@ -60,6 +75,11 @@ reload_on_start = False
|
|||||||
# default: (blank)
|
# default: (blank)
|
||||||
custom_download_dir =
|
custom_download_dir =
|
||||||
|
|
||||||
|
# The timeout for network requests, in seconds. The same value is used for
|
||||||
|
# connection and read timeouts.
|
||||||
|
# default: 3
|
||||||
|
request_timeout = 3
|
||||||
|
|
||||||
|
|
||||||
[colors]
|
[colors]
|
||||||
# Available colors for all fields are:
|
# Available colors for all fields are:
|
||||||
@@ -76,17 +96,28 @@ color_foreground = yellow
|
|||||||
color_background = black
|
color_background = black
|
||||||
|
|
||||||
# The foreground (text) color of selected items.
|
# The foreground (text) color of selected items.
|
||||||
# default: white
|
# default: black
|
||||||
color_foreground_alt = white
|
color_foreground_alt = white
|
||||||
|
|
||||||
# The background color of selected items.
|
# The background color of selected items.
|
||||||
# default: black
|
# default: white
|
||||||
color_background_alt = black
|
color_background_alt = black
|
||||||
|
|
||||||
# The foreground (text) color of marked items. Paired with color_background.
|
# The foreground (text) color of marked items. Paired with color_background.
|
||||||
# default: green
|
# default: green
|
||||||
color_foreground_dim = green
|
color_foreground_dim = green
|
||||||
|
|
||||||
|
# The foreground (text) color of status lines. Paired with color_background.
|
||||||
|
# default: white
|
||||||
|
color_foreground_status = white
|
||||||
|
|
||||||
|
# The foreground (text) color of menu headings. Paired with color_background.
|
||||||
|
# default: yellow
|
||||||
|
color_foreground_heading = yellow
|
||||||
|
|
||||||
|
# The foreground (text) color of dividers. Paired with color_background.
|
||||||
|
# default: white
|
||||||
|
color_foreground_dividers = white
|
||||||
|
|
||||||
[playback]
|
[playback]
|
||||||
# The distance to move forward when pressing seek keys, in seconds.
|
# The distance to move forward when pressing seek keys, in seconds.
|
||||||
@@ -97,6 +128,10 @@ seek_distance_forward = 30
|
|||||||
# default: 10
|
# default: 10
|
||||||
seek_distance_backward = 10
|
seek_distance_backward = 10
|
||||||
|
|
||||||
|
# The default playback speed. See also the rate_increase/rate_decrease keys.
|
||||||
|
# default: 1.0
|
||||||
|
default_playback_speed = 1.0
|
||||||
|
|
||||||
|
|
||||||
[keys]
|
[keys]
|
||||||
# Keybindings for controlling the client. Entries may not be blank, but may
|
# Keybindings for controlling the client. Entries may not be blank, but may
|
||||||
@@ -168,10 +203,17 @@ key_clear = c
|
|||||||
# default: n
|
# default: n
|
||||||
key_next = n
|
key_next = n
|
||||||
|
|
||||||
|
# Execute a command on the selected episode. See also execute_command.
|
||||||
|
key_execute = e
|
||||||
|
|
||||||
# Invert the order of the menu.
|
# Invert the order of the menu.
|
||||||
# default: i
|
# default: i
|
||||||
key_invert = i
|
key_invert = i
|
||||||
|
|
||||||
|
# Filter the contents of the menu. Press again to clear the filter.
|
||||||
|
# default: /
|
||||||
|
key_filter = /
|
||||||
|
|
||||||
# Mark the episode as played/unplayed.
|
# Mark the episode as played/unplayed.
|
||||||
# default: i
|
# default: i
|
||||||
key_mark_played = m
|
key_mark_played = m
|
||||||
@@ -207,3 +249,7 @@ key_rate_increase = ]
|
|||||||
# Decrease playback speed.
|
# Decrease playback speed.
|
||||||
# default: [
|
# default: [
|
||||||
key_rate_decrease = [
|
key_rate_decrease = [
|
||||||
|
|
||||||
|
# Show episode URL.
|
||||||
|
# default: u
|
||||||
|
key_show_url = u
|
||||||
|
|||||||
@@ -37,5 +37,5 @@ Config { font = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=t
|
|||||||
]
|
]
|
||||||
, sepChar = "%"
|
, sepChar = "%"
|
||||||
, alignSep = "}{"
|
, alignSep = "}{"
|
||||||
, template = " <icon=haskell_20.xpm/> <fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666><fn=2>|</fn> </fc><fc=#b3afc2><fn=1></fn> %uname% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FFB86C> %cpu% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FF5555> %memory% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#82AAFF> %disku% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#c3e88d> %enp6s0% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#e1acff><fn=1></fn> %pacupdate%</fc><fc=#666666> <fn=2>|</fn></fc> <fc=#8BE9FD> %date% </fc>"
|
, template = " <action=`xdotool key control+alt+t`><icon=haskell_20.xpm/> </action><fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666><fn=2>|</fn> </fc><fc=#b3afc2><fn=1></fn> %uname% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FFB86C> %cpu% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FF5555> %memory% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#82AAFF> %disku% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#c3e88d> %enp6s0% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#e1acff><fn=1></fn> %pacupdate%</fc><fc=#666666> <fn=2>|</fn></fc> <fc=#8BE9FD> %date% </fc>"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,5 +37,5 @@ Config { font = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=t
|
|||||||
]
|
]
|
||||||
, sepChar = "%"
|
, sepChar = "%"
|
||||||
, alignSep = "}{"
|
, alignSep = "}{"
|
||||||
, template = " <icon=haskell_20.xpm/> <fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666><fn=2>|</fn> </fc><fc=#b3afc2><fn=1></fn> %uname% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FFB86C> %cpu% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FF5555> %memory% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#82AAFF> %disku% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#c3e88d> %enp6s0% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#e1acff><fn=1></fn> %pacupdate%</fc><fc=#666666> <fn=2>|</fn></fc> <fc=#8BE9FD> %date% </fc>"
|
, template = " <action=`xdotool key control+alt+t`><icon=haskell_20.xpm/> </action><fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666><fn=2>|</fn> </fc><fc=#b3afc2><fn=1></fn> %uname% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FFB86C> %cpu% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FF5555> %memory% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#82AAFF> %disku% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#c3e88d> %enp6s0% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#e1acff><fn=1></fn> %pacupdate%</fc><fc=#666666> <fn=2>|</fn></fc> <fc=#8BE9FD> %date% </fc>"
|
||||||
}
|
}
|
||||||
@@ -39,5 +39,5 @@ Config { font = "xft:Ubuntu:weight=bold:pixelsize=11:antialias=true:hinting=t
|
|||||||
]
|
]
|
||||||
, sepChar = "%"
|
, sepChar = "%"
|
||||||
, alignSep = "}{"
|
, alignSep = "}{"
|
||||||
, template = " <icon=haskell_20.xpm/> <fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666><fn=2>|</fn> </fc><fc=#b3afc2><fn=1></fn> %uname% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FFB86C> %cpu% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FF5555> %memory% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#82AAFF> %disku% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#c3e88d> %enp6s0% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#e1acff><fn=1></fn> %pacupdate%</fc><fc=#666666> <fn=2>|</fn></fc> <fc=#8BE9FD> %date% </fc><fc=#666666><fn=2>|</fn></fc>%trayerpad%"
|
, template = " <action=`xdotool key control+alt+t`><icon=haskell_20.xpm/> </action><fc=#666666> |</fc> %UnsafeStdinReader% }{ <fc=#666666><fn=2>|</fn> </fc><fc=#b3afc2><fn=1></fn> %uname% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FFB86C> %cpu% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#FF5555> %memory% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#82AAFF> %disku% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#c3e88d> %enp6s0% </fc><fc=#666666> <fn=2>|</fn></fc> <fc=#e1acff><fn=1></fn> %pacupdate%</fc><fc=#666666> <fn=2>|</fn></fc> <fc=#8BE9FD> %date% </fc><fc=#666666><fn=2>|</fn></fc>%trayerpad%"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,8 @@
|
|||||||
|
|
||||||
(setq mastodon-instance-url "https://mastodon.technology")
|
(setq mastodon-instance-url "https://mastodon.technology")
|
||||||
|
|
||||||
|
(setq md4rd-subs-active '(archlinux commandline DistroTube DoomEmacs emacs freesoftware lbry linux linux4noobs linuxmasterrace linnuxquestions orgmode qutebrowser suckless Ubuntu unixporn UsabilityPorn vim xmonad))
|
||||||
|
|
||||||
(custom-set-variables
|
(custom-set-variables
|
||||||
'(elfeed-feeds
|
'(elfeed-feeds
|
||||||
(quote
|
(quote
|
||||||
|
|||||||
@@ -124,6 +124,10 @@ Image previews in dired
|
|||||||
(setq mastodon-instance-url "https://mastodon.technology")
|
(setq mastodon-instance-url "https://mastodon.technology")
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq md4rd-subs-active '(archlinux commandline DistroTube DoomEmacs emacs freesoftware lbry linux linux4noobs linuxmasterrace linnuxquestions orgmode qutebrowser suckless Ubuntu unixporn UsabilityPorn vim xmonad))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(custom-set-variables
|
(custom-set-variables
|
||||||
'(elfeed-feeds
|
'(elfeed-feeds
|
||||||
|
|||||||
@@ -54,3 +54,6 @@
|
|||||||
(package! emojify)
|
(package! emojify)
|
||||||
(package! elfeed)
|
(package! elfeed)
|
||||||
(package! peep-dired)
|
(package! peep-dired)
|
||||||
|
(package! tldr)
|
||||||
|
(package! treemacs)
|
||||||
|
(package! md4rd)
|
||||||
|
|||||||
@@ -5,38 +5,30 @@
|
|||||||
-- My YouTube: http://www.youtube.com/c/DistroTube
|
-- My YouTube: http://www.youtube.com/c/DistroTube
|
||||||
-- My GitLab: http://www.gitlab.com/dwt1/
|
-- My GitLab: http://www.gitlab.com/dwt1/
|
||||||
|
|
||||||
-- This config is massively long. It is purposely bloated with a ton of
|
-- This config was getting massively long, so I have made this a modular
|
||||||
-- examples of what you can do with xmonad. It is written more as a
|
-- config that sources multiple config files. Look under the imports for
|
||||||
-- study guide rather than a config that you should download and use.
|
-- "Custom" modules. Those are my config files. Keep in mind, that my
|
||||||
|
-- configs are purposely bloated with a ton of 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
|
-- IMPORTS
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
-- Custom (my personal configs)
|
||||||
|
import Custom.MyGridMenu
|
||||||
|
import Custom.MyKeys
|
||||||
|
import Custom.MyPrompts
|
||||||
|
import Custom.MyScratchpads
|
||||||
|
import Custom.MyTreeMenu
|
||||||
|
import Custom.MyVariables
|
||||||
|
|
||||||
-- Base
|
-- Base
|
||||||
import XMonad
|
import XMonad
|
||||||
import System.IO (hPutStrLn)
|
|
||||||
import System.Exit (exitSuccess)
|
|
||||||
import qualified XMonad.StackSet as W
|
|
||||||
|
|
||||||
-- Actions
|
|
||||||
import XMonad.Actions.CopyWindow (kill1, killAllOtherCopies)
|
|
||||||
import XMonad.Actions.CycleWS (moveTo, shiftTo, WSType(..), nextScreen, prevScreen)
|
|
||||||
import XMonad.Actions.GridSelect
|
|
||||||
import XMonad.Actions.MouseResize
|
|
||||||
import XMonad.Actions.Promote
|
|
||||||
import XMonad.Actions.RotSlaves (rotSlavesDown, rotAllDown)
|
|
||||||
import qualified XMonad.Actions.TreeSelect as TS
|
|
||||||
import XMonad.Actions.WindowGo (runOrRaise)
|
|
||||||
import XMonad.Actions.WithAll (sinkAll, killAll)
|
|
||||||
import qualified XMonad.Actions.Search as S
|
|
||||||
|
|
||||||
-- Data
|
|
||||||
import Data.Char (isSpace)
|
|
||||||
import Data.Monoid
|
import Data.Monoid
|
||||||
import Data.Maybe (isJust)
|
import System.IO (hPutStrLn)
|
||||||
import Data.Tree
|
import XMonad.Actions.MouseResize
|
||||||
import qualified Data.Tuple.Extra as TE
|
|
||||||
import qualified Data.Map as M
|
|
||||||
|
|
||||||
-- Hooks
|
-- Hooks
|
||||||
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
|
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
|
||||||
@@ -68,18 +60,6 @@ import XMonad.Layout.ShowWName
|
|||||||
import XMonad.Layout.Spacing
|
import XMonad.Layout.Spacing
|
||||||
import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..))
|
import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..))
|
||||||
import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(Toggle))
|
import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(Toggle))
|
||||||
import qualified XMonad.Layout.MultiToggle as MT (Toggle(..))
|
|
||||||
|
|
||||||
-- Prompt
|
|
||||||
import XMonad.Prompt
|
|
||||||
import XMonad.Prompt.Input
|
|
||||||
import XMonad.Prompt.FuzzyMatch
|
|
||||||
import XMonad.Prompt.Man
|
|
||||||
import XMonad.Prompt.Pass
|
|
||||||
import XMonad.Prompt.Shell (shellPrompt)
|
|
||||||
import XMonad.Prompt.Ssh
|
|
||||||
import XMonad.Prompt.XMonad
|
|
||||||
import Control.Arrow (first)
|
|
||||||
|
|
||||||
-- Utilities
|
-- Utilities
|
||||||
import XMonad.Util.EZConfig (additionalKeysP)
|
import XMonad.Util.EZConfig (additionalKeysP)
|
||||||
@@ -87,44 +67,6 @@ import XMonad.Util.NamedScratchpad
|
|||||||
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
|
import XMonad.Util.Run (runProcessWithInput, safeSpawn, spawnPipe)
|
||||||
import XMonad.Util.SpawnOnce
|
import XMonad.Util.SpawnOnce
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- VARIABLES
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- It's nice to assign values to stuff that you will use more than once
|
|
||||||
-- in the config. Setting values for things like font, terminal and editor
|
|
||||||
-- means you only have to change the value here to make changes globally.
|
|
||||||
myFont :: String
|
|
||||||
myFont = "xft:Mononoki Nerd Font:bold:size=9:antialias=true:hinting=true"
|
|
||||||
|
|
||||||
myModMask :: KeyMask
|
|
||||||
myModMask = mod4Mask -- Sets modkey to super/windows key
|
|
||||||
|
|
||||||
myTerminal :: String
|
|
||||||
myTerminal = "alacritty" -- Sets default terminal
|
|
||||||
|
|
||||||
myBrowser :: String
|
|
||||||
myBrowser = "qutebrowser " -- Sets firefox as browser for tree select
|
|
||||||
-- myBrowser = myTerminal ++ " -e lynx " -- Sets lynx as browser for tree select
|
|
||||||
|
|
||||||
myEditor :: String
|
|
||||||
myEditor = "emacsclient -c -a emacs " -- Sets emacs as editor for tree select
|
|
||||||
-- myEditor = myTerminal ++ " -e vim " -- Sets vim as editor for tree select
|
|
||||||
|
|
||||||
myBorderWidth :: Dimension
|
|
||||||
myBorderWidth = 2 -- Sets border width for windows
|
|
||||||
|
|
||||||
myNormColor :: String
|
|
||||||
myNormColor = "#292d3e" -- Border color of normal windows
|
|
||||||
|
|
||||||
myFocusColor :: String
|
|
||||||
myFocusColor = "#bbc5ff" -- Border color of focused windows
|
|
||||||
|
|
||||||
altMask :: KeyMask
|
|
||||||
altMask = mod1Mask -- Setting this for use in xprompts
|
|
||||||
|
|
||||||
windowCount :: X (Maybe String)
|
|
||||||
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- AUTOSTART
|
-- AUTOSTART
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
@@ -140,61 +82,12 @@ myStartupHook = do
|
|||||||
setWMName "LG3D"
|
setWMName "LG3D"
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- GRID SELECT
|
-- MENUS FOR GRIDSELECT AND TREESELECT
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- GridSelect displays items (programs, open windows, etc.) in a 2D grid
|
|
||||||
-- and lets the user select from it with the cursor/hjkl keys or the mouse.
|
|
||||||
myColorizer :: Window -> Bool -> X (String, String)
|
|
||||||
myColorizer = colorRangeFromClassName
|
|
||||||
(0x29,0x2d,0x3e) -- lowest inactive bg
|
|
||||||
(0x29,0x2d,0x3e) -- highest inactive bg
|
|
||||||
(0xc7,0x92,0xea) -- active bg
|
|
||||||
(0xc0,0xa7,0x9a) -- inactive fg
|
|
||||||
(0x29,0x2d,0x3e) -- active fg
|
|
||||||
|
|
||||||
-- gridSelect menu layout
|
|
||||||
mygridConfig :: p -> GSConfig Window
|
|
||||||
mygridConfig colorizer = (buildDefaultGSConfig myColorizer)
|
|
||||||
{ gs_cellheight = 40
|
|
||||||
, gs_cellwidth = 200
|
|
||||||
, gs_cellpadding = 6
|
|
||||||
, gs_originFractX = 0.5
|
|
||||||
, gs_originFractY = 0.5
|
|
||||||
, gs_font = myFont
|
|
||||||
}
|
|
||||||
|
|
||||||
spawnSelected' :: [(String, String)] -> X ()
|
|
||||||
spawnSelected' lst = gridselect conf lst >>= flip whenJust spawn
|
|
||||||
where conf = def
|
|
||||||
{ gs_cellheight = 40
|
|
||||||
, gs_cellwidth = 200
|
|
||||||
, gs_cellpadding = 6
|
|
||||||
, gs_originFractX = 0.5
|
|
||||||
, gs_originFractY = 0.5
|
|
||||||
, gs_font = myFont
|
|
||||||
}
|
|
||||||
|
|
||||||
-- The lists below are actually 3-tuples for use with gridSelect and treeSelect.
|
-- The lists below are actually 3-tuples for use with gridSelect and treeSelect.
|
||||||
-- TreeSelect uses all three values in the 3-tuples but GridSelect only needs first
|
-- TreeSelect uses all three values in the 3-tuples but GridSelect only needs first
|
||||||
-- two values in each list (see myAppGrid, myBookmarkGrid and myConfigGrid below).
|
-- two values in each list (see myAppGrid, myBookmarkGrid and myConfigGrid below).
|
||||||
myApplications :: [(String, String, String)]
|
|
||||||
myApplications = [ ("Audacity", "audacity", "Graphical cross-platform audio eidtor")
|
|
||||||
, ("Deadbeef", "deadbeef", "Lightweight GUI audio player")
|
|
||||||
, ("Emacs", "emacs", "Much more than a text editor")
|
|
||||||
, ("Firefox", "firefox", "The famous open source web browser")
|
|
||||||
, ("Geany", "geany", "A nice text editor")
|
|
||||||
, ("Geary", "geary", "Email client that is attractive")
|
|
||||||
, ("Gimp", "gimp", "Open source alternative to Photoshop")
|
|
||||||
, ("Kdenlive", "kdenlive", "A great open source video editor")
|
|
||||||
, ("LibreOffice Impress", "loimpress", "For making presentations")
|
|
||||||
, ("LibreOffice Writer", "lowriter", "A fully featured word processor")
|
|
||||||
, ("OBS", "obs", "Open broadcaster software")
|
|
||||||
, ("PCManFM", "pcmanfm", "Lightweight graphical file manager")
|
|
||||||
, ("Simple Terminal", "st", "Suckless simple terminal")
|
|
||||||
, ("Steam", "steam", "Proprietary gaming platform")
|
|
||||||
, ("Surf Browser", "surf suckless.org", "Suckless surf web browser")
|
|
||||||
, ("Xonotic", "xonotic-glx", "A fast-paced first person shooter")
|
|
||||||
]
|
|
||||||
|
|
||||||
myBookmarks :: [(String, String, String)]
|
myBookmarks :: [(String, String, String)]
|
||||||
myBookmarks = [ ("DistroTube.com", myBrowser ++ "https://www.distrotube.com", "Official website for DistroTube")
|
myBookmarks = [ ("DistroTube.com", myBrowser ++ "https://www.distrotube.com", "Official website for DistroTube")
|
||||||
@@ -211,236 +104,6 @@ myBookmarks = [ ("DistroTube.com", myBrowser ++ "https://www.distrotube.com", "O
|
|||||||
, ("YouTube", myBrowser ++ "https://www.youtube.com/c/DistroTube?view_as=subscriber", "DT on YouTube")
|
, ("YouTube", myBrowser ++ "https://www.youtube.com/c/DistroTube?view_as=subscriber", "DT on YouTube")
|
||||||
]
|
]
|
||||||
|
|
||||||
myConfigs :: [(String, String, String)]
|
|
||||||
myConfigs = [ ("bashrc", myEditor ++ "/home/dt/.bashrc", "the bourne again shell")
|
|
||||||
, ("doom emacs config.el", myEditor ++ "/home/dt/.doom.d/config.el", "doom emacs config")
|
|
||||||
, ("doom emacs init.el", myEditor ++ "/home/dt/.doom.d/init.el", "doom emacs init")
|
|
||||||
, ("dwm", myEditor ++ "/home/dt/dwm-distrotube/config.h", "dwm config file")
|
|
||||||
, ("qtile", myEditor ++ "/home/dt/.config/qtile/config.py", "qtile config")
|
|
||||||
, ("xmonad.hs", myEditor ++ "/home/dt/.xmonad/xmonad.hs", "xmonad config")
|
|
||||||
, ("zshrc", myEditor ++ "/home/dt/.zshrc", "config for the z shell")
|
|
||||||
]
|
|
||||||
|
|
||||||
-- Let's take myApplications, myBookmarks and myConfigs and take only
|
|
||||||
-- the first two values from those 3-tuples (for GridSelect).
|
|
||||||
myAppGrid :: [(String, String)]
|
|
||||||
myAppGrid = [ (a,b) | (a,b,c) <- xs]
|
|
||||||
where xs = myApplications
|
|
||||||
|
|
||||||
myBookmarkGrid :: [(String, String)]
|
|
||||||
myBookmarkGrid = [ (a,b) | (a,b,c) <- xs]
|
|
||||||
where xs = myBookmarks
|
|
||||||
|
|
||||||
myConfigGrid :: [(String, String)]
|
|
||||||
myConfigGrid = [ (a,b) | (a,b,c) <- xs]
|
|
||||||
where xs = myConfigs
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- TREE SELECT
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- TreeSelect displays your workspaces or actions in a Tree-like format.
|
|
||||||
-- You can select desired workspace/action with the cursor or hjkl keys.
|
|
||||||
|
|
||||||
treeselectAction :: TS.TSConfig (X ()) -> X ()
|
|
||||||
treeselectAction a = TS.treeselectAction a
|
|
||||||
[ Node (TS.TSNode "applications" "a list of programs I use often" (return ()))
|
|
||||||
[Node (TS.TSNode (TE.fst3 $ myApplications !! n)
|
|
||||||
(TE.thd3 $ myApplications !! n)
|
|
||||||
(spawn $ TE.snd3 $ myApplications !! n)
|
|
||||||
) [] | n <- [0..(length myApplications - 1)]
|
|
||||||
]
|
|
||||||
, Node (TS.TSNode "bookmarks" "a list of web bookmarks" (return ()))
|
|
||||||
[Node (TS.TSNode(TE.fst3 $ myBookmarks !! n)
|
|
||||||
(TE.thd3 $ myBookmarks !! n)
|
|
||||||
(spawn $ TE.snd3 $ myBookmarks !! n)
|
|
||||||
) [] | n <- [0..(length myBookmarks - 1)]
|
|
||||||
]
|
|
||||||
, Node (TS.TSNode "config files" "config files that edit often" (return ()))
|
|
||||||
[Node (TS.TSNode (TE.fst3 $ myConfigs !! n)
|
|
||||||
(TE.thd3 $ myConfigs !! n)
|
|
||||||
(spawn $ TE.snd3 $ myConfigs !! n)
|
|
||||||
) [] | n <- [0..(length myConfigs - 1)]
|
|
||||||
]
|
|
||||||
]
|
|
||||||
|
|
||||||
-- Configuration options for treeSelect
|
|
||||||
tsDefaultConfig :: TS.TSConfig a
|
|
||||||
tsDefaultConfig = TS.TSConfig { TS.ts_hidechildren = True
|
|
||||||
, TS.ts_background = 0xdd292d3e
|
|
||||||
, TS.ts_font = myFont
|
|
||||||
, TS.ts_node = (0xffd0d0d0, 0xff202331)
|
|
||||||
, TS.ts_nodealt = (0xffd0d0d0, 0xff292d3e)
|
|
||||||
, TS.ts_highlight = (0xffffffff, 0xff755999)
|
|
||||||
, TS.ts_extra = 0xffd0d0d0
|
|
||||||
, TS.ts_node_width = 200
|
|
||||||
, TS.ts_node_height = 20
|
|
||||||
, TS.ts_originX = 0
|
|
||||||
, TS.ts_originY = 0
|
|
||||||
, TS.ts_indent = 80
|
|
||||||
, TS.ts_navigate = myTreeNavigation
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Keybindings for treeSelect menus. Use h-j-k-l to navigate.
|
|
||||||
-- Use 'o' and 'i' to move forward/back in the workspace history.
|
|
||||||
-- Single KEY's are for top-level nodes. SUPER+KEY are for the
|
|
||||||
-- second-level nodes. SUPER+ALT+KEY are third-level nodes.
|
|
||||||
myTreeNavigation = M.fromList
|
|
||||||
[ ((0, xK_Escape), TS.cancel)
|
|
||||||
, ((0, xK_Return), TS.select)
|
|
||||||
, ((0, xK_space), TS.select)
|
|
||||||
, ((0, xK_Up), TS.movePrev)
|
|
||||||
, ((0, xK_Down), TS.moveNext)
|
|
||||||
, ((0, xK_Left), TS.moveParent)
|
|
||||||
, ((0, xK_Right), TS.moveChild)
|
|
||||||
, ((0, xK_k), TS.movePrev)
|
|
||||||
, ((0, xK_j), TS.moveNext)
|
|
||||||
, ((0, xK_h), TS.moveParent)
|
|
||||||
, ((0, xK_l), TS.moveChild)
|
|
||||||
, ((0, xK_o), TS.moveHistBack)
|
|
||||||
, ((0, xK_i), TS.moveHistForward)
|
|
||||||
]
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- XPROMPT SETTINGS
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
dtXPConfig :: XPConfig
|
|
||||||
dtXPConfig = def
|
|
||||||
{ font = myFont
|
|
||||||
, bgColor = "#292d3e"
|
|
||||||
, fgColor = "#d0d0d0"
|
|
||||||
, bgHLight = "#c792ea"
|
|
||||||
, fgHLight = "#000000"
|
|
||||||
, borderColor = "#535974"
|
|
||||||
, promptBorderWidth = 0
|
|
||||||
, promptKeymap = dtXPKeymap
|
|
||||||
, position = Top
|
|
||||||
-- , position = CenteredAt { xpCenterY = 0.3, xpWidth = 0.3 }
|
|
||||||
, height = 20
|
|
||||||
, historySize = 256
|
|
||||||
, historyFilter = id
|
|
||||||
, defaultText = []
|
|
||||||
, autoComplete = Just 100000 -- set Just 100000 for .1 sec
|
|
||||||
, showCompletionOnTab = False
|
|
||||||
-- , searchPredicate = isPrefixOf
|
|
||||||
, searchPredicate = fuzzyMatch
|
|
||||||
, alwaysHighlight = True
|
|
||||||
, maxComplRows = Nothing -- set to Just 5 for 5 rows
|
|
||||||
}
|
|
||||||
|
|
||||||
-- The same config above minus the autocomplete feature which is annoying
|
|
||||||
-- on certain Xprompts, like the search engine prompts.
|
|
||||||
dtXPConfig' :: XPConfig
|
|
||||||
dtXPConfig' = dtXPConfig
|
|
||||||
{ autoComplete = Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
-- A list of all of the standard Xmonad prompts and a key press assigned to them.
|
|
||||||
-- These are used in conjunction with keybinding I set later in the config.
|
|
||||||
promptList :: [(String, XPConfig -> X ())]
|
|
||||||
promptList = [ ("m", manPrompt) -- manpages prompt
|
|
||||||
, ("p", passPrompt) -- get passwords (requires 'pass')
|
|
||||||
, ("g", passGeneratePrompt) -- generate passwords (requires 'pass')
|
|
||||||
, ("r", passRemovePrompt) -- remove passwords (requires 'pass')
|
|
||||||
, ("s", sshPrompt) -- ssh prompt
|
|
||||||
, ("x", xmonadPrompt) -- xmonad prompt
|
|
||||||
]
|
|
||||||
|
|
||||||
-- Same as the above list except this is for my custom prompts.
|
|
||||||
promptList' :: [(String, XPConfig -> String -> X (), String)]
|
|
||||||
promptList' = [ ("c", calcPrompt, "qalc") -- requires qalculate-gtk
|
|
||||||
]
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- CUSTOM PROMPTS
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- calcPrompt requires a cli calculator called qalcualte-gtk.
|
|
||||||
-- You could use this as a template for other custom prompts that
|
|
||||||
-- use command line programs that return a single line of output.
|
|
||||||
calcPrompt :: XPConfig -> String -> X ()
|
|
||||||
calcPrompt c ans =
|
|
||||||
inputPrompt c (trim ans) ?+ \input ->
|
|
||||||
liftIO(runProcessWithInput "qalc" [input] "") >>= calcPrompt c
|
|
||||||
where
|
|
||||||
trim = f . f
|
|
||||||
where f = reverse . dropWhile isSpace
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- XPROMPT KEYMAP (emacs-like key bindings for xprompts)
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
dtXPKeymap :: M.Map (KeyMask,KeySym) (XP ())
|
|
||||||
dtXPKeymap = M.fromList $
|
|
||||||
map (first $ (,) controlMask) -- control + <key>
|
|
||||||
[ (xK_z, killBefore) -- kill line backwards
|
|
||||||
, (xK_k, killAfter) -- kill line forwards
|
|
||||||
, (xK_a, startOfLine) -- move to the beginning of the line
|
|
||||||
, (xK_e, endOfLine) -- move to the end of the line
|
|
||||||
, (xK_m, deleteString Next) -- delete a character foward
|
|
||||||
, (xK_b, moveCursor Prev) -- move cursor forward
|
|
||||||
, (xK_f, moveCursor Next) -- move cursor backward
|
|
||||||
, (xK_BackSpace, killWord Prev) -- kill the previous word
|
|
||||||
, (xK_y, pasteString) -- paste a string
|
|
||||||
, (xK_g, quit) -- quit out of prompt
|
|
||||||
, (xK_bracketleft, quit)
|
|
||||||
]
|
|
||||||
++
|
|
||||||
map (first $ (,) altMask) -- meta key + <key>
|
|
||||||
[ (xK_BackSpace, killWord Prev) -- kill the prev word
|
|
||||||
, (xK_f, moveWord Next) -- move a word forward
|
|
||||||
, (xK_b, moveWord Prev) -- move a word backward
|
|
||||||
, (xK_d, killWord Next) -- kill the next word
|
|
||||||
, (xK_n, moveHistory W.focusUp') -- move up thru history
|
|
||||||
, (xK_p, moveHistory W.focusDown') -- move down thru history
|
|
||||||
]
|
|
||||||
++
|
|
||||||
map (first $ (,) 0) -- <key>
|
|
||||||
[ (xK_Return, setSuccess True >> setDone True)
|
|
||||||
, (xK_KP_Enter, setSuccess True >> setDone True)
|
|
||||||
, (xK_BackSpace, deleteString Prev)
|
|
||||||
, (xK_Delete, deleteString Next)
|
|
||||||
, (xK_Left, moveCursor Prev)
|
|
||||||
, (xK_Right, moveCursor Next)
|
|
||||||
, (xK_Home, startOfLine)
|
|
||||||
, (xK_End, endOfLine)
|
|
||||||
, (xK_Down, moveHistory W.focusUp')
|
|
||||||
, (xK_Up, moveHistory W.focusDown')
|
|
||||||
, (xK_Escape, quit)
|
|
||||||
]
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- SEARCH ENGINES
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- Xmonad has several search engines available to use located in
|
|
||||||
-- XMonad.Actions.Search. Additionally, you can add other search engines
|
|
||||||
-- such as those listed below.
|
|
||||||
archwiki, ebay, news, reddit, urban :: S.SearchEngine
|
|
||||||
|
|
||||||
archwiki = S.searchEngine "archwiki" "https://wiki.archlinux.org/index.php?search="
|
|
||||||
ebay = S.searchEngine "ebay" "https://www.ebay.com/sch/i.html?_nkw="
|
|
||||||
news = S.searchEngine "news" "https://news.google.com/search?q="
|
|
||||||
reddit = S.searchEngine "reddit" "https://www.reddit.com/search/?q="
|
|
||||||
urban = S.searchEngine "urban" "https://www.urbandictionary.com/define.php?term="
|
|
||||||
|
|
||||||
-- This is the list of search engines that I want to use. Some are from
|
|
||||||
-- XMonad.Actions.Search, and some are the ones that I added above.
|
|
||||||
searchList :: [(String, S.SearchEngine)]
|
|
||||||
searchList = [ ("a", archwiki)
|
|
||||||
, ("d", S.duckduckgo)
|
|
||||||
, ("e", ebay)
|
|
||||||
, ("g", S.google)
|
|
||||||
, ("h", S.hoogle)
|
|
||||||
, ("i", S.images)
|
|
||||||
, ("n", news)
|
|
||||||
, ("r", reddit)
|
|
||||||
, ("s", S.stackage)
|
|
||||||
, ("t", S.thesaurus)
|
|
||||||
, ("v", S.vocabulary)
|
|
||||||
, ("b", S.wayback)
|
|
||||||
, ("u", urban)
|
|
||||||
, ("w", S.wikipedia)
|
|
||||||
, ("y", S.youtube)
|
|
||||||
, ("z", S.amazon)
|
|
||||||
]
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- WORKSPACES
|
-- WORKSPACES
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
@@ -584,172 +247,6 @@ myLayoutHook = avoidStruts $ mouseResize $ windowArrange $ T.toggleLayouts float
|
|||||||
-- ||| threeCol
|
-- ||| threeCol
|
||||||
-- ||| threeRow
|
-- ||| threeRow
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- SCRATCHPADS
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- Allows to have several floating scratchpads running different applications.
|
|
||||||
-- Import Util.NamedScratchpad. Bind a key to namedScratchpadSpawnAction.
|
|
||||||
myScratchPads :: [NamedScratchpad]
|
|
||||||
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
|
||||||
, NS "mocp" spawnMocp findMocp manageMocp
|
|
||||||
]
|
|
||||||
where
|
|
||||||
spawnTerm = myTerminal ++ " -n scratchpad"
|
|
||||||
findTerm = resource =? "scratchpad"
|
|
||||||
manageTerm = customFloating $ W.RationalRect l t w h
|
|
||||||
where
|
|
||||||
h = 0.9
|
|
||||||
w = 0.9
|
|
||||||
t = 0.95 -h
|
|
||||||
l = 0.95 -w
|
|
||||||
spawnMocp = myTerminal ++ " -n mocp 'mocp'"
|
|
||||||
findMocp = resource =? "mocp"
|
|
||||||
manageMocp = customFloating $ W.RationalRect l t w h
|
|
||||||
where
|
|
||||||
h = 0.9
|
|
||||||
w = 0.9
|
|
||||||
t = 0.95 -h
|
|
||||||
l = 0.95 -w
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- KEYBINDINGS
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
-- I am using the Xmonad.Util.EZConfig module which allows keybindings
|
|
||||||
-- to be written in simpler, emacs-like format.
|
|
||||||
myKeys :: [(String, X ())]
|
|
||||||
myKeys =
|
|
||||||
-- Xmonad
|
|
||||||
[ ("M-C-r", spawn "xmonad --recompile") -- Recompiles xmonad
|
|
||||||
, ("M-S-r", spawn "xmonad --restart") -- Restarts xmonad
|
|
||||||
, ("M-S-q", io exitSuccess) -- Quits xmonad
|
|
||||||
|
|
||||||
-- Open my preferred terminal
|
|
||||||
, ("M-<Return>", spawn myTerminal)
|
|
||||||
|
|
||||||
-- Run Prompt
|
|
||||||
, ("M-S-<Return>", shellPrompt dtXPConfig) -- Shell Prompt
|
|
||||||
|
|
||||||
-- Windows
|
|
||||||
, ("M-S-c", kill1) -- Kill the currently focused client
|
|
||||||
, ("M-S-a", killAll) -- Kill all windows on current workspace
|
|
||||||
|
|
||||||
-- Floating windows
|
|
||||||
, ("M-f", sendMessage (T.Toggle "floats")) -- Toggles my 'floats' layout
|
|
||||||
, ("M-<Delete>", withFocused $ windows . W.sink) -- Push floating window back to tile
|
|
||||||
, ("M-S-<Delete>", sinkAll) -- Push ALL floating windows to tile
|
|
||||||
|
|
||||||
-- Grid Select (CTRL-g followed by a key)
|
|
||||||
, ("C-g g", spawnSelected' myAppGrid) -- grid select favorite apps
|
|
||||||
, ("C-g m", spawnSelected' myBookmarkGrid) -- grid select some bookmarks
|
|
||||||
, ("C-g c", spawnSelected' myConfigGrid) -- grid select useful config files
|
|
||||||
, ("C-g t", goToSelected $ mygridConfig myColorizer) -- goto selected window
|
|
||||||
, ("C-g b", bringSelected $ mygridConfig myColorizer) -- bring selected window
|
|
||||||
|
|
||||||
-- Tree Select/
|
|
||||||
-- tree select actions menu
|
|
||||||
, ("C-t a", treeselectAction tsDefaultConfig)
|
|
||||||
|
|
||||||
-- Windows navigation
|
|
||||||
, ("M-m", windows W.focusMaster) -- Move focus to the master window
|
|
||||||
, ("M-j", windows W.focusDown) -- Move focus to the next window
|
|
||||||
, ("M-k", windows W.focusUp) -- Move focus to the prev window
|
|
||||||
--, ("M-S-m", windows W.swapMaster) -- Swap the focused window and the master window
|
|
||||||
, ("M-S-j", windows W.swapDown) -- Swap focused window with next window
|
|
||||||
, ("M-S-k", windows W.swapUp) -- Swap focused window with prev window
|
|
||||||
, ("M-<Backspace>", promote) -- Moves focused window to master, others maintain order
|
|
||||||
, ("M1-S-<Tab>", rotSlavesDown) -- Rotate all windows except master and keep focus in place
|
|
||||||
, ("M1-C-<Tab>", rotAllDown) -- Rotate all the windows in the current stack
|
|
||||||
--, ("M-S-s", windows copyToAll)
|
|
||||||
, ("M-C-s", killAllOtherCopies)
|
|
||||||
|
|
||||||
-- Layouts
|
|
||||||
, ("M-<Tab>", sendMessage NextLayout) -- Switch to next layout
|
|
||||||
, ("M-C-M1-<Up>", sendMessage Arrange)
|
|
||||||
, ("M-C-M1-<Down>", sendMessage DeArrange)
|
|
||||||
, ("M-<Space>", sendMessage (MT.Toggle NBFULL) >> sendMessage ToggleStruts) -- Toggles noborder/full
|
|
||||||
, ("M-S-<Space>", sendMessage ToggleStruts) -- Toggles struts
|
|
||||||
, ("M-S-n", sendMessage $ MT.Toggle NOBORDERS) -- Toggles noborder
|
|
||||||
, ("M-<KP_Multiply>", sendMessage (IncMasterN 1)) -- Increase number of clients in master pane
|
|
||||||
, ("M-<KP_Divide>", sendMessage (IncMasterN (-1))) -- Decrease number of clients in master pane
|
|
||||||
, ("M-S-<KP_Multiply>", increaseLimit) -- Increase number of windows
|
|
||||||
, ("M-S-<KP_Divide>", decreaseLimit) -- Decrease number of windows
|
|
||||||
|
|
||||||
, ("M-h", sendMessage Shrink) -- Shrink horiz window width
|
|
||||||
, ("M-l", sendMessage Expand) -- Expand horiz window width
|
|
||||||
, ("M-C-j", sendMessage MirrorShrink) -- Shrink vert window width
|
|
||||||
, ("M-C-k", sendMessage MirrorExpand) -- Exoand vert window width
|
|
||||||
|
|
||||||
-- Workspaces
|
|
||||||
, ("M-.", nextScreen) -- Switch focus to next monitor
|
|
||||||
, ("M-,", prevScreen) -- Switch focus to prev monitor
|
|
||||||
, ("M-S-<KP_Add>", shiftTo Next nonNSP >> moveTo Next nonNSP) -- Shifts focused window to next ws
|
|
||||||
, ("M-S-<KP_Subtract>", shiftTo Prev nonNSP >> moveTo Prev nonNSP) -- Shifts focused window to prev ws
|
|
||||||
|
|
||||||
-- Scratchpads
|
|
||||||
, ("M-C-<Return>", namedScratchpadAction myScratchPads "terminal")
|
|
||||||
, ("M-C-c", namedScratchpadAction myScratchPads "mocp")
|
|
||||||
|
|
||||||
-- Controls for mocp music player.
|
|
||||||
, ("M-u p", spawn "mocp --play")
|
|
||||||
, ("M-u l", spawn "mocp --next")
|
|
||||||
, ("M-u h", spawn "mocp --previous")
|
|
||||||
, ("M-u <Space>", spawn "mocp --toggle-pause")
|
|
||||||
|
|
||||||
-- Emacs (CTRL-e followed by a key)
|
|
||||||
, ("C-e e", spawn "emacsclient -c -a ''") -- start emacs
|
|
||||||
, ("C-e b", spawn "emacsclient -c -a '' --eval '(ibuffer)'") -- list emacs buffers
|
|
||||||
, ("C-e d", spawn "emacsclient -c -a '' --eval '(dired nil)'") -- dired emacs file manager
|
|
||||||
, ("C-e i", spawn "emacsclient -c -a '' --eval '(erc)'") -- erc emacs irc client
|
|
||||||
, ("C-e m", spawn "emacsclient -c -a '' --eval '(mu4e)'") -- mu4e emacs email client
|
|
||||||
, ("C-e n", spawn "emacsclient -c -a '' --eval '(elfeed)'") -- elfeed emacs rss client
|
|
||||||
, ("C-e s", spawn "emacsclient -c -a '' --eval '(eshell)'") -- eshell within emacs
|
|
||||||
, ("C-e t", spawn "emacsclient -c -a '' --eval '(mastodon)'") -- mastodon within emacs
|
|
||||||
, ("C-e v", spawn "emacsclient -c -a '' --eval '(+vterm/here nil)'") -- vterm within emacs
|
|
||||||
-- emms is an emacs audio player. I set it to auto start playing in a specific directory.
|
|
||||||
, ("C-e a", spawn "emacsclient -c -a '' --eval '(emms)' --eval '(emms-play-directory-tree \"~/Music/Non-Classical/70s-80s/\")'")
|
|
||||||
|
|
||||||
--- My Applications (Super+Alt+Key)
|
|
||||||
, ("M-M1-a", spawn (myTerminal ++ " -e ncpamixer"))
|
|
||||||
, ("M-M1-b", spawn "surf www.youtube.com/c/DistroTube/")
|
|
||||||
, ("M-M1-e", spawn (myTerminal ++ " -e neomutt"))
|
|
||||||
, ("M-M1-f", spawn (myTerminal ++ " -e sh ./.config/vifm/scripts/vifmrun"))
|
|
||||||
, ("M-M1-i", spawn (myTerminal ++ " -e irssi"))
|
|
||||||
, ("M-M1-j", spawn (myTerminal ++ " -e joplin"))
|
|
||||||
, ("M-M1-l", spawn (myTerminal ++ " -e lynx -cfg=~/.lynx/lynx.cfg -lss=~/.lynx/lynx.lss gopher://distro.tube"))
|
|
||||||
, ("M-M1-m", spawn (myTerminal ++ " -e mocp"))
|
|
||||||
, ("M-M1-n", spawn (myTerminal ++ " -e newsboat"))
|
|
||||||
, ("M-M1-p", spawn (myTerminal ++ " -e pianobar"))
|
|
||||||
, ("M-M1-r", spawn (myTerminal ++ " -e rtv"))
|
|
||||||
, ("M-M1-t", spawn (myTerminal ++ " -e toot curses"))
|
|
||||||
, ("M-M1-w", spawn (myTerminal ++ " -e wopr report.xml"))
|
|
||||||
, ("M-M1-y", spawn (myTerminal ++ " -e youtube-viewer"))
|
|
||||||
|
|
||||||
-- Multimedia Keys
|
|
||||||
, ("<XF86AudioPlay>", spawn "cmus toggle")
|
|
||||||
, ("<XF86AudioPrev>", spawn "cmus prev")
|
|
||||||
, ("<XF86AudioNext>", spawn "cmus next")
|
|
||||||
-- , ("<XF86AudioMute>", spawn "amixer set Master toggle") -- Bug prevents it from toggling correctly in 12.04.
|
|
||||||
, ("<XF86AudioLowerVolume>", spawn "amixer set Master 5%- unmute")
|
|
||||||
, ("<XF86AudioRaiseVolume>", spawn "amixer set Master 5%+ unmute")
|
|
||||||
, ("<XF86HomePage>", spawn "firefox")
|
|
||||||
, ("<XF86Search>", safeSpawn "firefox" ["https://www.google.com/"])
|
|
||||||
, ("<XF86Mail>", runOrRaise "geary" (resource =? "thunderbird"))
|
|
||||||
, ("<XF86Calculator>", runOrRaise "gcalctool" (resource =? "gcalctool"))
|
|
||||||
, ("<XF86Eject>", spawn "toggleeject")
|
|
||||||
, ("<Print>", spawn "scrotd 0")
|
|
||||||
]
|
|
||||||
-- Appending search engine prompts to keybindings list.
|
|
||||||
-- Look at "search engines" section of this config for values for "k".
|
|
||||||
++ [("M-s " ++ k, S.promptSearch dtXPConfig' f) | (k,f) <- searchList ]
|
|
||||||
++ [("M-S-s " ++ k, S.selectSearch f) | (k,f) <- searchList ]
|
|
||||||
-- Appending some extra xprompts to keybindings list.
|
|
||||||
-- Look at "xprompt settings" section this of config for values for "k".
|
|
||||||
++ [("M-p " ++ k, f dtXPConfig') | (k,f) <- promptList ]
|
|
||||||
++ [("M-p " ++ k, f dtXPConfig' g) | (k,f,g) <- promptList' ]
|
|
||||||
-- The following lines are needed for named scratchpads.
|
|
||||||
where nonNSP = WSIs (return (\ws -> W.tag ws /= "nsp"))
|
|
||||||
nonEmptyNonNSP = WSIs (return (\ws -> isJust (W.stack ws) && W.tag ws /= "nsp"))
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
-- MAIN
|
-- MAIN
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user