mirror of
https://github.com/starr-dusT/dotfiles.git
synced 2025-02-18 10:47:31 -08:00
initially working chezmoi
This commit is contained in:
commit
1d3954ef0b
5
.chezmoiignore
Normal file
5
.chezmoiignore
Normal file
@ -0,0 +1,5 @@
|
||||
readme.md
|
||||
.gitignore
|
||||
.git
|
||||
provision
|
||||
additional-setup.md
|
75
additional-setup.md
Normal file
75
additional-setup.md
Normal file
@ -0,0 +1,75 @@
|
||||
# Additional Setup
|
||||
|
||||
The following documents Fedora setup that wasn't automated with ansible
|
||||
|
||||
## Zen-link Kernel for Fedora
|
||||
|
||||
I like a kernel simliar to the Arch Zen kernel for gaming. [Nobara](https://nobaraproject.org/) provides one in this [copr repo](https://copr.fedorainfracloud.org/coprs/sentry/kernel-fsync/).
|
||||
|
||||
```bash
|
||||
sudo dnf copr enable sentry/kernel-fsync
|
||||
sudo dnf update --refresh
|
||||
```
|
||||
|
||||
## Properitary Nvidia Drivers
|
||||
|
||||
Nvidia drivers are installed with this nice [copr repo](https://copr.fedorainfracloud.org/coprs/t0xic0der/nvidia-auto-installer-for-fedora/).
|
||||
|
||||
```bash
|
||||
sudo dnf copr enable t0xic0der/nvidia-auto-installer-for-fedora -y
|
||||
sudo dnf install nvautoinstall -y
|
||||
sudo nvautoinstall rpmadd
|
||||
sudo nvautoinstall driver
|
||||
sudo nvautoinstall ffmpeg
|
||||
sudo nvautoinstall vulkan
|
||||
sudo nvautoinstall vidacc
|
||||
```
|
||||
|
||||
## Wireguard Client
|
||||
|
||||
Wireguard is nice for a home vpn.
|
||||
|
||||
1. Create client on server and copy resulting `.conf` file to `/etc/wireguard`
|
||||
2. Add connection with nmcli
|
||||
|
||||
```bash
|
||||
sudo nmcli connection import type wireguard file /etc/wireguard/your-wg-file.conf
|
||||
```
|
||||
|
||||
The vpn can be enable/disabled through gnome.
|
||||
|
||||
## btrbk
|
||||
|
||||
[btrbk](https://github.com/digint/btrbk) is used to create (currently only local) snapshots of the root and user volumes.
|
||||
|
||||
```bash
|
||||
sudo btrbk -c ~/.config/btrbk/home_btrbk.conf -v run # creates user backups and snapshots
|
||||
sudo btrbk -c ~/.config/btrbk/root_btrbk.conf -v run # creates root snapshots
|
||||
```
|
||||
|
||||
## Automount network drive with fstab
|
||||
|
||||
Fstab can be mounted when the network drive is accessed. This is done for the "engi" home server.
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /mnt/engi
|
||||
|
||||
# Add following line to fstab
|
||||
//<server-ip>/engi /mnt/engi cifs uid=1000,credentials=/home/tstarr/.smb,iocharset=utf8,noauto,x-systemd.automount 0 0
|
||||
```
|
||||
## Taskopen for taskwarrior
|
||||
|
||||
taskopen needs is easier to install manually at this point since the fedora package is very old.
|
||||
|
||||
```bash
|
||||
curl https://nim-lang.org/choosenim/init.sh -sSf | sh # install nim for compile
|
||||
git clone https://github.com/jschlatow/taskopen.git
|
||||
cd taskopen
|
||||
make PREFIX=/usr
|
||||
sudo make PREFIX=/usr install
|
||||
```
|
||||
|
||||
## PWA for Bitwarden
|
||||
|
||||
The default Bitwarden application kind of sucks so I use a [PWA plugin](https://github.com/filips123/PWAsForFirefox). Follow instructions to install rpm and adjust ID in i3 config to launch correct PWA for Bitwarden.
|
||||
|
BIN
bin/executable_chezmoi
Normal file
BIN
bin/executable_chezmoi
Normal file
Binary file not shown.
25
bin/executable_initial
Normal file
25
bin/executable_initial
Normal file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env sh
|
||||
set -e
|
||||
echo -e "Starting initial setup for Fedora..."
|
||||
|
||||
# Install ansible and run playbook
|
||||
sudo dnf -y update && sudo dnf install -y ansible
|
||||
|
||||
# Install ansible extensions
|
||||
ansible-galaxy install -r ~/.dotfiles/provision/requirements.yml
|
||||
|
||||
# Goto playbook and run it
|
||||
cd ~/.dotfiles/provision
|
||||
ansible-playbook setup.yml -i hosts --ask-become-pass
|
||||
|
||||
# Return to where you were
|
||||
cd -
|
||||
|
||||
read -p "Reboot? " -n 1 -r
|
||||
echo # (optional) move to a new line
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo reboot
|
4
bin/executable_pacdef
Normal file
4
bin/executable_pacdef
Normal file
@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env sh
|
||||
set -e
|
||||
# Search for package and return description
|
||||
dnf search "$1" | cut -d ':' -f 2- | sed -n 2p
|
17
bin/executable_tmux_dot
Normal file
17
bin/executable_tmux_dot
Normal file
@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
DIR="~/.dotfiles"
|
||||
|
||||
SESSION="Dots"
|
||||
SESSIONEXISTS=$(tmux list-sessions | grep $SESSION)
|
||||
|
||||
if [ "$SESSIONEXISTS" = "" ]
|
||||
then
|
||||
tmux new-session -s $SESSION -d
|
||||
tmux rename-window -t $SESSION:1 'Edit'
|
||||
tmux send-keys -t 'Edit' "cd ${DIR}" C-m 'nvim' C-m
|
||||
tmux new-window -t $SESSION:2 -n 'Term'
|
||||
tmux send-keys -t 'Term' "cd ${DIR}" C-m 'clear' C-m
|
||||
fi
|
||||
|
||||
tmux attach-session -t $SESSION:1
|
22
bin/executable_tmux_splat
Normal file
22
bin/executable_tmux_splat
Normal file
@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
|
||||
FRONT_DIR="~/devel/work/genisys/splat-react"
|
||||
BACK_DIR="~/devel/work/genisys/splat-python"
|
||||
|
||||
SESSION="Splat"
|
||||
SESSIONEXISTS=$(tmux list-sessions | grep $SESSION)
|
||||
|
||||
if [ "$SESSIONEXISTS" = "" ]
|
||||
then
|
||||
tmux new-session -s $SESSION -d
|
||||
tmux rename-window -t $SESSION:1 'Edit'
|
||||
tmux send-keys -t 'Edit' "cd ${FRONT_DIR}" C-m 'nvim' C-m
|
||||
tmux new-window -t $SESSION:2 -n 'Term'
|
||||
tmux send-keys -t 'Term' "cd ${FRONT_DIR}" C-m 'clear' C-m
|
||||
tmux new-window -t $SESSION:3 -n 'Front'
|
||||
tmux send-keys -t 'Front' "cd ${FRONT_DIR}" C-m 'npm run dev' C-m
|
||||
tmux new-window -t $SESSION:4 -n 'Back'
|
||||
tmux send-keys -t 'Back' "cd ${BACK_DIR}" C-m './start-dev.sh admin' C-m
|
||||
fi
|
||||
|
||||
tmux attach-session -t $SESSION:1
|
10
bin/executable_tof
Normal file
10
bin/executable_tof
Normal file
@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ $(task "$1" +fleeting 2>&1) == "No matches." ]];
|
||||
then
|
||||
task "$1" modify +fleeting
|
||||
task "$1" annotate fleeting
|
||||
taskopen $1
|
||||
else
|
||||
taskopen $1
|
||||
fi
|
13
bin/executable_update
Normal file
13
bin/executable_update
Normal file
@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env sh
|
||||
# provide tags to update with comma seperation (e.g. updates,packages)
|
||||
set -e
|
||||
echo -e "Starting update for Fedora..."
|
||||
|
||||
# Goto playbook and run it
|
||||
cd ~/.dotfiles/provision
|
||||
|
||||
# Install ansible and run playbook
|
||||
ansible-playbook setup.yml -i hosts --ask-become-pass --tags "$1" --skip-tags "once"
|
||||
|
||||
# Return to where you were
|
||||
cd -
|
26
dot_bashrc
Normal file
26
dot_bashrc
Normal file
@ -0,0 +1,26 @@
|
||||
# ~/.bashrc
|
||||
|
||||
# Source global definitions
|
||||
if [ -f /etc/bashrc ]; then
|
||||
. /etc/bashrc
|
||||
fi
|
||||
|
||||
# User specific environment
|
||||
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
|
||||
then
|
||||
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
||||
fi
|
||||
export PATH
|
||||
|
||||
export EDITOR="/usr/bin/nvim"
|
||||
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
|
||||
export PATH="$HOME/.nimble/bin:$PATH"
|
||||
|
||||
. "$HOME/.cargo/env"
|
||||
|
||||
alias spl="tmux_splat"
|
||||
alias n="nnn -d -e -H -r"
|
29
dot_config/btrbk/home_btrbk.conf
Normal file
29
dot_config/btrbk/home_btrbk.conf
Normal file
@ -0,0 +1,29 @@
|
||||
#
|
||||
# btrbk configuration file for /home
|
||||
#
|
||||
|
||||
# Enable transaction log
|
||||
transaction_log /var/log/home_btrbk.log
|
||||
|
||||
# Use sudo if btrbk or lsbtr is run by regular user
|
||||
backend_local_user btrfs-progs-sudo
|
||||
|
||||
# Enable stream buffer
|
||||
stream_buffer 256m
|
||||
|
||||
# Retention policy
|
||||
snapshot_preserve_min 2d
|
||||
snapshot_preserve 14d
|
||||
|
||||
target_preserve_min no
|
||||
target_preserve 20d 10w *m
|
||||
|
||||
snapshot_dir .snapshots
|
||||
|
||||
# Local snapshots
|
||||
volume /home
|
||||
subvolume tstarr
|
||||
# Always create snapshot, even if targets are unreachable
|
||||
snapshot_create always
|
||||
# Need a btrfs server before this will work
|
||||
#target /mnt/engi/backup/kestrel_backups
|
26
dot_config/btrbk/root_btrbk.conf
Normal file
26
dot_config/btrbk/root_btrbk.conf
Normal file
@ -0,0 +1,26 @@
|
||||
#
|
||||
# btrbk configuration file for root
|
||||
#
|
||||
|
||||
# Enable transaction log
|
||||
transaction_log /var/log/root_btrbk.log
|
||||
|
||||
# Use sudo if btrbk or lsbtr is run by regular user
|
||||
backend_local_user btrfs-progs-sudo
|
||||
|
||||
# Enable stream buffer
|
||||
stream_buffer 256m
|
||||
|
||||
# Retention policy
|
||||
snapshot_preserve_min 2d
|
||||
snapshot_preserve 14d
|
||||
|
||||
target_preserve_min no
|
||||
target_preserve 20d 10w *m
|
||||
|
||||
snapshot_dir .snapshots
|
||||
|
||||
# Local snapshots
|
||||
volume /
|
||||
subvolume .
|
||||
snapshot_name root
|
26
dot_config/crafted-emacs/config.el
Normal file
26
dot_config/crafted-emacs/config.el
Normal file
@ -0,0 +1,26 @@
|
||||
;;; config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Author: Tyler Starr
|
||||
|
||||
;; Commentary
|
||||
|
||||
;; Custom configuration for SystemCrafter's crafted-emacs
|
||||
|
||||
;;; Enable crafted modules
|
||||
(require 'crafted-defaults) ; Sensible default settings for Emacs
|
||||
(require 'crafted-updates) ; Tools to upgrade Crafted Emacs
|
||||
(require 'crafted-completion) ; selection framework based on `vertico`
|
||||
(require 'crafted-ui) ; Better UI experience (modeline etc.)
|
||||
(require 'crafted-windows) ; Window management configuration
|
||||
(require 'crafted-editing) ; Whitspace trimming, auto parens etc.
|
||||
(require 'crafted-evil) ; An `evil-mode` configuration
|
||||
(require 'crafted-org) ; org-appear, clickable hyperlinks etc.
|
||||
(require 'crafted-project) ; built-in alternative to projectile
|
||||
(require 'crafted-speedbar) ; built-in file-tree
|
||||
|
||||
;;; Enable local modules
|
||||
(require 'theme) ; Colors and non-interactive UI elements
|
||||
(require 'ux) ; Interactive UI elements and window management
|
||||
(require 'custom-org) ; All the custom bits for org-mode and accesories!
|
||||
|
||||
;;; Further settings and customizations follow...
|
131
dot_config/crafted-emacs/custom-org.el
Normal file
131
dot_config/crafted-emacs/custom-org.el
Normal file
@ -0,0 +1,131 @@
|
||||
;;; org.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Author: Tyler Starr
|
||||
|
||||
;; Commentary
|
||||
|
||||
;; Custom configuration for org-mode stuff!
|
||||
|
||||
;;; Org file locations
|
||||
|
||||
;; Set default working directory for org files
|
||||
(setq org-directory "~/documents/org")
|
||||
;; Set default locations to store notes
|
||||
(setq org-default-notes-file "~/documents/org/capture/refile.org")
|
||||
;; Set agenda files
|
||||
(setq org-agenda-files (quote ("~/documents/org/capture"
|
||||
"~/documents/org/capture/agendas"
|
||||
"~/documents/org/capture/bookmarks"
|
||||
"~/documents/org/capture/notes")))
|
||||
|
||||
;;; Set Todo Options
|
||||
|
||||
;; Set keywords for todo items
|
||||
(setq org-todo-keywords
|
||||
(quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d)")
|
||||
(sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" ))))
|
||||
|
||||
;; Set colors for todo items
|
||||
(setq org-todo-keyword-faces
|
||||
(quote (("TODO" :foreground "red" :weight bold)
|
||||
("NEXT" :foreground "blue" :weight bold)
|
||||
("DONE" :foreground "forest green" :weight bold)
|
||||
("WAITING" :foreground "orange" :weight bold)
|
||||
("HOLD" :foreground "magenta" :weight bold)
|
||||
("CANCELLED" :foreground "forest green" :weight bold))))
|
||||
|
||||
;; Set tags based on todo changes
|
||||
(setq org-todo-state-tags-triggers
|
||||
(quote (("CANCELLED" ("CANCELLED" . t))
|
||||
("WAITING" ("WAITING" . t))
|
||||
("HOLD" ("WAITING") ("HOLD" . t))
|
||||
(done ("WAITING") ("HOLD"))
|
||||
("TODO" ("WAITING") ("CANCELLED") ("HOLD"))
|
||||
("NEXT" ("WAITING") ("CANCELLED") ("HOLD")))))
|
||||
;; open org-capture
|
||||
(global-set-key (kbd "C-c c") 'org-capture)
|
||||
|
||||
(defvar ts-capture-prmt-history nil
|
||||
"History of prompt answers for org capture.")
|
||||
|
||||
(defun ts/prmt (prompt variable)
|
||||
"PROMPT for string, save it to VARIABLE and insert it."
|
||||
(make-local-variable variable)
|
||||
(set variable (read-string (concat prompt ": ") nil ts-capture-prmt-history)))
|
||||
|
||||
;; Capture templates for: TODO tasks, Notes, appointments, and meetings
|
||||
(setq org-capture-templates
|
||||
(quote (("t" "todo" entry (file "~/documents/org/capture/refile.org")
|
||||
"* TODO %?\n%U\n%a\n")
|
||||
("r" "respond" entry (file "~/documents/org/capture/refile.org")
|
||||
"* TODO Respond to %:from on %:subject\nSCHEDULED: %t\n%U\n%a\n")
|
||||
("w" "workout" entry (file+datetree "~/documents/org/tracking/workout.org")
|
||||
"* Test: %(ts/prmt \"Hey\" 'lel) - %(ts/prmt \"Hey1\" 'lel)")
|
||||
("n" "note" entry (file "~/documents/org/capture/refile.org")
|
||||
"* %? :NOTE:\n%U\n%a\n")
|
||||
("m" "Meeting" entry (file "~/documents/org/capture/refile.org")
|
||||
"* MEETING with %? :MEETING:\n%U")
|
||||
("h" "Habit" entry (file "~/documents/org/capture/refile.org")
|
||||
"* NEXT %?\n%U\n%a\nSCHEDULED: %(format-time-string \"%<<%Y-%m-%d %a .+1d/3d>>\")\n:PROPERTIES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n"))))
|
||||
|
||||
;; Targets include this file and any file contributing to the agenda - up to 9 levels deep
|
||||
(setq org-refile-targets (quote ((nil :maxlevel . 9)
|
||||
(org-agenda-files :maxlevel . 9))))
|
||||
;; Use full outline paths for refile targets - we file directly with IDO
|
||||
(setq org-refile-use-outline-path t)
|
||||
;; Targets complete directly with IDO
|
||||
(setq org-outline-path-complete-in-steps nil)
|
||||
;; Allow refile to create parent tasks with confirmation
|
||||
(setq org-refile-allow-creating-parent-nodes (quote confirm))
|
||||
;; Exclude DONE state tasks from refile targets
|
||||
(defun bh/verify-refile-target ()
|
||||
"Exclude todo keywords with a done state from refile targets"
|
||||
(not (member (nth 2 (org-heading-components)) org-done-keywords)))
|
||||
(setq org-refile-target-verify-function 'bh/verify-refile-target)
|
||||
|
||||
|
||||
(crafted-package-install-package 'org-super-agenda)
|
||||
(org-super-agenda-mode)
|
||||
(setq org-super-agenda-header-map (make-sparse-keymap))
|
||||
|
||||
(setq org-agenda-custom-commands
|
||||
'(("c" "Custom Agenda"
|
||||
((agenda "" ((org-agenda-span 'day)
|
||||
(org-super-agenda-groups
|
||||
'((:name "--- LATE ---"
|
||||
:face (:underline t)
|
||||
:deadline past
|
||||
:order 1)
|
||||
(:name "--- DUE TODAY ---"
|
||||
:time-grid t
|
||||
:deadline today
|
||||
:order 2)
|
||||
(:name "--- SCHEDULED TODAY ---"
|
||||
:time-grid t
|
||||
:date today
|
||||
:scheduled today
|
||||
:order 3)
|
||||
(:name ""
|
||||
:discard (:anything)
|
||||
:order 99))
|
||||
)))))))
|
||||
|
||||
;; Configure common tags
|
||||
(setq org-tag-alist
|
||||
'((:startgroup)
|
||||
; Put mutually exclusive tags here
|
||||
(:endgroup)
|
||||
("@errand" . ?E)
|
||||
("@home" . ?H)
|
||||
("@work" . ?W)
|
||||
("agenda" . ?a)
|
||||
("planning" . ?p)
|
||||
("publish" . ?P)
|
||||
("batch" . ?b)
|
||||
("note" . ?n)
|
||||
("idea" . ?i)
|
||||
("thinking" . ?t)
|
||||
("recurring" . ?r)))
|
||||
|
||||
;;; Provide the module
|
||||
(provide 'custom-org)
|
48
dot_config/crafted-emacs/custom.el
Normal file
48
dot_config/crafted-emacs/custom.el
Normal file
@ -0,0 +1,48 @@
|
||||
;;; custom.el --- l -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2022
|
||||
|
||||
;; Author: <tstarr@kestrel>
|
||||
;; Keywords:
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;;
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
|
||||
(provide 'custom)
|
||||
;;; custom.el ends here
|
||||
(custom-set-variables
|
||||
;; custom-set-variables was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
'(custom-safe-themes
|
||||
'("eca44f32ae038d7a50ce9c00693b8986f4ab625d5f2b4485e20f22c47f2634ae" default))
|
||||
'(package-selected-packages
|
||||
'((burly :host github :repo "alphapapa/burly.el" :branch "main")
|
||||
(burly :host github :repo "alphapapa/burly.el" :branch "master")
|
||||
burly dirvish vertico use-package org-appear orderless marginalia helpful evil-nerd-commenter evil-collection embark-consult elisp-demos doom-themes doom-modeline corfu-doc cape all-the-icons))
|
||||
'(warning-suppress-types '((frameset))))
|
||||
(custom-set-faces
|
||||
;; custom-set-faces was added by Custom.
|
||||
;; If you edit it by hand, you could mess it up, so be careful.
|
||||
;; Your init file should contain only one such instance.
|
||||
;; If there is more than one, they won't work right.
|
||||
)
|
5
dot_config/crafted-emacs/early-config.el
Normal file
5
dot_config/crafted-emacs/early-config.el
Normal file
@ -0,0 +1,5 @@
|
||||
(setq package-enable-at-startup t)
|
||||
(defalias 'crafted-use-package 'straight-use-package)
|
||||
(setq crafted-package-system 'straight)
|
||||
(setq straight-base-dir "~/.emacs.d/straight")
|
||||
(crafted-package-bootstrap crafted-package-system)
|
19
dot_config/crafted-emacs/theme.el
Normal file
19
dot_config/crafted-emacs/theme.el
Normal file
@ -0,0 +1,19 @@
|
||||
;;; theme.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Author: Tyler Starr
|
||||
|
||||
;; Commentary
|
||||
|
||||
;; Custom theming for emacs
|
||||
|
||||
;;; Colors
|
||||
|
||||
;; Provide nice premade themes
|
||||
(crafted-package-install-package 'doom-themes)
|
||||
|
||||
;; Disable default theme and enable gruvbox
|
||||
(disable-theme 'deeper-blue)
|
||||
(load-theme 'doom-gruvbox t)
|
||||
|
||||
;;; Provide the module
|
||||
(provide 'theme)
|
31
dot_config/crafted-emacs/ux.el
Normal file
31
dot_config/crafted-emacs/ux.el
Normal file
@ -0,0 +1,31 @@
|
||||
;;; ux.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Author: Tyler Starr
|
||||
|
||||
;; Commentary
|
||||
|
||||
;; Custom configuration of emacs ux elements
|
||||
|
||||
;;; File Management
|
||||
|
||||
(crafted-package-install-package 'dirvish)
|
||||
(dirvish-override-dired-mode)
|
||||
|
||||
(crafted-package-install-package 'treemacs)
|
||||
|
||||
;;; Window Management
|
||||
|
||||
(crafted-package-install-package '(burly :host github
|
||||
:repo "alphapapa/burly.el"
|
||||
:branch "master"))
|
||||
(tab-bar-mode)
|
||||
(burly-tabs-mode)
|
||||
|
||||
;;; Keybinds
|
||||
|
||||
(crafted-package-install-package 'which-key)
|
||||
(which-key-mode)
|
||||
|
||||
|
||||
;;; Provide the module
|
||||
(provide 'ux)
|
187
dot_config/herbstluftwm/executable_autostart
Normal file
187
dot_config/herbstluftwm/executable_autostart
Normal file
@ -0,0 +1,187 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# this is a simple config for herbstluftwm
|
||||
|
||||
hc() {
|
||||
herbstclient "$@"
|
||||
}
|
||||
|
||||
hc emit_hook reload
|
||||
|
||||
xsetroot -solid '#FFFFFF'
|
||||
|
||||
# remove all existing keybindings
|
||||
hc keyunbind --all
|
||||
|
||||
# keybindings
|
||||
# if you have a super key you will be much happier with Mod set to Mod4
|
||||
#Mod=Mod1 # Use alt as the main modifier
|
||||
Mod=Mod4 # Use the super key as the main modifier
|
||||
|
||||
hc keybind $Mod-Shift-q quit
|
||||
hc keybind $Mod-Shift-r reload
|
||||
hc keybind $Mod-Shift-c close
|
||||
TERMINAL="alacritty"
|
||||
hc keybind $Mod-Return spawn "${TERMINAL:-xterm}" # use your $TERMINAL with xterm as fallback
|
||||
|
||||
# basic movement in tiling and floating mode
|
||||
# focusing clients
|
||||
hc keybind $Mod-Left focus left
|
||||
hc keybind $Mod-Down focus down
|
||||
hc keybind $Mod-Up focus up
|
||||
hc keybind $Mod-Right focus right
|
||||
hc keybind $Mod-h focus left
|
||||
hc keybind $Mod-j focus down
|
||||
hc keybind $Mod-k focus up
|
||||
hc keybind $Mod-l focus right
|
||||
|
||||
# moving clients in tiling and floating mode
|
||||
hc keybind $Mod-Shift-Left shift left
|
||||
hc keybind $Mod-Shift-Down shift down
|
||||
hc keybind $Mod-Shift-Up shift up
|
||||
hc keybind $Mod-Shift-Right shift right
|
||||
hc keybind $Mod-Shift-h shift left
|
||||
hc keybind $Mod-Shift-j shift down
|
||||
hc keybind $Mod-Shift-k shift up
|
||||
hc keybind $Mod-Shift-l shift right
|
||||
|
||||
# splitting frames
|
||||
# create an empty frame at the specified direction
|
||||
hc keybind $Mod-u split bottom 0.5
|
||||
hc keybind $Mod-o split right 0.5
|
||||
# let the current frame explode into subframes
|
||||
hc keybind $Mod-Control-space split explode
|
||||
|
||||
# resizing frames and floating clients
|
||||
resizestep=0.02
|
||||
hc keybind $Mod-Control-h resize left +$resizestep
|
||||
hc keybind $Mod-Control-j resize down +$resizestep
|
||||
hc keybind $Mod-Control-k resize up +$resizestep
|
||||
hc keybind $Mod-Control-l resize right +$resizestep
|
||||
hc keybind $Mod-Control-Left resize left +$resizestep
|
||||
hc keybind $Mod-Control-Down resize down +$resizestep
|
||||
hc keybind $Mod-Control-Up resize up +$resizestep
|
||||
hc keybind $Mod-Control-Right resize right +$resizestep
|
||||
|
||||
# tags
|
||||
tag_names=( {1..9} )
|
||||
tag_keys=( {1..9} 0 )
|
||||
|
||||
hc rename default "${tag_names[0]}" || true
|
||||
for i in "${!tag_names[@]}" ; do
|
||||
hc add "${tag_names[$i]}"
|
||||
key="${tag_keys[$i]}"
|
||||
if ! [ -z "$key" ] ; then
|
||||
hc keybind "$Mod-$key" use_index "$i"
|
||||
hc keybind "$Mod-Shift-$key" move_index "$i"
|
||||
fi
|
||||
done
|
||||
|
||||
# cycle through tags
|
||||
hc keybind $Mod-period use_index +1 --skip-visible
|
||||
hc keybind $Mod-comma use_index -1 --skip-visible
|
||||
|
||||
# layouting
|
||||
hc keybind $Mod-r remove
|
||||
hc keybind $Mod-s floating toggle
|
||||
hc keybind $Mod-f fullscreen toggle
|
||||
hc keybind $Mod-Shift-f set_attr clients.focus.floating toggle
|
||||
hc keybind $Mod-Shift-m set_attr clients.focus.minimized true
|
||||
hc keybind $Mod-Control-m jumpto last-minimized
|
||||
hc keybind $Mod-p pseudotile toggle
|
||||
# The following cycles through the available layouts within a frame, but skips
|
||||
# layouts, if the layout change wouldn't affect the actual window positions.
|
||||
# I.e. if there are two windows within a frame, the grid layout is skipped.
|
||||
hc keybind $Mod-space \
|
||||
or , and . compare tags.focus.curframe_wcount = 2 \
|
||||
. cycle_layout +1 vertical horizontal max vertical grid \
|
||||
, cycle_layout +1
|
||||
|
||||
# mouse
|
||||
hc mouseunbind --all
|
||||
hc mousebind $Mod-Button1 move
|
||||
hc mousebind $Mod-Button2 zoom
|
||||
hc mousebind $Mod-Button3 resize
|
||||
|
||||
# focus
|
||||
hc keybind $Mod-BackSpace cycle_monitor
|
||||
hc keybind $Mod-Tab cycle_all +1
|
||||
hc keybind $Mod-Shift-Tab cycle_all -1
|
||||
hc keybind $Mod-c cycle
|
||||
hc keybind $Mod-i jumpto urgent
|
||||
|
||||
# rofi
|
||||
|
||||
# theme
|
||||
hc attr theme.tiling.reset 1
|
||||
hc attr theme.floating.reset 1
|
||||
hc set frame_border_active_color '#222222cc'
|
||||
hc set frame_border_normal_color '#101010cc'
|
||||
hc set frame_bg_normal_color '#565656aa'
|
||||
hc set frame_bg_active_color '#345F0Caa'
|
||||
hc set frame_border_width 1
|
||||
hc set always_show_frame on
|
||||
hc set frame_bg_transparent on
|
||||
hc set frame_transparent_width 5
|
||||
hc set frame_gap 4
|
||||
|
||||
hc attr theme.title_height 15
|
||||
hc attr theme.title_font 'Dejavu Sans:pixelsize=12' # example using Xft
|
||||
# hc attr theme.title_font '-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
|
||||
hc attr theme.padding_top 2 # space below the title's baseline (i.e. text depth)
|
||||
hc attr theme.active.color '#345F0Cef'
|
||||
hc attr theme.title_color '#ffffff'
|
||||
hc attr theme.normal.color '#323232dd'
|
||||
hc attr theme.urgent.color '#7811A1dd'
|
||||
hc attr theme.normal.title_color '#898989'
|
||||
hc attr theme.inner_width 1
|
||||
hc attr theme.inner_color black
|
||||
hc attr theme.border_width 3
|
||||
hc attr theme.floating.border_width 4
|
||||
hc attr theme.floating.outer_width 1
|
||||
hc attr theme.floating.outer_color black
|
||||
hc attr theme.active.inner_color '#789161'
|
||||
hc attr theme.urgent.inner_color '#9A65B0'
|
||||
hc attr theme.normal.inner_color '#606060'
|
||||
# copy inner color to outer_color
|
||||
for state in active urgent normal ; do
|
||||
hc substitute C theme.${state}.inner_color \
|
||||
attr theme.${state}.outer_color C
|
||||
done
|
||||
hc attr theme.active.outer_width 1
|
||||
hc attr theme.background_color '#141414'
|
||||
|
||||
hc set window_gap 0
|
||||
hc set frame_padding 0
|
||||
hc set smart_window_surroundings off
|
||||
hc set smart_frame_surroundings on
|
||||
hc set mouse_recenter_gap 0
|
||||
|
||||
# rules
|
||||
hc unrule -F
|
||||
#hc rule class=XTerm tag=3 # move all xterms to tag 3
|
||||
hc rule focus=on # normally focus new clients
|
||||
hc rule floatplacement=smart
|
||||
#hc rule focus=off # normally do not focus new clients
|
||||
# give focus to most common terminals
|
||||
#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
|
||||
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on
|
||||
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
|
||||
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
|
||||
hc set tree_style '╾│ ├└╼─┐'
|
||||
|
||||
# unlock, just to be sure
|
||||
hc unlock
|
||||
|
||||
# do multi monitor setup here, e.g.:
|
||||
# hc set_monitors 1280x1024+0+0 1280x1024+1280+0
|
||||
# or simply:
|
||||
hc detect_monitors
|
||||
|
||||
# find the panel
|
||||
panel=~/.config/herbstluftwm/panel.sh
|
||||
[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
|
||||
for monitor in $(hc list_monitors | cut -d: -f1) ; do
|
||||
# start it on each monitor
|
||||
"$panel" "$monitor" &
|
||||
done
|
195
dot_config/i3/config
Normal file
195
dot_config/i3/config
Normal file
@ -0,0 +1,195 @@
|
||||
# i3 config file (v4)
|
||||
# TODO: add scratchpads (terminal, password manager, discord, task)
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- VARIABLES
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
set $HOME /home/tstarr
|
||||
|
||||
#set $DISP_PRI DP-4
|
||||
#set $DISP_SEC HDMI-0
|
||||
|
||||
set $DISP_PRI HDMI-0
|
||||
set $DISP_SEC DP-4
|
||||
|
||||
#set $DISP_PRI HDMI-0
|
||||
#set $DISP_SEC HDMI-0
|
||||
|
||||
set $BOR_WIDTH 2
|
||||
set $GAP_INNER 2
|
||||
|
||||
set $mod Mod4
|
||||
|
||||
set $tag1 "1:game"
|
||||
set $tag2 "2:dev"
|
||||
set $tag3 "3:web"
|
||||
set $tag4 "4:web"
|
||||
set $tag5 "5:web"
|
||||
set $tag6 "6:web"
|
||||
set $tag7 "7:comm"
|
||||
set $tag8 "8:task"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- COLORS
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# class border bground text indicator child_border
|
||||
client.focused #6272A4 #6272A4 #F8F8F2 #6272A4 #6272A4
|
||||
client.focused_inactive #44475A #44475A #F8F8F2 #44475A #44475A
|
||||
client.unfocused #282A36 #282A36 #BFBFBF #282A36 #282A36
|
||||
client.urgent #44475A #FF5555 #F8F8F2 #FF5555 #FF5555
|
||||
client.placeholder #282A36 #282A36 #F8F8F2 #282A36 #282A36
|
||||
|
||||
client.background #F8F8F2
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- MISC. CONFIGURATION
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
font pango:Google Noto 8.5
|
||||
default_border pixel 1
|
||||
default_floating_border pixel 1
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- BINDING WORKSPACE TO DISPLAY
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
workspace $tag1 output $DISP_PRI
|
||||
workspace $tag2 output $DISP_PRI
|
||||
workspace $tag3 output $DISP_PRI
|
||||
workspace $tag4 output $DISP_PRI
|
||||
workspace $tag5 output $DISP_SEC
|
||||
workspace $tag6 output $DISP_SEC
|
||||
workspace $tag7 output $DISP_SEC
|
||||
workspace $tag8 output $DISP_SEC
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- CONTAINER GAPS
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# CREATING GAPS BETWEEN THE WINDOWS AND EDGES
|
||||
gaps inner $GAP_INNER
|
||||
gaps outer 0
|
||||
gaps horizontal 0
|
||||
gaps vertical 0
|
||||
gaps top 0
|
||||
gaps bottom 0
|
||||
gaps right 0
|
||||
gaps left 0
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- FORCE FLOATING
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
for_window [title="Steam - News"] floating enable
|
||||
for_window [title="Friends List"] floating enable
|
||||
|
||||
for_window [title="Picture-in-Picture"] sticky toggle
|
||||
|
||||
for_window [con_mark="scratch-term"] floating enable, \
|
||||
resize set 800 px 600 px, \
|
||||
move position 880 px 420 px
|
||||
|
||||
for_window [con_mark="scratch-nnn"] floating enable, \
|
||||
resize set 800 px 600 px, \
|
||||
move position 880 px 420 px
|
||||
|
||||
for_window [con_mark="scratch-warden"] floating enable, \
|
||||
resize set 1000 px 800 px, \
|
||||
move position 780 px 320 px
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- BINDING APPLICATIONS TO WORKSPACE
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
assign [class="Steam"] "1:game"
|
||||
for_window [class="Steam"] move container to workspace "1:game"
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- KEY BINDINGS
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
# i3 utility commands
|
||||
bindsym $mod+Ctrl+r restart
|
||||
bindsym $mod+Ctrl+q exit
|
||||
bindsym $mod+Ctrl+h resize shrink width 50
|
||||
bindsym $mod+Ctrl+j resize shrink height 50
|
||||
bindsym $mod+Ctrl+k resize grow height 50
|
||||
bindsym $mod+Ctrl+l resize grow width 50
|
||||
|
||||
# layout commands
|
||||
bindsym $mod+z layout splith
|
||||
bindsym $mod+x layout tabbed
|
||||
bindsym $mod+c layout stacked
|
||||
bindsym $mod+v layout splitv
|
||||
bindsym $mod+s split h
|
||||
bindsym $mod+Shift+s split v
|
||||
|
||||
# program management
|
||||
bindsym $mod+d kill
|
||||
bindsym $mod+f fullscreen toggle
|
||||
bindsym $mod+t floating toggle
|
||||
bindsym $mod+g sticky toggle
|
||||
bindsym $mod+Tab focus mode_toggle
|
||||
floating_modifier $mod
|
||||
|
||||
# spatial container management
|
||||
bindsym $mod+h focus left
|
||||
bindsym $mod+j focus down
|
||||
bindsym $mod+k focus up
|
||||
bindsym $mod+l focus right
|
||||
bindsym $mod+Shift+h move left
|
||||
bindsym $mod+Shift+j move down
|
||||
bindsym $mod+Shift+k move up
|
||||
bindsym $mod+Shift+l move right
|
||||
|
||||
# workspace management
|
||||
bindsym $mod+1 workspace $tag1
|
||||
bindsym $mod+2 workspace $tag2
|
||||
bindsym $mod+3 workspace $tag3
|
||||
bindsym $mod+4 workspace $tag4
|
||||
bindsym $mod+q workspace $tag5
|
||||
bindsym $mod+w workspace $tag6
|
||||
bindsym $mod+e workspace $tag7
|
||||
bindsym $mod+r workspace $tag8
|
||||
bindsym $mod+Shift+1 move container to workspace $tag1
|
||||
bindsym $mod+Shift+2 move container to workspace $tag2
|
||||
bindsym $mod+Shift+3 move container to workspace $tag3
|
||||
bindsym $mod+Shift+4 move container to workspace $tag4
|
||||
bindsym $mod+Shift+q move container to workspace $tag5
|
||||
bindsym $mod+Shift+w move container to workspace $tag6
|
||||
bindsym $mod+Shift+e move container to workspace $tag7
|
||||
bindsym $mod+Shift+r move container to workspace $tag8
|
||||
|
||||
# system utils
|
||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume 0 +2%
|
||||
bindsym XF86AudioLowerVolume exec pactl set-sink-volume 0 -2%
|
||||
bindsym XF86AudioMute exec amixer -q set Master toggle
|
||||
# TODO: flameshot (mod+Ctrl+f)
|
||||
# TODO: gamemode (mod+Ctrl+g). Needs script to toggle
|
||||
|
||||
# open applications
|
||||
bindsym $mod+Return exec kitty
|
||||
bindsym $mod+a exec rofi -show drun -theme gruvbox-dark-soft -show-icons
|
||||
bindsym $mod+Shift+a exec rofi -show window -theme gruvbox-dark-soft -show-icons
|
||||
bindsym $mod+u exec firefox
|
||||
bindsym $mod+i exec steam
|
||||
|
||||
# open scratchpads
|
||||
bindsym $mod+Shift+Return exec $HOME/.config/i3/scripts/scratch.sh \
|
||||
'scratch-term' 'kitty'
|
||||
|
||||
bindsym $mod+n exec $HOME/.config/i3/scripts/scratch.sh \
|
||||
'scratch-nnn' 'kitty -e nnn -d -e -H -r'
|
||||
|
||||
bindsym $mod+b exec --no-startup-id $HOME/.config/i3/scripts/scratch.sh \
|
||||
'scratch-warden' 'firefoxpwa site launch 01GKYZS658452DK05DVDCRF5V4'
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
#----- AUTOSTART WITH I3
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
exec --no-startup-id $HOME/.config/i3/scripts/xrandr.sh
|
||||
exec_always --no-startup-id $HOME/.config/i3/scripts/polybar.sh
|
||||
exec_always --no-startup-id nitrogen --restore
|
10
dot_config/i3/scripts/executable_polybar.sh
Normal file
10
dot_config/i3/scripts/executable_polybar.sh
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# Terminate already running bar instances
|
||||
killall -q polybar
|
||||
|
||||
# Wait until the processes have been shut down
|
||||
while pgrep -x polybar >/dev/null; do sleep 1; done
|
||||
|
||||
# Launch polybar
|
||||
polybar -c ~/.config/polybar/dracula &
|
34
dot_config/i3/scripts/executable_scratch.sh
Normal file
34
dot_config/i3/scripts/executable_scratch.sh
Normal file
@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Usage: "${0}" <i3_mark> <launch_cmd>"
|
||||
echo "Example: ${0} 'scratch-emacs' 'emacsclient -c -a emacs'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
I3_MARK=${1}
|
||||
LAUNCH_CMD=${2}
|
||||
|
||||
scratchpad_show() {
|
||||
i3-msg "[con_mark=${I3_MARK}]" scratchpad show
|
||||
}
|
||||
|
||||
# try showing the scratchpad window
|
||||
if ! scratchpad_show; then
|
||||
# if there is no such window...
|
||||
|
||||
# launch the application.
|
||||
eval "${LAUNCH_CMD}" &
|
||||
|
||||
# Wait for the next window event.
|
||||
i3-msg -t subscribe '[ "window" ]'
|
||||
|
||||
# Set a mark
|
||||
i3-msg mark ${I3_MARK}
|
||||
|
||||
# Move it to the scratchpad workspace
|
||||
i3-msg move scratchpad
|
||||
|
||||
# show the scratchpad window
|
||||
scratchpad_show
|
||||
fi
|
20
dot_config/i3/scripts/executable_xrandr.sh
Normal file
20
dot_config/i3/scripts/executable_xrandr.sh
Normal file
@ -0,0 +1,20 @@
|
||||
#!/usr/bin/python
|
||||
#
|
||||
import subprocess
|
||||
|
||||
def run_command(cmd, capture=False):
|
||||
if capture:
|
||||
return subprocess.getoutput(cmd)
|
||||
else:
|
||||
subprocess.run(cmd, shell=True)
|
||||
return
|
||||
|
||||
# Get current ip address
|
||||
ip_addr = run_command("hostname -I", True)
|
||||
ip_slice = ip_addr.split(".")[2]
|
||||
|
||||
# Set monitor configuration based on ip address
|
||||
if ip_slice == "1":
|
||||
run_command("xrandr --output HDMI-0 --mode 2560x1440 --pos 0x0 --rate 144 --output DP-4 --mode 2560x1440 --pos 2561x0 --rate 144 --primary --right-of HDMI-0")
|
||||
elif ip_slice == "2":
|
||||
run_command("xrandr --output HDMI-0 --mode 2560x1440 --pos 0x0 --rate 144 --primary --output DP-4 --mode 2560x1440 --pos 2561x0 --rate 144 --right-of HDMI-0")
|
66
dot_config/kitty/dracula.conf
Normal file
66
dot_config/kitty/dracula.conf
Normal file
@ -0,0 +1,66 @@
|
||||
# https://draculatheme.com/kitty
|
||||
#
|
||||
# Installation instructions:
|
||||
#
|
||||
# cp dracula.conf ~/.config/kitty/
|
||||
# echo "include dracula.conf" >> ~/.config/kitty/kitty.conf
|
||||
#
|
||||
# Then reload kitty for the config to take affect.
|
||||
# Alternatively copy paste below directly into kitty.conf
|
||||
|
||||
foreground #f8f8f2
|
||||
background #282a36
|
||||
selection_foreground #ffffff
|
||||
selection_background #44475a
|
||||
|
||||
url_color #8be9fd
|
||||
|
||||
# black
|
||||
color0 #21222c
|
||||
color8 #6272a4
|
||||
|
||||
# red
|
||||
color1 #ff5555
|
||||
color9 #ff6e6e
|
||||
|
||||
# green
|
||||
color2 #50fa7b
|
||||
color10 #69ff94
|
||||
|
||||
# yellow
|
||||
color3 #f1fa8c
|
||||
color11 #ffffa5
|
||||
|
||||
# blue
|
||||
color4 #bd93f9
|
||||
color12 #d6acff
|
||||
|
||||
# magenta
|
||||
color5 #ff79c6
|
||||
color13 #ff92df
|
||||
|
||||
# cyan
|
||||
color6 #8be9fd
|
||||
color14 #a4ffff
|
||||
|
||||
# white
|
||||
color7 #f8f8f2
|
||||
color15 #ffffff
|
||||
|
||||
# Cursor colors
|
||||
cursor #f8f8f2
|
||||
cursor_text_color background
|
||||
|
||||
# Tab bar colors
|
||||
active_tab_foreground #282a36
|
||||
active_tab_background #f8f8f2
|
||||
inactive_tab_foreground #282a36
|
||||
inactive_tab_background #6272a4
|
||||
|
||||
# Marks
|
||||
mark1_foreground #282a36
|
||||
mark1_background #ff5555
|
||||
|
||||
# Splits/Windows
|
||||
active_border_color #f8f8f2
|
||||
inactive_border_color #6272a4
|
2
dot_config/kitty/kitty.conf
Normal file
2
dot_config/kitty/kitty.conf
Normal file
@ -0,0 +1,2 @@
|
||||
include dracula.conf
|
||||
confirm_os_window_close 0
|
0
dot_config/lazygit/empty_config.yml
Normal file
0
dot_config/lazygit/empty_config.yml
Normal file
6
dot_config/lazygit/state.yml
Normal file
6
dot_config/lazygit/state.yml
Normal file
@ -0,0 +1,6 @@
|
||||
lastupdatecheck: 0
|
||||
recentrepos:
|
||||
- /home/tstarr/.dotfiles
|
||||
startuppopupversion: 5
|
||||
customcommandshistory: []
|
||||
hidecommandlog: false
|
390
dot_config/mpd/executable_mpd.conf
Normal file
390
dot_config/mpd/executable_mpd.conf
Normal file
@ -0,0 +1,390 @@
|
||||
# An example configuration file for MPD.
|
||||
# Read the user manual for documentation: http://www.musicpd.org/doc/user/
|
||||
|
||||
|
||||
# Files and directories #######################################################
|
||||
#
|
||||
# This setting controls the top directory which MPD will search to discover the
|
||||
# available audio files and add them to the daemon's online database. This
|
||||
# setting defaults to the XDG directory, otherwise the music directory will be
|
||||
# be disabled and audio files will only be accepted over ipc socket (using
|
||||
# file:// protocol) or streaming files over an accepted protocol.
|
||||
#
|
||||
music_directory "~/media/audio"
|
||||
#
|
||||
# This setting sets the MPD internal playlist directory. The purpose of this
|
||||
# directory is storage for playlists created by MPD. The server will use
|
||||
# playlist files not created by the server but only if they are in the MPD
|
||||
# format. This setting defaults to playlist saving being disabled.
|
||||
#
|
||||
playlist_directory "~/.config/mpd/playlists"
|
||||
#
|
||||
# This setting sets the location of the MPD database. This file is used to
|
||||
# load the database at server start up and store the database while the
|
||||
# server is not up. This setting defaults to disabled which will allow
|
||||
# MPD to accept files over ipc socket (using file:// protocol) or streaming
|
||||
# files over an accepted protocol.
|
||||
#
|
||||
db_file "~/.config/mpd/mpd.db"
|
||||
#
|
||||
# These settings are the locations for the daemon log files for the daemon.
|
||||
# These logs are great for troubleshooting, depending on your log_level
|
||||
# settings.
|
||||
#
|
||||
# The special value "syslog" makes MPD use the local syslog daemon. This
|
||||
# setting defaults to logging to syslog.
|
||||
#
|
||||
log_file "~/.config/mpd/mpd.log"
|
||||
#
|
||||
# This setting sets the location of the file which stores the process ID
|
||||
# for use of mpd --kill and some init scripts. This setting is disabled by
|
||||
# default and the pid file will not be stored.
|
||||
#
|
||||
pid_file "~/.config/mpd/mpd.pid"
|
||||
#
|
||||
# This setting sets the location of the file which contains information about
|
||||
# most variables to get MPD back into the same general shape it was in before
|
||||
# it was brought down. This setting is disabled by default and the server
|
||||
# state will be reset on server start up.
|
||||
#
|
||||
state_file "~/.config/mpd/mpd.state"
|
||||
#
|
||||
# The location of the sticker database. This is a database which
|
||||
# manages dynamic information attached to songs.
|
||||
#
|
||||
#sticker_file "~/.mpd/sticker.sql"
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
# General music daemon options ################################################
|
||||
#
|
||||
# This setting specifies the user that MPD will run as. MPD should never run as
|
||||
# root and you may use this setting to make MPD change its user ID after
|
||||
# initialization. This setting is disabled by default and MPD is run as the
|
||||
# current user.
|
||||
#
|
||||
user "tstarr"
|
||||
#
|
||||
# This setting specifies the group that MPD will run as. If not specified
|
||||
# primary group of user specified with "user" setting will be used (if set).
|
||||
# This is useful if MPD needs to be a member of group such as "audio" to
|
||||
# have permission to use sound card.
|
||||
#
|
||||
#group "nogroup"
|
||||
#
|
||||
# This setting sets the address for the daemon to listen on. Careful attention
|
||||
# should be paid if this is assigned to anything other then the default, any.
|
||||
# This setting can deny access to control of the daemon. Not effective if
|
||||
# systemd socket activiation is in use.
|
||||
#
|
||||
# For network
|
||||
bind_to_address "any"
|
||||
#
|
||||
# And for Unix Socket
|
||||
#bind_to_address "~/.mpd/socket"
|
||||
#
|
||||
# This setting is the TCP port that is desired for the daemon to get assigned
|
||||
# to.
|
||||
#
|
||||
port "6600"
|
||||
#
|
||||
# This setting controls the type of information which is logged. Available
|
||||
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
|
||||
# argument is recommended for troubleshooting, though can quickly stretch
|
||||
# available resources on limited hardware storage.
|
||||
#
|
||||
#log_level "default"
|
||||
#
|
||||
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
|
||||
# of starting playback after startup.
|
||||
#
|
||||
#restore_paused "no"
|
||||
#
|
||||
# This setting enables MPD to create playlists in a format usable by other
|
||||
# music players.
|
||||
#
|
||||
#save_absolute_paths_in_playlists "no"
|
||||
#
|
||||
# This setting defines a list of tag types that will be extracted during the
|
||||
# audio file discovery process. The complete list of possible values can be
|
||||
# found in the user manual.
|
||||
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
|
||||
#
|
||||
# This example just enables the "comment" tag without disabling all
|
||||
# the other supported tags:
|
||||
#metadata_to_use "+comment"
|
||||
#
|
||||
# This setting enables automatic update of MPD's database when files in
|
||||
# music_directory are changed.
|
||||
#
|
||||
auto_update "yes"
|
||||
#
|
||||
# Limit the depth of the directories being watched, 0 means only watch
|
||||
# the music directory itself. There is no limit by default.
|
||||
#
|
||||
#auto_update_depth "3"
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
# Symbolic link behavior ######################################################
|
||||
#
|
||||
# If this setting is set to "yes", MPD will discover audio files by following
|
||||
# symbolic links outside of the configured music_directory.
|
||||
#
|
||||
#follow_outside_symlinks "yes"
|
||||
#
|
||||
# If this setting is set to "yes", MPD will discover audio files by following
|
||||
# symbolic links inside of the configured music_directory.
|
||||
#
|
||||
#follow_inside_symlinks "yes"
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
# Zeroconf / Avahi Service Discovery ##########################################
|
||||
#
|
||||
# If this setting is set to "yes", service information will be published with
|
||||
# Zeroconf / Avahi.
|
||||
#
|
||||
#zeroconf_enabled "yes"
|
||||
#
|
||||
# The argument to this setting will be the Zeroconf / Avahi unique name for
|
||||
# this MPD server on the network. %h will be replaced with the hostname.
|
||||
#
|
||||
#zeroconf_name "Music Player @ %h"
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
# Permissions #################################################################
|
||||
#
|
||||
# If this setting is set, MPD will require password authorization. The password
|
||||
# setting can be specified multiple times for different password profiles.
|
||||
#
|
||||
#password "password@read,add,control,admin"
|
||||
#
|
||||
# This setting specifies the permissions a user has who has not yet logged in.
|
||||
#
|
||||
#default_permissions "read,add,control,admin"
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
# Database #######################################################################
|
||||
#
|
||||
|
||||
#database {
|
||||
# plugin "proxy"
|
||||
# host "other.mpd.host"
|
||||
# port "6600"
|
||||
#}
|
||||
|
||||
# Input #######################################################################
|
||||
#
|
||||
|
||||
#input {
|
||||
# plugin "curl"
|
||||
# proxy "proxy.isp.com:8080"
|
||||
# proxy_user "user"
|
||||
# proxy_password "password"
|
||||
#}
|
||||
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# Audio Output ################################################################
|
||||
#
|
||||
# MPD supports various audio output types, as well as playing through multiple
|
||||
# audio outputs at the same time, through multiple audio_output settings
|
||||
# blocks. Setting this block is optional, though the server will only attempt
|
||||
# autodetection for one sound card.
|
||||
#
|
||||
# An example of an ALSA output:
|
||||
#
|
||||
#audio_output {
|
||||
# type "alsa"
|
||||
# name "My ALSA Device"
|
||||
## device "hw:0,0" # optional
|
||||
## mixer_type "hardware" # optional
|
||||
## mixer_device "default" # optional
|
||||
## mixer_control "PCM" # optional
|
||||
## mixer_index "0" # optional
|
||||
#}
|
||||
#
|
||||
# An example of an OSS output:
|
||||
#
|
||||
#audio_output {
|
||||
# type "oss"
|
||||
# name "My OSS Device"
|
||||
## device "/dev/dsp" # optional
|
||||
## mixer_type "hardware" # optional
|
||||
## mixer_device "/dev/mixer" # optional
|
||||
## mixer_control "PCM" # optional
|
||||
#}
|
||||
#
|
||||
# An example of a shout output (for streaming to Icecast):
|
||||
#
|
||||
#audio_output {
|
||||
# type "shout"
|
||||
# encoder "vorbis" # optional
|
||||
# name "My Shout Stream"
|
||||
# host "localhost"
|
||||
# port "8000"
|
||||
# mount "/mpd.ogg"
|
||||
# password "hackme"
|
||||
# quality "5.0"
|
||||
# bitrate "128"
|
||||
# format "44100:16:1"
|
||||
## protocol "icecast2" # optional
|
||||
## user "source" # optional
|
||||
## description "My Stream Description" # optional
|
||||
## url "http://example.com" # optional
|
||||
## genre "jazz" # optional
|
||||
## public "no" # optional
|
||||
## timeout "2" # optional
|
||||
## mixer_type "software" # optional
|
||||
#}
|
||||
#
|
||||
# An example of a recorder output:
|
||||
#
|
||||
#audio_output {
|
||||
# type "recorder"
|
||||
# name "My recorder"
|
||||
# encoder "vorbis" # optional, vorbis or lame
|
||||
# path "/var/lib/mpd/recorder/mpd.ogg"
|
||||
## quality "5.0" # do not define if bitrate is defined
|
||||
# bitrate "128" # do not define if quality is defined
|
||||
# format "44100:16:1"
|
||||
#}
|
||||
#
|
||||
# An example of a httpd output (built-in HTTP streaming server):
|
||||
#
|
||||
#audio_output {
|
||||
# type "httpd"
|
||||
# name "My HTTP Stream"
|
||||
# encoder "vorbis" # optional, vorbis or lame
|
||||
# port "8000"
|
||||
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
|
||||
## quality "5.0" # do not define if bitrate is defined
|
||||
# bitrate "128" # do not define if quality is defined
|
||||
# format "44100:16:1"
|
||||
# max_clients "0" # optional 0=no limit
|
||||
#}
|
||||
#
|
||||
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
|
||||
#
|
||||
audio_output {
|
||||
type "pulse"
|
||||
name "My Pulse Output"
|
||||
server "127.0.0.1" # optional
|
||||
# sink "remote_server_sink" # optional
|
||||
}
|
||||
#
|
||||
# An example of a winmm output (Windows multimedia API).
|
||||
#
|
||||
#audio_output {
|
||||
# type "winmm"
|
||||
# name "My WinMM output"
|
||||
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
|
||||
# or
|
||||
## device "0" # optional
|
||||
## mixer_type "hardware" # optional
|
||||
#}
|
||||
#
|
||||
# An example of an openal output.
|
||||
#
|
||||
#audio_output {
|
||||
# type "openal"
|
||||
# name "My OpenAL output"
|
||||
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
|
||||
#}
|
||||
#
|
||||
# An example of an sndio output.
|
||||
#
|
||||
#audio_output {
|
||||
# type "sndio"
|
||||
# name "sndio output"
|
||||
# mixer_type "hardware"
|
||||
#}
|
||||
#
|
||||
# An example of an OS X output:
|
||||
#
|
||||
#audio_output {
|
||||
# type "osx"
|
||||
# name "My OS X Device"
|
||||
## device "Built-in Output" # optional
|
||||
## channel_map "-1,-1,0,1" # optional
|
||||
#}
|
||||
#
|
||||
## Example "pipe" output:
|
||||
#
|
||||
#audio_output {
|
||||
# type "pipe"
|
||||
# name "my pipe"
|
||||
# command "aplay -f cd 2>/dev/null"
|
||||
## Or if you're want to use AudioCompress
|
||||
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
|
||||
## Or to send raw PCM stream through PCM:
|
||||
# command "nc example.org 8765"
|
||||
# format "44100:16:2"
|
||||
#}
|
||||
#
|
||||
## An example of a null output (for no audio output):
|
||||
#
|
||||
#audio_output {
|
||||
# type "null"
|
||||
# name "My Null Output"
|
||||
# mixer_type "none" # optional
|
||||
#}
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
# Normalization automatic volume adjustments ##################################
|
||||
#
|
||||
# This setting specifies the type of ReplayGain to use. This setting can have
|
||||
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
|
||||
# chooses between "track" and "album" depending on the current state of
|
||||
# random playback. If random playback is enabled then "track" mode is used.
|
||||
# See <http://www.replaygain.org> for more details about ReplayGain.
|
||||
# This setting is off by default.
|
||||
#
|
||||
#replaygain "album"
|
||||
#
|
||||
# This setting sets the pre-amp used for files that have ReplayGain tags. By
|
||||
# default this setting is disabled.
|
||||
#
|
||||
#replaygain_preamp "0"
|
||||
#
|
||||
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
|
||||
# By default this setting is disabled.
|
||||
#
|
||||
#replaygain_missing_preamp "0"
|
||||
#
|
||||
# This setting enables or disables ReplayGain limiting.
|
||||
# MPD calculates actual amplification based on the ReplayGain tags
|
||||
# and replaygain_preamp / replaygain_missing_preamp setting.
|
||||
# If replaygain_limit is enabled MPD will never amplify audio signal
|
||||
# above its original level. If replaygain_limit is disabled such amplification
|
||||
# might occur. By default this setting is enabled.
|
||||
#
|
||||
#replaygain_limit "yes"
|
||||
#
|
||||
# This setting enables on-the-fly normalization volume adjustment. This will
|
||||
# result in the volume of all playing audio to be adjusted so the output has
|
||||
# equal "loudness". This setting is disabled by default.
|
||||
#
|
||||
#volume_normalization "no"
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
# Character Encoding ##########################################################
|
||||
#
|
||||
# If file or directory names do not display correctly for your locale then you
|
||||
# may need to modify this setting.
|
||||
#
|
||||
filesystem_charset "UTF-8"
|
||||
#
|
||||
###############################################################################
|
126
dot_config/mpd/executable_mpd.log
Normal file
126
dot_config/mpd/executable_mpd.log
Normal file
@ -0,0 +1,126 @@
|
||||
Nov 14 13:52 : update: added youtube/Being CHEATED by Koreans; Mindset for Competition - 'Reflections' with NaNiwa (SC2) (2nd Appearance).mp3
|
||||
Nov 14 13:52 : update: added youtube/The Wonderfully Self-Flattering World Of Barack Obama _ Ep. 1137.mp3
|
||||
Nov 15 22:24 : player: played "youtube/The Wonderfully Self-Flattering World Of Barack Obama _ Ep. 1137.mp3"
|
||||
Nov 16 18:26 : player: played "youtube/The Wonderfully Self-Flattering World Of Barack Obama _ Ep. 1137.mp3"
|
||||
Nov 16 21:31 : update: added youtube/youtube-dl RESTORED, Github & the EFF RESPOND!!.m4a
|
||||
Nov 16 21:31 : update: added youtube/youtube-dl RESTORED, Github & the EFF RESPOND!!.mp3
|
||||
Nov 16 21:31 : update: removing youtube/youtube-dl RESTORED, Github & the EFF RESPOND!!.m4a
|
||||
Nov 16 21:31 : update: updating youtube/youtube-dl RESTORED, Github & the EFF RESPOND!!.mp3
|
||||
Nov 16 22:27 : player: played "youtube/The Wonderfully Self-Flattering World Of Barack Obama _ Ep. 1137.mp3"
|
||||
Nov 17 21:55 : player: played "youtube/The Wonderfully Self-Flattering World Of Barack Obama _ Ep. 1137.mp3"
|
||||
Nov 19 20:02 : player: played "youtube/The Wonderfully Self-Flattering World Of Barack Obama _ Ep. 1137.mp3"
|
||||
Nov 20 21:31 : update: added youtube/Twitch's DMCA Debacle.webm
|
||||
Nov 20 21:31 : update: added youtube/Twitch's DMCA Debacle.mp3
|
||||
Nov 20 21:32 : update: removing youtube/Twitch's DMCA Debacle.webm
|
||||
Nov 20 21:32 : update: updating youtube/Twitch's DMCA Debacle.mp3
|
||||
Nov 20 22:13 : player: played "youtube/Twitch's DMCA Debacle.mp3"
|
||||
Nov 21 10:44 : update: added youtube/Companies lobby against legislation prohibiting slave labor.webm
|
||||
Nov 21 10:44 : update: added youtube/Companies lobby against legislation prohibiting slave labor.mp3
|
||||
Nov 21 10:45 : update: removing youtube/Companies lobby against legislation prohibiting slave labor.webm
|
||||
Nov 21 10:45 : update: updating youtube/Companies lobby against legislation prohibiting slave labor.mp3
|
||||
Nov 21 10:46 : update: added youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).webm
|
||||
Nov 21 10:46 : update: added youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).mp3
|
||||
Nov 21 10:46 : update: removing youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).webm
|
||||
Nov 21 10:46 : update: updating youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).mp3
|
||||
Nov 21 10:47 : update: added youtube/Jamppi's Lawsuit Against Valve Looks DEAD.webm
|
||||
Nov 21 10:47 : update: added youtube/Jamppi's Lawsuit Against Valve Looks DEAD.mp3
|
||||
Nov 21 10:47 : update: removing youtube/Jamppi's Lawsuit Against Valve Looks DEAD.webm
|
||||
Nov 21 10:47 : update: updating youtube/Jamppi's Lawsuit Against Valve Looks DEAD.mp3
|
||||
Nov 21 10:47 : update: added youtube/Jack on Breaking the Bank for Perkz - Talk to Thorin (LoL).mp3
|
||||
Nov 21 10:47 : update: added youtube/Jack on Breaking the Bank for Perkz - Talk to Thorin (LoL).webm
|
||||
Nov 21 10:48 : update: removing youtube/Jack on Breaking the Bank for Perkz - Talk to Thorin (LoL).webm
|
||||
Nov 21 10:48 : update: updating youtube/Jack on Breaking the Bank for Perkz - Talk to Thorin (LoL).mp3
|
||||
Nov 21 17:32 : player: played "youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).mp3"
|
||||
Nov 23 20:58 : exception: Failed to decode /home/tstarr/media/audio/youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).mp3; Failed to open '/home/tstarr/media/audio/youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).mp3': No such file or directory
|
||||
Nov 23 20:58 : player: played "youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).mp3"
|
||||
Nov 23 20:59 : exception: Failed to decode /home/tstarr/media/audio/youtube/Jamppi's Lawsuit Against Valve Looks DEAD.mp3; Failed to open '/home/tstarr/media/audio/youtube/Jamppi's Lawsuit Against Valve Looks DEAD.mp3': No such file or directory
|
||||
Nov 23 20:59 : player: played "youtube/Jamppi's Lawsuit Against Valve Looks DEAD.mp3"
|
||||
Nov 23 20:59 : update: removing youtube/Being CHEATED by Koreans; Mindset for Competition - 'Reflections' with NaNiwa (SC2) (2nd Appearance).mp3
|
||||
Nov 23 20:59 : update: removing youtube/Jamppi's Lawsuit Against Valve Looks DEAD.mp3
|
||||
Nov 23 20:59 : update: removing youtube/Jack on Breaking the Bank for Perkz - Talk to Thorin (LoL).mp3
|
||||
Nov 23 20:59 : update: removing youtube/Companies lobby against legislation prohibiting slave labor.mp3
|
||||
Nov 23 20:59 : update: removing youtube/Twitch's DMCA Debacle.mp3
|
||||
Nov 23 20:59 : update: removing youtube/The Wonderfully Self-Flattering World Of Barack Obama _ Ep. 1137.mp3
|
||||
Nov 23 20:59 : update: removing youtube/Valve BANNED You Write Your OWN Story! - Banned Players Swim Against the Current (CS -GO).mp3
|
||||
Nov 23 20:59 : update: removing youtube/youtube-dl RESTORED, Github & the EFF RESPOND!!.mp3
|
||||
Nov 23 20:59 : update: added youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : player: problems opening audio device while playing "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : player: problems opening audio device while playing "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 20:59 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:00 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:01 : update: updating youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3
|
||||
Nov 23 21:01 : update: added youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.webm
|
||||
Nov 23 21:01 : update: updating youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3
|
||||
Nov 23 21:01 : update: removing youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.webm
|
||||
Nov 23 21:03 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : exception: Failed to open "pulse audio" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:03 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 21:04 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:04 : exception: Failed to open "My Pulse Output" (pulse); failed to connect: Connection refused
|
||||
Nov 23 21:10 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 21:13 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 21:24 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 23 22:26 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 24 20:59 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 24 21:01 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Nov 25 21:20 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 06 18:59 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 07 00:43 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 07 23:37 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 08 23:43 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 09 21:14 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 09 22:49 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 10 23:20 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
||||
Dec 11 22:57 : player: played "youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3"
|
BIN
dot_config/mpd/mpd.db
Normal file
BIN
dot_config/mpd/mpd.db
Normal file
Binary file not shown.
1
dot_config/mpd/mpd.pid
Normal file
1
dot_config/mpd/mpd.pid
Normal file
@ -0,0 +1 @@
|
||||
1143
|
15
dot_config/mpd/mpd.state
Normal file
15
dot_config/mpd/mpd.state
Normal file
@ -0,0 +1,15 @@
|
||||
sw_volume: 78
|
||||
audio_device_state:1:My Pulse Output
|
||||
state: pause
|
||||
current: 0
|
||||
time: 32.461000
|
||||
random: 0
|
||||
repeat: 0
|
||||
single: 0
|
||||
consume: 0
|
||||
crossfade: 0
|
||||
mixrampdb: 0.000000
|
||||
mixrampdelay: -1.000000
|
||||
playlist_begin
|
||||
0:youtube/Egalitarianism Vs. Utilitarianism - Differences EXPLAINED.mp3
|
||||
playlist_end
|
544
dot_config/ncmpcpp/executable_config
Normal file
544
dot_config/ncmpcpp/executable_config
Normal file
@ -0,0 +1,544 @@
|
||||
##############################################################################
|
||||
## This is the example configuration file. Copy it to $HOME/.ncmpcpp/config ##
|
||||
## or $XDG_CONFIG_HOME/ncmpcpp/config and set up your preferences. ##
|
||||
##############################################################################
|
||||
#
|
||||
##### directories ######
|
||||
##
|
||||
## Directory for storing ncmpcpp related files. Changing it is useful if you
|
||||
## want to store everything somewhere else and provide command line setting for
|
||||
## alternative location to config file which defines that while launching
|
||||
## ncmpcpp.
|
||||
##
|
||||
#
|
||||
#ncmpcpp_directory = ~/.ncmpcpp
|
||||
#
|
||||
##
|
||||
## Directory for storing downloaded lyrics. It defaults to ~/.lyrics since other
|
||||
## MPD clients (eg. ncmpc) also use that location.
|
||||
##
|
||||
#
|
||||
#lyrics_directory = ~/.lyrics
|
||||
#
|
||||
##### connection settings #####
|
||||
#
|
||||
mpd_host = 192.168.1.24
|
||||
#
|
||||
mpd_port = 6600
|
||||
#
|
||||
mpd_connection_timeout = 5
|
||||
#
|
||||
## Needed for tag editor and file operations to work.
|
||||
##
|
||||
#mpd_music_dir = /home/tstarr/media/audio
|
||||
#
|
||||
#mpd_crossfade_time = 5
|
||||
#
|
||||
##### music visualizer #####
|
||||
##
|
||||
## Note: In order to make music visualizer work you'll need to use mpd fifo
|
||||
## output, whose format parameter has to be set to 44100:16:1 for mono
|
||||
## visualization or 44100:16:2 for stereo visualization. Example configuration
|
||||
## (it has to be put into mpd.conf):
|
||||
##
|
||||
## audio_output {
|
||||
## type "fifo"
|
||||
## name "Visualizer feed"
|
||||
## path "/tmp/mpd.fifo"
|
||||
## format "44100:16:2"
|
||||
## }
|
||||
##
|
||||
#
|
||||
#visualizer_fifo_path = /tmp/mpd.fifo
|
||||
#
|
||||
##
|
||||
## Note: Below parameter is needed for ncmpcpp to determine which output
|
||||
## provides data for visualizer and thus allow syncing between visualization and
|
||||
## sound as currently there are some problems with it.
|
||||
##
|
||||
#
|
||||
#visualizer_output_name = Visualizer feed
|
||||
#
|
||||
##
|
||||
## If you set format to 44100:16:2, make it 'yes'.
|
||||
##
|
||||
#visualizer_in_stereo = yes
|
||||
#
|
||||
##
|
||||
## Note: Below parameter defines how often ncmpcpp has to "synchronize"
|
||||
## visualizer and audio outputs. 30 seconds is optimal value, but if you
|
||||
## experience synchronization problems, set it to lower value. Keep in mind
|
||||
## that sane values start with >=10.
|
||||
##
|
||||
#
|
||||
#visualizer_sync_interval = 30
|
||||
#
|
||||
##
|
||||
## Note: To enable spectrum frequency visualization you need to compile ncmpcpp
|
||||
## with fftw3 support.
|
||||
##
|
||||
#
|
||||
## Available values: spectrum, wave, wave_filled, ellipse.
|
||||
##
|
||||
#visualizer_type = wave
|
||||
#
|
||||
#visualizer_look = ●▮
|
||||
#
|
||||
#visualizer_color = blue, cyan, green, yellow, magenta, red
|
||||
#
|
||||
## Alternative subset of 256 colors for terminals that support it.
|
||||
##
|
||||
#visualizer_color = 41, 83, 119, 155, 185, 215, 209, 203, 197, 161
|
||||
#
|
||||
##### system encoding #####
|
||||
##
|
||||
## ncmpcpp should detect your charset encoding but if it failed to do so, you
|
||||
## can specify charset encoding you are using here.
|
||||
##
|
||||
## Note: You can see whether your ncmpcpp build supports charset detection by
|
||||
## checking output of `ncmpcpp --version`.
|
||||
##
|
||||
## Note: Since MPD uses UTF-8 by default, setting this option makes sense only
|
||||
## if your encoding is different.
|
||||
##
|
||||
#
|
||||
#system_encoding = ""
|
||||
#
|
||||
##### delays #####
|
||||
#
|
||||
## Time of inactivity (in seconds) after playlist highlighting will be disabled
|
||||
## (0 = always on).
|
||||
##
|
||||
#playlist_disable_highlight_delay = 5
|
||||
#
|
||||
## Defines how long messages are supposed to be visible.
|
||||
##
|
||||
#message_delay_time = 5
|
||||
#
|
||||
##### song format #####
|
||||
##
|
||||
## For a song format you can use:
|
||||
##
|
||||
## %l - length
|
||||
## %f - filename
|
||||
## %D - directory
|
||||
## %a - artist
|
||||
## %A - album artist
|
||||
## %t - title
|
||||
## %b - album
|
||||
## %y - date
|
||||
## %n - track number (01/12 -> 01)
|
||||
## %N - full track info (01/12 -> 01/12)
|
||||
## %g - genre
|
||||
## %c - composer
|
||||
## %p - performer
|
||||
## %d - disc
|
||||
## %C - comment
|
||||
## %P - priority
|
||||
## $R - begin right alignment
|
||||
##
|
||||
## If you want to make sure that a part of the format is displayed only when
|
||||
## certain tags are present, you can archieve it by grouping them with brackets,
|
||||
## e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are
|
||||
## present or '' otherwise. It is also possible to define a list of
|
||||
## alternatives by providing several groups and separating them with '|',
|
||||
## e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is
|
||||
## not present.
|
||||
##
|
||||
## Note: If you want to set limit on maximal length of a tag, just put the
|
||||
## appropriate number between % and character that defines tag type, e.g. to
|
||||
## make album take max. 20 terminal cells, use '%20b'.
|
||||
##
|
||||
## In addition, formats support markers used for text attributes. They are
|
||||
## followed by character '$'. After that you can put:
|
||||
##
|
||||
## - 0 - default window color (discards all other colors)
|
||||
## - 1 - black
|
||||
## - 2 - red
|
||||
## - 3 - green
|
||||
## - 4 - yellow
|
||||
## - 5 - blue
|
||||
## - 6 - magenta
|
||||
## - 7 - cyan
|
||||
## - 8 - white
|
||||
## - 9 - end of current color
|
||||
## - b - bold text
|
||||
## - u - underline text
|
||||
## - r - reverse colors
|
||||
## - a - use alternative character set
|
||||
##
|
||||
## If you don't want to use a non-color attribute anymore, just put it again,
|
||||
## but this time insert character '/' between '$' and attribute character,
|
||||
## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with
|
||||
## reversed colors.
|
||||
##
|
||||
## If you want to use 256 colors and/or background colors in formats (the naming
|
||||
## scheme is described below in section about color definitions), it can be done
|
||||
## with the syntax $(COLOR), e.g. to set the artist tag to one of the
|
||||
## non-standard colors and make it have yellow background, you need to write
|
||||
## $(197_yellow)%a$(end). Note that for standard colors this is interchangable
|
||||
## with attributes listed above.
|
||||
##
|
||||
## Note: colors can be nested.
|
||||
##
|
||||
#
|
||||
#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
|
||||
#
|
||||
#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f}
|
||||
#
|
||||
#song_library_format = {%n - }{%t}|{%f}
|
||||
#
|
||||
#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
|
||||
#
|
||||
#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
|
||||
#
|
||||
#current_item_prefix = $(yellow)$r
|
||||
#
|
||||
#current_item_suffix = $/r$(end)
|
||||
#
|
||||
#current_item_inactive_column_prefix = $(white)$r
|
||||
#
|
||||
#current_item_inactive_column_suffix = $/r$(end)
|
||||
#
|
||||
#now_playing_prefix = $b
|
||||
#
|
||||
#now_playing_suffix = $/b
|
||||
#
|
||||
#browser_playlist_prefix = "$2playlist$9 "
|
||||
#
|
||||
#selected_item_prefix = $6
|
||||
#
|
||||
#selected_item_suffix = $9
|
||||
#
|
||||
#modified_item_prefix = $3> $9
|
||||
#
|
||||
##
|
||||
## Note: attributes are not supported for the following variables.
|
||||
##
|
||||
#song_window_title_format = {%a - }{%t}|{%f}
|
||||
##
|
||||
## Note: Below variables are used for sorting songs in browser. The sort mode
|
||||
## determines how songs are sorted, and can be used in combination with a sort
|
||||
## format to specify a custom sorting format. Available values for
|
||||
## browser_sort_mode are "name", "mtime", "format" and "noop".
|
||||
##
|
||||
#
|
||||
#browser_sort_mode = name
|
||||
#
|
||||
#browser_sort_format = {%a - }{%t}|{%f} {(%l)}
|
||||
#
|
||||
##### columns settings #####
|
||||
##
|
||||
## syntax of song columns list format is "column column etc."
|
||||
##
|
||||
## - syntax for each column is:
|
||||
##
|
||||
## (width of the column)[color of the column]{displayed tag}
|
||||
##
|
||||
## Note: Width is by default in %, if you want a column to have fixed size, add
|
||||
## 'f' after the value, e.g. (10)[white]{a} will be the column that take 10% of
|
||||
## screen (so the real width will depend on actual screen size), whereas
|
||||
## (10f)[white]{a} will take 10 terminal cells, no matter how wide the screen
|
||||
## is.
|
||||
##
|
||||
## - color is optional (if you want the default one, leave the field empty).
|
||||
##
|
||||
## Note: You can give a column additional attributes by putting appropriate
|
||||
## character after displayed tag character. Available attributes are:
|
||||
##
|
||||
## - r - column will be right aligned
|
||||
## - E - if tag is empty, empty tag marker won't be displayed
|
||||
##
|
||||
## You can also:
|
||||
##
|
||||
## - give a column custom name by putting it after attributes, separated with
|
||||
## character ':', e.g. {lr:Length} gives you right aligned column of lengths
|
||||
## named "Length".
|
||||
##
|
||||
## - define sequence of tags, that have to be displayed in case predecessor is
|
||||
## empty in a way similar to the one in classic song format, i.e. using '|'
|
||||
## character, e.g. {a|c|p:Owner} creates column named "Owner" that tries to
|
||||
## display artist tag and then composer and performer if previous ones are not
|
||||
## available.
|
||||
##
|
||||
#
|
||||
#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l}
|
||||
#
|
||||
##### various settings #####
|
||||
#
|
||||
##
|
||||
## Note: Custom command that will be executed each time song changes. Useful for
|
||||
## notifications etc.
|
||||
##
|
||||
#execute_on_song_change = ""
|
||||
#
|
||||
##
|
||||
## Note: Custom command that will be executed each time player state
|
||||
## changes. The environment variable MPD_PLAYER_STATE is set to the current
|
||||
## state (either unknown, play, pause, or stop) for its duration.
|
||||
##
|
||||
#
|
||||
#execute_on_player_state_change = ""
|
||||
#
|
||||
#playlist_show_mpd_host = no
|
||||
#
|
||||
#playlist_show_remaining_time = no
|
||||
#
|
||||
#playlist_shorten_total_times = no
|
||||
#
|
||||
#playlist_separate_albums = no
|
||||
#
|
||||
##
|
||||
## Note: Possible display modes: classic, columns.
|
||||
##
|
||||
#playlist_display_mode = columns
|
||||
#
|
||||
#browser_display_mode = classic
|
||||
#
|
||||
#search_engine_display_mode = classic
|
||||
#
|
||||
#playlist_editor_display_mode = classic
|
||||
#
|
||||
#discard_colors_if_item_is_selected = yes
|
||||
#
|
||||
#show_duplicate_tags = yes
|
||||
#
|
||||
#incremental_seeking = yes
|
||||
#
|
||||
#seek_time = 1
|
||||
#
|
||||
#volume_change_step = 2
|
||||
#
|
||||
#autocenter_mode = no
|
||||
#
|
||||
#centered_cursor = no
|
||||
#
|
||||
##
|
||||
## Note: You can specify third character which will be used to build 'empty'
|
||||
## part of progressbar.
|
||||
##
|
||||
#progressbar_look = =>
|
||||
#
|
||||
## Available values: database, playlist.
|
||||
##
|
||||
#default_place_to_search_in = database
|
||||
#
|
||||
## Available values: classic, alternative.
|
||||
##
|
||||
#user_interface = classic
|
||||
#
|
||||
#data_fetching_delay = yes
|
||||
#
|
||||
## Available values: artist, album_artist, date, genre, composer, performer.
|
||||
##
|
||||
#media_library_primary_tag = artist
|
||||
#
|
||||
#media_library_albums_split_by_date = yes
|
||||
#
|
||||
## Available values: wrapped, normal.
|
||||
##
|
||||
#default_find_mode = wrapped
|
||||
#
|
||||
#default_tag_editor_pattern = %n - %t
|
||||
#
|
||||
#header_visibility = yes
|
||||
#
|
||||
#statusbar_visibility = yes
|
||||
#
|
||||
#titles_visibility = yes
|
||||
#
|
||||
#header_text_scrolling = yes
|
||||
#
|
||||
#cyclic_scrolling = no
|
||||
#
|
||||
#lines_scrolled = 2
|
||||
#
|
||||
#lyrics_fetchers = lyricwiki, azlyrics, genius, sing365, lyricsmania, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, internet
|
||||
#
|
||||
#follow_now_playing_lyrics = no
|
||||
#
|
||||
#fetch_lyrics_for_current_song_in_background = no
|
||||
#
|
||||
#store_lyrics_in_song_dir = no
|
||||
#
|
||||
#generate_win32_compatible_filenames = yes
|
||||
#
|
||||
#allow_for_physical_item_deletion = no
|
||||
#
|
||||
##
|
||||
## Note: If you set this variable, ncmpcpp will try to get info from last.fm in
|
||||
## language you set and if it fails, it will fall back to english. Otherwise it
|
||||
## will use english the first time.
|
||||
##
|
||||
## Note: Language has to be expressed as an ISO 639 alpha-2 code.
|
||||
##
|
||||
#lastfm_preferred_language = en
|
||||
#
|
||||
#space_add_mode = add_remove
|
||||
#
|
||||
#show_hidden_files_in_local_browser = no
|
||||
#
|
||||
##
|
||||
## How shall screen switcher work?
|
||||
##
|
||||
## - "previous" - switch between the current and previous screen.
|
||||
## - "screen1,...,screenN" - switch between given sequence of screens.
|
||||
##
|
||||
## Screens available for use: help, playlist, browser, search_engine,
|
||||
## media_library, playlist_editor, tag_editor, outputs, visualizer, clock,
|
||||
## lyrics, last_fm.
|
||||
##
|
||||
#screen_switcher_mode = playlist, browser
|
||||
#
|
||||
##
|
||||
## Note: You can define startup screen by choosing screen from the list above.
|
||||
##
|
||||
#startup_screen = playlist
|
||||
#
|
||||
##
|
||||
## Note: You can define startup slave screen by choosing screen from the list
|
||||
## above or an empty value for no slave screen.
|
||||
##
|
||||
#startup_slave_screen = ""
|
||||
#
|
||||
#startup_slave_screen_focus = no
|
||||
#
|
||||
##
|
||||
## Default width of locked screen (in %). Acceptable values are from 20 to 80.
|
||||
##
|
||||
#
|
||||
#locked_screen_width_part = 50
|
||||
#
|
||||
#ask_for_locked_screen_width_part = yes
|
||||
#
|
||||
#jump_to_now_playing_song_at_start = yes
|
||||
#
|
||||
#ask_before_clearing_playlists = yes
|
||||
#
|
||||
#clock_display_seconds = no
|
||||
#
|
||||
#display_volume_level = yes
|
||||
#
|
||||
display_bitrate = yes
|
||||
#
|
||||
#display_remaining_time = no
|
||||
#
|
||||
## Available values: none, basic, extended, perl.
|
||||
##
|
||||
#regular_expressions = perl
|
||||
#
|
||||
##
|
||||
## Note: if below is enabled, ncmpcpp will ignore leading "The" word while
|
||||
## sorting items in browser, tags in media library, etc.
|
||||
##
|
||||
#ignore_leading_the = no
|
||||
#
|
||||
##
|
||||
## Note: if below is enabled, ncmpcpp will ignore diacritics while searching and
|
||||
## filtering lists. This takes an effect only if boost was compiled with ICU
|
||||
## support.
|
||||
##
|
||||
#ignore_diacritics = no
|
||||
#
|
||||
#block_search_constraints_change_if_items_found = yes
|
||||
#
|
||||
#mouse_support = yes
|
||||
#
|
||||
#mouse_list_scroll_whole_page = yes
|
||||
#
|
||||
#empty_tag_marker = <empty>
|
||||
#
|
||||
#tags_separator = " | "
|
||||
#
|
||||
#tag_editor_extended_numeration = no
|
||||
#
|
||||
#media_library_sort_by_mtime = no
|
||||
#
|
||||
#enable_window_title = yes
|
||||
#
|
||||
##
|
||||
## Note: You can choose default search mode for search engine. Available modes
|
||||
## are:
|
||||
##
|
||||
## - 1 - use mpd built-in searching (no regexes, pattern matching)
|
||||
##
|
||||
## - 2 - use ncmpcpp searching (pattern matching with support for regexes, but
|
||||
## if your mpd is on a remote machine, downloading big database to process
|
||||
## it can take a while
|
||||
##
|
||||
## - 3 - match only exact values (this mode uses mpd function for searching in
|
||||
## database and local one for searching in current playlist)
|
||||
##
|
||||
#
|
||||
#search_engine_default_search_mode = 1
|
||||
#
|
||||
#external_editor = nano
|
||||
#
|
||||
## Note: set to yes if external editor is a console application.
|
||||
##
|
||||
#use_console_editor = yes
|
||||
#
|
||||
##### colors definitions #####
|
||||
##
|
||||
## It is possible to set a background color by setting a color value
|
||||
## "<foreground>_<background>", e.g. red_black will set foregound color to red
|
||||
## and background color to black.
|
||||
##
|
||||
## In addition, for terminals that support 256 colors it is possible to set one
|
||||
## of them by using a number in range [1, 256] instead of color name,
|
||||
## e.g. numerical value corresponding to red_black is 2_1. To find out if the
|
||||
## terminal supports 256 colors, run ncmpcpp and check out the bottom of the
|
||||
## help screen for list of available colors and their numerical values.
|
||||
##
|
||||
## What is more, there are two special values for the background color:
|
||||
## "transparent" and "current". The first one explicitly sets the background to
|
||||
## be transparent, while the second one allows you to preserve current
|
||||
## background color and change only the foreground one. It's used implicitly
|
||||
## when background color is not specified.
|
||||
##
|
||||
## Moreover, it is possible to attach format information to selected color
|
||||
## variables by appending to their end a colon followed by one or more format
|
||||
## flags, e.g. black:b or red:ur. The following variables support this syntax:
|
||||
## visualizer_color, color1, color2, empty_tag_color, volume_color,
|
||||
## state_line_color, state_flags_color, progressbar_color,
|
||||
## progressbar_elapsed_color, player_state_color, statusbar_time_color,
|
||||
## alternative_ui_separator_color.
|
||||
##
|
||||
## Note: due to technical limitations of older ncurses version, if 256 colors
|
||||
## are used there is a possibility that you'll be able to use only colors with
|
||||
## transparent background.
|
||||
#
|
||||
#colors_enabled = yes
|
||||
#
|
||||
#empty_tag_color = cyan
|
||||
#
|
||||
#header_window_color = default
|
||||
#
|
||||
#volume_color = default
|
||||
#
|
||||
#state_line_color = default
|
||||
#
|
||||
#state_flags_color = default:b
|
||||
#
|
||||
#main_window_color = yellow
|
||||
#
|
||||
#color1 = white
|
||||
#
|
||||
#color2 = green
|
||||
#
|
||||
#progressbar_color = black:b
|
||||
#
|
||||
#progressbar_elapsed_color = green:b
|
||||
#
|
||||
#statusbar_color = default
|
||||
#
|
||||
#statusbar_time_color = default:b
|
||||
#
|
||||
#player_state_color = default:b
|
||||
#
|
||||
#alternative_ui_separator_color = black:b
|
||||
#
|
||||
#window_border_color = green
|
||||
#
|
||||
#active_window_border = red
|
||||
#
|
0
dot_config/nnn/bookmarks/.keep
Normal file
0
dot_config/nnn/bookmarks/.keep
Normal file
0
dot_config/nnn/empty_dot_selection
Normal file
0
dot_config/nnn/empty_dot_selection
Normal file
0
dot_config/nnn/mounts/.keep
Normal file
0
dot_config/nnn/mounts/.keep
Normal file
0
dot_config/nnn/plugins/.keep
Normal file
0
dot_config/nnn/plugins/.keep
Normal file
0
dot_config/nnn/sessions/.keep
Normal file
0
dot_config/nnn/sessions/.keep
Normal file
2
dot_config/nvim/after/plugin/color.lua
Normal file
2
dot_config/nvim/after/plugin/color.lua
Normal file
@ -0,0 +1,2 @@
|
||||
vim.o.termguicolors = true
|
||||
vim.cmd[[colorscheme dracula]]
|
16
dot_config/nvim/after/plugin/keymap/harpoon.lua
Normal file
16
dot_config/nvim/after/plugin/keymap/harpoon.lua
Normal file
@ -0,0 +1,16 @@
|
||||
local nnoremap = require("tstarr.keymap").nnoremap
|
||||
local silent = { silent = true }
|
||||
|
||||
require("harpoon").setup({
|
||||
menu = {
|
||||
width = vim.api.nvim_win_get_width(0) - 4,
|
||||
}
|
||||
})
|
||||
|
||||
nnoremap("<leader>ha", function() require("harpoon.mark").add_file() end, silent)
|
||||
nnoremap("<leader>hl", function() require("harpoon.ui").toggle_quick_menu() end, silent)
|
||||
|
||||
nnoremap("<leader>1", function() require("harpoon.ui").nav_file(1) end, silent)
|
||||
nnoremap("<leader>2", function() require("harpoon.ui").nav_file(2) end, silent)
|
||||
nnoremap("<leader>3", function() require("harpoon.ui").nav_file(3) end, silent)
|
||||
nnoremap("<leader>4", function() require("harpoon.ui").nav_file(4) end, silent)
|
5
dot_config/nvim/after/plugin/keymap/lazygit.lua
Normal file
5
dot_config/nvim/after/plugin/keymap/lazygit.lua
Normal file
@ -0,0 +1,5 @@
|
||||
local Remap = require("tstarr.keymap")
|
||||
local nnoremap = Remap.nnoremap
|
||||
local silent = { silent = true }
|
||||
|
||||
nnoremap("<leader>gg", "<cmd>LazyGit<CR>", silent)
|
8
dot_config/nvim/after/plugin/keymap/remap.lua
Normal file
8
dot_config/nvim/after/plugin/keymap/remap.lua
Normal file
@ -0,0 +1,8 @@
|
||||
local nnoremap = require("tstarr.keymap").nnoremap
|
||||
|
||||
nnoremap("<leader>pv", "<cmd>Ex<CR>")
|
||||
|
||||
nnoremap("<leader>tn", "<cmd>tabnew<CR>")
|
||||
nnoremap("<leader>th", "<cmd>tabn<CR>")
|
||||
nnoremap("<leader>tl", "<cmd>tabp<CR>")
|
||||
nnoremap("<leader>tc", "<cmd>tabc<CR>")
|
20
dot_config/nvim/after/plugin/keymap/telescope.lua
Normal file
20
dot_config/nvim/after/plugin/keymap/telescope.lua
Normal file
@ -0,0 +1,20 @@
|
||||
local Remap = require("tstarr.keymap")
|
||||
local nnoremap = Remap.nnoremap
|
||||
|
||||
nnoremap("<leader>ff", function ()
|
||||
require('telescope.builtin').find_files({hidden=true, no_ignore=true})
|
||||
end)
|
||||
nnoremap("<leader>fg", function ()
|
||||
require('telescope.builtin').live_grep()
|
||||
end)
|
||||
nnoremap("<leader>fb", function ()
|
||||
require('telescope.builtin').buffers()
|
||||
end)
|
||||
nnoremap("<leader>fh", function ()
|
||||
require('telescope.builtin').help_tags()
|
||||
end)
|
||||
|
||||
nnoremap("<leader>p", function ()
|
||||
require('telescope').extensions.project.project()
|
||||
end)
|
||||
|
74
dot_config/nvim/after/plugin/lsp.lua
Normal file
74
dot_config/nvim/after/plugin/lsp.lua
Normal file
@ -0,0 +1,74 @@
|
||||
local Remap = require("tstarr.keymap")
|
||||
local nnoremap = Remap.nnoremap
|
||||
local inoremap = Remap.inoremap
|
||||
local cmp = require('cmp')
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
|
||||
end,
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_next_item()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i" }),
|
||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
cmp.select_prev_item()
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
end, { "i" }),
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
['<C-e>'] = cmp.mapping.abort(),
|
||||
['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' }, -- For luasnip users.
|
||||
}, {
|
||||
{ name = 'buffer' },
|
||||
})
|
||||
})
|
||||
|
||||
local function config(_config)
|
||||
return vim.tbl_deep_extend("force", {
|
||||
on_attach = function()
|
||||
local opts = { buffer = true };
|
||||
nnoremap("gd", function() vim.lsp.buf.definition() end, opts)
|
||||
nnoremap("K", function() vim.lsp.buf.hover() end, opts)
|
||||
nnoremap("<leader>vws", function() vim.lsp.buf.workspace_symbol() end, opts)
|
||||
nnoremap("<leader>vd", function() vim.diagnostic.open_float() end, opts)
|
||||
nnoremap("[d", function() vim.diagnostic.goto_next() end, opts)
|
||||
nnoremap("]d", function() vim.diagnostic.goto_prev() end, opts)
|
||||
nnoremap("<leader>vca", function() vim.lsp.buf.code_action() end, opts)
|
||||
nnoremap("<leader>vco", function() vim.lsp.buf.code_action({
|
||||
filter = function(code_action)
|
||||
if not code_action or not code_action.data then
|
||||
return false
|
||||
end
|
||||
|
||||
local data = code_action.data.id
|
||||
return string.sub(data, #data - 1, #data) == ":0"
|
||||
end,
|
||||
apply = true
|
||||
}) end, opts)
|
||||
nnoremap("<leader>vrr", function() vim.lsp.buf.references() end, opts)
|
||||
nnoremap("<leader>vrn", function() vim.lsp.buf.rename() end, opts)
|
||||
inoremap("<C-h>", function() vim.lsp.buf.signature_help() end, opts)
|
||||
end,
|
||||
}, _config or {})
|
||||
end
|
||||
|
||||
require("lspconfig").tsserver.setup(config())
|
1
dot_config/nvim/init.lua
Normal file
1
dot_config/nvim/init.lua
Normal file
@ -0,0 +1 @@
|
||||
require("tstarr")
|
3
dot_config/nvim/lua/tstarr/init.lua
Normal file
3
dot_config/nvim/lua/tstarr/init.lua
Normal file
@ -0,0 +1,3 @@
|
||||
require("tstarr.set")
|
||||
require("tstarr.packer")
|
||||
require("tstarr.telescope")
|
20
dot_config/nvim/lua/tstarr/keymap.lua
Normal file
20
dot_config/nvim/lua/tstarr/keymap.lua
Normal file
@ -0,0 +1,20 @@
|
||||
local M = {}
|
||||
|
||||
local function bind(op, outer_opts)
|
||||
outer_opts = outer_opts or {noremap = true}
|
||||
return function(lhs, rhs, opts)
|
||||
opts = vim.tbl_extend("force",
|
||||
outer_opts,
|
||||
opts or {}
|
||||
)
|
||||
vim.keymap.set(op, lhs, rhs, opts)
|
||||
end
|
||||
end
|
||||
|
||||
M.nmap = bind("n", {noremap = false})
|
||||
M.nnoremap = bind("n")
|
||||
M.vnoremap = bind("v")
|
||||
M.xnoremap = bind("x")
|
||||
M.inoremap = bind("i")
|
||||
|
||||
return M
|
30
dot_config/nvim/lua/tstarr/packer.lua
Normal file
30
dot_config/nvim/lua/tstarr/packer.lua
Normal file
@ -0,0 +1,30 @@
|
||||
-- This file can be loaded by calling `lua require('plugins')` from your init.vim
|
||||
|
||||
return require('packer').startup(function(use)
|
||||
-- Packer can manage itself
|
||||
use 'wbthomason/packer.nvim'
|
||||
|
||||
-- Colors
|
||||
use ('dracula/vim')
|
||||
|
||||
-- IDE
|
||||
use('nvim-lua/plenary.nvim')
|
||||
use("nvim-treesitter/nvim-treesitter", {
|
||||
run = ":TSUpdate"
|
||||
})
|
||||
use ('nvim-telescope/telescope.nvim')
|
||||
use ('nvim-telescope/telescope-project.nvim')
|
||||
|
||||
use ('ThePrimeagen/harpoon')
|
||||
use ('kdheepak/lazygit.nvim')
|
||||
use ('neovim/nvim-lspconfig')
|
||||
use ('hrsh7th/cmp-nvim-lsp')
|
||||
use ('hrsh7th/cmp-buffer')
|
||||
use ('hrsh7th/cmp-path')
|
||||
use ('hrsh7th/cmp-cmdline')
|
||||
use ('hrsh7th/nvim-cmp')
|
||||
use ('L3MON4D3/LuaSnip')
|
||||
use ('saadparwaiz1/cmp_luasnip')
|
||||
|
||||
|
||||
end)
|
41
dot_config/nvim/lua/tstarr/set.lua
Normal file
41
dot_config/nvim/lua/tstarr/set.lua
Normal file
@ -0,0 +1,41 @@
|
||||
vim.opt.guicursor = ""
|
||||
|
||||
vim.opt.nu = true
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
vim.opt.errorbells = false
|
||||
|
||||
vim.opt.tabstop = 4
|
||||
vim.opt.softtabstop = 4
|
||||
vim.opt.shiftwidth = 4
|
||||
vim.opt.expandtab = true
|
||||
|
||||
vim.opt.smartindent = true
|
||||
|
||||
vim.opt.wrap = false
|
||||
|
||||
vim.opt.swapfile = false
|
||||
vim.opt.backup = false
|
||||
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
|
||||
vim.opt.undofile = true
|
||||
|
||||
vim.opt.hlsearch = false
|
||||
vim.opt.incsearch = true
|
||||
|
||||
vim.opt.termguicolors = true
|
||||
|
||||
vim.opt.scrolloff = 8
|
||||
vim.opt.signcolumn = "yes"
|
||||
vim.opt.isfname:append("@-@")
|
||||
|
||||
-- Give more space for displaying messages.
|
||||
vim.opt.cmdheight = 1
|
||||
|
||||
-- Having longer updatetime (default is 4000 ms = 4 s) leads to noticeable
|
||||
-- delays and poor user experience.
|
||||
vim.opt.updatetime = 50
|
||||
|
||||
-- Don't pass messages to |ins-completion-menu|.
|
||||
vim.opt.shortmess:append("c")
|
||||
|
||||
vim.g.mapleader = " "
|
15
dot_config/nvim/lua/tstarr/telescope.lua
Normal file
15
dot_config/nvim/lua/tstarr/telescope.lua
Normal file
@ -0,0 +1,15 @@
|
||||
--require'telescope'.load_extension('project')
|
||||
|
||||
require('telescope').setup {
|
||||
extensions = {
|
||||
project = {
|
||||
base_dirs = {
|
||||
'~/.dotfiles',
|
||||
'~/devel/work/genisys/splat-react',
|
||||
'~/devel/work/genisys/splat-python',
|
||||
},
|
||||
hidden_files = true,
|
||||
sync_with_nvim_tree = true, -- default false
|
||||
}
|
||||
}
|
||||
}
|
174
dot_config/nvim/plugin/packer_compiled.lua
Normal file
174
dot_config/nvim/plugin/packer_compiled.lua
Normal file
@ -0,0 +1,174 @@
|
||||
-- Automatically generated packer.nvim plugin loader code
|
||||
|
||||
if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
|
||||
vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
|
||||
return
|
||||
end
|
||||
|
||||
vim.api.nvim_command('packadd packer.nvim')
|
||||
|
||||
local no_errors, error_msg = pcall(function()
|
||||
|
||||
_G._packer = _G._packer or {}
|
||||
_G._packer.inside_compile = true
|
||||
|
||||
local time
|
||||
local profile_info
|
||||
local should_profile = false
|
||||
if should_profile then
|
||||
local hrtime = vim.loop.hrtime
|
||||
profile_info = {}
|
||||
time = function(chunk, start)
|
||||
if start then
|
||||
profile_info[chunk] = hrtime()
|
||||
else
|
||||
profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
|
||||
end
|
||||
end
|
||||
else
|
||||
time = function(chunk, start) end
|
||||
end
|
||||
|
||||
local function save_profiles(threshold)
|
||||
local sorted_times = {}
|
||||
for chunk_name, time_taken in pairs(profile_info) do
|
||||
sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
|
||||
end
|
||||
table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
|
||||
local results = {}
|
||||
for i, elem in ipairs(sorted_times) do
|
||||
if not threshold or threshold and elem[2] > threshold then
|
||||
results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
|
||||
end
|
||||
end
|
||||
if threshold then
|
||||
table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)')
|
||||
end
|
||||
|
||||
_G._packer.profile_output = results
|
||||
end
|
||||
|
||||
time([[Luarocks path setup]], true)
|
||||
local package_path_str = "/home/tstarr/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/tstarr/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/tstarr/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/tstarr/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua"
|
||||
local install_cpath_pattern = "/home/tstarr/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so"
|
||||
if not string.find(package.path, package_path_str, 1, true) then
|
||||
package.path = package.path .. ';' .. package_path_str
|
||||
end
|
||||
|
||||
if not string.find(package.cpath, install_cpath_pattern, 1, true) then
|
||||
package.cpath = package.cpath .. ';' .. install_cpath_pattern
|
||||
end
|
||||
|
||||
time([[Luarocks path setup]], false)
|
||||
time([[try_loadstring definition]], true)
|
||||
local function try_loadstring(s, component, name)
|
||||
local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
|
||||
if not success then
|
||||
vim.schedule(function()
|
||||
vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
|
||||
end)
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
time([[try_loadstring definition]], false)
|
||||
time([[Defining packer_plugins]], true)
|
||||
_G.packer_plugins = {
|
||||
LuaSnip = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/LuaSnip",
|
||||
url = "https://github.com/L3MON4D3/LuaSnip"
|
||||
},
|
||||
["cmp-buffer"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/cmp-buffer",
|
||||
url = "https://github.com/hrsh7th/cmp-buffer"
|
||||
},
|
||||
["cmp-cmdline"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/cmp-cmdline",
|
||||
url = "https://github.com/hrsh7th/cmp-cmdline"
|
||||
},
|
||||
["cmp-nvim-lsp"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp",
|
||||
url = "https://github.com/hrsh7th/cmp-nvim-lsp"
|
||||
},
|
||||
["cmp-path"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/cmp-path",
|
||||
url = "https://github.com/hrsh7th/cmp-path"
|
||||
},
|
||||
cmp_luasnip = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/cmp_luasnip",
|
||||
url = "https://github.com/saadparwaiz1/cmp_luasnip"
|
||||
},
|
||||
harpoon = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/harpoon",
|
||||
url = "https://github.com/ThePrimeagen/harpoon"
|
||||
},
|
||||
["lazygit.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/lazygit.nvim",
|
||||
url = "https://github.com/kdheepak/lazygit.nvim"
|
||||
},
|
||||
["nvim-cmp"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/nvim-cmp",
|
||||
url = "https://github.com/hrsh7th/nvim-cmp"
|
||||
},
|
||||
["nvim-lspconfig"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/nvim-lspconfig",
|
||||
url = "https://github.com/neovim/nvim-lspconfig"
|
||||
},
|
||||
["nvim-treesitter"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/nvim-treesitter",
|
||||
url = "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||
},
|
||||
["packer.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/packer.nvim",
|
||||
url = "https://github.com/wbthomason/packer.nvim"
|
||||
},
|
||||
["plenary.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/plenary.nvim",
|
||||
url = "https://github.com/nvim-lua/plenary.nvim"
|
||||
},
|
||||
["telescope-project.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/telescope-project.nvim",
|
||||
url = "https://github.com/nvim-telescope/telescope-project.nvim"
|
||||
},
|
||||
["telescope.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/telescope.nvim",
|
||||
url = "https://github.com/nvim-telescope/telescope.nvim"
|
||||
},
|
||||
vim = {
|
||||
loaded = true,
|
||||
path = "/home/tstarr/.local/share/nvim/site/pack/packer/start/vim",
|
||||
url = "https://github.com/dracula/vim"
|
||||
}
|
||||
}
|
||||
|
||||
time([[Defining packer_plugins]], false)
|
||||
|
||||
_G._packer.inside_compile = false
|
||||
if _G._packer.needs_bufread == true then
|
||||
vim.cmd("doautocmd BufRead")
|
||||
end
|
||||
_G._packer.needs_bufread = false
|
||||
|
||||
if should_profile then save_profiles() end
|
||||
|
||||
end)
|
||||
|
||||
if not no_errors then
|
||||
error_msg = error_msg:gsub('"', '\\"')
|
||||
vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
|
||||
end
|
23
dot_config/polybar/common
Normal file
23
dot_config/polybar/common
Normal file
@ -0,0 +1,23 @@
|
||||
width = 100%
|
||||
height = 20
|
||||
radius = 0
|
||||
line-size = 0
|
||||
bottom = false
|
||||
|
||||
font-0 = "Ubuntu:size=10;2"
|
||||
font-1 = "Ubuntu:style=Bold:size=11;2"
|
||||
font-2 = "Ubuntu Nerd Font:size=11;2"
|
||||
|
||||
override-redirect = false
|
||||
screenchange-reload = true
|
||||
throttle-output = 5
|
||||
throttle-output-for = 10
|
||||
throttle-input-for = 30
|
||||
padding-left = 0
|
||||
padding-right = 0
|
||||
module-margin-left = 0
|
||||
module-margin-right = 0
|
||||
|
||||
tray-position = right
|
||||
tray-padding = 2
|
||||
tray-detached = false
|
137
dot_config/polybar/dracula
Normal file
137
dot_config/polybar/dracula
Normal file
@ -0,0 +1,137 @@
|
||||
[bar/fullbar]
|
||||
monitor = HDMI-0
|
||||
include-file = ~/.config/polybar/common
|
||||
|
||||
background = #bb282a36
|
||||
foreground = #f8f8f2
|
||||
wm-restack = i3
|
||||
|
||||
modules-left = i3 spacing spacing xwindow
|
||||
modules-center = date
|
||||
modules-right = memory separator cpu separator spacing pulseaudio separator wlan separator bandwidth separator
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:60:...%
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
internal = 1
|
||||
format-prefix = MEM:
|
||||
format-prefix-foreground = "#8be9fd"
|
||||
format = <label>
|
||||
label-foreground = "#8be9fd"
|
||||
label = %mb_used%
|
||||
format-prefix-padding = 1
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
internal = 0.5
|
||||
format-prefix = CPU:
|
||||
format-prefix-foreground = "#ff79c6"
|
||||
format = <label>%
|
||||
label = %percentage%
|
||||
format-foreground = "#ff79c6"
|
||||
format-prefix-padding = 1
|
||||
|
||||
[module/filesystem]
|
||||
type = internal/fs
|
||||
mount-0 = /home
|
||||
interval = 10
|
||||
fixed-values = true
|
||||
format-mounted-prefix =
|
||||
format-mounted-prefix-foreground = "#ff79c6"
|
||||
format-mounted = <label-mounted>
|
||||
format-unmounted-prefix =
|
||||
format-unmounted-prefix-foreground = "#ff79c6"
|
||||
format-unmounted = <label-unmounted>
|
||||
label-mounted = %free%
|
||||
label-unmounted = %mountpoint%: not mounted
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 60
|
||||
date = %a %d %b
|
||||
time = %l:%M %p
|
||||
label = %date% %time%
|
||||
format-padding = 2
|
||||
format-background = "#44475a"
|
||||
label-font = 2
|
||||
|
||||
[module/wlan]
|
||||
type = internal/network
|
||||
interface = enp3s0
|
||||
interval = 5
|
||||
label-connected = 直 %local_ip%
|
||||
label-connected-foreground = "#50fa7b"
|
||||
label-disconnected = 睊 NOT CONNECTED
|
||||
label-disconnected-foreground = "#ff5555"
|
||||
content-padding = 2
|
||||
|
||||
[module/bandwidth]
|
||||
type = internal/network
|
||||
interface = enp3s0
|
||||
interval = 5
|
||||
label-connected = %downspeed% %upspeed%
|
||||
label-disconnected =
|
||||
content-padding = 2
|
||||
|
||||
[module/volume]
|
||||
type = internal/alsa
|
||||
format-volume = <label-volume>
|
||||
format-muted = Muted
|
||||
|
||||
[module/pulseaudio]
|
||||
type = internal/pulseaudio
|
||||
sink = alsa_output.pci-0000_00_1b.0.analog-stereo
|
||||
use-ui-max = true
|
||||
interval = 5
|
||||
format-volume = 墳<label-volume>
|
||||
format-muted = 墳Muted
|
||||
|
||||
[module/title]
|
||||
type = internal/xwindow
|
||||
format = <label>
|
||||
label = %title:0:20:...%
|
||||
#label-maxlen = 20
|
||||
format-font = 3
|
||||
label-foreground = "#50fa7b"
|
||||
|
||||
[module/separator]
|
||||
type = custom/text
|
||||
content = " |"
|
||||
content-padding = 0
|
||||
content-foreground = "#f8f8f2"
|
||||
|
||||
[module/spacing]
|
||||
type = custom/text
|
||||
content = " "
|
||||
content-padding = 0
|
||||
content-foreground= "#282a36"
|
||||
|
||||
[module/i3]
|
||||
type = internal/i3
|
||||
pin-workspace = false
|
||||
index-sort = true
|
||||
enable-click = true
|
||||
enable-scroll = true
|
||||
wrapping-scroll = false
|
||||
reverse-scroll = false
|
||||
format = <label-state> <label-mode>
|
||||
label-focused = %name%
|
||||
label-focused-padding = 2
|
||||
label-focused-background = "#bd93f9"
|
||||
label-focused-foreground = "#282a36"
|
||||
|
||||
label-unfocused = %name%
|
||||
label-unfocused-padding = 2
|
||||
label-unfocused-background = "#44475a"
|
||||
label-visible = %name%
|
||||
label-visible-padding = 2
|
||||
label-visible-background = "#44475a"
|
||||
label-mode = %mode%
|
||||
label-mode-background = "#ff5555"
|
||||
label-mode-foreground = "#282a36"
|
||||
label-mode-padding = 1
|
||||
label-urgent = %name%
|
||||
label-urgent-padding = 2
|
28
dot_config/qtile/config.py
Normal file
28
dot_config/qtile/config.py
Normal file
@ -0,0 +1,28 @@
|
||||
from libqtile import hook
|
||||
from settings.keys import mod, keys
|
||||
from settings.groups import groups
|
||||
from settings.layouts import layouts, floating_layout
|
||||
from settings.widgets import widget_defaults, extension_defaults
|
||||
from settings.screens import screens
|
||||
from settings.mouse import mouse
|
||||
from settings.rules import dgroups_app_rules
|
||||
from settings.path import qtile_path
|
||||
|
||||
from os import path
|
||||
import subprocess
|
||||
|
||||
# Autostart
|
||||
@hook.subscribe.startup_once
|
||||
def autostart():
|
||||
subprocess.call([path.join(qtile_path, 'autostart.sh')])
|
||||
|
||||
# Basic settings
|
||||
main = None
|
||||
dgroups_key_binder = None
|
||||
dgroups_app_rules = []
|
||||
follow_mouse_focus = True
|
||||
bring_front_click = False
|
||||
cursor_warp = True
|
||||
auto_fullscreen = True
|
||||
focus_on_window_activation = 'urgent'
|
||||
wmname = 'LG3D'
|
88
dot_config/qtile/custom/traverse.py
Normal file
88
dot_config/qtile/custom/traverse.py
Normal file
@ -0,0 +1,88 @@
|
||||
"""
|
||||
This plugin exports four functions - up, down, left and right - that when called will
|
||||
move window focus to the first window in that general direction. Focussing is based
|
||||
entirely on position and geometry, so is independent of screens, layouts and whether
|
||||
windows are floating or tiled. It can also move focus to and from empty screens.
|
||||
Example usage:
|
||||
import traverse
|
||||
keys.extend([EzKey(k, v) for k, v in {
|
||||
'M-k': lazy.function(traverse.up)
|
||||
'M-j': lazy.function(traverse.down)
|
||||
'M-h': lazy.function(traverse.left)
|
||||
'M-l': lazy.function(traverse.right)
|
||||
}.items()])
|
||||
"""
|
||||
|
||||
from libqtile.config import Screen
|
||||
|
||||
|
||||
def up(qtile):
|
||||
_focus_window(qtile, -1, 'y')
|
||||
|
||||
|
||||
def down(qtile):
|
||||
_focus_window(qtile, 1, 'y')
|
||||
|
||||
|
||||
def left(qtile):
|
||||
_focus_window(qtile, -1, 'x')
|
||||
|
||||
|
||||
def right(qtile):
|
||||
_focus_window(qtile, 1, 'x')
|
||||
|
||||
|
||||
def _focus_window(qtile, dir, axis):
|
||||
win = None
|
||||
win_wide = None
|
||||
dist = 10000
|
||||
dist_wide = 10000
|
||||
cur = qtile.current_window
|
||||
if not cur:
|
||||
cur = qtile.current_screen
|
||||
|
||||
if axis == 'x':
|
||||
dim = 'width'
|
||||
band_axis = 'y'
|
||||
band_dim = 'height'
|
||||
cur_pos = cur.x
|
||||
band_min = cur.y
|
||||
band_max = cur.y + cur.height
|
||||
else:
|
||||
dim = 'height'
|
||||
band_axis = 'x'
|
||||
band_dim = 'width'
|
||||
band_min = cur.x
|
||||
cur_pos = cur.y
|
||||
band_max = cur.x + cur.width
|
||||
|
||||
cur_pos += getattr(cur, dim) / 2
|
||||
|
||||
windows = [w for g in qtile.groups if g.screen for w in g.windows]
|
||||
windows.extend([s for s in qtile.screens if not s.group.windows])
|
||||
|
||||
if cur in windows:
|
||||
windows.remove(cur)
|
||||
|
||||
for w in windows:
|
||||
if isinstance(w, Screen) or not w.minimized:
|
||||
pos = getattr(w, axis) + getattr(w, dim) / 2
|
||||
gap = dir * (pos - cur_pos)
|
||||
if gap > 5:
|
||||
band_pos = getattr(w, band_axis) + getattr(w, band_dim) / 2
|
||||
if band_min < band_pos < band_max:
|
||||
if gap < dist:
|
||||
dist = gap
|
||||
win = w
|
||||
else:
|
||||
if gap < dist_wide:
|
||||
dist_wide = gap
|
||||
win_wide = w
|
||||
|
||||
if not win:
|
||||
win = win_wide
|
||||
if win:
|
||||
qtile.focus_screen(win.group.screen.index)
|
||||
win.group.focus(win, True)
|
||||
if not isinstance(win, Screen):
|
||||
win.focus(False)
|
6
dot_config/qtile/custom/wal.py
Normal file
6
dot_config/qtile/custom/wal.py
Normal file
@ -0,0 +1,6 @@
|
||||
from os.path import expanduser
|
||||
from yaml import safe_load
|
||||
|
||||
# Get color config from pywal
|
||||
wal_loc = expanduser("~/.config/qtile/themes/dracula.yml")
|
||||
wal = safe_load(open(wal_loc))
|
87
dot_config/qtile/custom/windowname.py
Normal file
87
dot_config/qtile/custom/windowname.py
Normal file
@ -0,0 +1,87 @@
|
||||
# Copyright (c) 2008, 2010 Aldo Cortesi
|
||||
# Copyright (c) 2010 matt
|
||||
# Copyright (c) 2011 Mounier Florian
|
||||
# Copyright (c) 2012 Tim Neumann
|
||||
# Copyright (c) 2013 Craig Barnes
|
||||
# Copyright (c) 2014 Sean Vig
|
||||
# Copyright (c) 2014 Tycho Andersen
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
from libqtile import bar, hook, pangocffi
|
||||
from libqtile.log_utils import logger
|
||||
from libqtile.widget import base
|
||||
|
||||
|
||||
class WindowName(base._TextBox):
|
||||
"""Displays the name of the window that currently has focus"""
|
||||
orientations = base.ORIENTATION_HORIZONTAL
|
||||
defaults = [
|
||||
('for_current_screen', False, 'instead of this bars screen use currently active screen'),
|
||||
('empty_group_string', ' ', 'string to display when no windows are focused on current group'),
|
||||
('format', '{state}{name}', 'format of the text'),
|
||||
('parse_text', None, 'Function to parse and modify window names. '
|
||||
'e.g. function in config that removes excess '
|
||||
'strings from window name: '
|
||||
'def my_func(text)'
|
||||
' for string in [\" - Chromium\", \" - Firefox\"]:'
|
||||
' text = text.replace(string, \"\")'
|
||||
' return text'
|
||||
'then set option parse_text=my_func'),
|
||||
]
|
||||
|
||||
def __init__(self, width=bar.STRETCH, **config):
|
||||
base._TextBox.__init__(self, width=width, **config)
|
||||
self.add_defaults(WindowName.defaults)
|
||||
|
||||
def _configure(self, qtile, bar):
|
||||
base._TextBox._configure(self, qtile, bar)
|
||||
hook.subscribe.client_name_updated(self.hook_response)
|
||||
hook.subscribe.focus_change(self.hook_response)
|
||||
hook.subscribe.float_change(self.hook_response)
|
||||
|
||||
@hook.subscribe.current_screen_change
|
||||
def on_screen_changed():
|
||||
if self.for_current_screen:
|
||||
self.hook_response()
|
||||
|
||||
def hook_response(self, *args):
|
||||
w = self.qtile.current_screen.group.current_window
|
||||
state = ''
|
||||
if w:
|
||||
if w.maximized:
|
||||
state = '[] '
|
||||
elif w.minimized:
|
||||
state = '_ '
|
||||
elif w.floating:
|
||||
state = 'V '
|
||||
var = {}
|
||||
var["state"] = state
|
||||
var["name"] = w.name
|
||||
if callable(self.parse_text):
|
||||
try:
|
||||
var["name"] = self.parse_text(var["name"])
|
||||
except: # noqa: E722
|
||||
logger.exception("parse_text function failed:")
|
||||
wm_class = w.get_wm_class()
|
||||
var["class"] = wm_class[0] if wm_class else ""
|
||||
unescaped = self.format.format(**var)
|
||||
else:
|
||||
unescaped = self.empty_group_string
|
||||
self.update(pangocffi.markup_escape_text(unescaped))
|
0
dot_config/qtile/empty_executable_dot_projectile
Normal file
0
dot_config/qtile/empty_executable_dot_projectile
Normal file
7
dot_config/qtile/executable_autostart.sh
Normal file
7
dot_config/qtile/executable_autostart.sh
Normal file
@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
#wal -i ~/media/pictures/wallpapers/random_wallpapers/sierra_red_mountains.jpg
|
||||
#lxsession &
|
||||
#xsetroot -cursor_name left_ptr
|
||||
#imwheel -b 45
|
13
dot_config/qtile/executable_xephyr.sh
Normal file
13
dot_config/qtile/executable_xephyr.sh
Normal file
@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
function cleanup {
|
||||
echo "cleaning up!"
|
||||
export xeph_qtile=0
|
||||
}
|
||||
|
||||
export xeph_qtile=1
|
||||
Xephyr -br -ac -noreset -screen 800x600 :1 &
|
||||
export DISPLAY=:1
|
||||
stumpwm &
|
||||
|
||||
trap cleanup EXIT
|
28
dot_config/qtile/settings/groups.py
Normal file
28
dot_config/qtile/settings/groups.py
Normal file
@ -0,0 +1,28 @@
|
||||
from libqtile.config import Key, Group, ScratchPad, DropDown, Match, hook
|
||||
from libqtile.command import lazy
|
||||
from settings.keys import mod, keys
|
||||
|
||||
# Define groups I have
|
||||
groups = [Group(i) for i in [
|
||||
"1", "2", "3", "4", "5"
|
||||
]]
|
||||
|
||||
# Define keybinds for groups
|
||||
for i, group in enumerate(groups):
|
||||
actual_key = str(i + 1)
|
||||
keys.extend([
|
||||
# Switch to workspace N
|
||||
Key([mod], actual_key, lazy.group[group.name].toscreen()),
|
||||
# Send window to workspace N
|
||||
Key([mod, "shift"], actual_key, lazy.window.togroup(group.name))
|
||||
])
|
||||
|
||||
groups.append(
|
||||
#Group("Comm", spawn="discord", persist=True)
|
||||
ScratchPad("Comm", [DropDown("d", "discord", match=Match(wm_class="discord"), x=0.1, y=0.1, width=0.8, height=0.8)])
|
||||
)
|
||||
|
||||
keys.extend([
|
||||
Key([mod], "d", lazy.group["Comm"].dropdown_toggle("d"))
|
||||
])
|
||||
|
106
dot_config/qtile/settings/keys.py
Normal file
106
dot_config/qtile/settings/keys.py
Normal file
@ -0,0 +1,106 @@
|
||||
from libqtile.config import EzKey
|
||||
from libqtile.command import lazy
|
||||
from libqtile import qtile
|
||||
from custom.traverse import *
|
||||
import os
|
||||
|
||||
# Set mod key to the "windows" key
|
||||
xeph = os.environ.get('xeph_qtile')
|
||||
|
||||
if xeph == None or xeph == 0:
|
||||
mod = "mod4"
|
||||
else:
|
||||
mod="mod1"
|
||||
|
||||
def window_to_previous_screen(qtile):
|
||||
i = qtile.screens.index(qtile.current_screen)
|
||||
if i != 0:
|
||||
group = qtile.screens[i - 1].group.name
|
||||
qtile.current_window.togroup(group)
|
||||
|
||||
|
||||
def window_to_next_screen(qtile):
|
||||
i = qtile.screens.index(qtile.current_screen)
|
||||
if i + 1 != len(qtile.screens):
|
||||
group = qtile.screens[i + 1].group.name
|
||||
qtile.current_window.togroup(group)
|
||||
|
||||
def switch_screens(qtile):
|
||||
i = qtile.screens.index(qtile.current_screen)
|
||||
group = qtile.screens[i - 1].group
|
||||
qtile.current_screen.set_group(group)
|
||||
|
||||
# Define keybinds
|
||||
keys = [EzKey(k[0], *k[1:]) for k in [
|
||||
|
||||
# ------ Movement ------ #
|
||||
# Navigate between windows
|
||||
("M-h", lazy.function(left)),
|
||||
("M-j", lazy.function(down)),
|
||||
("M-k", lazy.function(up)),
|
||||
("M-l", lazy.function(right)),
|
||||
# Switch windows
|
||||
("M-S-<space>", lazy.function(switch_screens)),
|
||||
# Switch focus between two screens
|
||||
("M-<period>", lazy.next_screen()),
|
||||
("M-<comma>", lazy.prev_screen()),
|
||||
("M-S-<period>", lazy.function(window_to_next_screen)),
|
||||
("M-S-<comma>", lazy.function(window_to_previous_screen)),
|
||||
# Move windows around
|
||||
("M-S-h", lazy.layout.shuffle_left(),
|
||||
lazy.layout.swap_left()),
|
||||
("M-S-j", lazy.layout.shuffle_down()),
|
||||
("M-S-k", lazy.layout.shuffle_up()),
|
||||
("M-S-l", lazy.layout.shuffle_right(),
|
||||
lazy.layout.swap_right()),
|
||||
# Resize windows
|
||||
("M-C-h", lazy.layout.grow_left().when('bsp'),
|
||||
lazy.layout.shrink().when(['monadtall', 'monadwide'])),
|
||||
("M-C-j", lazy.layout.grow_down().when('bsp')),
|
||||
("M-C-k", lazy.layout.grow_up().when('bsp')),
|
||||
("M-C-l", lazy.layout.grow_right().when('bsp'),
|
||||
lazy.layout.grow().when(['monadtall', 'monadwide'])),
|
||||
("M-C-n", lazy.layout.normalize()),
|
||||
# Swap master and stack
|
||||
("M-<space>", lazy.layout.flip().when(['monadtall', 'monadwide']),
|
||||
lazy.layout.rotate().when(['stack'])),
|
||||
|
||||
# ------ Window State Changes ------ #
|
||||
# Kill focused window
|
||||
("M-q", lazy.window.kill()),
|
||||
# Toggle Floating
|
||||
("M-t", lazy.window.toggle_floating()),
|
||||
|
||||
# ------ Progam Launching ------ #
|
||||
# Program launcher
|
||||
("M-w", lazy.spawn("rofi -show drun")),
|
||||
("M-S-w", lazy.spawn("rofi -show window")),
|
||||
# Open Programs
|
||||
("M-<Return>", lazy.spawn("alacritty")),
|
||||
("M-S-<Return>", lazy.spawn("alacritty -e vifm")),
|
||||
("M-b", lazy.spawn("brave")),
|
||||
("M-d", lazy.spawn("discord")),
|
||||
("M-e", lazy.spawn("emacs")),
|
||||
("M-g", lazy.spawn("lutris")),
|
||||
|
||||
# ------ System + Utils ------- #
|
||||
# Resart qtile
|
||||
("M-S-r", lazy.restart()),
|
||||
# Quit qtile
|
||||
("M-S-q", lazy.shutdown()),
|
||||
# Switch between layouts
|
||||
("M-<Tab>", lazy.next_layout()),
|
||||
("M-S-<Tab>", lazy.prev_layout()),
|
||||
# Screenshot
|
||||
("M-s", lazy.spawn("flameshot gui")),
|
||||
# Gamemode
|
||||
("M-S-g", lazy.spawn('toggle_gamemode')),
|
||||
#Manage computer audio
|
||||
("<XF86AudioLowerVolume>",
|
||||
lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ -2%")),
|
||||
("<XF86AudioRaiseVolume>",
|
||||
lazy.spawn("pactl set-sink-volume @DEFAULT_SINK@ +2%")),
|
||||
("<XF86AudioMute>",
|
||||
lazy.spawn("pactl set-sink-mute @DEFAULT_SINK@ toggle")),
|
||||
|
||||
]]
|
34
dot_config/qtile/settings/layouts.py
Normal file
34
dot_config/qtile/settings/layouts.py
Normal file
@ -0,0 +1,34 @@
|
||||
from libqtile import layout
|
||||
from custom.wal import wal
|
||||
from libqtile.config import Match
|
||||
|
||||
# Layout configs
|
||||
layout_conf = {
|
||||
'border_focus': wal['colors']['color2'],
|
||||
'border_normal': wal['colors']['color0'],
|
||||
'border_width': 1,
|
||||
'margin': 2,
|
||||
}
|
||||
|
||||
# Define the layouts I have
|
||||
layouts = [
|
||||
layout.MonadTall(**layout_conf),
|
||||
layout.Max(**layout_conf),
|
||||
layout.Stack(num_stacks=2, **layout_conf),
|
||||
layout.MonadWide(**layout_conf),
|
||||
layout.Matrix(columns=2, **layout_conf),
|
||||
layout.Zoomy(**layout_conf),
|
||||
layout.Bsp(**layout_conf),
|
||||
layout.Columns(**layout_conf),
|
||||
]
|
||||
|
||||
# Define floating rules
|
||||
floating_layout = layout.Floating(
|
||||
float_rules=[
|
||||
Match('wmclass', 'Steam'),
|
||||
Match('wmclass', 'Wine'),
|
||||
Match('wmclass', 'discord'),
|
||||
],
|
||||
border_focus=wal['colors']['color2'],
|
||||
border_width=1,
|
||||
)
|
14
dot_config/qtile/settings/mouse.py
Normal file
14
dot_config/qtile/settings/mouse.py
Normal file
@ -0,0 +1,14 @@
|
||||
from libqtile.config import Drag, Click
|
||||
from libqtile.command import lazy
|
||||
from settings.keys import mod
|
||||
|
||||
# Define mouse binds
|
||||
mouse = [
|
||||
Drag([mod], "Button1",
|
||||
lazy.window.set_position_floating(),
|
||||
start=lazy.window.get_position()),
|
||||
Drag([mod], "Button3",
|
||||
lazy.window.set_size_floating(),
|
||||
start=lazy.window.get_size()),
|
||||
Click([mod], "Button2", lazy.window.bring_to_front())
|
||||
]
|
4
dot_config/qtile/settings/path.py
Normal file
4
dot_config/qtile/settings/path.py
Normal file
@ -0,0 +1,4 @@
|
||||
from os import path
|
||||
|
||||
# Define the path for qtile
|
||||
qtile_path = path.join(path.expanduser('~'), ".config", "qtile")
|
27
dot_config/qtile/settings/rules.py
Normal file
27
dot_config/qtile/settings/rules.py
Normal file
@ -0,0 +1,27 @@
|
||||
from libqtile.config import Match, Rule
|
||||
from libqtile import hook
|
||||
|
||||
dgroups_app_rules = [Rule(Match(wm_type=["confirm",
|
||||
"download",
|
||||
"notification",
|
||||
"toolbar",
|
||||
"splash",
|
||||
"dialog",
|
||||
"error",
|
||||
"file_progress",
|
||||
"confirmreset",
|
||||
"makebranch",
|
||||
"maketag",
|
||||
"branchdialog",
|
||||
"pinentry",
|
||||
"sshaskpass"]),
|
||||
float=True),
|
||||
Rule(Match(wm_class=["lutris", "league of legends.exe", "leagueclientux.exe"]),
|
||||
float=True,
|
||||
break_on_match=True)]
|
||||
@hook.subscribe.client_new
|
||||
def floating_dialogs(window):
|
||||
dialog = window.window.get_wm_type() == 'dialog'
|
||||
transient = window.window.get_wm_transient_for()
|
||||
if dialog or transient:
|
||||
window.floating = True
|
9
dot_config/qtile/settings/screens.py
Normal file
9
dot_config/qtile/settings/screens.py
Normal file
@ -0,0 +1,9 @@
|
||||
from libqtile.config import Screen
|
||||
from libqtile import bar, widget
|
||||
from settings.widgets import primary_widgets
|
||||
|
||||
# Define the screens (and bars)
|
||||
screens = [
|
||||
Screen(),
|
||||
Screen(top=bar.Bar(widgets=primary_widgets, size=20)),
|
||||
]
|
120
dot_config/qtile/settings/widgets.py
Normal file
120
dot_config/qtile/settings/widgets.py
Normal file
@ -0,0 +1,120 @@
|
||||
from libqtile import widget
|
||||
from custom.windowname import WindowName
|
||||
from custom.wal import wal
|
||||
spacer_len = 3
|
||||
wal_color = wal["colors"]
|
||||
|
||||
widget_defaults = dict(
|
||||
font="JetBrains Mono Nerd Font",
|
||||
fontsize=10,
|
||||
padding=3,
|
||||
background=wal_color["color0"],
|
||||
)
|
||||
extension_defaults = widget_defaults.copy()
|
||||
|
||||
primary_widgets = [
|
||||
widget.GroupBox(
|
||||
urgent_border=wal_color["color0"],
|
||||
disable_drag=True,
|
||||
highlight_method="block",
|
||||
this_screen_border=wal_color["color6"],
|
||||
other_screen_border=wal_color["color2"],
|
||||
this_current_screen_border=wal_color["color6"],
|
||||
other_current_screen_border=wal_color["color2"],
|
||||
background=wal_color["color1"],
|
||||
hide_unused=True,
|
||||
visible_groups=["1", "2", "3", "4", "5"],
|
||||
),
|
||||
widget.TextBox(
|
||||
text="\uE0B0",
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
background=wal_color["color2"],
|
||||
foreground=wal_color["color1"],
|
||||
),
|
||||
# Layout Name
|
||||
widget.CurrentLayout(
|
||||
scale=0.6, foreground=wal_color["color0"], background=wal_color["color2"]
|
||||
),
|
||||
widget.TextBox(
|
||||
text="\uE0B0",
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
background=wal_color["color1"],
|
||||
foreground=wal_color["color2"],
|
||||
),
|
||||
# Window count
|
||||
widget.WindowCount(
|
||||
scale=0.6, foreground=wal_color["color0"], background=wal_color["color1"]
|
||||
),
|
||||
widget.TextBox(
|
||||
text="\uE0B0", fontsize=17, padding=0, foreground=wal_color["color1"]
|
||||
),
|
||||
# Window Name
|
||||
widget.Spacer(length=spacer_len),
|
||||
WindowName(foreground=wal_color["color2"]),
|
||||
#widget.WindowName(foreground=wal_color["color2"]),
|
||||
# System Tray
|
||||
widget.Systray(background=wal_color["color0"], padding=0),
|
||||
widget.Spacer(length=spacer_len, background=wal_color["color0"]),
|
||||
# Cpu
|
||||
widget.TextBox(
|
||||
text="\uE0B2",
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
foreground=wal_color["color2"],
|
||||
background=wal_color["color0"],
|
||||
),
|
||||
widget.CPU(
|
||||
format="CPU {freq_current}GHz {load_percent}%",
|
||||
update_interval=1.0,
|
||||
foreground=wal_color["color0"],
|
||||
background=wal_color["color2"],
|
||||
padding=5,
|
||||
),
|
||||
# Network
|
||||
widget.TextBox(
|
||||
text="\uE0B2",
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
foreground=wal_color["color1"],
|
||||
background=wal_color["color2"],
|
||||
),
|
||||
widget.Net(
|
||||
interface="enp3s0",
|
||||
format="{down} ↓↑ {up}",
|
||||
foreground=wal_color["color0"],
|
||||
background=wal_color["color1"],
|
||||
padding=5,
|
||||
),
|
||||
# Volume
|
||||
widget.TextBox(
|
||||
text="\uE0B2",
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
foreground=wal_color["color2"],
|
||||
background=wal_color["color1"],
|
||||
),
|
||||
widget.TextBox(
|
||||
text=" ",
|
||||
fontsize=14,
|
||||
foreground=wal_color["color0"],
|
||||
background=wal_color["color2"],
|
||||
),
|
||||
widget.PulseVolume(foreground=wal_color["color0"], background=wal_color["color2"]),
|
||||
widget.Spacer(length=spacer_len, background=wal_color["color2"]),
|
||||
# Clock
|
||||
widget.TextBox(
|
||||
text="\uE0B2",
|
||||
fontsize=17,
|
||||
padding=0,
|
||||
foreground=wal_color["color1"],
|
||||
background=wal_color["color2"],
|
||||
),
|
||||
widget.Clock(
|
||||
format="%Y-%m-%d %a %I:%M %p",
|
||||
background=wal_color["color1"],
|
||||
foreground=wal_color["color0"],
|
||||
),
|
||||
widget.Spacer(length=spacer_len, background=wal_color["color1"]),
|
||||
]
|
19
dot_config/qtile/themes/dracula.yml
Normal file
19
dot_config/qtile/themes/dracula.yml
Normal file
@ -0,0 +1,19 @@
|
||||
wallpaper: ""
|
||||
|
||||
special:
|
||||
background: "#282A36"
|
||||
foreground: "#F8F8F2"
|
||||
cursor: "#44475A"
|
||||
|
||||
colors:
|
||||
color0: "#282A36"
|
||||
color1: "#44475A"
|
||||
color2: "#F8F8F2"
|
||||
color3: "#6272A4"
|
||||
color4: "#8BE9FD"
|
||||
color5: "#50FA7B"
|
||||
color6: "#FFB86C"
|
||||
color7: "#FF79C6"
|
||||
color8: "#BD93F9"
|
||||
color9: "#FF5555"
|
||||
color10: "#F1FA8C"
|
3095
dot_config/retroarch/retroarch.cfg
Normal file
3095
dot_config/retroarch/retroarch.cfg
Normal file
File diff suppressed because it is too large
Load Diff
1
dot_config/rofi/executable_config
Normal file
1
dot_config/rofi/executable_config
Normal file
@ -0,0 +1 @@
|
||||
rofi.theme: /usr/share/rofi/themes/gruvbox-dark-soft.rasi
|
90
dot_config/scratch/dot_Scratch.org.~undo-tree~
Normal file
90
dot_config/scratch/dot_Scratch.org.~undo-tree~
Normal file
File diff suppressed because one or more lines are too long
3699
dot_config/scratch/executable_Scratch.org
Normal file
3699
dot_config/scratch/executable_Scratch.org
Normal file
File diff suppressed because it is too large
Load Diff
4
dot_config/scratch/readme.md
Normal file
4
dot_config/scratch/readme.md
Normal file
@ -0,0 +1,4 @@
|
||||
# Scatch
|
||||
> When Doom can't scratch the itch.
|
||||
|
||||
My personal config of [Emacs](https://www.gnu.org/software/emacs/). My config is written in a Literate style so checkout [Scratch.org](https://github.com/starr-dusT/scratch/Scratch.org).
|
21
dot_config/scratch/scripts/executable_update-screens
Normal file
21
dot_config/scratch/scripts/executable_update-screens
Normal file
@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
case $1 in
|
||||
"home")
|
||||
# Primary monitor on left
|
||||
xrandr --output DP-4 --primary \
|
||||
--mode 2560x1440 --rate 144 \
|
||||
--pos 0x0 --rotate normal \
|
||||
--output HDMI-0 \
|
||||
--mode 2560x1440 --rate 144 \
|
||||
--pos 2560x0 --rotate normal
|
||||
;;
|
||||
"apt")
|
||||
# Primary monitor on right
|
||||
xrandr --output HDMI-0 \
|
||||
--mode 2560x1440 --rate 144 \
|
||||
--pos 0x0 --rotate normal \
|
||||
--output DP-4 --primary \
|
||||
--mode 2560x1440 --rate 144 \
|
||||
--pos 2560x0 --rotate normal
|
||||
;;
|
||||
esac
|
293
dot_config/stumpwm/init.lisp
Normal file
293
dot_config/stumpwm/init.lisp
Normal file
@ -0,0 +1,293 @@
|
||||
;;; init.lisp --- StumpWM demo configuration
|
||||
|
||||
;; Copyright © 2020-2021 James McCabe
|
||||
|
||||
;; Author: James McCabe <james.mccab3(at)gmail.com>
|
||||
;; URL: https://github.com/jamesmccabe/stumpwm-demo-config
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This is a basic StumpWM configuration for my demo video.
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
(in-package :stumpwm)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Basic settings ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
;; load Stump contrib modules
|
||||
(mapc #'load-module
|
||||
'("swm-gaps"))
|
||||
|
||||
;; set prefix key
|
||||
(set-prefix-key (kbd "C-z"))
|
||||
|
||||
;; set desktop background color
|
||||
(setf (xlib:window-background (screen-root (current-screen))) #x47456d)
|
||||
;; set wallpaper
|
||||
(run-shell-command "feh --bg-fill ~/Pictures/wallpaper.png")
|
||||
|
||||
;; font settings
|
||||
;;(set-font (list
|
||||
;; (make-instance 'xft:font
|
||||
;; :family "DejaVu Sans Mono"
|
||||
;; :subfamily "Bold"
|
||||
;; :size 13)
|
||||
;; (make-instance 'xft:font
|
||||
;; :family "FontAwesome"
|
||||
;; :subfamily "Regular"
|
||||
;; :size 12)))
|
||||
|
||||
;; setup groups
|
||||
(grename "Base")
|
||||
(gnewbg "Extra")
|
||||
(gnewbg-float "Float")
|
||||
;(gnewbg ".scratchpad") ; hidden group / scratchpad
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Color settings ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; My own personal theme with random colors taken from
|
||||
;; various Doom Emacs themes and also Dracula theme
|
||||
;; You can set 10 colors in total (8 default plus 2 extra)
|
||||
(setf *colors*
|
||||
'("#ffffff" ; ^0 ; White
|
||||
"#131220" ; ^1 ; Dark Blue
|
||||
"#f72f33" ; ^2 ; Red
|
||||
"#689d6a" ; ^3 ; Light Green
|
||||
"#62bfef" ; ^4 ; Light Blue
|
||||
"#fabd2f" ; ^5 ; Yellow / Help map keys
|
||||
"#a644bf" ; ^6 ; Magenta
|
||||
"#cc4a0e" ; ^7 ; Brown
|
||||
"#56b6c2")) ; ^8 ; Cyan
|
||||
|
||||
(defparameter *mode-line-bg-color* (nth 1 *colors*))
|
||||
(defparameter *mode-line-fg-color* (nth 0 *colors*))
|
||||
(defparameter *msg-bg-color* (nth 1 *colors*))
|
||||
(defparameter *msg-fg-color* (nth 0 *colors*))
|
||||
(defparameter *msg-border-color* (nth 2 *colors*))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; General settings ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; mouse pointer
|
||||
(run-shell-command "xsetroot -cursor_name left_ptr")
|
||||
|
||||
;; messages display time
|
||||
(setf *timeout-wait* 7)
|
||||
|
||||
;; ignore window hints
|
||||
(setf *ignore-wm-inc-hints* t)
|
||||
|
||||
;; window name format (truncate name after 20 letters)
|
||||
(setf *window-format* "%m%n%s%20t")
|
||||
|
||||
;; input focus is transferred to the window you click on
|
||||
(setf *mouse-focus-policy* :click)
|
||||
|
||||
;; message and input window location
|
||||
(setf *message-window-gravity* :center)
|
||||
(setf *input-window-gravity* :center)
|
||||
|
||||
;; message/input bar colors
|
||||
(set-bg-color *msg-bg-color*)
|
||||
(set-fg-color *msg-fg-color*)
|
||||
(set-border-color *msg-border-color*)
|
||||
|
||||
;; message/input bar settings
|
||||
(set-msg-border-width 3)
|
||||
(setf *message-window-padding* 6)
|
||||
|
||||
;;; gaps settings
|
||||
;; inner gaps run along all the 4 borders of a frame
|
||||
(setf swm-gaps:*inner-gaps-size* 10)
|
||||
;; outer gaps add more padding to the outermost borders
|
||||
;; (touching the screen border)
|
||||
(setf swm-gaps:*outer-gaps-size* 10)
|
||||
|
||||
;; startup message
|
||||
(setf *startup-message* "^5 Stump Window Manager ^0has initialized!
|
||||
Press ^2Ctrl+z ? ^0for Help. ^5Never Stop Hacking!^n
|
||||
Powered with ^02 Common Lisp ")
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Swank settings ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(require :swank)
|
||||
(swank-loader:init)
|
||||
|
||||
(defparameter *port-number* 4004
|
||||
"My default port number for Swank")
|
||||
|
||||
(defvar *swank-server-p* nil
|
||||
"Keep track of swank server, turned off by default on startup")
|
||||
|
||||
(defcommand start-swank () ()
|
||||
"Start Swank if it is not already running"
|
||||
(if *swank-server-p*
|
||||
(message "Swank server is already active on Port^5 ~a^n" *port-number*)
|
||||
(progn
|
||||
(swank:create-server :port *port-number*
|
||||
:style swank:*communication-style*
|
||||
:dont-close t)
|
||||
(setf *swank-server-p* t)
|
||||
(message "Swank server is now active on Port^5 ~a^n.
|
||||
Use^4 M-x slime-connect^n in Emacs.
|
||||
Type^2 (in-package :stumpwm)^n in Slime REPL." *port-number*))))
|
||||
|
||||
(defcommand stop-swank () ()
|
||||
"Stop Swank"
|
||||
(swank:stop-server *port-number*)
|
||||
(setf *swank-server-p* nil)
|
||||
(message "Stopping Swank Server! Closing Port^5 ~a^n." *port-number*))
|
||||
|
||||
(defcommand toggle-swank () ()
|
||||
(if *swank-server-p*
|
||||
(run-commands "stop-swank")
|
||||
(run-commands "start-swank")))
|
||||
|
||||
(define-key *top-map* (kbd "s-s") "toggle-swank")
|
||||
|
||||
;; modeline status
|
||||
(defun get-swank-status ()
|
||||
(if *swank-server-p*
|
||||
(setf *swank-ml-status* (format nil "Swank ^3^f1^f0^n Port:^5 ~a^n " *port-number*))
|
||||
(setf *swank-ml-status* "")))
|
||||
|
||||
(defun ml-fmt-swank-status (ml)
|
||||
(declare (ignore ml))
|
||||
(get-swank-status))
|
||||
|
||||
(add-screen-mode-line-formatter #\S #'ml-fmt-swank-status)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Keybindings ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; navigation
|
||||
;; cycle forward and back through groups
|
||||
(define-key *root-map* (kbd ".") "gnext")
|
||||
(define-key *root-map* (kbd ",") "gprev")
|
||||
(define-key *top-map* (kbd "s-Up") "gnext")
|
||||
(define-key *top-map* (kbd "s-Down") "gprev")
|
||||
|
||||
;; cycle through windows using Super key + arrows
|
||||
(define-key *top-map* (kbd "s-Right") "pull-hidden-next")
|
||||
(define-key *top-map* (kbd "s-Left") "pull-hidden-previous")
|
||||
|
||||
;; send window to next/previous groups
|
||||
(define-key *root-map* (kbd "s-Right") "gnext-with-window")
|
||||
(define-key *root-map* (kbd "s-Left") "gprev-with-window")
|
||||
|
||||
(define-key *top-map* (kbd "s-SPC") "fnext")
|
||||
|
||||
;;others
|
||||
;; run or raise firefox
|
||||
(defcommand firefox () ()
|
||||
"Start Forefox or switch to it, if it is already running"
|
||||
(run-or-raise "firefox" '(:class "Firefox")))
|
||||
|
||||
(define-key *root-map* (kbd "b") "firefox")
|
||||
|
||||
;; open terminal
|
||||
(define-key *root-map* (kbd "Return") "exec alacritty")
|
||||
(define-key *root-map* (kbd "c") "exec alacritty")
|
||||
(define-key *root-map* (kbd "C-c") "exec alacritty")
|
||||
|
||||
;; toggle useless gaps keybinding (Super + u)
|
||||
(define-key *top-map* (kbd "s-u") "toggle-gaps")
|
||||
|
||||
;; hard restart keybinding (Super + r)
|
||||
(define-key *top-map* (kbd "s-r") "restart-hard")
|
||||
|
||||
;; allows me to continously have control of Prefix key
|
||||
;; by unmapping it from 'pull-hidden-other
|
||||
(undefine-key *tile-group-root-map* (kbd "C-z"))
|
||||
(define-key *root-map* (kbd "C-z") "abort")
|
||||
|
||||
;; take screenshot
|
||||
(defcommand stump-screenshot () ()
|
||||
(run-shell-command "exec scrot")
|
||||
(sleep 0.5)
|
||||
(message "Screenshot taken!"))
|
||||
|
||||
(define-key *top-map* (kbd "Print") "stump-screenshot")
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Modeline settings ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(setf *mode-line-timeout* 1)
|
||||
(setf *mode-line-border-width* 0)
|
||||
|
||||
(setf *mode-line-background-color* *mode-line-bg-color*)
|
||||
(setf *mode-line-border-color* *mode-line-bg-color*)
|
||||
(setf *mode-line-foreground-color* *mode-line-fg-color*)
|
||||
|
||||
(setf *time-modeline-string* "^2 %H:%M")
|
||||
|
||||
;(defparameter *battery-percent* "")
|
||||
;
|
||||
;(defun get-battery-status ()
|
||||
; (let* ((batgetcap (run-shell-command "cat /sys/class/power_supply/BAT0/capacity | tr -d '\\r\\n'" t)))
|
||||
; (setf *battery-percent* (format nil "^4^f1^f0^n ~a% " batgetcap))))
|
||||
;
|
||||
;(defun battery-percentage (ml)
|
||||
; (declare (ignore ml))
|
||||
; *battery-percent*)
|
||||
;
|
||||
;(run-with-timer 0 10 #'get-battery-status)
|
||||
;(add-screen-mode-line-formatter #\B #'battery-percentage)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(setf *screen-mode-line-format*
|
||||
(list "^5[%g]^n " ; groups
|
||||
"%W" ; windows
|
||||
"^>" ; right align
|
||||
"%S" ; swank status
|
||||
; ;"%B" ; battery percentage
|
||||
"%d")) ; time/date
|
||||
|
||||
;; turn on the mode line
|
||||
(if (not (head-mode-line (current-head)))
|
||||
(toggle-mode-line (current-screen) (current-head)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Overrides ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; This file when loaded overrides some Stump behavior
|
||||
;; which are personal preferences I prefer to the defaults
|
||||
(load "~/.config/stumpwm/overrides.lisp")
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;; Debugging ;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;(redirect-all-output (data-dir-file "debug-output" "txt"))
|
||||
;(setf stumpwm:*debug-level* 10)
|
||||
|
||||
;(load "~/.stumpwm.d/test.lisp")
|
||||
|
||||
;;; init.lisp ends here
|
80
dot_config/stumpwm/overrides.lisp
Normal file
80
dot_config/stumpwm/overrides.lisp
Normal file
@ -0,0 +1,80 @@
|
||||
;;; overrides.lisp --- preferred functionality for StumpWM
|
||||
|
||||
;; Copyright © 2020-2021 James McCabe
|
||||
|
||||
;; Author: James McCabe <james.mccab3(at)gmail.com>
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
;; it under the terms of the GNU General Public License as published by
|
||||
;; the Free Software Foundation, either version 3 of the License, or
|
||||
;; (at your option) any later version.
|
||||
;;
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file changes some default behavior of StumpWM.
|
||||
|
||||
;;; Code:
|
||||
|
||||
;;; Colors
|
||||
|
||||
;; overrides StumpWM default behavior of dimming normal colors
|
||||
(defun update-color-map (screen)
|
||||
"Read *colors* and cache their pixel colors for use when rendering colored text."
|
||||
(labels ((map-colors (amt)
|
||||
(loop for c in *colors*
|
||||
as color = (lookup-color screen c)
|
||||
do (adjust-color color amt)
|
||||
collect (alloc-color screen color))))
|
||||
(setf (screen-color-map-normal screen) (apply #'vector (map-colors 0.00)))))
|
||||
|
||||
(update-color-map (current-screen))
|
||||
|
||||
;; fix colors in quit message
|
||||
(defcommand quit-confirm () ()
|
||||
"Prompt the user to confirm quitting StumpWM."
|
||||
(if (y-or-n-p (format nil "~@{~a~^~%~}"
|
||||
"You are about to quit the window manager to TTY."
|
||||
"Really ^2quit^n ^4StumpWM^n?"
|
||||
"^5Confirm?^n "))
|
||||
(quit)
|
||||
(xlib:unmap-window (screen-message-window (current-screen)))))
|
||||
|
||||
;;; Splits
|
||||
|
||||
;; StumpWM by default treats horizontal and vertical splits as Emacs does.
|
||||
;; Horizontal splits the current frame into 2 side-by-side frames and Vertical
|
||||
;; splits the current frame into 2 frames, one on top of the other.
|
||||
;; I reverse this behavior in my configuration.
|
||||
|
||||
(defcommand (vsplit tile-group) (&optional (ratio "1/2")) (:string)
|
||||
"Split the current frame into 2 side-by-side frames."
|
||||
(split-frame-in-dir (current-group) :column (read-from-string ratio)))
|
||||
|
||||
(defcommand (hsplit tile-group) (&optional (ratio "1/2")) (:string)
|
||||
"Split the current frame into 2 frames, one on top of the other."
|
||||
(split-frame-in-dir (current-group) :row (read-from-string ratio)))
|
||||
|
||||
(undefine-key *tile-group-root-map* (kbd "S"))
|
||||
(undefine-key *tile-group-root-map* (kbd "s"))
|
||||
(define-key *root-map* (kbd "S") "vsplit")
|
||||
(define-key *root-map* (kbd "s") "hsplit")
|
||||
|
||||
(defcommand (vsplit-equally tile-group) (amt)
|
||||
((:number "Enter the number of frames: "))
|
||||
"Split current frame in n columns of equal size."
|
||||
(split-frame-eql-parts (current-group) :column amt))
|
||||
|
||||
(defcommand (hsplit-equally tile-group) (amt)
|
||||
((:number "Enter the number of frames: "))
|
||||
"Split current frame in n rows of equal size."
|
||||
(split-frame-eql-parts (current-group) :row amt))
|
||||
|
||||
;;; overrides.lisp ends here
|
87
dot_config/vifm/colors/Default.vifm
Normal file
87
dot_config/vifm/colors/Default.vifm
Normal file
@ -0,0 +1,87 @@
|
||||
" You can edit this file by hand.
|
||||
" The " character at the beginning of a line comments out the line.
|
||||
" Blank lines are ignored.
|
||||
|
||||
" The Default color scheme is used for any directory that does not have
|
||||
" a specified scheme and for parts of user interface like menus. A
|
||||
" color scheme set for a base directory will also
|
||||
" be used for the sub directories.
|
||||
|
||||
" The standard ncurses colors are:
|
||||
" Default = -1 = None, can be used for transparency or default color
|
||||
" Black = 0
|
||||
" Red = 1
|
||||
" Green = 2
|
||||
" Yellow = 3
|
||||
" Blue = 4
|
||||
" Magenta = 5
|
||||
" Cyan = 6
|
||||
" White = 7
|
||||
|
||||
" Light versions of colors are also available (they set bold
|
||||
" attribute in terminals with less than 16 colors):
|
||||
" LightBlack
|
||||
" LightRed
|
||||
" LightGreen
|
||||
" LightYellow
|
||||
" LightBlue
|
||||
" LightMagenta
|
||||
" LightCyan
|
||||
" LightWhite
|
||||
|
||||
" Available attributes (some of them can be combined):
|
||||
" bold
|
||||
" underline
|
||||
" reverse or inverse
|
||||
" standout
|
||||
" italic (on unsupported systems becomes reverse)
|
||||
" combine
|
||||
" none
|
||||
|
||||
" Vifm supports 256 colors you can use color numbers 0-255
|
||||
" (requires properly set up terminal: set your TERM environment variable
|
||||
" (directly or using resources) to some color terminal name (e.g.
|
||||
" xterm-256color) from /usr/lib/terminfo/; you can check current number
|
||||
" of colors in your terminal with tput colors command)
|
||||
|
||||
" highlight group cterm=attrs ctermfg=foreground_color ctermbg=background_color
|
||||
|
||||
highlight clear
|
||||
|
||||
highlight Win cterm=none ctermfg=white ctermbg=black
|
||||
highlight Directory cterm=bold ctermfg=cyan ctermbg=default
|
||||
highlight Link cterm=bold ctermfg=yellow ctermbg=default
|
||||
highlight BrokenLink cterm=bold ctermfg=red ctermbg=default
|
||||
highlight HardLink cterm=none ctermfg=yellow ctermbg=default
|
||||
highlight Socket cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight Device cterm=bold ctermfg=red ctermbg=default
|
||||
highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
|
||||
highlight Executable cterm=bold ctermfg=green ctermbg=default
|
||||
highlight Selected cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight CurrLine cterm=bold,reverse ctermfg=default ctermbg=default
|
||||
highlight TopLine cterm=none ctermfg=black ctermbg=white
|
||||
highlight TopLineSel cterm=bold ctermfg=black ctermbg=default
|
||||
highlight StatusLine cterm=bold ctermfg=black ctermbg=white
|
||||
highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
|
||||
highlight CmdLine cterm=none ctermfg=white ctermbg=black
|
||||
highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
|
||||
highlight Border cterm=none ctermfg=black ctermbg=white
|
||||
highlight OtherLine ctermfg=default ctermbg=default
|
||||
highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
|
||||
highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
|
||||
highlight CmpMismatch cterm=bold ctermfg=white ctermbg=red
|
||||
highlight AuxWin ctermfg=default ctermbg=default
|
||||
highlight TabLine cterm=none ctermfg=white ctermbg=black
|
||||
highlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default
|
||||
highlight User1 ctermfg=default ctermbg=default
|
||||
highlight User2 ctermfg=default ctermbg=default
|
||||
highlight User3 ctermfg=default ctermbg=default
|
||||
highlight User4 ctermfg=default ctermbg=default
|
||||
highlight User5 ctermfg=default ctermbg=default
|
||||
highlight User6 ctermfg=default ctermbg=default
|
||||
highlight User7 ctermfg=default ctermbg=default
|
||||
highlight User8 ctermfg=default ctermbg=default
|
||||
highlight User9 ctermfg=default ctermbg=default
|
||||
highlight OtherWin ctermfg=default ctermbg=default
|
||||
highlight LineNr ctermfg=default ctermbg=default
|
||||
highlight OddLine ctermfg=default ctermbg=default
|
6
dot_config/vifm/scripts/README
Normal file
6
dot_config/vifm/scripts/README
Normal file
@ -0,0 +1,6 @@
|
||||
This directory is dedicated for user-supplied scripts/executables.
|
||||
vifm modifies its PATH environment variable to let user run those
|
||||
scripts without specifying full path. All subdirectories are added
|
||||
as well. File in a subdirectory overrules file with the same name
|
||||
in parent directories. Restart might be needed to recognize files
|
||||
in newly created or renamed subdirectories.
|
6565
dot_config/vifm/vifm-help.txt
Normal file
6565
dot_config/vifm/vifm-help.txt
Normal file
File diff suppressed because it is too large
Load Diff
1
dot_config/vifm/vifminfo.json
Normal file
1
dot_config/vifm/vifminfo.json
Normal file
File diff suppressed because one or more lines are too long
499
dot_config/vifm/vifmrc
Normal file
499
dot_config/vifm/vifmrc
Normal file
@ -0,0 +1,499 @@
|
||||
" vim: filetype=vifm :
|
||||
" Sample configuration file for vifm (last updated: 31 August, 2021)
|
||||
" You can edit this file by hand.
|
||||
" The " character at the beginning of a line comments out the line.
|
||||
" Blank lines are ignored.
|
||||
" The basic format for each item is shown with an example.
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" Command used to edit files in various contexts. The default is vim.
|
||||
" If you would like to use another vi clone such as Elvis or Vile
|
||||
" you will need to change this setting.
|
||||
|
||||
set vicmd=vim
|
||||
" set vicmd=elvis\ -G\ termcap
|
||||
" set vicmd=vile
|
||||
|
||||
" This makes vifm perform file operations on its own instead of relying on
|
||||
" standard utilities like `cp`. While using `cp` and alike is a more universal
|
||||
" solution, it's also much slower when processing large amounts of files and
|
||||
" doesn't support progress measuring.
|
||||
|
||||
set syscalls
|
||||
|
||||
" Trash Directory
|
||||
" The default is to move files that are deleted with dd or :d to
|
||||
" the trash directory. If you change this you will not be able to move
|
||||
" files by deleting them and then using p to put the file in the new location.
|
||||
" I recommend not changing this until you are familiar with vifm.
|
||||
" This probably shouldn't be an option.
|
||||
|
||||
set trash
|
||||
|
||||
" This is how many directories to store in the directory history.
|
||||
|
||||
set history=100
|
||||
|
||||
" Automatically resolve symbolic links on l or Enter.
|
||||
|
||||
set nofollowlinks
|
||||
|
||||
" Natural sort of (version) numbers within text.
|
||||
|
||||
set sortnumbers
|
||||
|
||||
" Maximum number of changes that can be undone.
|
||||
|
||||
set undolevels=100
|
||||
|
||||
" Use Vim's format of help file (has highlighting and "hyperlinks").
|
||||
" If you would rather use a plain text help file set novimhelp.
|
||||
|
||||
set vimhelp
|
||||
|
||||
" If you would like to run an executable file when you
|
||||
" press Enter, l or Right Arrow, set this.
|
||||
|
||||
set norunexec
|
||||
|
||||
" List of color schemes to try (picks the first one supported by the terminal)
|
||||
|
||||
colorscheme Default-256 Default
|
||||
|
||||
" Format for displaying time in file list. For example:
|
||||
" TIME_STAMP_FORMAT=%m/%d-%H:%M
|
||||
" See man date or man strftime for details.
|
||||
|
||||
set timefmt=%m/%d\ %H:%M
|
||||
|
||||
" Show list of matches on tab completion in command-line mode
|
||||
|
||||
set wildmenu
|
||||
|
||||
" Display completions in a form of popup with descriptions of the matches
|
||||
|
||||
set wildstyle=popup
|
||||
|
||||
" Display suggestions in normal, visual and view modes for keys, marks and
|
||||
" registers (at most 5 files). In other view, when available.
|
||||
|
||||
set suggestoptions=normal,visual,view,otherpane,keys,marks,registers
|
||||
|
||||
" Ignore case in search patterns unless it contains at least one uppercase
|
||||
" letter
|
||||
|
||||
set ignorecase
|
||||
set smartcase
|
||||
|
||||
" Don't highlight search results automatically
|
||||
|
||||
set nohlsearch
|
||||
|
||||
" Use increment searching (search while typing)
|
||||
set incsearch
|
||||
|
||||
" Try to leave some space from cursor to upper/lower border in lists
|
||||
|
||||
set scrolloff=4
|
||||
|
||||
" Don't do too many requests to slow file systems
|
||||
|
||||
if !has('win')
|
||||
set slowfs=curlftpfs
|
||||
endif
|
||||
|
||||
" Set custom status line look
|
||||
|
||||
set statusline=" Hint: %z%= %A %10u:%-7g %15s %20d "
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" :mark mark /full/directory/path [filename]
|
||||
|
||||
mark b ~/bin/
|
||||
mark h ~/
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" :com[mand][!] command_name action
|
||||
" The following macros can be used in a command
|
||||
" %a is replaced with the user arguments.
|
||||
" %c the current file under the cursor.
|
||||
" %C the current file under the cursor in the other directory.
|
||||
" %f the current selected file, or files.
|
||||
" %F the current selected file, or files in the other directory.
|
||||
" %b same as %f %F.
|
||||
" %d the current directory name.
|
||||
" %D the other window directory name.
|
||||
" %m run the command in a menu window
|
||||
|
||||
command! df df -h %m 2> /dev/null
|
||||
command! diff vim -d %f %F
|
||||
command! zip zip -r %c.zip %f
|
||||
command! run !! ./%f
|
||||
command! make !!make %a
|
||||
command! mkcd :mkdir %a | cd %a
|
||||
command! vgrep vim "+grep %a"
|
||||
command! reload :write | restart full
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" The file type is for the default programs to be used with
|
||||
" a file extension.
|
||||
" :filetype pattern1,pattern2 defaultprogram,program2
|
||||
" :fileviewer pattern1,pattern2 consoleviewer
|
||||
" The other programs for the file type can be accessed with the :file command
|
||||
" The command macros like %f, %F, %d, %D may be used in the commands.
|
||||
" The %a macro is ignored. To use a % you must put %%.
|
||||
|
||||
" For automated FUSE mounts, you must register an extension with :file[x]type
|
||||
" in one of following formats:
|
||||
"
|
||||
" :filetype extensions FUSE_MOUNT|some_mount_command using %SOURCE_FILE and %DESTINATION_DIR variables
|
||||
" %SOURCE_FILE and %DESTINATION_DIR are filled in by vifm at runtime.
|
||||
" A sample line might look like this:
|
||||
" :filetype *.zip,*.jar,*.war,*.ear FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR
|
||||
"
|
||||
" :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables
|
||||
" %PARAM and %DESTINATION_DIR are filled in by vifm at runtime.
|
||||
" A sample line might look like this:
|
||||
" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR
|
||||
" %PARAM value is filled from the first line of file (whole line).
|
||||
" Example first line for SshMount filetype: root@127.0.0.1:/
|
||||
"
|
||||
" You can also add %CLEAR if you want to clear screen before running FUSE
|
||||
" program.
|
||||
|
||||
" Pdf
|
||||
filextype {*.pdf},<application/pdf> zathura %c %i &, apvlv %c, xpdf %c
|
||||
fileviewer {*.pdf},<application/pdf> pdftotext -nopgbrk %c -
|
||||
|
||||
" PostScript
|
||||
filextype {*.ps,*.eps,*.ps.gz},<application/postscript>
|
||||
\ {View in zathura}
|
||||
\ zathura %f,
|
||||
\ {View in gv}
|
||||
\ gv %c %i &,
|
||||
|
||||
" Djvu
|
||||
filextype {*.djvu},<image/vnd.djvu>
|
||||
\ {View in zathura}
|
||||
\ zathura %f,
|
||||
\ {View in apvlv}
|
||||
\ apvlv %f,
|
||||
|
||||
" Audio
|
||||
filetype {*.wav,*.mp3,*.flac,*.m4a,*.wma,*.ape,*.ac3,*.og[agx],*.spx,*.opus},
|
||||
\<audio/*>
|
||||
\ {Play using ffplay}
|
||||
\ ffplay -nodisp -autoexit %c,
|
||||
\ {Play using MPlayer}
|
||||
\ mplayer %f,
|
||||
fileviewer {*.mp3},<audio/mpeg> mp3info
|
||||
fileviewer {*.flac},<audio/flac> soxi
|
||||
|
||||
" Video
|
||||
filextype {*.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
|
||||
\*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
|
||||
\*.as[fx]},
|
||||
\<video/*>
|
||||
\ {View using ffplay}
|
||||
\ ffplay -fs -autoexit %f,
|
||||
\ {View using Dragon}
|
||||
\ dragon %f:p,
|
||||
\ {View using mplayer}
|
||||
\ mplayer %f,
|
||||
fileviewer {*.avi,*.mp4,*.wmv,*.dat,*.3gp,*.ogv,*.mkv,*.mpg,*.mpeg,*.vob,
|
||||
\*.fl[icv],*.m2v,*.mov,*.webm,*.ts,*.mts,*.m4v,*.r[am],*.qt,*.divx,
|
||||
\*.as[fx]},
|
||||
\<video/*>
|
||||
\ ffprobe -pretty %c 2>&1
|
||||
|
||||
" Web
|
||||
filextype {*.html,*.htm},<text/html>
|
||||
\ {Open with dwb}
|
||||
\ dwb %f %i &,
|
||||
\ {Open with firefox}
|
||||
\ firefox %f &,
|
||||
\ {Open with uzbl}
|
||||
\ uzbl-browser %f %i &,
|
||||
filetype {*.html,*.htm},<text/html> links, lynx
|
||||
|
||||
" Object
|
||||
filetype {*.o},<application/x-object> nm %f | less
|
||||
|
||||
" Man page
|
||||
filetype {*.[1-8]},<text/troff> man ./%c
|
||||
fileviewer {*.[1-8]},<text/troff> man ./%c | col -b
|
||||
|
||||
" Images
|
||||
filextype {*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm},<image/*>
|
||||
\ {View in sxiv}
|
||||
\ sxiv %f,
|
||||
\ {View in gpicview}
|
||||
\ gpicview %c,
|
||||
\ {View in shotwell}
|
||||
\ shotwell,
|
||||
fileviewer {*.bmp,*.jpg,*.jpeg,*.png,*.gif,*.xpm},<image/*>
|
||||
\ identify %f
|
||||
|
||||
" OpenRaster
|
||||
filextype *.ora
|
||||
\ {Edit in MyPaint}
|
||||
\ mypaint %f,
|
||||
|
||||
" Mindmap
|
||||
filextype *.vym
|
||||
\ {Open with VYM}
|
||||
\ vym %f &,
|
||||
|
||||
" MD5
|
||||
filetype *.md5
|
||||
\ {Check MD5 hash sum}
|
||||
\ md5sum -c %f %S,
|
||||
|
||||
" SHA1
|
||||
filetype *.sha1
|
||||
\ {Check SHA1 hash sum}
|
||||
\ sha1sum -c %f %S,
|
||||
|
||||
" SHA256
|
||||
filetype *.sha256
|
||||
\ {Check SHA256 hash sum}
|
||||
\ sha256sum -c %f %S,
|
||||
|
||||
" SHA512
|
||||
filetype *.sha512
|
||||
\ {Check SHA512 hash sum}
|
||||
\ sha512sum -c %f %S,
|
||||
|
||||
" GPG signature
|
||||
filetype {*.asc},<application/pgp-signature>
|
||||
\ {Check signature}
|
||||
\ !!gpg --verify %c,
|
||||
|
||||
" Torrent
|
||||
filetype {*.torrent},<application/x-bittorrent> ktorrent %f &
|
||||
fileviewer {*.torrent},<application/x-bittorrent> dumptorrent -v %c
|
||||
|
||||
" FuseZipMount
|
||||
filetype {*.zip,*.jar,*.war,*.ear,*.oxt,*.apkg},
|
||||
\<application/zip,application/java-archive>
|
||||
\ {Mount with fuse-zip}
|
||||
\ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,
|
||||
\ {View contents}
|
||||
\ zip -sf %c | less,
|
||||
\ {Extract here}
|
||||
\ tar -xf %c,
|
||||
fileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c
|
||||
|
||||
" ArchiveMount
|
||||
filetype {*.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz,*.tar.zst,*.tzst},
|
||||
\<application/x-tar>
|
||||
\ {Mount with archivemount}
|
||||
\ FUSE_MOUNT|archivemount %SOURCE_FILE %DESTINATION_DIR,
|
||||
fileviewer *.tgz,*.tar.gz tar -tzf %c
|
||||
fileviewer *.tar.bz2,*.tbz2 tar -tjf %c
|
||||
fileviewer *.tar.xz,*.txz tar -tJf %c
|
||||
fileviewer *.tar.zst,*.tzst tar -t --zstd -f %c
|
||||
fileviewer {*.tar},<application/x-tar> tar -tf %c
|
||||
|
||||
" Rar2FsMount and rar archives
|
||||
filetype {*.rar},<application/x-rar>
|
||||
\ {Mount with rar2fs}
|
||||
\ FUSE_MOUNT|rar2fs %SOURCE_FILE %DESTINATION_DIR,
|
||||
fileviewer {*.rar},<application/x-rar> unrar v %c
|
||||
|
||||
" IsoMount
|
||||
filetype {*.iso},<application/x-iso9660-image>
|
||||
\ {Mount with fuseiso}
|
||||
\ FUSE_MOUNT|fuseiso %SOURCE_FILE %DESTINATION_DIR,
|
||||
|
||||
" SshMount
|
||||
filetype *.ssh
|
||||
\ {Mount with sshfs}
|
||||
\ FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR %FOREGROUND,
|
||||
|
||||
" FtpMount
|
||||
filetype *.ftp
|
||||
\ {Mount with curlftpfs}
|
||||
\ FUSE_MOUNT2|curlftpfs -o ftp_port=-,,disable_eprt %PARAM %DESTINATION_DIR %FOREGROUND,
|
||||
|
||||
" Fuse7z and 7z archives
|
||||
filetype {*.7z},<application/x-7z-compressed>
|
||||
\ {Mount with fuse-7z}
|
||||
\ FUSE_MOUNT|fuse-7z %SOURCE_FILE %DESTINATION_DIR,
|
||||
fileviewer {*.7z},<application/x-7z-compressed> 7z l %c
|
||||
|
||||
" Office files
|
||||
filextype {*.odt,*.doc,*.docx,*.xls,*.xlsx,*.odp,*.pptx,*.ppt},
|
||||
\<application/vnd.openxmlformats-officedocument.*,
|
||||
\application/msword,
|
||||
\application/vnd.ms-excel>
|
||||
\ libreoffice %f &
|
||||
fileviewer {*.doc},<application/msword> catdoc %c
|
||||
fileviewer {*.docx},
|
||||
\<application/
|
||||
\vnd.openxmlformats-officedocument.wordprocessingml.document>
|
||||
\ docx2txt.pl %f -
|
||||
|
||||
" TuDu files
|
||||
filetype *.tudu tudu -f %c
|
||||
|
||||
" Qt projects
|
||||
filextype *.pro qtcreator %f &
|
||||
|
||||
" Directories
|
||||
filextype */
|
||||
\ {View in thunar}
|
||||
\ Thunar %f &,
|
||||
|
||||
" Syntax highlighting in preview
|
||||
"
|
||||
" Explicitly set highlight type for some extensions
|
||||
"
|
||||
" 256-color terminal
|
||||
" fileviewer *.[ch],*.[ch]pp highlight -O xterm256 -s dante --syntax c %c
|
||||
" fileviewer Makefile,Makefile.* highlight -O xterm256 -s dante --syntax make %c
|
||||
"
|
||||
" 16-color terminal
|
||||
" fileviewer *.c,*.h highlight -O ansi -s dante %c
|
||||
"
|
||||
" Or leave it for automatic detection
|
||||
"
|
||||
" fileviewer *[^/] pygmentize -O style=monokai -f console256 -g
|
||||
|
||||
" Displaying pictures in terminal
|
||||
"
|
||||
" fileviewer *.jpg,*.png shellpic %c
|
||||
|
||||
" Open all other files with default system programs (you can also remove all
|
||||
" :file[x]type commands above to ensure they don't interfere with system-wide
|
||||
" settings). By default all unknown files are opened with 'vi[x]cmd'
|
||||
" uncommenting one of lines below will result in ignoring 'vi[x]cmd' option
|
||||
" for unknown file types.
|
||||
" For *nix:
|
||||
" filetype * xdg-open
|
||||
" For OS X:
|
||||
" filetype * open
|
||||
" For Windows:
|
||||
" filetype * start, explorer %"f &
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" What should be saved automatically between vifm sessions. Drop "savedirs"
|
||||
" value if you don't want vifm to remember last visited directories for you.
|
||||
set vifminfo=dhistory,savedirs,chistory,state,tui,shistory,
|
||||
\phistory,fhistory,dirstack,registers,bookmarks,bmarks
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" Examples of configuring both panels
|
||||
|
||||
" Customize view columns a bit (enable ellipsis for truncated file names)
|
||||
"
|
||||
" set viewcolumns=-{name}..,6{}.
|
||||
|
||||
" Filter-out build and temporary files
|
||||
"
|
||||
" filter! {*.lo,*.o,*.d,*.class,*.pyc,*.pyo,.*~}
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" Sample mappings
|
||||
|
||||
" Start shell in current directory
|
||||
nnoremap s :shell<cr>
|
||||
|
||||
" Display sorting dialog
|
||||
nnoremap S :sort<cr>
|
||||
|
||||
" Toggle visibility of preview window
|
||||
nnoremap w :view<cr>
|
||||
vnoremap w :view<cr>gv
|
||||
|
||||
" Open file in existing instance of gvim
|
||||
nnoremap o :!gvim --remote-tab-silent %f<cr>
|
||||
" Open file in new instance of gvim
|
||||
nnoremap O :!gvim %f<cr>
|
||||
|
||||
" Open file in the background using its default program
|
||||
nnoremap gb :file &<cr>l
|
||||
|
||||
" Interaction with system clipboard
|
||||
if has('win')
|
||||
" Yank current directory path to Windows clipboard with forward slashes
|
||||
nnoremap yp :!echo %"d:gs!\!/! %i | clip<cr>
|
||||
" Yank path to current file to Windows clipboard with forward slashes
|
||||
nnoremap yf :!echo %"c:gs!\!/! %i | clip<cr>
|
||||
elseif executable('xclip')
|
||||
" Yank current directory path into the clipboard
|
||||
nnoremap yd :!echo %d | xclip %i<cr>
|
||||
" Yank current file path into the clipboard
|
||||
nnoremap yf :!echo %c:p | xclip %i<cr>
|
||||
elseif executable('xsel')
|
||||
" Yank current directory path into primary and selection clipboards
|
||||
nnoremap yd :!echo -n %d | xsel --input --primary %i &&
|
||||
\ echo -n %d | xsel --clipboard --input %i<cr>
|
||||
" Yank current file path into into primary and selection clipboards
|
||||
nnoremap yf :!echo -n %c:p | xsel --input --primary %i &&
|
||||
\ echo -n %c:p | xsel --clipboard --input %i<cr>
|
||||
endif
|
||||
|
||||
" Mappings for faster renaming
|
||||
nnoremap I cw<c-a>
|
||||
nnoremap cc cw<c-u>
|
||||
nnoremap A cw
|
||||
|
||||
" Open console in current directory
|
||||
nnoremap ,t :!xterm &<cr>
|
||||
|
||||
" Open editor to edit vifmrc and apply settings after returning to vifm
|
||||
nnoremap ,c :write | edit $MYVIFMRC | restart full<cr>
|
||||
" Open gvim to edit vifmrc
|
||||
nnoremap ,C :!gvim --remote-tab-silent $MYVIFMRC &<cr>
|
||||
|
||||
" Toggle wrap setting on ,w key
|
||||
nnoremap ,w :set wrap!<cr>
|
||||
|
||||
" Example of standard two-panel file managers mappings
|
||||
nnoremap <f3> :!less %f<cr>
|
||||
nnoremap <f4> :edit<cr>
|
||||
nnoremap <f5> :copy<cr>
|
||||
nnoremap <f6> :move<cr>
|
||||
nnoremap <f7> :mkdir<space>
|
||||
nnoremap <f8> :delete<cr>
|
||||
|
||||
" Midnight commander alike mappings
|
||||
" Open current directory in the other pane
|
||||
nnoremap <a-i> :sync<cr>
|
||||
" Open directory under cursor in the other pane
|
||||
nnoremap <a-o> :sync %c<cr>
|
||||
" Swap panes
|
||||
nnoremap <c-u> <c-w>x
|
||||
|
||||
" ------------------------------------------------------------------------------
|
||||
|
||||
" Various customization examples
|
||||
|
||||
" Use ag (the silver searcher) instead of grep
|
||||
"
|
||||
" set grepprg='ag --line-numbers %i %a %s'
|
||||
|
||||
" Add additional place to look for executables
|
||||
"
|
||||
" let $PATH = $HOME.'/bin/fuse:'.$PATH
|
||||
|
||||
" Block particular shortcut
|
||||
"
|
||||
" nnoremap <left> <nop>
|
||||
|
||||
" Export IPC name of current instance as environment variable and use it to
|
||||
" communicate with the instance later.
|
||||
"
|
||||
" It can be used in some shell script that gets run from inside vifm, for
|
||||
" example, like this:
|
||||
" vifm --server-name "$VIFM_SERVER_NAME" --remote +"cd '$PWD'"
|
||||
"
|
||||
" let $VIFM_SERVER_NAME = v:servername
|
4
dot_config/xmobar/executable_cpu
Normal file
4
dot_config/xmobar/executable_cpu
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
|
||||
CPU_USAGE=$(top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' -v prefix="$prefix" '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%s%.1f%%\n", prefix, 100 - v }')
|
||||
echo "$CPU_USAGE"
|
10
dot_config/xmobar/executable_gamemode
Normal file
10
dot_config/xmobar/executable_gamemode
Normal file
@ -0,0 +1,10 @@
|
||||
#! /bin/bash
|
||||
|
||||
status=$(gamemoded -s)
|
||||
if [ "$status" == "gamemode is inactive" ]; then
|
||||
color="#B8BB26"
|
||||
else
|
||||
color="#FB4934"
|
||||
fi
|
||||
|
||||
echo "<fc=$color> </fc>"
|
19
dot_config/xmobar/executable_mouse
Normal file
19
dot_config/xmobar/executable_mouse
Normal file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
status=$(cat /sys/class/power_supply/hidpp_battery_*/uevent | grep POWER_SUPPLY_VOLTAGE)
|
||||
voltage=$(echo $status | cut -c26-29)
|
||||
if [ "$voltage" -ge 3700 ]; then
|
||||
color="#B8BB26"
|
||||
else
|
||||
color="#FB4934"
|
||||
fi
|
||||
|
||||
status1=$(cat /sys/class/power_supply/hidpp_battery_*/uevent | grep POWER_SUPPLY_STATUS | tail -n1)
|
||||
charge=$(echo $status1 | cut -c21-)
|
||||
if [ "$charge" = "Discharging" ]; then
|
||||
color1="#FE8019"
|
||||
else
|
||||
color1="#B8BB26"
|
||||
fi
|
||||
|
||||
echo "<fc=$color1> </fc><fc=$color>${voltage}mV</fc>"
|
1
dot_config/xmobar/executable_tst
Normal file
1
dot_config/xmobar/executable_tst
Normal file
@ -0,0 +1 @@
|
||||
echo "wtf"
|
11
dot_config/xmobar/executable_volume
Normal file
11
dot_config/xmobar/executable_volume
Normal file
@ -0,0 +1,11 @@
|
||||
#! /bin/bash
|
||||
|
||||
volume=$(pactl list sinks | grep -A 7 'Name: alsa_output.usb-AudioQuest_inc._AudioQuest_DragonFly-00.analog-stereo' | tail -n 1 | sed 's/%.*//' | tail -c3)
|
||||
mute=$(pactl list sinks | grep -A 6 'Name: alsa_output.usb-AudioQuest_inc._AudioQuest_DragonFly-00.analog-stereo' | tail -n 1 -c4 | sed 's/ //g')
|
||||
if [ "$mute" == "yes" ]; then
|
||||
color="#FB4934"
|
||||
else
|
||||
color="#B8BB26"
|
||||
fi
|
||||
|
||||
echo "<fc=$color> $volume%</fc>"
|
19
dot_config/xmobar/executable_xmobarrc
Normal file
19
dot_config/xmobar/executable_xmobarrc
Normal file
@ -0,0 +1,19 @@
|
||||
Config { font = "xft:Mononoki Nerd Font:pixelsize=12:antialias=true:hinting=true"
|
||||
, bgColor = "#282828"
|
||||
, fgColor = "#EBDBB2"
|
||||
, position = Static {xpos = 0, ypos = 0, width = 2560, height = 20}
|
||||
, iconRoot = "X"
|
||||
, allDesktops = True
|
||||
, commands = [ Run Cpu ["-t", " <fc=#FB4934><total></fc>%","-H", "2"] 10
|
||||
, Run Memory ["-t", "<fc=#FB4934><usedratio></fc>%"] 10
|
||||
, Run Network "enp3s0" [ "-t", "<fc=#FB4934><tx></fc>kb/<fc=#FB4934><rx></fc>kb" ] 10
|
||||
, Run Com "/home/tstarr/.config/xmobar/volume" [] "volume" 10
|
||||
, Run Com "/home/tstarr/.config/xmobar/gamemode" [] "gamemode" 10
|
||||
, Run Com "/home/tstarr/.config/xmobar/mouse" [] "mouse" 10
|
||||
, Run Date " %a %d/%m/%y %H:%M:%S" "date" 10
|
||||
, Run StdinReader
|
||||
]
|
||||
, sepChar = "%"
|
||||
, alignSep = "}{"
|
||||
, template = " <fc=#FB4934>%StdinReader%</fc>}%date%{%enp3s0% | %mouse% | %volume% | 閭%cpu% | %memory% |%gamemode%"
|
||||
|
19
dot_config/xmobar/executable_xmobarrc1
Normal file
19
dot_config/xmobar/executable_xmobarrc1
Normal file
@ -0,0 +1,19 @@
|
||||
Config { font = "xft:Mononoki Nerd Font:pixelsize=12:antialias=true:hinting=true"
|
||||
, bgColor = "#282828"
|
||||
, fgColor = "#EBDBB2"
|
||||
, position = Static {xpos = 2560, ypos = 0, width = 2560, height = 20}
|
||||
, iconRoot = "X"
|
||||
, allDesktops = True
|
||||
, commands = [ Run Cpu ["-t", " <fc=#FB4934><total></fc>%","-H", "2"] 10
|
||||
, Run Memory ["-t", "<fc=#FB4934><usedratio></fc>%"] 10
|
||||
, Run Network "enp3s0" [ "-t", "<fc=#FB4934><tx></fc>kb/<fc=#FB4934><rx></fc>kb" ] 10
|
||||
, Run Com "/home/tstarr/.config/xmobar/volume" [] "volume" 10
|
||||
, Run Com "/home/tstarr/.config/xmobar/gamemode" [] "gamemode" 10
|
||||
, Run Com "/home/tstarr/.config/xmobar/mouse" [] "mouse" 10
|
||||
, Run Date " %a %d/%m/%y %H:%M:%S" "date" 10
|
||||
, Run StdinReader
|
||||
]
|
||||
, sepChar = "%"
|
||||
, alignSep = "}{"
|
||||
, template = " <fc=#FB4934>%StdinReader%</fc>}%date%{%enp3s0% | %mouse% | %volume% | 閭%cpu% | %memory% |%gamemode%"
|
||||
|
401
dot_config/xmonad/xmonad.hs
Normal file
401
dot_config/xmonad/xmonad.hs
Normal file
@ -0,0 +1,401 @@
|
||||
-- Base
|
||||
import XMonad hiding (Tall(..))
|
||||
import System.Exit
|
||||
import System.IO
|
||||
import qualified XMonad.StackSet as W
|
||||
import System.Directory (getHomeDirectory)
|
||||
import Data.Semigroup
|
||||
import Text.Read
|
||||
import Data.List (elemIndex)
|
||||
import Text.Printf
|
||||
|
||||
-- Hook
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
import XMonad.Hooks.ManageDocks
|
||||
import XMonad.Hooks.ManageHelpers
|
||||
import XMonad.Hooks.WorkspaceHistory
|
||||
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
|
||||
import XMonad.Hooks.DynamicProperty
|
||||
|
||||
-- Layouts
|
||||
import XMonad.Layout.NoBorders
|
||||
import XMonad.Layout.Spacing
|
||||
import XMonad.Layout.Tabbed
|
||||
import XMonad.Layout.WindowNavigation
|
||||
import XMonad.Layout.SimpleFloat
|
||||
import XMonad.Layout.HintedTile
|
||||
import XMonad.Layout.Grid
|
||||
import XMonad.Layout.TwoPane
|
||||
import XMonad.Layout.TwoPanePersistent
|
||||
import XMonad.Layout.Combo
|
||||
import XMonad.Layout.Master
|
||||
import XMonad.Layout.StateFull (focusTracking)
|
||||
import XMonad.Layout.Renamed
|
||||
|
||||
--Utilities
|
||||
import XMonad.Util.Run (spawnPipe)
|
||||
import XMonad.Util.SpawnOnce
|
||||
import XMonad.Util.EZConfig (additionalKeysP, removeKeys)
|
||||
import XMonad.Util.NamedScratchpad
|
||||
import XMonad.Util.ClickableWorkspaces (clickablePP)
|
||||
import XMonad.Util.Loggers
|
||||
--import XMonad.Util.XProp
|
||||
|
||||
-- Actions
|
||||
import XMonad.Actions.DynamicWorkspaces
|
||||
import XMonad.Actions.UpdatePointer
|
||||
import XMonad.Actions.RotSlaves
|
||||
import XMonad.Actions.RotateSome
|
||||
import XMonad.Actions.GroupNavigation
|
||||
import XMonad.Actions.Navigation2D
|
||||
import XMonad.Actions.WindowBringer
|
||||
|
||||
-- Prompt
|
||||
import XMonad.Prompt
|
||||
import XMonad.Prompt.Window
|
||||
import XMonad.Prompt.AppLauncher
|
||||
|
||||
import qualified XMonad.Util.ExtensibleState as XS
|
||||
|
||||
-- Font to use
|
||||
myFont :: String
|
||||
myFont = "xft:Mononoki Nerd Font:pixelsize=12:antialias=true:hinting=true"
|
||||
|
||||
-- Terminal to use
|
||||
myTerminal :: String
|
||||
myTerminal = "alacritty"
|
||||
|
||||
-- Focus follows mouse pointer
|
||||
myFocusFollowsMouse :: Bool
|
||||
myFocusFollowsMouse = True
|
||||
|
||||
-- Define mod keys
|
||||
myModMask :: KeyMask
|
||||
--myModMask = mod4Mask
|
||||
myModMask = mod4Mask
|
||||
|
||||
-- Define volume keys and commands
|
||||
lowerVolumeCmd = "pactl set-sink-volume @DEFAULT_SINK@ -2%"
|
||||
raiseVolumeCmd = "pactl set-sink-volume @DEFAULT_SINK@ +2%"
|
||||
muteVolumeCmd = "pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
|
||||
-- Count windows
|
||||
windowCount :: X (Maybe String)
|
||||
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
|
||||
|
||||
-- Define workspaces
|
||||
myWorkspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
|
||||
|
||||
-- Width of window border
|
||||
myBorderWidth = 2
|
||||
|
||||
-- Border colors
|
||||
myNormalBorderColor = "#282828"
|
||||
myFocusedBorderColor = "#B16286"
|
||||
|
||||
-- Config for xmonad prompts
|
||||
myXPConfig =
|
||||
def { font = myFont
|
||||
, bgColor = "#282828"
|
||||
, fgColor = "#EBDBB2"
|
||||
, fgHLight = "#B16286"
|
||||
, bgHLight = "#282828"
|
||||
, borderColor = "#B16286"
|
||||
, promptBorderWidth = 2
|
||||
, position = CenteredAt 0.5 0.25
|
||||
, height = 40
|
||||
, historySize = 256
|
||||
, defaultText = ""
|
||||
, autoComplete = Nothing
|
||||
, historyFilter = id
|
||||
, showCompletionOnTab = False
|
||||
, promptKeymap = defaultXPKeymap
|
||||
}
|
||||
|
||||
-- Config for tabs
|
||||
myTabTheme =
|
||||
def { fontName = myFont
|
||||
, activeColor = "#B16286"
|
||||
, inactiveColor = "#282828"
|
||||
, activeBorderColor = "#B16286"
|
||||
, inactiveBorderColor = "#282828"
|
||||
, activeTextColor = "#282828"
|
||||
, inactiveTextColor = "#B16286"
|
||||
, decoHeight = 15
|
||||
}
|
||||
|
||||
myStartupHook = do
|
||||
spawnOnce "nitrogen --restore &"
|
||||
spawnOnce "lxsession &"
|
||||
spawnOnce "xsetroot -cursor_name left_ptr"
|
||||
spawnOnce "imwheel -b 45 &"
|
||||
spawnOnce "udiskie &"
|
||||
spawnOnce "dunst -conf ~/.config/dunst/dunstrc"
|
||||
spawnOnce "emacs --daemon"
|
||||
|
||||
-- Config layouts
|
||||
myLayout = windowNavigation
|
||||
$ renamed [CutWordsLeft 1]
|
||||
$ spacing 3
|
||||
$ smartBorders
|
||||
(masterTab ||| (tabbed shrinkText myTabTheme) ||| tiled Tall ||| noBorders Full)
|
||||
where
|
||||
-- tiled = Tall nmaster delta ratio
|
||||
tiled = HintedTile 1 0.03 0.5 TopLeft
|
||||
-- master and tabbed tiling
|
||||
masterTab = renamed [Replace "Master Tab"] $ mastered (1/100) (1/2) $ (focusTracking (tabbed shrinkText myTabTheme))
|
||||
|
||||
myScratchPads :: [NamedScratchpad]
|
||||
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
||||
, NS "discord" spawnDiscord findDiscord manageDiscord
|
||||
, NS "keepassxc" spawnKeepass findKeepass manageKeepass
|
||||
, NS "qalculate-gtk" spawnCal findCal manageCal
|
||||
, NS "scratch-emacs" spawnEmacs findEmacs manageEmacs]
|
||||
where
|
||||
-- Basic terminal
|
||||
spawnTerm = myTerminal ++ " -t terminal"
|
||||
findTerm = title =? "terminal"
|
||||
manageTerm = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
-- Discord
|
||||
spawnDiscord = "discord"
|
||||
findDiscord = appName =? "discord"
|
||||
manageDiscord = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
-- Keepass
|
||||
spawnKeepass = "keepassxc"
|
||||
findKeepass = appName =? "keepassxc"
|
||||
manageKeepass = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
-- Calculator
|
||||
spawnCal = "qalculate-gtk"
|
||||
findCal = appName =? "qalculate-gtk"
|
||||
manageCal = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.125
|
||||
w = 0.1
|
||||
t = 0.15 -h
|
||||
l = 0.55 -w
|
||||
-- Basic emacs
|
||||
spawnEmacs = "emacsclient -c -n -e --eval '(set-frame-name \"scratch-emacs\")'"
|
||||
findEmacs = title =? "scratch-emacs"
|
||||
manageEmacs = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
|
||||
-- Set default display modes for applications
|
||||
myManageHook = composeAll . concat $
|
||||
-- Float fullscreen apps (mostly games)
|
||||
[[className =? c --> doFloat | c <- myFloats],
|
||||
[isDialog --> doCenterFloat,
|
||||
isFullscreen --> doFullFloat,
|
||||
className =? "net-runelite-client-RuneLite" --> doFloat,
|
||||
className =? "mpv" --> doRectFloat (W.RationalRect 0.55 0.05 0.4 0.4),
|
||||
className =? "Steam" --> doFullFloat,
|
||||
className =? "Superslicer" --> doFullFloat,
|
||||
isInProperty "WM_WINDOW_ROLE" "pop-up" --> doRectFloat (W.RationalRect 0.55 0.05 0.4 0.4),
|
||||
namedScratchpadManageHook myScratchPads]]
|
||||
where
|
||||
myFloats = [
|
||||
"MPlayer"
|
||||
, "Gimp"
|
||||
, "Plasma-desktop"
|
||||
, "plasmashell"
|
||||
, "krunner"
|
||||
, "Klipper"
|
||||
, "Keepassx"
|
||||
, "latte-dock"
|
||||
, "lattedock"
|
||||
, "conky-semi"
|
||||
, "TeamViewer"
|
||||
, "teamviewer"
|
||||
, "ksmserver-logout-greeter"]
|
||||
|
||||
-- Set dynamic display modes
|
||||
myEventHook :: Event -> X All
|
||||
myEventHook = dynamicPropertyChange "WM_NAME" (title =? "scratch-emacs" --> floating)
|
||||
where floating = customFloating $ W.RationalRect (1/6) 0.05 (2/3) 0.9
|
||||
-- Log hook
|
||||
myLogHook = historyHook <+> updatePointer (0.5, 0.5) (0, 0)
|
||||
|
||||
myKeys :: String -> [([Char], X ())]
|
||||
myKeys home =
|
||||
[
|
||||
--------------------------------------------------
|
||||
-- Window/Focus Manipulation
|
||||
--------------------------------------------------
|
||||
-- Rotate through the available layout algorithms
|
||||
("M-<Space>", sendMessage NextLayout)
|
||||
-- Shrink the master area
|
||||
, ("M-C-h", sendMessage Shrink)
|
||||
-- Expand the master area
|
||||
, ("M-C-l", sendMessage Expand)
|
||||
-- Push window back into tiling
|
||||
, ("M-t", withFocused $ windows . W.sink)
|
||||
-- close focused window
|
||||
, ("M-q", kill)
|
||||
-- Move focus to the next window.
|
||||
, ("M-j", windows W.focusDown)
|
||||
-- Move focus to the previous window.
|
||||
, ("M-k", windows W.focusUp)
|
||||
-- Swap the focused window with the next window.
|
||||
, ("M-S-j", windows W.swapDown)
|
||||
-- Swap the focused window with the previous window.
|
||||
, ("M-S-k", windows W.swapUp)
|
||||
-- Swap the focused window with the next window.
|
||||
, ("M-C-j", rotSlavesDown)
|
||||
-- Swap the focused window with the previous window.
|
||||
, ("M-C-k", rotSlavesUp)
|
||||
-- Move focus to the master window.
|
||||
, ("M-m", windows W.focusMaster)
|
||||
-- Swap the focused window and the master window.
|
||||
, ("M-S-m", windows W.swapMaster)
|
||||
-- Increment number of windows in master
|
||||
, ("M-.", sendMessage (IncMasterN 1))
|
||||
-- Decrement number of windows in master
|
||||
, ("M-,", sendMessage (IncMasterN (-1)))
|
||||
-- Swap the focused window and the master window.
|
||||
, ("M-b", nextMatch History (return True))
|
||||
-- Bring a window to focus.
|
||||
, ("M-z", bringMenu)
|
||||
-- Remove workspace
|
||||
, ("M-r", removeWorkspace)
|
||||
-- Rename workspace
|
||||
, ("M-S-r", renameWorkspace myXPConfig)
|
||||
-- Add or select workspace
|
||||
, ("M-a", selectWorkspace myXPConfig)
|
||||
-- Toggle Struts
|
||||
, ("M-i", sendMessage ToggleStruts)
|
||||
|
||||
--------------------------------------------------
|
||||
-- Basic Utils
|
||||
--------------------------------------------------
|
||||
-- Spawn terminal
|
||||
, ("M-<Return>" , spawn "alacritty")
|
||||
-- Spawn rofi drun
|
||||
, ("M-w", spawn "rofi -show window -theme gruvbox-dark-soft -show-icons")
|
||||
, ("M-S-w", spawn "rofi -show drun -theme gruvbox-dark-soft -show-icons")
|
||||
|
||||
--------------------------------------------------
|
||||
-- Scratchpads
|
||||
--------------------------------------------------
|
||||
|
||||
-- Spawn terminal scratchpad
|
||||
, ("M-S-<Return>", namedScratchpadAction myScratchPads "terminal")
|
||||
-- Spawn discord scratchpad
|
||||
, ("M-d", namedScratchpadAction myScratchPads "discord")
|
||||
-- Spawn keepass scratchpad
|
||||
, ("M-p", namedScratchpadAction myScratchPads "keepassxc")
|
||||
-- Spawn calendar scratchpad
|
||||
, ("M-c", namedScratchpadAction myScratchPads "qalculate-gtk")
|
||||
-- Spawn emacs scratchpad
|
||||
, ("M-e", namedScratchpadAction myScratchPads "scratch-emacs")
|
||||
|
||||
--------------------------------------------------
|
||||
-- Open Applications
|
||||
--------------------------------------------------
|
||||
-- Spawn firefox
|
||||
, ("M-o b" , spawn "chromium")
|
||||
-- Spawn lutris
|
||||
, ("M-o l" , spawn "lutris")
|
||||
-- Spawn steam
|
||||
, ("M-o s" , spawn "steam")
|
||||
-- Spawn flameshot
|
||||
, ("M-o f" , spawn "flameshot gui")
|
||||
-- Spawn emacs
|
||||
, ("M-o e" , spawn "emacsclient -c -n -e '(switch-to-buffer nil)'")
|
||||
|
||||
--------------------------------------------------
|
||||
-- System Utils
|
||||
--------------------------------------------------
|
||||
-- Recompile and restart xmonad
|
||||
, ("M-x r", spawn "xmonad --recompile; xmonad --restart")
|
||||
-- Quit xmonad
|
||||
, ("M-x q", io (exitWith ExitSuccess))
|
||||
-- Start gamemode
|
||||
, ("M-x g", spawn "gamemoded -r")
|
||||
-- Stop gamemode
|
||||
, ("M-x S-g", spawn "killall gamemoded")
|
||||
-- Open nvidia-settings
|
||||
, ("M-x n", spawn "nvidia-settings")
|
||||
-- mute overall volume
|
||||
, ("<XF86AudioMute>", spawn muteVolumeCmd)
|
||||
-- raise overall volume
|
||||
, ("<XF86AudioRaiseVolume>", spawn raiseVolumeCmd)
|
||||
-- lower overall volume
|
||||
, ("<XF86AudioLowerVolume>", spawn lowerVolumeCmd)
|
||||
]
|
||||
++
|
||||
-- Switch to dynamically created workspace
|
||||
zip (["M-<F1>","M-<F2>","M-<F3>","M-<F4>",
|
||||
"M-<F5>","M-<F6>","M-<F7>","M-<F8>"]) (map (withNthWorkspace W.greedyView) [10..])
|
||||
++
|
||||
-- Shift windows to dynamically created workspace
|
||||
zip (["M-S-<F1>","M-S-<F2>","M-S-<F3>","M-S-<F4>",
|
||||
"M-S-<F5>","M-S-<F6>","M-S-<F7>","M-S-<F8>"]) (map (withNthWorkspace W.shift) [10..])
|
||||
|
||||
-- Remove the default binding for quit xmonad
|
||||
rmKeys :: String -> [(KeyMask, KeySym)]
|
||||
rmKeys keys =
|
||||
[
|
||||
(myModMask .|. shiftMask, xK_q)
|
||||
]
|
||||
|
||||
main = do
|
||||
home <- getHomeDirectory
|
||||
xmproc0 <- spawnPipe "xmobar -x 0 ~/.config/xmobar/xmobarrc"
|
||||
xmproc1 <- spawnPipe "xmobar -x 1 ~/.config/xmobar/xmobarrc1"
|
||||
-- The monad
|
||||
xmonad
|
||||
$ docks
|
||||
$ ewmh
|
||||
$ ewmhFullscreen
|
||||
$ navigation2DP def
|
||||
("", "h", "", "l")
|
||||
[("M-", screenGo),
|
||||
("M-S-", screenSwap)]
|
||||
False
|
||||
$ def
|
||||
{
|
||||
-- Simple items
|
||||
terminal = myTerminal,
|
||||
focusFollowsMouse = myFocusFollowsMouse,
|
||||
borderWidth = myBorderWidth,
|
||||
modMask = myModMask,
|
||||
workspaces = myWorkspaces,
|
||||
normalBorderColor = myNormalBorderColor,
|
||||
focusedBorderColor = myFocusedBorderColor,
|
||||
-- Hooks, Layouts
|
||||
layoutHook = avoidStruts $ myLayout,
|
||||
manageHook = myManageHook,
|
||||
handleEventHook = myEventHook,
|
||||
logHook = workspaceHistoryHook <+> myLogHook <+> dynamicLogWithPP xmobarPP
|
||||
{ ppOutput = \x -> hPutStrLn xmproc0 x
|
||||
>> hPutStrLn xmproc1 x
|
||||
, ppCurrent = xmobarColor "#B8BB26" "" . wrap "[" "]" -- Current workspace in xmobar
|
||||
, ppVisible = xmobarColor "#83A598" "" -- Visible but not current workspace
|
||||
, ppHidden = xmobarColor "#83A598" "" . wrap "*" "" -- Hidden workspaces in xmobar
|
||||
, ppHiddenNoWindows= \( _ ) -> "" -- Only shows visible workspaces. Useful for TreeSelect.
|
||||
, ppTitle = xmobarColor "#EBDBB2" "" . shorten 60 -- Title of active window in xmobar
|
||||
, ppSep = "<fc=" ++ "#EBDBB2" ++ "> | </fc>" -- Separators in xmobar
|
||||
, ppUrgent = xmobarColor "#FB2934" "" . wrap "!" "!" -- Urgent workspace
|
||||
, ppExtras = [windowCount] -- # of windows current workspace
|
||||
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]},
|
||||
startupHook = myStartupHook
|
||||
} `removeKeys` rmKeys home
|
||||
`additionalKeysP` myKeys home
|
356
dot_config/xmonad/xmonad.org
Normal file
356
dot_config/xmonad/xmonad.org
Normal file
@ -0,0 +1,356 @@
|
||||
#+title: Xmomad - Personal Xmonad Config
|
||||
#+author: Tyler Starr
|
||||
#+email: tyler@tstarr.us
|
||||
#+keywords: config xmonad haskell wm
|
||||
* References
|
||||
* Configuration
|
||||
** Imports
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
-- Base
|
||||
import XMonad hiding (Tall(..))
|
||||
import System.Exit
|
||||
import System.IO
|
||||
import qualified XMonad.StackSet as W
|
||||
import System.Directory (getHomeDirectory)
|
||||
import Data.Semigroup
|
||||
-- Hooks
|
||||
import XMonad.Hooks.EwmhDesktops
|
||||
import XMonad.Hooks.ManageDocks
|
||||
import XMonad.Hooks.ManageHelpers
|
||||
import XMonad.Hooks.WorkspaceHistory
|
||||
import XMonad.Hooks.DynamicLog (dynamicLogWithPP, wrap, xmobarPP, xmobarColor, shorten, PP(..))
|
||||
import XMonad.Hooks.DynamicProperty
|
||||
-- Layouts
|
||||
import XMonad.Layout.NoBorders
|
||||
import XMonad.Layout.Spacing
|
||||
import XMonad.Layout.Tabbed
|
||||
import XMonad.Layout.WindowNavigation
|
||||
import XMonad.Layout.SimpleFloat
|
||||
import XMonad.Layout.HintedTile
|
||||
--Utilities
|
||||
import XMonad.Util.Run (spawnPipe)
|
||||
import XMonad.Util.SpawnOnce
|
||||
import XMonad.Util.EZConfig (additionalKeysP, removeKeys)
|
||||
import XMonad.Util.NamedScratchpad
|
||||
import XMonad.Util.ClickableWorkspaces (clickablePP)
|
||||
-- Actions
|
||||
import XMonad.Actions.DynamicProjects (Project (..), dynamicProjects, switchProjectPrompt, shiftToProjectPrompt, switchProject, shiftToProject)
|
||||
import XMonad.Actions.UpdatePointer
|
||||
import XMonad.Actions.Navigation2D
|
||||
-- Prompt
|
||||
import XMonad.Prompt
|
||||
#+end_src
|
||||
|
||||
** Variables
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
-- Terminal to use
|
||||
myTerminal :: String
|
||||
myTerminal = "alacritty"
|
||||
-- Focus follows mouse pointer
|
||||
myFocusFollowsMouse :: Bool
|
||||
myFocusFollowsMouse = True
|
||||
-- Define mod keys
|
||||
myModMask :: KeyMask
|
||||
myModMask = mod4Mask
|
||||
-- Define volume keys and commands
|
||||
lowerVolumeCmd = "pulseaudio-ctl down 2"
|
||||
raiseVolumeCmd = "pulseaudio-ctl up 2"
|
||||
muteVolumeCmd = "pulseaudio-ctl mute"
|
||||
-- Count windows
|
||||
windowCount :: X (Maybe String)
|
||||
windowCount = gets $ Just . show . length . W.integrate' . W.stack . W.workspace . W.current . windowset
|
||||
-- Define workspaces
|
||||
myWorkspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
|
||||
-- Width of window border
|
||||
myBorderWidth = 2
|
||||
-- Border colors
|
||||
myNormalBorderColor = "#ebdbb2"
|
||||
myFocusedBorderColor = "#d3869b"
|
||||
-- Configuration for myNav2D
|
||||
myNav2DConf = def
|
||||
{ defaultTiledNavigation = centerNavigation
|
||||
, floatNavigation = centerNavigation
|
||||
, screenNavigation = lineNavigation
|
||||
, layoutNavigation = [("Spacing Full", centerNavigation)]
|
||||
, unmappedWindowRect = [("Spacing Full", singleWindowRect)]
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** Startup
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
myStartupHook = do
|
||||
spawnOnce "nitrogen --restore &"
|
||||
spawnOnce "lxsession &"
|
||||
spawnOnce "xsetroot -cursor_name left_ptr"
|
||||
spawnOnce "xmodmap ~/.config/xmodmap/Xmodmap"
|
||||
spawnOnce "imwheel -b 45 &"
|
||||
spawnOnce "play-with-mpv &"
|
||||
spawnOnce "udiskie &"
|
||||
spawnOnce "dunst -conf ~/.config/dunst/dunstrc"
|
||||
#+end_src
|
||||
|
||||
** Projects
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
projects :: [Project]
|
||||
projects =
|
||||
[ Project { projectName = "dev"
|
||||
, projectDirectory = "~/devel"
|
||||
, projectStartHook = Just $ do spawn "emacs"
|
||||
spawn myTerminal
|
||||
},
|
||||
Project { projectName = "game"
|
||||
, projectDirectory = "~/"
|
||||
, projectStartHook = Nothing
|
||||
}
|
||||
]
|
||||
#+end_src
|
||||
|
||||
** Layout
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
myLayout = windowNavigation $ spacing 2 $ smartBorders (tiled Tall ||| tiled Wide ||| Full ||| simpleFloat)
|
||||
where
|
||||
-- default tiling algorithm partitions the screen into two panes
|
||||
--tiled = Tall nmaster delta ratio
|
||||
tiled = HintedTile 1 0.03 0.5 TopLeft
|
||||
-- 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
|
||||
#+end_src
|
||||
|
||||
** Scratchpads
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
myScratchPads :: [NamedScratchpad]
|
||||
myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm
|
||||
, NS "discord" spawnDiscord findDiscord manageDiscord
|
||||
, NS "keepassxc" spawnKeepass findKeepass manageKeepass
|
||||
, NS "gsimplecal" spawnCal findCal manageCal
|
||||
, NS "scratch-emacs" spawnEmacs findEmacs manageEmacs ]
|
||||
where
|
||||
spawnTerm = myTerminal ++ " -t terminal"
|
||||
findTerm = title =? "terminal"
|
||||
manageTerm = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
|
||||
spawnDiscord = "discord"
|
||||
findDiscord = appName =? "discord"
|
||||
manageDiscord = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
|
||||
spawnKeepass = "keepassxc"
|
||||
findKeepass = appName =? "keepassxc"
|
||||
manageKeepass = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
|
||||
spawnCal = "gsimplecal"
|
||||
findCal = appName =? "gsimplecal"
|
||||
manageCal = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.125
|
||||
w = 0.1
|
||||
t = 0.15 -h
|
||||
l = 0.55 -w
|
||||
|
||||
spawnEmacs = "emacs --eval '(set-frame-name \"scratch-emacs\")'"
|
||||
findEmacs = title =? "scratch-emacs"
|
||||
manageEmacs = customFloating $ W.RationalRect l t w h
|
||||
where
|
||||
h = 0.9
|
||||
w = 0.9
|
||||
t = 0.95 -h
|
||||
l = 0.95 -w
|
||||
#+end_src
|
||||
|
||||
** Hooks
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
-- Set default display modes for applications
|
||||
myManageHook = composeAll
|
||||
-- Float fullscreen apps (mostly games)
|
||||
[isDialog --> doCenterFloat,
|
||||
isFullscreen --> doFullFloat,
|
||||
className =? "Gimp" --> doFullFloat,
|
||||
className =? "mpv" --> doRectFloat (W.RationalRect 0.55 0.05 0.4 0.4),
|
||||
className =? "Steam" --> doFullFloat,
|
||||
className =? "Superslicer" --> doFullFloat,
|
||||
namedScratchpadManageHook myScratchPads]
|
||||
-- Set dynamic display modes
|
||||
myEventHook :: Event -> X All
|
||||
myEventHook = dynamicPropertyChange "WM_NAME" (title =? "scratch-emacs" --> floating)
|
||||
where floating = customFloating $ W.RationalRect (1/6) 0.05 (2/3) 0.9
|
||||
-- Log hook
|
||||
myLogHook = updatePointer (0.5, 0.5) (0, 0)
|
||||
#+end_src
|
||||
|
||||
** Keybinds
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
myKeys :: String -> [([Char], X ())]
|
||||
myKeys home =
|
||||
[
|
||||
--------------------------------------------------
|
||||
-- Window/Focus Manipulation
|
||||
--------------------------------------------------
|
||||
-- Rotate through the available layout algorithms
|
||||
("M-<Tab>", sendMessage NextLayout)
|
||||
-- Shrink the master area
|
||||
, ("M-C-h", sendMessage Shrink)
|
||||
-- Expand the master area
|
||||
, ("M-C-l", sendMessage Expand)
|
||||
-- Push window back into tiling
|
||||
, ("M-t", withFocused $ windows . W.sink)
|
||||
-- close focused window
|
||||
, ("M-q", kill)
|
||||
|
||||
--------------------------------------------------
|
||||
-- Basic Utils
|
||||
--------------------------------------------------
|
||||
-- Spawn terminal
|
||||
|
||||
, ("M-<Return>" , spawn "alacritty")
|
||||
-- Spawn rofi drun
|
||||
, ("M-w" , spawn "rofi -show drun -theme gruvbox-dark-soft -show-icons")
|
||||
, ("M-S-w" , spawn "rofi -show run -theme gruvbox-dark-soft")
|
||||
|
||||
--------------------------------------------------
|
||||
-- Scratchpads
|
||||
--------------------------------------------------
|
||||
|
||||
-- Spawn terminal scratchpad
|
||||
, ("M-S-<Return>", namedScratchpadAction myScratchPads "terminal")
|
||||
-- Spawn discord scratchpad
|
||||
, ("M-d", namedScratchpadAction myScratchPads "discord")
|
||||
-- Spawn keepass scratchpad
|
||||
, ("M-m", namedScratchpadAction myScratchPads "keepassxc")
|
||||
-- Spawn calendar scratchpad
|
||||
, ("M-c", namedScratchpadAction myScratchPads "gsimplecal")
|
||||
-- Spawn emacs scratchpad
|
||||
, ("M-e", namedScratchpadAction myScratchPads "scratch-emacs")
|
||||
|
||||
--------------------------------------------------
|
||||
-- Dynamic Projects
|
||||
--------------------------------------------------
|
||||
--, ("M-p s", switchProjectPrompt projectsTheme)
|
||||
--, ("M-p S", shiftToProjectPrompt projectsTheme)
|
||||
, ("M-p d", switchProject (projects !! 0))
|
||||
, ("M-p S-d", shiftToProject (projects !! 0))
|
||||
, ("M-p g", switchProject (projects !! 1))
|
||||
, ("M-p S-g", shiftToProject (projects !! 1))
|
||||
|
||||
--------------------------------------------------
|
||||
-- Open Applications
|
||||
--------------------------------------------------
|
||||
-- Spawn firefox
|
||||
, ("M-o b" , spawn "brave")
|
||||
-- Spawn lutris
|
||||
, ("M-o l" , spawn "lutris")
|
||||
-- Spawn steam
|
||||
, ("M-o s" , spawn "steam")
|
||||
-- Spawn flameshot
|
||||
, ("M-o c" , spawn "flameshot gui")
|
||||
-- Spawn emacs
|
||||
, ("M-o e" , spawn "emacs")
|
||||
|
||||
--------------------------------------------------
|
||||
-- System Utils
|
||||
--------------------------------------------------
|
||||
-- Recompile and restart xmonad
|
||||
, ("M-x r", spawn "xmonad --recompile; xmonad --restart")
|
||||
-- Quit xmonad
|
||||
, ("M-x q", io (exitWith ExitSuccess))
|
||||
-- Start gamemode
|
||||
, ("M-x g", spawn "gamemoded -r")
|
||||
-- Stop gamemode
|
||||
, ("M-x S-g", spawn "killall gamemoded")
|
||||
-- Start wireguard
|
||||
, ("M-x w", spawn "pkexec sh -c 'wg-quick up wg0 && mount -a'")
|
||||
-- Stop wireguard
|
||||
, ("M-x S-w", spawn "pkexec sh -c 'umount /run/media/engi && wg-quick down wg0'")
|
||||
-- mute overall volume
|
||||
, ("<XF86AudioMute>", spawn muteVolumeCmd)
|
||||
-- raise overall volume
|
||||
, ("<XF86AudioRaiseVolume>", spawn raiseVolumeCmd)
|
||||
-- lower overall volume
|
||||
, ("<XF86AudioLowerVolume>", spawn lowerVolumeCmd)
|
||||
]
|
||||
-- Remove the default binding for quit xmonad
|
||||
rmKeys :: String -> [(KeyMask, KeySym)]
|
||||
rmKeys keys =
|
||||
[
|
||||
(myModMask .|. shiftMask, xK_q)
|
||||
]
|
||||
#+end_src
|
||||
|
||||
** Main
|
||||
|
||||
#+begin_src haskell :tangle "xmonad.hs"
|
||||
main = do
|
||||
home <- getHomeDirectory
|
||||
xmproc0 <- spawnPipe "xmobar -x 0 ~/.config/xmobar/xmobarrc"
|
||||
--
|
||||
xmonad
|
||||
$ dynamicProjects projects
|
||||
$ docks
|
||||
$ ewmhFullscreen
|
||||
$ withNavigation2DConfig myNav2DConf
|
||||
$ navigation2DP def
|
||||
("k", "h", "j", "l")
|
||||
[("M-", windowGo),
|
||||
("M-S-", windowSwap)]
|
||||
False
|
||||
$ additionalNav2DKeysP ("", "u", "", "i")
|
||||
[("M-", screenGo),
|
||||
("M-S-", screenSwap)]
|
||||
False
|
||||
$ def
|
||||
{
|
||||
-- Simple items
|
||||
terminal = myTerminal,
|
||||
focusFollowsMouse = myFocusFollowsMouse,
|
||||
borderWidth = myBorderWidth,
|
||||
modMask = myModMask,
|
||||
workspaces = myWorkspaces,
|
||||
normalBorderColor = myNormalBorderColor,
|
||||
focusedBorderColor = myFocusedBorderColor,
|
||||
|
||||
-- Hooks, Layouts
|
||||
layoutHook = avoidStruts $ myLayout,
|
||||
manageHook = myManageHook,
|
||||
handleEventHook = myEventHook,
|
||||
logHook = workspaceHistoryHook <+> myLogHook <+> dynamicLogWithPP xmobarPP
|
||||
|
||||
|
||||
{ ppOutput = \x -> hPutStrLn xmproc0 x
|
||||
, ppCurrent = xmobarColor "#b8bb26" "" . wrap "[" "]" -- Current workspace in xmobar
|
||||
, ppVisible = xmobarColor "#83a598" "" -- Visible but not current workspace
|
||||
, ppHidden = xmobarColor "#83a598" "" . wrap "*" "" -- Hidden workspaces in xmobar
|
||||
, ppHiddenNoWindows= \( _ ) -> "" -- Only shows visible workspaces. Useful for TreeSelect.
|
||||
, ppTitle = xmobarColor "#ebdbb2" "" . shorten 60 -- Title of active window in xmobar
|
||||
, ppSep = "<fc=#ebdbb2> | </fc>" -- Separators in xmobar
|
||||
, ppUrgent = xmobarColor "#fb4934" "" . wrap "!" "!" -- Urgent workspace
|
||||
, ppExtras = [windowCount] -- # of windows current workspace
|
||||
, ppOrder = \(ws:l:t:ex) -> [ws,l]++ex++[t]},
|
||||
startupHook = myStartupHook
|
||||
} `removeKeys` rmKeys home
|
||||
`additionalKeysP` myKeys home
|
||||
#+end_src
|
28
dot_taskopenrc
Normal file
28
dot_taskopenrc
Normal file
@ -0,0 +1,28 @@
|
||||
[General]
|
||||
taskbin=task
|
||||
taskargs
|
||||
no_annotation_hook=""
|
||||
task_attributes="priority,project,tags,description"
|
||||
--sort:"urgency-,annot"
|
||||
--active-tasks:"+PENDING"
|
||||
EDITOR=/usr/bin/nano
|
||||
path_ext=/usr/share/taskopen/scripts
|
||||
|
||||
[Actions]
|
||||
files.target=annotations
|
||||
files.labelregex=".*"
|
||||
files.regex="^[\\.\\/~]+.*\\.(.*)"
|
||||
files.command="xdg-open $FILE"
|
||||
files.modes="batch,any,normal"
|
||||
|
||||
notes.target=annotations
|
||||
notes.labelregex=".*"
|
||||
notes.regex="fleeting"
|
||||
notes.command="nvim ~/documents/warrior/fleeting/$UUID.md"
|
||||
notes.modes="batch,any,normal"
|
||||
|
||||
url.target=annotations
|
||||
url.labelregex=".*"
|
||||
url.regex="((?:www|http).*)"
|
||||
url.command="xdg-open $LAST_MATCH"
|
||||
url.modes="batch,any,normal"
|
37
dot_taskrc
Normal file
37
dot_taskrc
Normal file
@ -0,0 +1,37 @@
|
||||
# [Created by task 2.6.2 12/3/2022 20:07:19]
|
||||
# Taskwarrior program configuration file.
|
||||
# For more documentation, see https://taskwarrior.org or try 'man task', 'man task-color',
|
||||
# 'man task-sync' or 'man taskrc'
|
||||
|
||||
# Here is an example of entries that use the default, override and blank values
|
||||
# variable=foo -- By specifying a value, this overrides the default
|
||||
# variable= -- By specifying no value, this means no default
|
||||
# #variable=foo -- By commenting out the line, or deleting it, this uses the default
|
||||
|
||||
# You can also refence environment variables:
|
||||
# variable=$HOME/task
|
||||
# variable=$VALUE
|
||||
|
||||
# Use the command 'task show' to see all defaults and overrides
|
||||
|
||||
# Files
|
||||
|
||||
verbose=blank,footnote,label,new-id,affected,edit,special,project,sync,unwait
|
||||
|
||||
# Color theme (uncomment one to use)
|
||||
#include light-16.theme
|
||||
#include light-256.theme
|
||||
#include dark-16.theme
|
||||
#include dark-256.theme
|
||||
#include dark-red-256.theme
|
||||
#include dark-green-256.theme
|
||||
#include dark-blue-256.theme
|
||||
#include dark-violets-256.theme
|
||||
#include dark-yellow-green.theme
|
||||
#include dark-gray-256.theme
|
||||
#include dark-gray-blue-256.theme
|
||||
#include solarized-dark-256.theme
|
||||
#include solarized-light-256.theme
|
||||
#include no-color.theme
|
||||
|
||||
news.version=2.6.0
|
93
dot_tmux.conf
Normal file
93
dot_tmux.conf
Normal file
@ -0,0 +1,93 @@
|
||||
# vim style tmux config
|
||||
|
||||
# use C-a, since it's on the home row and easier to hit than C-b
|
||||
set-option -g prefix C-a
|
||||
unbind-key C-a
|
||||
bind-key C-a send-prefix
|
||||
set -g base-index 1
|
||||
|
||||
# Easy config reload
|
||||
bind-key R source-file ~/.tmux.conf \; display-message "tmux.conf reloaded."
|
||||
|
||||
# vi is good
|
||||
setw -g mode-keys vi
|
||||
|
||||
set -g default-terminal "tmux-256color"
|
||||
set-option -ga terminal-overrides ",tmux-256color:Tc"
|
||||
|
||||
# mouse behavior
|
||||
setw -g mouse on
|
||||
|
||||
bind -n M-1 select-window -t 1
|
||||
bind -n M-2 select-window -t 2
|
||||
bind -n M-3 select-window -t 3
|
||||
bind -n M-4 select-window -t 4
|
||||
bind -n M-5 select-window -t 5
|
||||
bind -n M-6 select-window -t 6
|
||||
bind -n M-7 select-window -t 7
|
||||
bind -n M-8 select-window -t 8
|
||||
bind -n M-9 select-window -t 9
|
||||
bind -n M-0 select-window -t 10
|
||||
|
||||
bind-key : command-prompt
|
||||
bind-key r refresh-client
|
||||
bind-key L clear-history
|
||||
|
||||
bind-key space next-window
|
||||
bind-key bspace previous-window
|
||||
bind-key enter next-layout
|
||||
|
||||
# use vim-like keys for splits and windows
|
||||
bind-key v split-window -h
|
||||
bind-key s split-window -v
|
||||
bind-key h select-pane -L
|
||||
bind-key j select-pane -D
|
||||
bind-key k select-pane -U
|
||||
bind-key l select-pane -R
|
||||
|
||||
bind C-l send-keys 'C-l'
|
||||
|
||||
bind-key C-o rotate-window
|
||||
|
||||
bind-key + select-layout main-horizontal
|
||||
bind-key = select-layout main-vertical
|
||||
|
||||
set-window-option -g other-pane-height 25
|
||||
set-window-option -g other-pane-width 80
|
||||
set-window-option -g display-panes-time 1500
|
||||
set-window-option -g window-status-current-style fg=magenta
|
||||
|
||||
bind-key a last-pane
|
||||
bind-key w display-panes
|
||||
bind-key q kill-session
|
||||
bind-key c new-window
|
||||
bind-key t next-window
|
||||
bind-key T previous-window
|
||||
|
||||
bind-key [ copy-mode
|
||||
bind-key ] paste-buffer
|
||||
|
||||
# Setup 'v' to begin selection as in Vim
|
||||
bind-key -T copy-mode-vi v send -X begin-selection
|
||||
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
|
||||
|
||||
# Update default binding of `Enter` to also use copy-pipe
|
||||
unbind -T copy-mode-vi Enter
|
||||
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
|
||||
|
||||
# Status Bar
|
||||
set-option -g status-interval 1
|
||||
set-option -g status-style bg=black
|
||||
set-option -g status-style fg=white
|
||||
set -g status-left '#[fg=green]#H #[default]'
|
||||
set -g status-right '%a%l:%M:%S %p#[default] #[fg=blue]%Y-%m-%d'
|
||||
|
||||
set-option -g pane-active-border-style fg=yellow
|
||||
set-option -g pane-border-style fg=cyan
|
||||
|
||||
# Set window notifications
|
||||
setw -g monitor-activity on
|
||||
set -g visual-activity on
|
||||
|
||||
# Allow the arrow key to be used immediately after changing windows
|
||||
set-option -g repeat-time 0
|
5
dot_xmodmap
Normal file
5
dot_xmodmap
Normal file
@ -0,0 +1,5 @@
|
||||
keycode 66 = Mode_switch
|
||||
keysym h = h H Left
|
||||
keysym l = l L Right
|
||||
keysym k = k K Up
|
||||
keysym j = j J Down
|
1
provision/hosts
Normal file
1
provision/hosts
Normal file
@ -0,0 +1 @@
|
||||
local ansible_connection=local ansible_python_interpreter=/usr/bin/python3
|
8
provision/requirements.yml
Normal file
8
provision/requirements.yml
Normal file
@ -0,0 +1,8 @@
|
||||
# Ansible Galaxy Roles
|
||||
roles:
|
||||
- src: https://github.com/starr-dusT/ansible-role-customize-gnome
|
||||
- src: https://github.com/starr-dusT/ansible-rustup
|
||||
collections:
|
||||
- name: community.general
|
||||
version: 6.0.1
|
||||
source: https://galaxy.ansible.com
|
44
provision/setup.yml
Normal file
44
provision/setup.yml
Normal file
@ -0,0 +1,44 @@
|
||||
|
||||
- name: Ansible playbook to setup my local machine
|
||||
hosts: all
|
||||
|
||||
vars_files:
|
||||
- vars/main.yml
|
||||
|
||||
#vars_prompt:
|
||||
# - name: github_token
|
||||
# prompt: "What is your GitHub Token?"
|
||||
# default: "{{ lookup('env','GITHUB_TOKEN') }}"
|
||||
# private: yes
|
||||
|
||||
#pre_tasks:
|
||||
# - name: Ensure setup directory exists
|
||||
# file:
|
||||
# path: "{{ setup_dir }}"
|
||||
# state: directory
|
||||
# mode: 0755
|
||||
# tags: [always]
|
||||
|
||||
#post_tasks:
|
||||
# - name: Remove setup directory
|
||||
# file:
|
||||
# path: "{{ setup_dir }}"
|
||||
# state: absent
|
||||
# become: true
|
||||
# tags: [always]
|
||||
|
||||
#handlers:
|
||||
# - name: restart docker
|
||||
# service:
|
||||
# name: docker
|
||||
# state: restarted
|
||||
# become: true
|
||||
|
||||
tasks:
|
||||
# This import MUST be first
|
||||
- import_tasks: tasks/system/_main.yml
|
||||
- import_tasks: tasks/terminal/_main.yml
|
||||
- import_tasks: tasks/development/_main.yml
|
||||
- import_tasks: tasks/desktop/_main.yml
|
||||
- import_tasks: tasks/gaming/_main.yml
|
||||
|
18
provision/tasks/desktop/_hide-desktop.yml
Normal file
18
provision/tasks/desktop/_hide-desktop.yml
Normal file
@ -0,0 +1,18 @@
|
||||
- name: Check desktop file exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ item }}"
|
||||
register: p
|
||||
|
||||
- name: Edit desktop file
|
||||
ansible.builtin.lineinfile:
|
||||
path: "{{ item }}"
|
||||
insertafter: '^Type'
|
||||
line: 'NoDisplay=true'
|
||||
firstmatch: true
|
||||
state: present
|
||||
become: true
|
||||
when: p.stat.exists
|
||||
|
||||
- debug:
|
||||
msg: "Warning - {{ item }} does not exist"
|
||||
when: p.stat.exists == False
|
10
provision/tasks/desktop/_main.yml
Normal file
10
provision/tasks/desktop/_main.yml
Normal file
@ -0,0 +1,10 @@
|
||||
- import_tasks: configs.yml
|
||||
tags: ["configs"]
|
||||
- import_tasks: packages.yml
|
||||
tags: ["packages"]
|
||||
- import_tasks: gnome-settings/extensions.yml
|
||||
tags: ["gnome-extensions"]
|
||||
- import_tasks: gnome-settings/keybinds.yml
|
||||
tags: ["configs"]
|
||||
- import_tasks: gnome-settings/window-management.yml
|
||||
tags: ["configs"]
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user