From be88ded9869ca8e009fe79f34d503cc603f5ed6d Mon Sep 17 00:00:00 2001 From: Lamisator Date: Mon, 27 Apr 2020 15:28:35 +0200 Subject: [PATCH] Initial backup --- .Xresources | 113 ++++++++++++ .vimrc | 38 ++++ .xmonad/.conky_dzen | 8 + .xmonad/fix.sh | 1 + .xmonad/nano.save | 1 + .xmonad/pkg_list.txt | 149 ++++++++++++++++ .xmonad/prompt-history | 1 + .xmonad/scripts/.wallpaper.sh.swp | Bin 0 -> 12288 bytes .xmonad/scripts/getVolume.sh | 3 + .xmonad/scripts/getdGPULoad.py | 7 + .xmonad/scripts/getdGPUStatus.sh | 10 ++ .xmonad/scripts/wallpaper.sh | 3 + .xmonad/xmobar.errors | 7 + .xmonad/xmobar.hs | 102 +++++++++++ .xmonad/xmobar.hs.bak2 | 106 +++++++++++ .xmonad/xmonad-session-rc | 34 ++++ .xmonad/xmonad-x86_64-linux | Bin 0 -> 89888 bytes .xmonad/xmonad-x86_64-linux.bak | Bin 0 -> 95000 bytes .xmonad/xmonad.errors | 23 +++ .xmonad/xmonad.hi | Bin 0 -> 4590 bytes .xmonad/xmonad.hs | 174 ++++++++++++++++++ .xmonad/xmonad.hs.bak | 31 ++++ .xmonad/xmonad.hs.bak2 | 85 +++++++++ .xmonad/xmonad.hs.bak3 | 99 +++++++++++ .xmonad/xmonad.hs.bak4 | 109 ++++++++++++ .xmonad/xmonad.hs.bak5 | 155 ++++++++++++++++ .xmonad/xmonad.hs.bak6 | 170 ++++++++++++++++++ .xmonad/xmonad.hs.bak7 | 172 ++++++++++++++++++ .xmonad/xmonad.hs.bak8 | 173 ++++++++++++++++++ .xmonad/xmonad.hs.test | 56 ++++++ .xmonad/xmonad.o | Bin 0 -> 102040 bytes .xmonad/xmonad.state.bak | 1 + .xscreensaver | 284 ++++++++++++++++++++++++++++++ .xsession | 46 +++++ 34 files changed, 2161 insertions(+) create mode 100644 .Xresources create mode 100644 .vimrc create mode 100644 .xmonad/.conky_dzen create mode 100755 .xmonad/fix.sh create mode 100644 .xmonad/nano.save create mode 100644 .xmonad/pkg_list.txt create mode 100644 .xmonad/prompt-history create mode 100644 .xmonad/scripts/.wallpaper.sh.swp create mode 100755 .xmonad/scripts/getVolume.sh create mode 100755 .xmonad/scripts/getdGPULoad.py create mode 100755 .xmonad/scripts/getdGPUStatus.sh create mode 100755 .xmonad/scripts/wallpaper.sh create mode 100644 .xmonad/xmobar.errors create mode 100644 .xmonad/xmobar.hs create mode 100644 .xmonad/xmobar.hs.bak2 create mode 100755 .xmonad/xmonad-session-rc create mode 100755 .xmonad/xmonad-x86_64-linux create mode 100755 .xmonad/xmonad-x86_64-linux.bak create mode 100644 .xmonad/xmonad.errors create mode 100644 .xmonad/xmonad.hi create mode 100644 .xmonad/xmonad.hs create mode 100644 .xmonad/xmonad.hs.bak create mode 100644 .xmonad/xmonad.hs.bak2 create mode 100644 .xmonad/xmonad.hs.bak3 create mode 100644 .xmonad/xmonad.hs.bak4 create mode 100644 .xmonad/xmonad.hs.bak5 create mode 100644 .xmonad/xmonad.hs.bak6 create mode 100644 .xmonad/xmonad.hs.bak7 create mode 100644 .xmonad/xmonad.hs.bak8 create mode 100644 .xmonad/xmonad.hs.test create mode 100644 .xmonad/xmonad.o create mode 100644 .xmonad/xmonad.state.bak create mode 100644 .xscreensaver create mode 100644 .xsession diff --git a/.Xresources b/.Xresources new file mode 100644 index 0000000..06af223 --- /dev/null +++ b/.Xresources @@ -0,0 +1,113 @@ +! URxvt settings {{{ + + +URxvt.foreground: white +URxvt.background: black + +URxvt.saveLine: 8192 + + +! URxvt*font: xft:DejaVu Sans Mono:style=Book:pixelsize=12 +! URxvt*boldFont: xft:DejaVu Sans Mono:style=Bold:pixelsize=12 +! URxvt*italicFont: xft:DejaVu Sans Mono:style=Oblique:pixelsize=12 +! URxvt*boldItalicFont: xft:DejaVu Sans Mono:style=BoldOblique:pixelsize=12 + +!URxvt*font: xft:Consolas for Powerline:regular:size=10 +!URxvt*font: xft:Droid Sans Mono for Powerline:style=Regular:pixelsize=12 +URxvt*font: xft:Inconsolata for Powerline:style=Medium:pixelsize=18 +!URxvt*font: xft:Monaco for Powerline:regular:size=10 +!URxvt*font: xft:Source Code Pro for Powerline:style=Medium,Regular:pixelsize=12 + +! URxvt*geometry: 80x27 +! URxvt*chdir: /home/simon + +! URxvt*termName: rxvt-256color +! URxvt*termName: rxvt-unicode + +URxvt*depth: 32 + +! URxvt*inheritPixmap: true +! URxvt*transparent: true +! URxvt*tintColor: #2E3434 +! URxvt*shading: 50 + +! fade text when focus is lost +! URxvt*fading: 25 +! URxvt*fadecolor: #2E3434 + +URxvt*internalBorder: 5 +URxvt*saveLines: 32767 +URxvt*loginShell: true +URxvt*cutchars: "()*,<>[]{}|" +URxvt*visualBell: true +URxvt.urgentOnBell: true + +! scrollbar style - rxvt (default), plain (most compact), next, or xterm +URxvt.scrollBar: false +URxvt.scrollBar_right: true +URxvt.scrollBar_floating: true +URxvt.scrollstyle: plain +URxvt.scrollTtyOutput: false +URxvt.scrollTtyKeypress: true +URxvt*secondaryScroll: true + +! URxvt*perl-lib: /usr/lib/urxvt/perl/ +! URxvt.perl-lib: .urxvt/ + +! perl-ext-common remplacé par perl-ext depuis v9.16 : +URxvt.perl-ext: default,matcher,searchable-scrollback,clipboard,url-select,keyboard-select + +! urlLauncher remplacé par url-launcher depuis v9.16 : +URxvt.url-launcher: firefox +! URxvt*urlLauncher: firefox +! URxvt.urlLauncher: x-www-browser + +URxvt*matcher.button: 1 +! URxvt*matcher.pattern.1: \\bwww\\.[\\w-]+\\.[\\w./?&@#-]*[\\w/-] +! Rxvt*matcher.pattern.1: \\b(gopher|mailto|http|https|ftp|file):[/]*[\\w-]\\.[\\w./?&@#-]*[\\w/-] +! Rxvt*matcher.pattern.2: \\bwww\\.[\\w-]\\.[\\w./?&@#-]*[\\w/-] + +URxvt*keysym.C-u: perl:matcher +! open and list recent (currently limited to 10) URLs via keyboard: +URxvt.keysym.C-Delete: perl:matcher:last +URxvt.keysym.M-Delete: perl:matcher:list + +! url-select +! Alt+U Enter selection mode. The last URL on your screen will be +! selected. You can repeat Alt+U to select the next upward URL. +! J/K Select next upward URL +! Return Open selected URL in browser and quit selection mode +! O Open selected URL in browser without quitting selection mode +! Y Copy (yank) selected URL and quit selection mode +! Esc Cancel URL selection mode +URxvt.url-select.launcher: /usr/bin/firefox -new-tab +URxvt.url-select.underline: true +URxvt.keysym.M-u: perl:url-select:select_next +URxvt.keysym.M-Escape: perl:keyboard-select:activate +URxvt.keysym.M-s: perl:keyboard-select:search + +URxvt*colorUL: #c5f779 +URxvt*underlineColor: #c5f779 +URxvt.colorBD: #ffffff +URxvt.colorIT: #bbbbbb +URxvt*cursorUnderline: false +! URxvt.cursorColor: #ffbb00 +! URxvt.borderColor: #191919 +! urxvt*.colorUL: #ffffff + +! URxvt.keysym.M-C-KP_0: command:\033]710;xft: Deja Vu Sans Mono:pixelsize=12\007 +! URxvt.keysym.M-C-KP_1: command:\033]710;xft: Deja Vu Sans Mono:pixelsize=14\007 +! URxvt.keysym.M-C-KP_2: command:\033]710;xft: Deja Vu Sans Mono:pixelsize=16\007 +! URxvt.keysym.M-C-KP_3: command:\033]710;xft: Deja Vu Sans Mono:pixelsize=20\007 +! URxvt.keysym.M-C-KP_4: command:\033]710;xft: Deja Vu Sans Mono:pixelsize=24\007 +! URxvt.keysym.M-C-KP_5: command:\033]710;xft: Deja Vu Sans Mono:pixelsize=32\007 +! URxvt.keysym.M-C-KP_6: command:\033]710;xft: Deja Vu Sans Mono:pixelsize=48\007 + +! URxvt.tabbed.tabbar-fg: +! URxvt.tabbed.tabbar-bg: +! URxvt.tabbed.tab-fg: +! URxvt.tabbed.tab-bg: + +!}}} + + diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..7efb9b5 --- /dev/null +++ b/.vimrc @@ -0,0 +1,38 @@ +set nocompatible + +set expandtab +filetype plugin indent on +set tabstop=8 +set shiftwidth=4 +set expandtab +syntax on + +python3 from powerline.vim import setup as powerline_setup +python3 powerline_setup() +python3 del powerline_setup +set laststatus=2 " Always display the statusline in all windows +set showtabline=2 " Always display the tabline, even if there is only one tab +set noshowmode " Hide the default mode text (e.g. -- INSERT -- below the statusline) +set t_Co=256 +map :NERDTreeToggle +map :TagbarToggle +set number + + + +" CursorLines + +set cursorline +hi CursorLine cterm=NONE ctermbg=darkgrey ctermfg=lightgrey +hi CursorLineNR cterm=bold + + +"hi clear CursorLine +"augroup CLClear +" autocmd! ColorScheme * hi clear CursorLine +"augroup END + +"hi CursorLineNR cterm=bold +"augroup CLNRSet +" autocmd! ColorScheme * hi CursorLineNR cterm=bold +"augroup END diff --git a/.xmonad/.conky_dzen b/.xmonad/.conky_dzen new file mode 100644 index 0000000..4bd8938 --- /dev/null +++ b/.xmonad/.conky_dzen @@ -0,0 +1,8 @@ +background yes +out_to_console yes +out_to_x no +# Update interval in seconds +update_interval 1 + +TEXT +^i(/home/my_user/.xmonad/dzen2/cpu.xbm) ^fg(\#FFFFFF)${cpu}% ^i(/home/my_user/.xmonad/dzen2/mem.xbm) ^fg(\#FFFFFF)${memperc}% ^fg(\#ebac54) ${if_existing /proc/net/route eth1} ^i(/home/my_user/.xmonad/dzen2/net_wired.xbm) ^fg(\#00aa4a) ^i(/home/my_user/.xmonad/dzen2/net_down_03.xbm)${downspeed eth1} ^fg(\#ff3333) ^i(/home/my_user/.xmonad/dzen2/net_up_03.xbm)${upspeed eth1} ^fg(\#ebac54) ^i(/home/my_user/.xmonad/dzen2/mpd.xbm) ^fg(\#00ffff)${exec rhythmbox-client --print-playing-format "%aa-%at-%tt" | cut -c-70} ^fg(\#ebac54) ^i(/home/my_user/.xmonad/dzen2/volume.xbm) ^fg(\#00ffff)${exec amixer get Headphone | egrep -o "[0-9]+%" | head -1 | egrep -o "[0-9]*"}% ^fg(\#ebac54) ^i(/home/my_user/.xmonad/dzen2/clock.xbm) ^fg(\#FFFFFF) ${time %d %m %Y} ^fg(\#ebac54) ${time %R} diff --git a/.xmonad/fix.sh b/.xmonad/fix.sh new file mode 100755 index 0000000..64c6aaa --- /dev/null +++ b/.xmonad/fix.sh @@ -0,0 +1 @@ +ghc --make xmonad.hs -i -ilib -dynamic -fforce-recomp -main-is main -v -o xmonad-x86_64-linux diff --git a/.xmonad/nano.save b/.xmonad/nano.save new file mode 100644 index 0000000..190a180 --- /dev/null +++ b/.xmonad/nano.save @@ -0,0 +1 @@ +123 diff --git a/.xmonad/pkg_list.txt b/.xmonad/pkg_list.txt new file mode 100644 index 0000000..941fc15 --- /dev/null +++ b/.xmonad/pkg_list.txt @@ -0,0 +1,149 @@ +haskell-adjunctions +haskell-aeson +haskell-alsa-core +haskell-alsa-mixer +haskell-ansi-terminal +haskell-ansi-wl-pprint +haskell-asn1-encoding +haskell-asn1-parse +haskell-asn1-types +haskell-async +haskell-attoparsec +haskell-base-compat +haskell-base-orphans +haskell-base-prelude +haskell-base16-bytestring +haskell-base64-bytestring +haskell-basement +haskell-bifunctors +haskell-binary-conduit +haskell-blaze-builder +haskell-blaze-html +haskell-blaze-markup +haskell-byteable +haskell-bz2 +haskell-bzlib +haskell-call-stack +haskell-case-insensitive +haskell-cereal +haskell-colour +haskell-comonad +haskell-conduit +haskell-conduit-extra +haskell-connection +haskell-contravariant +haskell-cookie +haskell-crypto-cipher-types +haskell-crypto-numbers +haskell-crypto-pubkey +haskell-crypto-pubkey-types +haskell-crypto-random +haskell-cryptohash +haskell-cryptonite +haskell-data-default +haskell-data-default-class +haskell-data-default-instances-containers +haskell-data-default-instances-dlist +haskell-data-default-instances-old-locale +haskell-dbus +haskell-distributive +haskell-dlist +haskell-errors +haskell-exceptions +haskell-extensible-exceptions +haskell-fgl +haskell-free +haskell-generic-data +haskell-graphviz +haskell-hashable +haskell-hinotify +haskell-hopenpgp +haskell-hourglass +haskell-http +haskell-http-client +haskell-http-client-tls +haskell-http-conduit +haskell-http-types +haskell-incremental-parser +haskell-integer-logarithms +haskell-invariant +haskell-iwlib +haskell-ixset-typed +haskell-kan-extensions +haskell-lens +haskell-libmpd +haskell-libyaml +haskell-memory +haskell-mime-types +haskell-monad-loops +haskell-mono-traversable +haskell-monoid-subclasses +haskell-nettle +haskell-network +haskell-network-uri +haskell-newtype +haskell-old-locale +haskell-old-time +haskell-openpgp-asciiarmor +haskell-optparse-applicative +haskell-parallel +haskell-parsec-numbers +haskell-pem +haskell-polyparse +haskell-prettyprinter +haskell-prettyprinter-ansi-terminal +haskell-prettyprinter-convert-ansi-wl-pprint +haskell-primes +haskell-primitive +haskell-profunctors +haskell-random +haskell-reflection +haskell-regex-base +haskell-regex-compat +haskell-regex-posix +haskell-resourcet +haskell-safe +haskell-safe-exceptions +haskell-safecopy +haskell-scientific +haskell-securemem +haskell-semigroupoids +haskell-setlocale +haskell-show-combinators +haskell-socks +haskell-split +haskell-statevar +haskell-streaming-commons +haskell-syb +haskell-tagged +haskell-temporary +haskell-th-abstraction +haskell-th-lift +haskell-time-compat +haskell-time-locale-compat +haskell-timezone-olson +haskell-timezone-series +haskell-tls +haskell-transformers-base +haskell-transformers-compat +haskell-type-equality +haskell-typed-process +haskell-unliftio-core +haskell-unordered-containers +haskell-utf8-string +haskell-uuid-types +haskell-vector +haskell-vector-algorithms +haskell-void +haskell-wl-pprint-extras +haskell-wl-pprint-text +haskell-x11 +haskell-x11-xft +haskell-x509 +haskell-x509-store +haskell-x509-system +haskell-x509-validation +haskell-xml-conduit +haskell-xml-types +haskell-yaml +haskell-zlib diff --git a/.xmonad/prompt-history b/.xmonad/prompt-history new file mode 100644 index 0000000..97b3e40 --- /dev/null +++ b/.xmonad/prompt-history @@ -0,0 +1 @@ +fromList [("Run: ",["firefox"])] \ No newline at end of file diff --git a/.xmonad/scripts/.wallpaper.sh.swp b/.xmonad/scripts/.wallpaper.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..0e4e024df88afb152d376228e64aa7023cebf3a7 GIT binary patch literal 12288 zcmeI&%}T^D5C`yC#iJyXf-HDcy5I@3u@Plu*_2CJ@-j7n%{vPq2>}Q!CQw(IKU^Ol?C;H9^}$Zx z+uj;4Rtrx-00Izz00bZa0SG_<0!t}Sl|6cKCtqn#zuLy$pV%%DAOHafKmY;|fB*y_ z009U<00IzLLIIu--ERKNC`VEY~V!ZLhta W7N=6z3A>p$*%J-=vuY7{?e;%hu1FF9 literal 0 HcmV?d00001 diff --git a/.xmonad/scripts/getVolume.sh b/.xmonad/scripts/getVolume.sh new file mode 100755 index 0000000..7d0f003 --- /dev/null +++ b/.xmonad/scripts/getVolume.sh @@ -0,0 +1,3 @@ +#!/bin/bash +amixer get Master |grep % |awk '{print $5, $6}' | head -1 + diff --git a/.xmonad/scripts/getdGPULoad.py b/.xmonad/scripts/getdGPULoad.py new file mode 100755 index 0000000..7b9f925 --- /dev/null +++ b/.xmonad/scripts/getdGPULoad.py @@ -0,0 +1,7 @@ +#!/usr/bin/python3 + +from pynvml import * + +nvmlInit() +handle = nvmlDeviceGetHandleByIndex(0) +print(str(nvmlDeviceGetUtilizationRates(handle).gpu)) diff --git a/.xmonad/scripts/getdGPUStatus.sh b/.xmonad/scripts/getdGPUStatus.sh new file mode 100755 index 0000000..333f3a6 --- /dev/null +++ b/.xmonad/scripts/getdGPUStatus.sh @@ -0,0 +1,10 @@ +#!/bin/bash +STATE="$(cat /proc/acpi/bbswitch | grep -o "ON\|OFF")" +if [ "$STATE" == "ON" ]; + then + LOAD="$(~/.xmonad/scripts/getdGPULoad.py)" + echo "${STATE} (${LOAD}%)" + else + echo "OFF" + fi + diff --git a/.xmonad/scripts/wallpaper.sh b/.xmonad/scripts/wallpaper.sh new file mode 100755 index 0000000..182a6aa --- /dev/null +++ b/.xmonad/scripts/wallpaper.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +DISPLAY=:0 /usr/bin/feh --recursive --randomize --bg-fill /home/marius/ownCloud/Wallpaper diff --git a/.xmonad/xmobar.errors b/.xmonad/xmobar.errors new file mode 100644 index 0000000..53d3128 --- /dev/null +++ b/.xmonad/xmobar.errors @@ -0,0 +1,7 @@ + +xmobar.hs:1:1: error: + Parse error: module header, import declaration + or top-level declaration expected. + | +1 | Config { + | ^^^^^^^^^... diff --git a/.xmonad/xmobar.hs b/.xmonad/xmobar.hs new file mode 100644 index 0000000..e1c705f --- /dev/null +++ b/.xmonad/xmobar.hs @@ -0,0 +1,102 @@ +Config { + + -- appearance + font = "xft:Bitstream Vera Sans Mono:size=9:bold:antialias=true" + , bgColor = "black" + , fgColor = "#646464" + , position = TopW L 90 + , border = BottomB + , borderColor = "#646464" + + -- layout + , sepChar = "%" -- delineator between plugin names and straight text + , alignSep = "}{" -- separator between left-right alignment + , template = "%StdinReader% }{ %battery% | %multicpu% | %coretemp% | %memory% | %dynnetwork% | Vol: %getVolume% | dGPU: %getdGPUStatus% | %date% " + + -- general behavior + , lowerOnStart = True -- send to bottom of window stack on start + , hideOnStart = False -- start with window unmapped (hidden) + , allDesktops = True -- show on all desktops + , overrideRedirect = True -- set the Override Redirect flag (Xlib) + , pickBroadest = False -- choose widest display (multi-monitor) + , persistent = True -- enable/disable hiding (True = disabled) + + -- plugins + -- Numbers can be automatically colored according to their value. xmobar + -- decides color based on a three-tier/two-cutoff system, controlled by + -- command options: + -- --Low sets the low cutoff + -- --High sets the high cutoff + -- + -- --low sets the color below --Low cutoff + -- --normal sets the color between --Low and --High cutoffs + -- --High sets the color above --High cutoff + -- + -- The --template option controls how the plugin is displayed. Text + -- color can be set by enclosing in tags. For more details + -- see http://projects.haskell.org/xmobar/#system-monitor-plugins. + , commands = + + -- network activity monitor (dynamic interface resolution) + [ Run DynNetwork [ "--template" , ": kB/s|kB/s" + , "--Low" , "1000" -- units: B/s + , "--High" , "5000" -- units: B/s + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 10 + + -- cpu activity monitor + , Run MultiCpu [ "--template" , "CPU: %" + , "--Low" , "50" -- units: % + , "--High" , "85" -- units: % + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 10 + + -- cpu core temperature monitor + , Run CoreTemp [ "--template" , "Temp: °C|°C|°C|°C" + , "--Low" , "70" -- units: °C + , "--High" , "80" -- units: °C + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 50 + + -- memory usage monitor + , Run Memory [ "--template" ,"Mem: %" + , "--Low" , "45" -- units: % + , "--High" , "90" -- units: % + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 10 + + -- battery monitor + , Run Battery [ "--template" , "Batt: " + , "--Low" , "10" -- units: % + , "--High" , "80" -- units: % + , "--low" , "darkred" + , "--normal" , "darkorange" + , "--high" , "darkgreen" + + , "--" -- battery specific options + -- discharging status + , "-o" , "% ()" + -- AC "on" status + , "-O" , "Charging (%)" + -- charged status + , "-i" , "Charged" + ] 50 + + -- time and date indicator + -- (%F = y-m-d date, %a = day of week, %T = h:m:s time) + , Run Date "%F (%a) %T" "date" 10 + + , Run StdinReader + + , Run Com "/home/marius/.xmonad/scripts/getVolume.sh" [] "getVolume" 10 + , Run Com "/home/marius/.xmonad/scripts/getdGPUStatus.sh" [] "getdGPUStatus" 10 + ] + } diff --git a/.xmonad/xmobar.hs.bak2 b/.xmonad/xmobar.hs.bak2 new file mode 100644 index 0000000..d600170 --- /dev/null +++ b/.xmonad/xmobar.hs.bak2 @@ -0,0 +1,106 @@ +Config { + + -- appearance + font = "xft:Bitstream Vera Sans Mono:size=9:bold:antialias=true" + , bgColor = "black" + , fgColor = "#646464" + , position = TopW L 90 + , border = BottomB + , borderColor = "#646464" + + -- layout + , sepChar = "%" -- delineator between plugin names and straight text + , alignSep = "}{" -- separator between left-right alignment + , template = "%StdinReader% }{ %battery% | %multicpu% | %coretemp% | %memory% | %dynnetwork% | Vol: %getVolume% | dGPU: %getdGPUStatus% | %date% " + + -- general behavior + , lowerOnStart = True -- send to bottom of window stack on start + , hideOnStart = False -- start with window unmapped (hidden) + , allDesktops = True -- show on all desktops + , overrideRedirect = True -- set the Override Redirect flag (Xlib) + , pickBroadest = False -- choose widest display (multi-monitor) + , persistent = True -- enable/disable hiding (True = disabled) + + -- plugins + -- Numbers can be automatically colored according to their value. xmobar + -- decides color based on a three-tier/two-cutoff system, controlled by + -- command options: + -- --Low sets the low cutoff + -- --High sets the high cutoff + -- + -- --low sets the color below --Low cutoff + -- --normal sets the color between --Low and --High cutoffs + -- --High sets the color above --High cutoff + -- + -- The --template option controls how the plugin is displayed. Text + -- color can be set by enclosing in tags. For more details + -- see http://projects.haskell.org/xmobar/#system-monitor-plugins. + , commands = + + -- weather monitor + [ Run Weather "EDDL" [ "--template", " | °C | % | hPa" + ] 36000 + + -- network activity monitor (dynamic interface resolution) + , Run DynNetwork [ "--template" , ": kB/s|kB/s" + , "--Low" , "1000" -- units: B/s + , "--High" , "5000" -- units: B/s + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 10 + + -- cpu activity monitor + , Run MultiCpu [ "--template" , "CPU: %" + , "--Low" , "50" -- units: % + , "--High" , "85" -- units: % + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 10 + + -- cpu core temperature monitor + , Run CoreTemp [ "--template" , "Temp: °C|°C|°C|°C" + , "--Low" , "70" -- units: °C + , "--High" , "80" -- units: °C + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 50 + + -- memory usage monitor + , Run Memory [ "--template" ,"Mem: %" + , "--Low" , "45" -- units: % + , "--High" , "90" -- units: % + , "--low" , "darkgreen" + , "--normal" , "darkorange" + , "--high" , "darkred" + ] 10 + + -- battery monitor + , Run Battery [ "--template" , "Batt: " + , "--Low" , "10" -- units: % + , "--High" , "80" -- units: % + , "--low" , "darkred" + , "--normal" , "darkorange" + , "--high" , "darkgreen" + + , "--" -- battery specific options + -- discharging status + , "-o" , "% ()" + -- AC "on" status + , "-O" , "Charging (%)" + -- charged status + , "-i" , "Charged" + ] 50 + + -- time and date indicator + -- (%F = y-m-d date, %a = day of week, %T = h:m:s time) + , Run Date "%F (%a) %T" "date" 10 + + , Run StdinReader + + , Run Com "/home/marius/.xmonad/scripts/getVolume.sh" [] "getVolume" 10 + , Run Com "/home/marius/.xmonad/scripts/getdGPUStatus.sh" [] "getdGPUStatus" 10 + ] + } diff --git a/.xmonad/xmonad-session-rc b/.xmonad/xmonad-session-rc new file mode 100755 index 0000000..c526729 --- /dev/null +++ b/.xmonad/xmonad-session-rc @@ -0,0 +1,34 @@ +#!/bin/sh +# Script to configure X, start common apps, and start xmonad. +# Author: Vic Fryzel +# http://github.com/vicfryzel/xmonad-config + + +# Configure PATH so that we can access our scripts below +PATH=$PATH:~/.cabal/bin:~/.xmonad/bin + +# Configure X +xsetroot -cursor_name left_ptr & +xrdb -merge ~/.Xdefaults & +setxkbmap -option "ctrl:nocaps" & + +# Start a window compositor. This ensures Google Chrome paints correctly. +xcompmgr -n & + +# Start the system tray +tray & + +# Start two terminals +gnome-terminal & +gnome-terminal & + +# Start a browser +google-chrome & + +# Start screensaver +gnome-screensaver & + +# Start sound server +pulseaudio --start --log-target=syslog & + +gnome-session & diff --git a/.xmonad/xmonad-x86_64-linux b/.xmonad/xmonad-x86_64-linux new file mode 100755 index 0000000000000000000000000000000000000000..232666c3c108f609a6b9a91237f12ddb01fe7fda GIT binary patch literal 89888 zcmeHwdwg6~wg0pw62Z0+D2B&KgsGNCLee%R<#C-fNjsrQ8=91c7MM&klg!Y}qw{E! zfEu7k<1`wfYLt4d;-l)l*IuaJDCjNLM|^y^L41UV8ZL5;p#CDDMp5(ouKhT(=FB;h zq^bXL+RWbjyVqW8?X}l_oOAY`c~4!#`h^P?IP|s9@h=Wa9pB~_koR>8 z8y#*(iQ^*28$fj${xqFi#dJ8Ois`Trv~(@PAC;?GNGS^46d2)!BIR)CP)nzfaWrs{F*SvSE*%kWx}ayWFT%iVx-q~~leWfsR4 zRnE>XLyD;mb^WgF3hi98`pPbUX;&zc>MrfBT2s1aby*@>wo=ra_>;{yY}zVRqV`s% z5c%gIO&I0>`ku#bEdSxP|9SA&58b>c^_Jk4t$+QSC}iGeAfp5sSW-{C~Bo=5pXO1Z?~aeZ9~7+2H$Igzt;voYJ)!w+)Dom8~Vj)T&sGK z|6AdA+u&cZ!Jo9jp95~C=R!D_mE7evcolFfKHF^QJ8bChu%S=e(0|H?e$oa%10CL~ zUSZ%?`rlzg{}~(naU1;SHu&2y7+dMH8@QD|ciPZ@+y?)R4PK3L$x7}X8~iaF{L0g< z`E=XhPuk$+7#OYed8ZA&-v zwdV65Hu#e^_-ahxR{s168+;Lnt?1unga6tF_rTe#_&j2RUv{=Neb@$n(gwd03lb~2 z_uAl}w80;@!QZjWn*V+q{KqzU$+^~ix@_uWj%}Z?)#{vB7V%!5_83CvEVvF0!s~DR8U$w%FjkHuxuO z@T0)3=F@KhFG9}f`PEr>A3sp|6DEAvhTh@z;?Atyn@IZNNpIK}ia0hj)UT`Yt}I(w zR_UNTx=C9Dy3TMkqUgL1Z+%On*B^)nIzx$MAl}kg(-n;bT6{aZ0y57sryDGM{@!qV zG?I*mcJ_wLdqWj#dc)OM`NQkNm93s=^{V#keY?U

-R)t&M^@K-VoW(+e{_2fitxc_S#<4 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

!7PH;4sM011rx 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�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 R@D}`EM;daYgiy+Q{{wRgc7p%_ literal 0 HcmV?d00001 diff --git a/.xmonad/xmonad.errors b/.xmonad/xmonad.errors new file mode 100644 index 0000000..da9bc4c --- /dev/null +++ b/.xmonad/xmonad.errors @@ -0,0 +1,23 @@ + +xmonad.hs:27:1: warning: [-Wtabs] + Tab character found here, and in 130 further locations. + Please use spaces instead. + | +27 | manageDocks + | ^^^^^^^^ + +xmonad.hs:141:14: warning: [-Wdeprecations] + In the use of ‘defaultConfig’ + (imported from XMonad, but defined in XMonad.Config): + Deprecated: "Use def (from Data.Default, and re-exported by XMonad and XMonad.Config) instead." + | +141 | xmonad $ defaultConfig + | ^^^^^^^^^^^^^ + +xmonad.hs:149:45: warning: [-Wdeprecations] + In the use of ‘defaultConfig’ + (imported from XMonad, but defined in XMonad.Config): + Deprecated: "Use def (from Data.Default, and re-exported by XMonad and XMonad.Config) instead." + | +149 | , handleEventHook defaultConfig ] + | ^^^^^^^^^^^^^ diff --git a/.xmonad/xmonad.hi b/.xmonad/xmonad.hi new file mode 100644 index 0000000000000000000000000000000000000000..65d10aa47a1ac8b588e4b70fdb01e418d40b1704 GIT binary patch literal 4590 zcmaJ@3vd(H6n{KdpsNh@jbe&p54mPneE zUm03FKmsL0pn;MU$_&kiW*}1t*azPUpI1Epc`@&pn84tUoAUVdT-;`H6>^bu|Li=kr~ zS<`O(Z8N14`)KXR{v#Qxwo}i( zym`UZU8S!cT)ppM(vG#K?r1ht{`HO4eW?plzIgX*i%zq>{@t+|!=Rrb0U{lKAP?gq zV3b50B=L~QO2Z+S07)VwBOn2SWFjP! zAb|l8lNFrFfSm$=!^NqPffmy+lYyB`%uL73GnknH85r$M$iRqaK?X+sEM%bf*^q%* z&cRHU93EVni`;H-rHRcoJ?G>w6;alI8>a6n%skzhzAx#B^ULDxvXN}1@14G8!-Nh;di|&u?mOnh z+>3||+0OT?vNC`9^2t5l&%1V@?^;A;OjvjJ>g+qs`K5i*Yvc0{cSl5Jf8YGOu2<&X zQf*tJ-TmdpM|&e8)9rKJdzqEfIyNrpySrlE_u!Dg2eyVez3X(tt)WZvx|?msHoZ4* zw=7Y*<~s4k#jSg%{j-UABi?M#a1vnfTx#u5ELkGnTz|A!G#<@Mr}^+`8g z^{hDBKKg^LYvm&aPX|F%b(+gs{xiiOLBpR{Pu{=c?ZY4cXVu%+&7Vg^_D$BW(o^58{Y@r)w)dL-w-+NKhyVCTOJaL2 z95}DuaJ6X*yC)*5d1v{_6B~z&%Q`S(M&^kvm*k_aL|D7`PbnQ&(h6@a`?TqVy?pzD zh*e$wgiAY`Cl_{-w}QqCnTE%zQJ>v@?a2nu~;If_Atj)=8J_>6kBTBRn7NVQ5^=F&HWZH;_5M;$E4$O?#*y3w;%kYT#{QJ6C1*8jYOZuVIAz zY>QqD>)R2SI?BYwQUM662B6uh+&U+#726hCB!h)%Z!xe%S{H*(8&Mi%$nXJ);$3t= z6%`ynQkfgt9JIEYZx3e|Rk)pDA?Pg^?8tr551_bNCIB;l0EGhUG#PBQ(!y{>Yk6Lq zSKY`NS`okxg(0wR6)U(XmPRN#yUtOd4)A_&t z>SNrDNV_CK3=&c^XS*g~j{dt_^F)oGwXyBuvLlVsg z7$*pY4!LN*#0b1nWZ+GuStNxV<+NJOg)6N3Mn)5EvoB*6Q)0A-VQD`l`Q*SN8$I0X zbE*6y!(ly!muN37s@g%oZq-1qCU6p~$^n}xU&cUr_G5KXgV;fjs1{b5ysg1Pv!_n) zYYZ>a)foM1+_=epQ2@Id0RHnykSy{yJ3vdQx(Z5>%H(7Pk4IN#ZEX)p3$Y@d1w@a!MQL!A3^fBZE8>0$~?C7I;=r@)W89lF0C000di9 zt+G^yY}VF1ZLKFeH{a-@jV)SxEA}uw#0fm*hTWW}ve;}?b$}^sW9rSd4#{k3tgI7i zkiR)d6Sl6%IH5(pN?YLObX;D&SsLdKK^-$c`kjLCF_=B!)Z)}=%T=q%KkWDkC8@E6yQw(p9GUxPnNL)g^`ED1zlvg zj>QOCzn^7Xl*F`Q@R4%XdV%w^bVz|C#>s1CK^{&CkQ?V026ifCkPK`yvKk*HvAAho zVx;g>A*)2e9du#C(NTu>AU^*i-ghHI8e(ufBh(pBmOyjm&$VCMreJ1q^C zjZqSO(nvWhcDgl4gX`z%W>3LWl5&VN-rPjl!Q(xbViGC852Qqb%bRqB{WMNaG1f5y z6-YtZnknAR(xd}Se3b7nD6tLflU%xLn!@vaSd~b#K{pN}!5$7sGzSWY%;S|of_{w{ z7%L*Sz>}te0{1F*iuE4*qcR4WS}C6L(q=(uL72%%V3#OY3n&y?PDRUTu90>>)y`Mq zmPkWVh!Y?UVV>d`SA~El-NY!dv7Pf7=s=4k_;CTF70M_#ZQ&^}K?jZ+9vSz3X^PNqhq)G@qUXtz;qj2FzR zfkQhEX~{Q~u`%i*!cHQ$m)#{&lFR3(@bJK0A*)me@xJ4(ke8n@N|+&uRxqtt`hU7< BY;ynr literal 0 HcmV?d00001 diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs new file mode 100644 index 0000000..ee5eff1 --- /dev/null +++ b/.xmonad/xmonad.hs @@ -0,0 +1,174 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Hooks.SetWMName +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Scratchpad +import XMonad.Util.NamedScratchpad +import qualified XMonad.StackSet as W +-- import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + + + +myManageHook = + manageDocks + <+> manageSpawn + <+> + (composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Pinentry" --> doFloat + , className =? "GameClient.exe" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ]) + <+> namedScratchpadManageHook myScratchPads + + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + + where + + h = 0.2 -- terminal height, 10% + w = 0.7 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = (1 - w)/2 -- distance from left edge, 0% + + + +myScratchPads = [ NS "mixer" spawnMixer findMixer manageMixer + , NS "terminal" spawnTerm findTerm manageTerm + , NS "bitwarden" spawnBitwarden findBitwarden manageBitwarden + , NS "quicknote" spawnQuicknote findQuicknote manageQuicknote + ] + where + spawnMixer = "pavucontrol" + findMixer = className =? "Pavucontrol" + manageMixer = customFloating $ W.RationalRect l t w h + + where + h = 0.6 -- height, 60% + w = 0.6 -- width, 60% + t = (1 - h)/2 -- centered top/bottom + l = (1 - w)/2 -- centered left/right + + + spawnTerm = myTerminal ++ " -name scratchpad" + findTerm = resource =? "scratchpad" + manageTerm = customFloating $ W.RationalRect l t w h + + where + + h = 0.4 -- terminal height, 20% + w = 0.7 -- terminal width, 70% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + spawnQuicknote = myTerminal ++ " -name quicknote -e notology -q" + findQuicknote = resource =? "quicknote" + manageQuicknote = customFloating $ W.RationalRect l t w h + + where + + h = 0.6 -- terminal height, 60% + w = 0.6 -- terminal width, 60% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + spawnBitwarden = "bitwarden-bin" + findBitwarden = resource =? "bitwarden" + manageBitwarden = customFloating $ W.RationalRect l t w h + + where + + h = 0.8 -- terminal height, 80% + w = 0.5 -- terminal width, 50% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + + + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "urxvt" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , startupHook = setWMName "LG3D" + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminator -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask .|. shiftMask, xK_Return), spawn "terminator") + , ((mod4Mask .|. shiftMask, xK_t), namedScratchpadAction myScratchPads "terminal") + , ((mod4Mask .|. shiftMask, xK_m), namedScratchpadAction myScratchPads "mixer") + , ((mod4Mask .|. shiftMask, xK_n), namedScratchpadAction myScratchPads "quicknote") + , ((mod4Mask .|. shiftMask, xK_b), namedScratchpadAction myScratchPads "bitwarden") + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008ff4a), spawn "xset dpms force off") + , ((0 , 0x1008ffb2), spawn "amixer set Capture toggle") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak b/.xmonad/xmonad.hs.bak new file mode 100644 index 0000000..db0a9c8 --- /dev/null +++ b/.xmonad/xmonad.hs.bak @@ -0,0 +1,31 @@ +import XMonad +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageDocks +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + +myManageHook = composeAll + [ className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + ] + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = manageDocks <+> myManageHook -- make sure to include myManageHook definition from above + <+> manageHook defaultConfig + , layoutHook = avoidStruts $ layoutHook defaultConfig + , handleEventHook = mconcat + [ docksEventHook + , handleEventHook defaultConfig ] + , logHook = dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "green" "" . shorten 50 + } + , modMask = mod4Mask -- Rebind Mod to the Windows key + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock") + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak2 b/.xmonad/xmonad.hs.bak2 new file mode 100644 index 0000000..a3f5518 --- /dev/null +++ b/.xmonad/xmonad.hs.bak2 @@ -0,0 +1,85 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + +myManageHook = manageDocks <+> manageSpawn <+> composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ] + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "terminology" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminology -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak3 b/.xmonad/xmonad.hs.bak3 new file mode 100644 index 0000000..7c05f2f --- /dev/null +++ b/.xmonad/xmonad.hs.bak3 @@ -0,0 +1,99 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Scratchpad +import qualified XMonad.StackSet as W +-- import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + +myManageHook = manageDocks <+> manageSpawn <+> manageScratchPad <+> composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ] + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + + where + + h = 0.1 -- terminal height, 10% + w = 1 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = 1 - w -- distance from left edge, 0% + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "urxvt" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminology -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask .|. shiftMask, xK_Return), spawn "terminology") + , ((mod4Mask .|. shiftMask, xK_t), scratchpadSpawnActionTerminal myTerminal) + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak4 b/.xmonad/xmonad.hs.bak4 new file mode 100644 index 0000000..c475773 --- /dev/null +++ b/.xmonad/xmonad.hs.bak4 @@ -0,0 +1,109 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Scratchpad +import qualified XMonad.StackSet as W +-- import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + + + +myManageHook = + manageDocks + <+> manageSpawn + <+> + (composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ]) + <+> manageScratchPad + + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + + where + + h = 0.2 -- terminal height, 10% + w = 0.7 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = (1 - w)/2 -- distance from left edge, 0% + + + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "urxvt" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminology -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask .|. shiftMask, xK_Return), spawn "terminology") + , ((mod4Mask .|. shiftMask, xK_t), scratchpadSpawnActionTerminal myTerminal) + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak5 b/.xmonad/xmonad.hs.bak5 new file mode 100644 index 0000000..a6e0418 --- /dev/null +++ b/.xmonad/xmonad.hs.bak5 @@ -0,0 +1,155 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Scratchpad +import XMonad.Util.NamedScratchpad +import qualified XMonad.StackSet as W +-- import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + + + +myManageHook = + manageDocks + <+> manageSpawn + <+> + (composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ]) + <+> namedScratchpadManageHook myScratchPads + + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + + where + + h = 0.2 -- terminal height, 10% + w = 0.7 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = (1 - w)/2 -- distance from left edge, 0% + + + +myScratchPads = [ NS "mixer" spawnMixer findMixer manageMixer + , NS "terminal" spawnTerm findTerm manageTerm + , NS "notebook" spawnNotebook findNotebook manageNotebook + ] + where + spawnMixer = "pavucontrol" + findMixer = className =? "Pavucontrol" + manageMixer = customFloating $ W.RationalRect l t w h + + where + h = 0.6 -- height, 60% + w = 0.6 -- width, 60% + t = (1 - h)/2 -- centered top/bottom + l = (1 - w)/2 -- centered left/right + + + spawnTerm = myTerminal ++ " -name scratchpad" + findTerm = resource =? "scratchpad" + manageTerm = customFloating $ W.RationalRect l t w h + + where + + h = 0.4 -- terminal height, 20% + w = 0.7 -- terminal width, 70% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + spawnNotebook = myTerminal ++ " -name notebook -e notology -q" + findNotebook = resource =? "notebook" + manageNotebook = customFloating $ W.RationalRect l t w h + + where + + h = 0.6 -- terminal height, 60% + w = 0.6 -- terminal width, 60% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + + + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "urxvt" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminology -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask .|. shiftMask, xK_Return), spawn "terminology") + , ((mod4Mask .|. shiftMask, xK_t), namedScratchpadAction myScratchPads "terminal") + , ((mod4Mask .|. shiftMask, xK_m), namedScratchpadAction myScratchPads "mixer") + , ((mod4Mask .|. shiftMask, xK_n), namedScratchpadAction myScratchPads "notebook") + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak6 b/.xmonad/xmonad.hs.bak6 new file mode 100644 index 0000000..bf62d2e --- /dev/null +++ b/.xmonad/xmonad.hs.bak6 @@ -0,0 +1,170 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Scratchpad +import XMonad.Util.NamedScratchpad +import qualified XMonad.StackSet as W +-- import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + + + +myManageHook = + manageDocks + <+> manageSpawn + <+> + (composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Pinentry" --> doFloat + , className =? "GameClient.exe" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ]) + <+> namedScratchpadManageHook myScratchPads + + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + + where + + h = 0.2 -- terminal height, 10% + w = 0.7 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = (1 - w)/2 -- distance from left edge, 0% + + + +myScratchPads = [ NS "mixer" spawnMixer findMixer manageMixer + , NS "terminal" spawnTerm findTerm manageTerm + , NS "notebook" spawnNotebook findNotebook manageNotebook + , NS "quicknote" spawnQuicknote findQuicknote manageQuicknote + ] + where + spawnMixer = "pavucontrol" + findMixer = className =? "Pavucontrol" + manageMixer = customFloating $ W.RationalRect l t w h + + where + h = 0.6 -- height, 60% + w = 0.6 -- width, 60% + t = (1 - h)/2 -- centered top/bottom + l = (1 - w)/2 -- centered left/right + + + spawnTerm = myTerminal ++ " -name scratchpad" + findTerm = resource =? "scratchpad" + manageTerm = customFloating $ W.RationalRect l t w h + + where + + h = 0.4 -- terminal height, 20% + w = 0.7 -- terminal width, 70% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + spawnQuicknote = myTerminal ++ " -name quicknote -e notology -q" + findQuicknote = resource =? "quicknote" + manageQuicknote = customFloating $ W.RationalRect l t w h + + where + + h = 0.6 -- terminal height, 60% + w = 0.6 -- terminal width, 60% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + spawnNotebook = myTerminal ++ " -name notebook -e notology" + findNotebook = resource =? "notebook" + manageNotebook = customFloating $ W.RationalRect l t w h + + where + + h = 0.8 -- terminal height, 80% + w = 0.5 -- terminal width, 50% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + + + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "urxvt" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminology -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask .|. shiftMask, xK_Return), spawn "terminology") + , ((mod4Mask .|. shiftMask, xK_t), namedScratchpadAction myScratchPads "terminal") + , ((mod4Mask .|. shiftMask, xK_m), namedScratchpadAction myScratchPads "mixer") + , ((mod4Mask .|. shiftMask, xK_n), namedScratchpadAction myScratchPads "quicknote") + , ((mod4Mask .|. shiftMask, xK_b), namedScratchpadAction myScratchPads "notebook") + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak7 b/.xmonad/xmonad.hs.bak7 new file mode 100644 index 0000000..82c8c5c --- /dev/null +++ b/.xmonad/xmonad.hs.bak7 @@ -0,0 +1,172 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Hooks.SetWMName +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Scratchpad +import XMonad.Util.NamedScratchpad +import qualified XMonad.StackSet as W +-- import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + + + +myManageHook = + manageDocks + <+> manageSpawn + <+> + (composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Pinentry" --> doFloat + , className =? "GameClient.exe" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ]) + <+> namedScratchpadManageHook myScratchPads + + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + + where + + h = 0.2 -- terminal height, 10% + w = 0.7 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = (1 - w)/2 -- distance from left edge, 0% + + + +myScratchPads = [ NS "mixer" spawnMixer findMixer manageMixer + , NS "terminal" spawnTerm findTerm manageTerm + , NS "notebook" spawnNotebook findNotebook manageNotebook + , NS "quicknote" spawnQuicknote findQuicknote manageQuicknote + ] + where + spawnMixer = "pavucontrol" + findMixer = className =? "Pavucontrol" + manageMixer = customFloating $ W.RationalRect l t w h + + where + h = 0.6 -- height, 60% + w = 0.6 -- width, 60% + t = (1 - h)/2 -- centered top/bottom + l = (1 - w)/2 -- centered left/right + + + spawnTerm = myTerminal ++ " -name scratchpad" + findTerm = resource =? "scratchpad" + manageTerm = customFloating $ W.RationalRect l t w h + + where + + h = 0.4 -- terminal height, 20% + w = 0.7 -- terminal width, 70% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + spawnQuicknote = myTerminal ++ " -name quicknote -e notology -q" + findQuicknote = resource =? "quicknote" + manageQuicknote = customFloating $ W.RationalRect l t w h + + where + + h = 0.6 -- terminal height, 60% + w = 0.6 -- terminal width, 60% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + spawnNotebook = myTerminal ++ " -name notebook -e notology" + findNotebook = resource =? "notebook" + manageNotebook = customFloating $ W.RationalRect l t w h + + where + + h = 0.8 -- terminal height, 80% + w = 0.5 -- terminal width, 50% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + + + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "urxvt" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , startupHook = setWMName "LG3D" + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminology -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask .|. shiftMask, xK_Return), spawn "terminology") + , ((mod4Mask .|. shiftMask, xK_t), namedScratchpadAction myScratchPads "terminal") + , ((mod4Mask .|. shiftMask, xK_m), namedScratchpadAction myScratchPads "mixer") + , ((mod4Mask .|. shiftMask, xK_n), namedScratchpadAction myScratchPads "quicknote") + , ((mod4Mask .|. shiftMask, xK_b), namedScratchpadAction myScratchPads "notebook") + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.bak8 b/.xmonad/xmonad.hs.bak8 new file mode 100644 index 0000000..3047e84 --- /dev/null +++ b/.xmonad/xmonad.hs.bak8 @@ -0,0 +1,173 @@ +import XMonad +import XMonad.Actions.SpawnOn +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.EwmhDesktops(fullscreenEventHook,ewmh) +import XMonad.Hooks.SetWMName +import XMonad.Layout.Grid +import XMonad.Layout.ResizableTile +import XMonad.Layout.LayoutHints +import XMonad.Layout.Cross +import XMonad.Layout.ToggleLayouts +import XMonad.Layout.WindowNavigation +import XMonad.Layout.NoBorders +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.Scratchpad +import XMonad.Util.NamedScratchpad +import qualified XMonad.StackSet as W +-- import qualified XMonad.StackSet as S +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + + + +myManageHook = + manageDocks + <+> manageSpawn + <+> + (composeAll [ isFullscreen --> doFullFloat + , className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + , className =? "PrisonArchitect.x86_64" --> doFullFloat + , className =? "hl_linux" --> doFloat + , className =? "hl2_linux" --> doFloat + , className =? "chromium" --> doFloat + , className =? "Pinentry" --> doFloat + , className =? "GameClient.exe" --> doFloat + , className =? "Gajim" --> doShift "ι" + , className =? "Thunderbird" --> doShift "θ" + ]) + <+> namedScratchpadManageHook myScratchPads + + +manageScratchPad :: ManageHook +manageScratchPad = scratchpadManageHook (W.RationalRect l t w h) + + where + + h = 0.2 -- terminal height, 10% + w = 0.7 -- terminal width, 100% + t = 1 - h -- distance from top edge, 90% + l = (1 - w)/2 -- distance from left edge, 0% + + + +myScratchPads = [ NS "mixer" spawnMixer findMixer manageMixer + , NS "terminal" spawnTerm findTerm manageTerm + , NS "notebook" spawnNotebook findNotebook manageNotebook + , NS "quicknote" spawnQuicknote findQuicknote manageQuicknote + ] + where + spawnMixer = "pavucontrol" + findMixer = className =? "Pavucontrol" + manageMixer = customFloating $ W.RationalRect l t w h + + where + h = 0.6 -- height, 60% + w = 0.6 -- width, 60% + t = (1 - h)/2 -- centered top/bottom + l = (1 - w)/2 -- centered left/right + + + spawnTerm = myTerminal ++ " -name scratchpad" + findTerm = resource =? "scratchpad" + manageTerm = customFloating $ W.RationalRect l t w h + + where + + h = 0.4 -- terminal height, 20% + w = 0.7 -- terminal width, 70% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + spawnQuicknote = myTerminal ++ " -name quicknote -e notology -q" + findQuicknote = resource =? "quicknote" + manageQuicknote = customFloating $ W.RationalRect l t w h + + where + + h = 0.6 -- terminal height, 60% + w = 0.6 -- terminal width, 60% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + spawnNotebook = myTerminal ++ " -name notebook -e notology" + findNotebook = resource =? "notebook" + manageNotebook = customFloating $ W.RationalRect l t w h + + where + + h = 0.8 -- terminal height, 80% + w = 0.5 -- terminal width, 50% + t = 1 - h -- distance from top edge + l = (1 - w)/2 -- distance from left edge + + + + + +myWorkspaces = ["α","β","γ","δ","ε","ζ","η","θ","ι"] + +myLogHook xmproc = do + fadeInactiveLogHook 0.8 + <+> dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "#01b8e0" "" . shorten 50 + } + +myTerminal = "urxvt" + + +myLayout = tiled ||| Mirror tiled ||| Full ||| Grid where + -- default tiling algorithm partitions the screen into two panes + tiled = Tall nmaster delta ratio + + + -- The default number of windows in the master pane + nmaster = 1 + + -- Default proportion of screen occupied by master pane + ratio = 1/2 + + -- Percent of screen to increment by when resizing panes + delta = 2/100 + + +main = do + xmproc <- spawnPipe "xmobar ~/.xmonad/xmobar.hs" + xmonad $ defaultConfig + { manageHook = myManageHook -- make sure to include myManageHook definition from above +-- <+> manageHook defaultConfig + , layoutHook = avoidStruts $ smartBorders $ myLayout + , startupHook = setWMName "LG3D" + , handleEventHook = mconcat + [ docksEventHook + , fullscreenEventHook + , handleEventHook defaultConfig ] + , logHook = myLogHook xmproc + , modMask = mod4Mask -- Rebind Mod to the Windows key + , terminal = myTerminal + , workspaces = myWorkspaces + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_l), spawn "xscreensaver-command -lock") + , ((mod4Mask .|. shiftMask, xK_r), spawn "terminology -e ranger") + , ((mod4Mask .|. shiftMask, xK_f), spawn "firefox") + , ((mod4Mask .|. shiftMask, xK_Return), spawn "terminology") + , ((mod4Mask .|. shiftMask, xK_t), namedScratchpadAction myScratchPads "terminal") + , ((mod4Mask .|. shiftMask, xK_m), namedScratchpadAction myScratchPads "mixer") + , ((mod4Mask .|. shiftMask, xK_n), namedScratchpadAction myScratchPads "quicknote") + , ((mod4Mask .|. shiftMask, xK_b), namedScratchpadAction myScratchPads "notebook") + , ((mod4Mask , xK_q), spawn "killall xmobar; xmonad --recompile; xmonad --restart") + , ((0 , 0x1008FF11), spawn "amixer -q sset Master 2%-") + , ((0 , 0x1008FF13), spawn "amixer -q sset Master 2%+") + , ((0 , 0x1008ffb2), spawn "amixer set Capture toggle") + , ((0 , 0x1008FF12), spawn "amixer set Master toggle") + , ((0 , 0x1008FF03), spawn "xbacklight -dec 5") + , ((0 , 0x1008FF02), spawn "xbacklight -inc 5") + + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.hs.test b/.xmonad/xmonad.hs.test new file mode 100644 index 0000000..d0ba9f5 --- /dev/null +++ b/.xmonad/xmonad.hs.test @@ -0,0 +1,56 @@ +import XMonad +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageDocks +import XMonad.Util.Run(spawnPipe) +import XMonad.Util.EZConfig(additionalKeys) +import System.IO + + +-- Font +myFont = "-*-terminus-*-*-*-*-12-*-*-*-*-*-iso8859-*" + +-- Colors +myBgBgColor = "black" +myFgColor = "gray80" +myBgColor = "gray20" + + + + +-- Dzen2 stuff +----------------- +-- +myDzenGenOpts = "-fg '" ++ myFgColor ++ "' -bg '" ++ myBgColor ++ "' -fn '" ++ myFont ++ "' -h '16'" + +-- Status Bar +myStatusBar = "dzen2 -w 665 -ta l " ++ myDzenGenOpts + +-- Conky Bar +myConkyBar = "conky -c ~/.conky_bar | dzen2 -x 660 -w 365 " ++ myDzenGenOpts + + +myManageHook = composeAll + [ className =? "Gimp" --> doFloat + , className =? "Vncviewer" --> doFloat + ] + +main = do + myStatusBarPipe <- spawnPipe myStatusBar + xmproc <- spawnPipe myConkyBar + xmonad $ defaultConfig + { manageHook = manageDocks <+> myManageHook -- make sure to include myManageHook definition from above + <+> manageHook defaultConfig + , layoutHook = avoidStruts $ layoutHook defaultConfig + , handleEventHook = mconcat + [ docksEventHook + , handleEventHook defaultConfig ] + , logHook = dynamicLogWithPP xmobarPP + { ppOutput = hPutStrLn xmproc + , ppTitle = xmobarColor "green" "" . shorten 50 + } + , modMask = mod4Mask -- Rebind Mod to the Windows key + } `additionalKeys` + [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock") + , ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s") + , ((0, xK_Print), spawn "scrot") + ] diff --git a/.xmonad/xmonad.o b/.xmonad/xmonad.o new file mode 100644 index 0000000000000000000000000000000000000000..37fbee891744ea9401ccfcb6f4f77d51d9cea2dd GIT binary patch literal 102040 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