From 70c1b057ab16ebe2b53548f794a7a351e6e0b2f2 Mon Sep 17 00:00:00 2001 From: hashirama Date: Sat, 2 Mar 2024 15:12:23 -0400 Subject: [PATCH] add xmonad and get rid of stumpwm --- channels.scm | 41 +++-- config.scm | 13 ++ home-configuration/home-configuration.scm | 26 +++- home-configuration/home-configuration.scm~ | 132 ---------------- stumpwm/.gitignore | 0 stumpwm/init.lisp | 171 --------------------- xmonad/build-x86_64-linux/Main.hi | Bin 0 -> 3151 bytes xmonad/build-x86_64-linux/Main.o | Bin 0 -> 55960 bytes xmonad/xmonad-x86_64-linux | Bin 0 -> 79216 bytes xmonad/xmonad.errors | 8 + xmonad/xmonad.hs | 115 ++++++++++++++ xmonad/xmonad.hs~ | 114 ++++++++++++++ 12 files changed, 301 insertions(+), 319 deletions(-) delete mode 100644 home-configuration/home-configuration.scm~ delete mode 100644 stumpwm/.gitignore delete mode 100644 stumpwm/init.lisp create mode 100644 xmonad/build-x86_64-linux/Main.hi create mode 100644 xmonad/build-x86_64-linux/Main.o create mode 100755 xmonad/xmonad-x86_64-linux create mode 100644 xmonad/xmonad.errors create mode 100644 xmonad/xmonad.hs create mode 100644 xmonad/xmonad.hs~ diff --git a/channels.scm b/channels.scm index acff6e6..7f36783 100644 --- a/channels.scm +++ b/channels.scm @@ -33,14 +33,14 @@ list "993d200265630e9c408028a022f32f34acacdf29" (openpgp-fingerprint "7EBE A494 60CE 5E2C 0875 7FDB 3B5A A993 E1A2 DFF0")))) -(channel - (name 'rrr) - (url "https://git.sr.ht/~akagi/rrr") - (introduction - (make-channel-introduction - "794d6e5eb362bfcf81ada12b6a49a0cd55c8e031" - (openpgp-fingerprint - "FF72 877C 4F21 FC4D 467D 20C4 DCCB 5255 2098 B6C1")))) +;;(channel +;; (name 'rrr) +;; (url "https://git.sr.ht/~akagi/rrr") +;; (introduction +;; (make-channel-introduction + ;; "794d6e5eb362bfcf81ada12b6a49a0cd55c8e031" + ;; (openpgp-fingerprint + ;; "FF72 877C 4F21 FC4D 467D 20C4 DCCB 5255 2098 B6C1")))) (channel (name 'rde) (url "https://git.sr.ht/~abcdw/rde") @@ -48,4 +48,27 @@ list (make-channel-introduction "257cebd587b66e4d865b3537a9a88cccd7107c95" (openpgp-fingerprint - "2841 9AC6 5038 7440 C7E9 2FFA 2208 D209 58C1 DEB0"))))) + "2841 9AC6 5038 7440 C7E9 2FFA 2208 D209 58C1 DEB0")))) + (channel + (name 'radix) + (url "https://codeberg.org/anemofilia/radix.git") + (branch "main") + (introduction + (make-channel-introduction + "f9130e11e35d2c147c6764ef85542dc58dc09c4f" + (openpgp-fingerprint + "F164 709E 5FC7 B32B AEC7 9F37 1F2E 76AC E3F5 31C8")))) + (channel + (name 'ajatt) + (url "https://codeberg.org/hashirama/ajatt-tools-guix.git") + (branch "main") + (introduction + (make-channel-introduction + "5f1904f1a514b89b2d614300d8048577aa717617" + (openpgp-fingerprint + "F164 709E 5FC7 B32B AEC7 9F37 1F2E 76AC E3F5 31C8")))) + ;;(channel +;; (name 'guix-local) +;; (url "https://codeberg.org/florhizome/guix-local.git") +;; (commit "6b6e50e3f4b7edc52d9116e4ff61ec57cd24a802")) +) diff --git a/config.scm b/config.scm index c0953e6..cfbf0f9 100644 --- a/config.scm +++ b/config.scm @@ -14,6 +14,9 @@ (guix packages) (gnu packages fcitx5) (gnu packages gnuzilla) + (gnu packages haskell) + (gnu packages gcc) + (gnu packages commencement) (gnu packages freedesktop) (gnu packages image) (gnu packages image-viewers) @@ -132,6 +135,7 @@ xdg-desktop-portal-gtk xdg-desktop-portal tmux + gnupg sdcv alacritty ;; stumpwm-test @@ -178,7 +182,16 @@ picom feh xmodmap + ;; deps for xmonad + xmonad + ghc ;; ridiculous, gcc and ghc are runtime dependencies , yet people didnt put in the package description + gcc + gcc-toolchain + xmessage + ghc-xmonad-contrib rofi + linux-libre-headers + ;;-------- yt-dlp ;; nicotine+ linux-firmware diff --git a/home-configuration/home-configuration.scm b/home-configuration/home-configuration.scm index 2a925ac..22c697e 100644 --- a/home-configuration/home-configuration.scm +++ b/home-configuration/home-configuration.scm @@ -7,6 +7,7 @@ (use-modules (gnu home) (gnu packages) (gnu services) + (gnu packages haskell) (guix gexp) (radix utils) (gnu home services) @@ -100,6 +101,7 @@ aria2 xdg-desktop-portal xdg-desktop-portal-gtk + gnupg xprop ;;nicotine+ yt-dlp @@ -138,7 +140,7 @@ feh xmodmap rofi - sbcl + sbcl stumpwm `(,stumpwm "lib") emacs-stumpwm-mode sbcl-stumpwm-net @@ -150,6 +152,12 @@ sbcl-clx sbcl-stumpwm-swm-gaps cmus + ;; xmonad + xmonad + ghc + xmobar + ghc-xmonad-contrib + ;;----------------- zstd ;; suckless-dictpopup scrot @@ -196,8 +204,12 @@ "/home/hashirama/src/guix-config/.bash_profile" "bash_profile"))) (environment-variables - '(("GUILE_LOAD_PATH" - . "$HOME/dev/guix_channel/ajatt-tools-guix:$GUILE_LOAD_PATH"))) + '( + ("GUILE_LOAD_PATH" + . "$HOME/dev/guix_channel/ajatt-tools-guix:$GUILE_LOAD_PATH") + ("XMONAD_CONFIG_DIR" + . "$HOME/.xmonad") + )) )) @@ -238,7 +250,7 @@ "audio/ogg" "audio/opus" "audio/x-opus+ogg" - "audio/flac" + "audio/flac" "video/mp4" "video/x-matroska" "video/webm")) @@ -252,10 +264,10 @@ ('emacs.desktop `("image/vnd.djvu")) ('foliate.desktop - `("application/epub+zip")) + `("application/epub+zip")) ('sioyek.desktop `("application/pdf")) - )))) + )))) (simple-service 'font-antialias home-fontconfig-service-type @@ -301,7 +313,7 @@ ("SHELL" . "bash") ("TERMINAL" . "kitty") ("VISUAL" . "emacs") - ("WM" . "stumpwm"))))) + ("WM" . "xmonad"))))) ) diff --git a/home-configuration/home-configuration.scm~ b/home-configuration/home-configuration.scm~ deleted file mode 100644 index 94fd53c..0000000 --- a/home-configuration/home-configuration.scm~ +++ /dev/null @@ -1,132 +0,0 @@ -;; This "home-environment" file can be passed to 'guix home reconfigure' -;; to reproduce the content of your profile. This is "symbolic": it only -;; specifies package names. To reproduce the exact same profile, you also -;; need to capture the channels being used, as returned by "guix describe". -;; See the "Replicating Guix" section in the manual. - -(use-modules (gnu home) - (gnu packages) - (gnu services) - (guix gexp) - (gnu home services shells)) - -(home-environment - ;; Below is the list of packages that will show up in your - ;; Home profile, under ~/.guix-home/profile. - (packages (specifications->packages (list "flameshot" - "ncmpcpp" - "font-meslo-lg-dz" - "font-meslo-lg" - "gd-tools" - "emacs-org-roam-ui" - "wmctrl" - "telegram-desktop" - "lf" - "ranger" - "ueberzug++" - "fzf" - "emacs-org-roam" - "libime" - "fcitx5-gtk4" - "fcitx5-qt" - "fcitx5-gtk" - "sselp" - "nano" - "thunar" - "mcomix" - "pinentry" - "goldendict-ng" - "xdg-utils" - "font-google-material-design-icons" - "gst-plugins-good-qt" - "qtmultimedia" - "xpad-module" - "unzip" - "zip" - "emacs-esxml" - "html-xml-utils" - "emacs-rainbow-delimiters" - "aria2" - "xdg-desktop-portal" - "xdg-desktop-portal-gtk" - "xprop" - "nicotine+" - "yt-dlp" - "higan" - "nyxt" - "emacs-nyxt" - "tmux" - "alacritty" - "lm-sensors" - "anki" - "emacs-olivetti" - "foliate" - "emacs-slime" - "python" - "xrdb" - "dbus" - "steam" - "make" - "p7zip" - "cmake" - "element-desktop" - "emacs-dirvish" - "readline" - "curl" - "nix" - "qpdfview" - "xclip" - "font-apple-color-emoji" - "emacs-nerd-icons" - "emacs-telega" - "htop" - "cl-clx" - "neofetch" - "kitty" - "sbcl-stumpwm-ttf-fonts" - "cl-clx-truetype" - "picom" - "feh" - "xmodmap" - "rofi" - "emacs-stumpwm-mode" - "sbcl-stumpwm-net" - "sbcl-stumpwm-cpu" - "sbcl-stumpwm-mem" - "sbcl-stumpwm-disk" - "sbcl-stumpwm-screenshot" - "sbcl-stumpwm-pamixer" - "sbcl-stumpwm-swm-gaps" - "cmus" - "zstd" - "scrot" - "cl-css" - "git" - "gst-plugins-good" - "gst-plugins-bad" - "gstreamer" - "ungoogled-chromium" - "guile" - "icecat" - "pavucontrol-qt" - "mpv" - "emacs"))) - - ;; Below is the list of Home services. To search for available - ;; services, run 'guix home search KEYWORD' in a terminal. - (services - (list (service home-bash-service-type - (home-bash-configuration - (aliases '(("analyze_video" . "~/.local/bin/analyze_video.sh") - ("ct" . "~/.local/bin/compatibility.sh") - ("grep" . "grep --color=auto") - ("lf" . "~/.local/bin/lf/lfrun") - ("ll" . "ls -l") - ("ls" . "ls -p --color=auto") - ("revive" . "xmodmap -e '\\''clear mod4'\\'' && xmodmap -e '\\''keycode 133 = F20'\\''"))) - (bashrc (list (local-file - "/home/hashirama/src/guix-config/.bashrc" - "bashrc"))) - (bash-profile (list (local-file - "/home/hashirama/src/guix-config/.bash_profile" - "bash_profile")))))))) diff --git a/stumpwm/.gitignore b/stumpwm/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/stumpwm/init.lisp b/stumpwm/init.lisp deleted file mode 100644 index a34adc6..0000000 --- a/stumpwm/init.lisp +++ /dev/null @@ -1,171 +0,0 @@ -(in-package :stumpwm) - -(add-to-load-path "~/.guix-profile/share/common-lisp/sbcl/stumpwm-ttf-fonts/") -(add-to-load-path "~/.guix-profile/share/common-lisp/sbcl/stumpwm-swm-gaps/") -;;(add-to-list ) - -;;;; gaps -;;(load-module "swm-gaps") -;; -(when *initializing* - (mode-line)) - - -(run-shell-command "xmodmap -e 'clear mod4'" t) ;; clears windowskey/mod4 - -(run-shell-command "xmodmap -e 'keycode 133 = F20'" t) ;;assigns F20 to keycode 133 - -(set-prefix-key (kbd "F20")) ;; sets prefix to F20 which was just assigned to windows key - -(run-shell-command "exec feh --bg-fill ~/wallpaper.jpg & picom -b") -(run-shell-command "xrandr --output HDMI-A-0 --mode 1366x768") - -(defcommand screenshot () () - (run-shell-command "flameshot gui --path=/mnt/Data/mpv-screenshots/screenshots")) -(define-key *top-map* (kbd "M-i") "screenshot") - -(defcommand nyxt () () - (run-or-raise "nyxt" '(:class "Nyxt"))) - -(define-key *top-map* (kbd "M-p") "nyxt") - -;; in the case i want a new terminal -(define-key *top-map* (kbd "M-l") "exec kitty") - -;; for reusing a open terminal -(defcommand terminal () () - (run-or-raise "kitty" '(:class "kitty"))) - -(define-key *top-map* (kbd "M-v") "terminal") - -(defcommand goldendict () () - (run-or-raise "goldendict" '(:class "GoldenDict-ng"))) -(define-key *top-map* (kbd "M-e") "goldendict") - - -(define-key *top-map* (kbd "M-d") "exec rofi -show run") -(define-key *root-map* (kbd "R") "restart-hard") - -;; Frames -(define-key *root-map* (kbd "x") "hsplit") -(define-key *root-map* (kbd "z") "vsplit") -(define-key *root-map* (kbd "n") "remove-split") -(define-key *root-map* (kbd "Q") "quit") - -(define-key *root-map* (kbd "q") "delete") -(define-key *root-map* (kbd "r") "remove") - -(define-key *root-map* (kbd "h") "move-focus left") -(define-key *root-map* (kbd "j") "move-focus down") -(define-key *root-map* (kbd "k") "move-focus up") -(define-key *root-map* (kbd "l") "move-focus right") -(define-key *top-map* (kbd "H") "move-window left") -(define-key *top-map* (kbd "J") "move-window down") -(define-key *top-map* (kbd "K") "move-window up") -(define-key *top-map* (kbd "L") "move-window right") - -(setf *mouse-focus-policy* :click) - - - -(define-key *top-map* (kbd "M-n") "exec xmodmap -e 'clear mod4' && exec xmodmap -e 'keycode 133 = F20'") -(run-shell-command "xrdb /home/hashirama/.Xresources") -(run-shell-command "export GTK_IM_MODULE=fcitx") -(run-shell-command "export QT_IM_MODULE=fcitx") -(run-shell-command "export export XMODIFIERS=@im=fcitx") -(sleep 2) -(run-shell-command "fcitx5") -(sleep 2) - -(run-shell-command "xmodmap -e 'clear mod4'" t) ;; clears windowskey/mod4 - -(run-shell-command "xmodmap -e 'keycode 133 = F20'" t) ;;assigns F20 to keycode 133 - - - -(defun pretty-time () - "日付を '17:19:51 2014年4月27日、日曜日' の形式で返します。" - (defun stringify-dow (dow) - (nth dow '("月曜日" "火曜日" "水曜日" "木曜日" "金曜日" "土曜日" "日曜日"))) - (defun stringify-mon (mon) - (nth (- mon 1) '("1月" "2月" "3月" "4月" - "5月" "6月" "7月" "8月" - "9月" "10月" "11月" "12月"))) -(multiple-value-bind (sec min hr date mon yr dow dst-p tz) - (get-decoded-time) - (format NIL "~2,'0d:~2,'0d:~2,'0d ~d年~a時 ~d分、~a秒" - yr (stringify-mon mon) - date (stringify-dow dow) - hr min sec))) - -;; ---- - -(setf *mode-line-timeout* 2) - - -;;--- - -(defvar *senju/workspaces* -;; (list "一" "二" "三" "四" "五" "六" "七" "八" "九" "十" "数学" "勉強")) - - (list "一" "二" "三" "四" "五" "六" "七" "八" "九" "十" "数学" "勉強")) - (stumpwm:grename (nth 0 *senju/workspaces*)) -(dolist (workspace (cdr *senju/workspaces*)) - (stumpwm:gnewbg workspace)) - -(defvar *move-to-keybinds* - (list "!" "@" "#" "$" "%" "^" "&" "*" "(" "[" "]")) -(dotimes (y (length *senju/workspaces*)) - (let ((workspace (write-to-string (+ y 1)))) - (define-key *root-map* (kbd workspace) (concat "gselect " workspace)) - (define-key *root-map* (kbd (nth y *move-to-keybinds*)) (concat "gmove-and-follow " workspace)))) - -(defun workspace-number-to-character (index) - (elt '("一" "二" "三" "四" "五" "六" "七" "八" "九" "十" "数学" "勉強") index)) - -;; Modify the modeline format to display group numbers as characters -(defvar *modeline-format* - '(" " (:eval (workspace-number-to-character (current-group))) " " mode-line-misc-info mode-line-client - mode-line-modified mode-line-frame-identification " " mode-line-buffer-identification)) - - - - - -(load-module "ttf-fonts") - -(setf xft:*font-dirs* '("~/.local/share/fonts/")) -(xft:cache-fonts) - -(set-font (make-instance 'xft:font :family "Iosevka Comfy,Iosevka Comfy SemiLight" :subfamily "SemiLight" :size 10)) -(setf *startup-message* "fonts loaded") - - -(setf *screen-mode-line-format* (list "[^B%n^b] %W^>%d")) -(setf *mode-line-timeout* 2) -(setf *screen-mode-line-format* - (list "[^B%n^b] %W " ; groups/windows - "^>" ; right align -(list '(:eval (concat "| " - - " |"))) - - - " ^7* " '(:eval (pretty-time)); date - )) - - -;; gaps - - -(load-module "swm-gaps") - -(setf swm-gaps:*inner-gaps-size* 10 - swm-gaps:*outer-gaps-size* 5 - swm-gaps:*head-gaps-size* 5) - -(when *initializing* - (swm-gaps:toggle-gaps)) - - - diff --git a/xmonad/build-x86_64-linux/Main.hi b/xmonad/build-x86_64-linux/Main.hi new file mode 100644 index 0000000000000000000000000000000000000000..cbe3a1b55670406fdc1f11b9e40c83d4543277ab GIT binary patch literal 3151 zcmaJ?3se->8NOo}A5naO3OH1YN6ULr32D#iusgeq&dw||v&wQ# z&JhbDA{tOZQ1O96A`kHariiE@psS*gh$4$bjUW*f6!5{r-aETXg!XjzFwFhF?|ZMXfvbC+@?ZHJNTa z-``tagB`w;bY*a`I(>yN*FR`JZFPP*Bgy|L?t=>k@`>(I879WP3!JuR&2OWwS_ z@-~)yp{%>D^q^@6)>GLuoRFS6a1Fa$RaaWH@#~Z#Eb08!%_#->*`5G?FgM^Z4!j3! z01n2331A|a1l|Xe!4zN%rh;i;I+y|MfIXNAW`Wtj0XRa=aSm{p3+(3s`}x5B17QCl zu>TdXUjSw<1o$F=e>4Z+ivj*?fPW0|-vE3Gz&`=_Zvp;0fPV^b8NdmE{~q8@0G9*Y z8Q?AeUkdPLV7x0B?*=Bgg9#qM_7A}JkHGFTn4-;R3ji4Rr<$5aS;ik86qvB`11ZL~ z>&Xo`pKF|7GWaN=GXBi9trGru z|MqLu`R8jZ-(W}T&Q`QPeEzmVBK}f&vV2Q!uIXSOw)2cJ>1h0&Eg6WIxIC-xU~+L& zeM9W`H>$Q4oz1G#LU^iYS60)DL;30F?qKyvd-gU}8rlNGt+_c!I7YT1)@yZ|*4Gwe#9yB{qOm$Y z^Tgnstqr}m8#?P>?Um&I-2=O~m)0CloRIRcuk7B?&Tnm@-0`nng&B|UojNdZ1G`$< zk=EB+Q+yZc9sjm3`N^fsCt2l7S}WRL-MVVbYmo4O&Wy)pJLKgJ97M> zLz3MsI-4=TA(WRQwo|NP`Bwuyil-E7f`LgAs zJ+E4hROGZLZj$7y57(6p<He+|QtIDc(ZY`6dM#Q%yzx_GBqNW$SQu1^5HzfnL zZzY2-4%{|wXiRw2x+v}ScaKZA^pu1l|B+S0y~dRK-XpUb`nFf>J$Ui53c+6%+}hif zdN}LJeeB1o6T8oCPW&+wLl*=X8opYeQv2p+CRTUr#nB5}j>Svc0&Kp7q|HCUxa_Qp z# zqa|t9CJ;UrM#$wdIU#okj((vf1cBylF3-`7MdWl^+-)oW)+uN)`J zAngIeESrcB9Zzc~X+=f`)zE>C=adx8M2-Tu5>B58l*n*OlA$2v1ix}8nWv6f#l^U< zjdF=}^^9Udg1lTqW7bUT#Hh7ep8g`v=~IgcHJ+!Vtm5Sczep_^9OM%dMT%!hhKS@?N`;{RFB`F(|BE*-xO1$E1g2}Ost4iQaW@bY!MI^u7HgqHG-pL?g zqM*bP!~q3@$Bcs0tKgLZB%3G)z+R(euH!F(we)gegSTq{oanP-p)_ahVrc=g2E z`SPSL8dgNWYfTah=C=57jEan6D5?H1iex5)@D!t0S@zA_d_fUj=z@|?2uea2Zyt=v zBlE#i)>#Q44V+%IGU%?IVNnH=EX>)D(K7Lk07nX3;1_Qn?oPVXkFu8ANzm z^#T<}33MFgFos%9vnp=AFK5M30DC@+rDYgu8Y#X!38Rz#ZbH~V)% m*feVGuv$TOfWy2pF4KqQ@mDuB64iZ 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 g{-$$%yz{Hy8n*+#-?vk)y#Gr=}D(Mtb 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 bcr8a|UO7VQ*` spawn "scrot -s" ) + , ("M-e", runOrRaise "goldendict" (className =? "GoldenDict-ng")) + , ("M-p", runOrRaise "nyxt" (className =? "Nyxt")) + , ("M-t", withFocused $ windows . W.sink) -- Toggle float for the focused window + ] + + +myManageHook :: ManageHook +myManageHook = composeAll + [ className =? "Gimp" --> doFloat + , isDialog --> doFloat + ] + + +myTheme :: Theme +myTheme = def + { decoHeight = 20 -- Adjust the height of the title bar as needed + -- Add other theme properties as needed + } + +myLayout = mouseResize $ spacingRaw True (Border 10 10 10 10) True (Border 10 10 10 10) True $ + Tall 1 (3/100) (1/2) ||| Full + + + + +myXmobarPP :: PP +myXmobarPP = def + { ppSep = magenta " • " + , ppTitleSanitize = xmobarStrip + , ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2 + , ppHidden = white . wrap " " "" + , ppHiddenNoWindows = lowWhite . wrap " " "" + , ppUrgent = red . wrap (yellow "!") (yellow "!") + , ppOrder = \[ws, l, _, wins] -> [ws, l, wins] + , ppExtras = [logTitles formatFocused formatUnfocused] + } + where + formatFocused = wrap (white "[") (white "]") . magenta . ppWindow + formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow + + -- | Windows should have *some* title, which should not not exceed a + -- sane length. + ppWindow :: String -> String + ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30 + + blue, lowWhite, magenta, red, white, yellow :: String -> String + magenta = xmobarColor "#ff79c6" "" + blue = xmobarColor "#bd93f9" "" + white = xmobarColor "#f8f8f2" "" + yellow = xmobarColor "#f1fa8c" "" + red = xmobarColor "#ff5555" "" + lowWhite = xmobarColor "#bbbbbb" "" diff --git a/xmonad/xmonad.hs~ b/xmonad/xmonad.hs~ new file mode 100644 index 0000000..b388572 --- /dev/null +++ b/xmonad/xmonad.hs~ @@ -0,0 +1,114 @@ +import XMonad + +import XMonad.Hooks.DynamicLog +import XMonad.Hooks.ManageDocks +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.StatusBar +import XMonad.Hooks.StatusBar.PP + +import XMonad.StackSet as W -- float purposes +import XMonad.Actions.MouseResize + + +import XMonad.Util.EZConfig +import XMonad.Util.Loggers +import XMonad.Util.Ungrab + +import XMonad.Layout.Magnifier +import XMonad.Layout.ThreeColumns +import XMonad.Layout.Spacing + +import XMonad.Hooks.EwmhDesktops +import XMonad.Util.SpawnOnce (spawnOnce) + +-- run or raise +import XMonad.Actions.WindowGo (runOrRaise) +import XMonad.ManageHook (className) +import XMonad.StackSet (RationalRect(..)) +-- + +import XMonad.Layout.Decoration (decoration, DefaultShrinker(..), Theme(..), shrinkText) +import XMonad.Layout.Simplest +import XMonad.Layout.SimplestFloat +import XMonad.Layout.Spacing + + + + + + + +main :: IO () +main = xmonad + . ewmhFullscreen + . ewmh + . withEasySB (statusBarProp "xmobar" (pure myXmobarPP)) defToggleStrutsKey + $ myConfig + +myConfig = def + { modMask = mod4Mask -- Rebind Mod to the Super key + , layoutHook = myLayout -- Use custom layouts + , terminal = "alacritty" + , manageHook = myManageHook -- Match on certain windows + , startupHook = do + -- other startup commands + spawnOnce "xrandr --output HDMI-A-0 --mode 1366x768" + spawnOnce "xrdb /home/hashirama/.Xresources" + spawnOnce "feh --bg-fill /home/hashirama/wallpaper.jpg" + } + `additionalKeysP` + [ ("M-d", spawn "rofi -show run") + , ("M-s", spawn "bash -c dictpopup") + , ("M-C-s", unGrab *> spawn "scrot -s" ) + , ("M-e", runOrRaise "goldendict" (className =? "GoldenDict-ng")) + , ("M-p", runOrRaise "nyxt" (className =? "Nyxt")) + , ("M-t", withFocused $ windows . W.sink) -- Toggle float for the focused window + ] + + +myManageHook :: ManageHook +myManageHook = composeAll + [ className =? "Gimp" --> doFloat + , isDialog --> doFloat + ] + + +myTheme :: Theme +myTheme = def + { decoHeight = 20 -- Adjust the height of the title bar as needed + -- Add other theme properties as needed + } + +myLayout = mouseResize $ spacingRaw True (Border 10 10 10 10) True (Border 10 10 10 10) True $ + Tall 1 (3/100) (1/2) ||| Full + + + + +myXmobarPP :: PP +myXmobarPP = def + { ppSep = magenta " • " + , ppTitleSanitize = xmobarStrip + , ppCurrent = wrap " " "" . xmobarBorder "Top" "#8be9fd" 2 + , ppHidden = white . wrap " " "" + , ppHiddenNoWindows = lowWhite . wrap " " "" + , ppUrgent = red . wrap (yellow "!") (yellow "!") + , ppOrder = \[ws, l, _, wins] -> [ws, l, wins] + , ppExtras = [logTitles formatFocused formatUnfocused] + } + where + formatFocused = wrap (white "[") (white "]") . magenta . ppWindow + formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow + + -- | Windows should have *some* title, which should not not exceed a + -- sane length. + ppWindow :: String -> String + ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 30 + + blue, lowWhite, magenta, red, white, yellow :: String -> String + magenta = xmobarColor "#ff79c6" "" + blue = xmobarColor "#bd93f9" "" + white = xmobarColor "#f8f8f2" "" + yellow = xmobarColor "#f1fa8c" "" + red = xmobarColor "#ff5555" "" + lowWhite = xmobarColor "#bbbbbb" ""