mirror of
https://github.com/starr-dusT/dotfiles.git
synced 2025-02-18 10:47:31 -08:00
clean up old crud
This commit is contained in:
parent
bf55e3c70e
commit
ca0c355550
@ -1,15 +1,3 @@
|
|||||||
[".themes/dracula"]
|
|
||||||
type = "archive"
|
|
||||||
url = "https://github.com/dracula/gtk/archive/master.zip"
|
|
||||||
exact = true
|
|
||||||
stripComponents = 1
|
|
||||||
refreshPeriod = "168h"
|
|
||||||
|
|
||||||
[".config/alacritty/themes"]
|
|
||||||
type = "git-repo"
|
|
||||||
url = "https://github.com/alacritty/alacritty-theme"
|
|
||||||
refreshPeriod = "168h"
|
|
||||||
|
|
||||||
[".tmux/plugins/tpm"]
|
[".tmux/plugins/tpm"]
|
||||||
type = "git-repo"
|
type = "git-repo"
|
||||||
url = "https://github.com/tmux-plugins/tpm"
|
url = "https://github.com/tmux-plugins/tpm"
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
btrbk -c /home/tstarr/.config/btrbk/home_btrbk.conf run
|
|
@ -1,32 +0,0 @@
|
|||||||
#
|
|
||||||
# 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 2d
|
|
||||||
target_preserve 20d 10w *m
|
|
||||||
|
|
||||||
snapshot_dir .snapshots
|
|
||||||
|
|
||||||
ssh_identity /etc/btrbk/ssh/id_rsa
|
|
||||||
ssh_user root
|
|
||||||
|
|
||||||
# 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 ssh://192.168.1.135/engi/backup/kestrel_backups
|
|
@ -1,26 +0,0 @@
|
|||||||
#
|
|
||||||
# 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
|
|
@ -1,26 +0,0 @@
|
|||||||
;;; 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...
|
|
@ -1,131 +0,0 @@
|
|||||||
;;; 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)
|
|
@ -1,48 +0,0 @@
|
|||||||
;;; 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.
|
|
||||||
)
|
|
@ -1,5 +0,0 @@
|
|||||||
(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)
|
|
@ -1,19 +0,0 @@
|
|||||||
;;; 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)
|
|
@ -1,31 +0,0 @@
|
|||||||
;;; 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)
|
|
@ -1,187 +0,0 @@
|
|||||||
#!/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
|
|
@ -1,71 +0,0 @@
|
|||||||
$mod = SUPER
|
|
||||||
$term = kitty
|
|
||||||
$e = & hyprctl dispatch submap reset
|
|
||||||
|
|
||||||
source = ~/.config/hypr/monitors.conf
|
|
||||||
source = ~/.config/hypr/workspaces.conf
|
|
||||||
source = ~/.config/hypr/keybinds.conf
|
|
||||||
source = ~/.config/hypr/windows.conf
|
|
||||||
source = ~/.config/hypr/start.conf
|
|
||||||
|
|
||||||
env = XCURSOR_SIZE,24
|
|
||||||
|
|
||||||
input {
|
|
||||||
kb_layout = us
|
|
||||||
kb_variant =
|
|
||||||
kb_model =
|
|
||||||
kb_options =
|
|
||||||
kb_rules =
|
|
||||||
follow_mouse = 1
|
|
||||||
touchpad {
|
|
||||||
natural_scroll = no
|
|
||||||
}
|
|
||||||
sensitivity = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
group {
|
|
||||||
col.border_active = rgba({{ .themes.gruvbox.purple0 }}ff)
|
|
||||||
col.border_inactive = rgba({{ .themes.gruvbox.purple1 }}ff)
|
|
||||||
groupbar {
|
|
||||||
enabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
general {
|
|
||||||
gaps_in = 2
|
|
||||||
gaps_out = 2
|
|
||||||
border_size = 2
|
|
||||||
col.active_border = rgba({{ .themes.gruvbox.yellow }}ff)
|
|
||||||
col.inactive_border = rgba({{ .themes.gruvbox.bg0 }}ff)
|
|
||||||
layout = master
|
|
||||||
allow_tearing = false
|
|
||||||
}
|
|
||||||
|
|
||||||
xwayland {
|
|
||||||
force_zero_scaling = true
|
|
||||||
}
|
|
||||||
|
|
||||||
decoration {
|
|
||||||
rounding = 2
|
|
||||||
drop_shadow = false
|
|
||||||
blur {
|
|
||||||
enabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
animations {
|
|
||||||
enabled = no # animations are bloat ;)
|
|
||||||
}
|
|
||||||
|
|
||||||
master {
|
|
||||||
new_is_master = false
|
|
||||||
mfact = 0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
gestures {
|
|
||||||
workspace_swipe = off
|
|
||||||
}
|
|
||||||
|
|
||||||
misc {
|
|
||||||
force_default_wallpaper = 0
|
|
||||||
}
|
|
@ -1,115 +0,0 @@
|
|||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
bind = $mod SHIFT, return, exec, $term
|
|
||||||
bind = $mod, d, killactive,
|
|
||||||
bind = $mod, t, togglefloating,
|
|
||||||
bind = $mod, f, fullscreen,
|
|
||||||
bind = $mod, tab, changegroupactive
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
bindl = , XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +2%
|
|
||||||
bindl = , XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -2%
|
|
||||||
bindl = , XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
|
|
||||||
# Utility commands
|
|
||||||
bind = $mod, x, submap, utility
|
|
||||||
submap = utility
|
|
||||||
bind = , s, exec, shutdown now
|
|
||||||
bind = , r, exec, reboot
|
|
||||||
bind = , q, exit,
|
|
||||||
bind = , g, exec, ~/.config/hypr/scripts/gamemode.sh $e
|
|
||||||
binde = , h, resizeactive, -50 0
|
|
||||||
binde = , j, resizeactive, 0 50
|
|
||||||
binde = , k, resizeactive, 0 -50
|
|
||||||
binde = , l, resizeactive, 50 0
|
|
||||||
bind = , 1, exec, ~/.config/hypr/scripts/audio-device-switcher.sh 1 $e
|
|
||||||
bind = , 2, exec, ~/.config/hypr/scripts/audio-device-switcher.sh 2 $e
|
|
||||||
bind = , 3, exec, ~/.config/hypr/scripts/audio-device-switcher.sh 3 $e
|
|
||||||
bind = , v, exec, ~/bin/linux-toggle-vpn $e
|
|
||||||
bind = , p, exec, grimblast copy area $e
|
|
||||||
bind = SHIFT, p, exec, grimblast save area $e
|
|
||||||
bind = , escape, submap, reset
|
|
||||||
submap = reset
|
|
||||||
|
|
||||||
# Group commands
|
|
||||||
bind = $mod, g, submap, group
|
|
||||||
submap = group
|
|
||||||
bind = , g, togglegroup
|
|
||||||
bind = , h, moveintogroup, l
|
|
||||||
bind = , j, moveintogroup, d
|
|
||||||
bind = , k, moveintogroup, u
|
|
||||||
bind = , l, moveintogroup, r
|
|
||||||
bind = , o, moveoutofgroup
|
|
||||||
|
|
||||||
# Reset submap after commands
|
|
||||||
bind = , g, submap, reset
|
|
||||||
bind = , h, submap, reset
|
|
||||||
bind = , j, submap, reset
|
|
||||||
bind = , k, submap, reset
|
|
||||||
bind = , l, submap, reset
|
|
||||||
bind = , o, submap, reset
|
|
||||||
bind = , escape, submap, reset
|
|
||||||
submap = reset
|
|
||||||
|
|
||||||
# Master and stack
|
|
||||||
bind = $mod, j, layoutmsg, cyclenext
|
|
||||||
bind = $mod, k, layoutmsg, cycleprev
|
|
||||||
bind = $mod SHIFT, j, layoutmsg, swapnext
|
|
||||||
bind = $mod SHIFT, k, layoutmsg, swapprev
|
|
||||||
bind = $mod, p, focuscurrentorlast
|
|
||||||
bind = $mod, m, layoutmsg, focusmaster
|
|
||||||
bind = $mod SHIFT, m, layoutmsg, swapwithmaster
|
|
||||||
bind = $mod, space, layoutmsg, orientationcycle
|
|
||||||
bind = $mod, period, layoutmsg, addmaster
|
|
||||||
bind = $mod, comma, layoutmsg, removemaster
|
|
||||||
|
|
||||||
# Switch workspaces
|
|
||||||
bind = $mod, 1, workspace, name:I
|
|
||||||
bind = $mod, 2, workspace, name:II
|
|
||||||
bind = $mod, 3, workspace, name:III
|
|
||||||
bind = $mod, 4, workspace, name:IV
|
|
||||||
bind = $mod, q, workspace, name:V
|
|
||||||
bind = $mod, w, workspace, name:VI
|
|
||||||
bind = $mod, e, workspace, name:VII
|
|
||||||
bind = $mod, r, workspace, name:VIII
|
|
||||||
bind = $mod, s, moveworkspacetomonitor,name:X current
|
|
||||||
bind = $mod, s, workspace, name:X
|
|
||||||
|
|
||||||
# Move active window to a workspace
|
|
||||||
bind = $mod SHIFT, 1, movetoworkspacesilent, name:I
|
|
||||||
bind = $mod SHIFT, 2, movetoworkspacesilent, name:II
|
|
||||||
bind = $mod SHIFT, 3, movetoworkspacesilent, name:III
|
|
||||||
bind = $mod SHIFT, 4, movetoworkspacesilent, name:IV
|
|
||||||
bind = $mod SHIFT, q, movetoworkspacesilent, name:V
|
|
||||||
bind = $mod SHIFT, w, movetoworkspacesilent, name:VI
|
|
||||||
bind = $mod SHIFT, e, movetoworkspacesilent, name:VII
|
|
||||||
bind = $mod SHIFT, r, movetoworkspacesilent, name:VIII
|
|
||||||
bind = $mod SHIFT, s, movetoworkspacesilent, name:X
|
|
||||||
|
|
||||||
# move between monitors
|
|
||||||
bind = $mod, h, movefocus, l
|
|
||||||
bind = $mod, l, movefocus, r
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mod + scroll
|
|
||||||
bind = $mod, mouse_down, workspace, e+1
|
|
||||||
bind = $mod, mouse_up, workspace, e-1
|
|
||||||
|
|
||||||
# Move/resize windows with mod + LMB/RMB and dragging
|
|
||||||
bindm = $mod, mouse:272, movewindow
|
|
||||||
bindm = $mod, mouse:273, resizewindow
|
|
||||||
|
|
||||||
# Open applications
|
|
||||||
bind = $mod, a, submap, launcher
|
|
||||||
submap = launcher
|
|
||||||
bind = , r, exec, $term --title launcher -e ~/bin/linux-app-launcher $e
|
|
||||||
bind = , escape, submap, reset
|
|
||||||
submap = reset
|
|
||||||
|
|
||||||
bind = $mod, o, submap, open
|
|
||||||
submap = open
|
|
||||||
bind = , b, exec, google-chrome-stable $e
|
|
||||||
bind = , o, exec, obsidian $e
|
|
||||||
bind = , s, exec, steam $e
|
|
||||||
bind = , d, exec, discord $e
|
|
||||||
bind = , m, exec, mpv $(wl-paste) $e
|
|
||||||
bind = , escape, submap, reset
|
|
||||||
submap = reset
|
|
@ -1,10 +0,0 @@
|
|||||||
# This is an example for a monitors.config
|
|
||||||
# Modify current system and monitor config
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
|
||||||
monitor=MON1,XxY@ZZZ,XxY,1
|
|
||||||
monitor=MON2,XxY@ZZZ,XxY,1
|
|
||||||
|
|
||||||
# Primary/secondary monitor definitions
|
|
||||||
$pri = MON1
|
|
||||||
$sec = MON2
|
|
@ -1,6 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
cards=("HD-Audio Generic" "AudioQuest DragonFly Red v1.0")
|
|
||||||
sink=$(pactl list sinks | grep -E "Sink #|alsa.card_name" | grep -B 1 "${cards[$1-1]}" | grep -v "${cards[$1-1]}")
|
|
||||||
pactl set-default-sink $(echo $sink | cut -d "#" -f 2)
|
|
||||||
notify-send "Active Sink: ${cards[$1-1]}"
|
|
@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
swaybg -c "#{{ .themes.gruvbox.bg0 }}" &
|
|
||||||
sleep .5; swaybg -m center -i ~/.local/share/chezmoi/resources/img/{{ .chezmoi.hostname }}.png
|
|
@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
status=$(gamemoded -s)
|
|
||||||
if [ "$status" == "gamemode is inactive" ]; then
|
|
||||||
gamemoded -r &
|
|
||||||
killall swayidle
|
|
||||||
else
|
|
||||||
killall gamemoded
|
|
||||||
~/.config/hypr/scripts/idle.sh
|
|
||||||
fi
|
|
@ -1,3 +0,0 @@
|
|||||||
swayidle -w \
|
|
||||||
timeout 300 'hyprctl dispatch dpms off' \
|
|
||||||
resume 'hyprctl dispatch dpms on' \
|
|
@ -1,6 +0,0 @@
|
|||||||
# autostart with hyprland
|
|
||||||
exec-once = waybar
|
|
||||||
exec = mako
|
|
||||||
exec = ~/.config/hypr/scripts/idle.sh
|
|
||||||
exec = ~/.config/hypr/scripts/bg.sh
|
|
||||||
exec = blueman-applet
|
|
@ -1,8 +0,0 @@
|
|||||||
windowrulev2 = float, size 40% 40%, center:1, title:^(launcher)$
|
|
||||||
windowrulev2 = workspace name:VIII, title:^(Discord)$
|
|
||||||
windowrulev2 = workspace name:I, title:^(Steam)$
|
|
||||||
windowrulev2 = workspace name:VII, title:Obsidian
|
|
||||||
windowrulev2 = opacity 0.9, 0.85,class:(kitty)
|
|
||||||
|
|
||||||
# Turn off borders for file pickers
|
|
||||||
windowrulev2 = noborder, title:^(Open File)$
|
|
@ -1,9 +0,0 @@
|
|||||||
workspace = name:I, default:true, monitor:$pri
|
|
||||||
workspace = name:II, monitor:$pri
|
|
||||||
workspace = name:III, monitor:$pri
|
|
||||||
workspace = name:IV, monitor:$pri
|
|
||||||
workspace = name:V, default:true, monitor:$sec
|
|
||||||
workspace = name:VI, monitor:$sec
|
|
||||||
workspace = name:VII, monitor:$sec
|
|
||||||
workspace = name:VIII, monitor:$sec
|
|
||||||
workspace = name:X, default:true, on-created-empty:kitty
|
|
@ -1,224 +0,0 @@
|
|||||||
# i3 config file (v4)
|
|
||||||
# TODO: add scratchpads (terminal, password manager, discord, task)
|
|
||||||
# Test a edit!
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- VARIABLES
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
set $HOME /home/tstarr
|
|
||||||
|
|
||||||
set $DISP_PRI HDMI-0
|
|
||||||
set $DISP_SEC DP-3
|
|
||||||
|
|
||||||
set $BOR_WIDTH 4
|
|
||||||
set $GAP_INNER 4
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
|
|
||||||
set $tag1 "1:game"
|
|
||||||
set $tag2 "2:dev"
|
|
||||||
set $tag3 "3:web"
|
|
||||||
set $tag4 "4:dev"
|
|
||||||
set $tag5 "5:web"
|
|
||||||
set $tag6 "6:web"
|
|
||||||
set $tag7 "7:web"
|
|
||||||
set $tag8 "8:comm"
|
|
||||||
|
|
||||||
set $e exec i3-msg mode default
|
|
||||||
|
|
||||||
set $mode_power "[r]eboot | [s]hutdown"
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- COLORS
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# class border bground text indicator child_border
|
|
||||||
client.focused #bd93f9 #bd93f9 #F8F8F2 #bd93f9 #bd93f9
|
|
||||||
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 3
|
|
||||||
default_floating_border pixel 3
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- 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-warrior"] floating enable, \
|
|
||||||
resize set 1500 px 800 px, \
|
|
||||||
move position 530 px 320 px
|
|
||||||
|
|
||||||
for_window [class="Blueman-manager"] floating enable, \
|
|
||||||
resize set 1000 px 800 px, \
|
|
||||||
move position 780 px 320 px
|
|
||||||
|
|
||||||
for_window [class="scratch-nb"] 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"
|
|
||||||
for_window [class="discord"] move container to workspace $tag8
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- KEY BINDINGS
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# [p]ower commands
|
|
||||||
bindsym $mod+p mode $mode_power
|
|
||||||
mode $mode_power {
|
|
||||||
bindsym s exec loginctl poweroff
|
|
||||||
bindsym r exec loginctl reboot
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
# [x]utility commands
|
|
||||||
bindsym $mod+x mode utility
|
|
||||||
mode utility {
|
|
||||||
bindsym q exit
|
|
||||||
bindsym r restart
|
|
||||||
bindsym p exec "rofi-rbw", $e
|
|
||||||
# TODO: gamemode (mod+Ctrl+g). Needs script to toggle
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
# layout commands
|
|
||||||
bindsym $mod+Ctrl+t splitv; layout tabbed
|
|
||||||
bindsym $mod+Ctrl+v layout splitv
|
|
||||||
bindsym $mod+Ctrl+s layout splith
|
|
||||||
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
|
|
||||||
bindsym $mod+Ctrl+c move position center
|
|
||||||
|
|
||||||
# program management
|
|
||||||
bindsym $mod+d kill
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
bindsym $mod+t floating toggle
|
|
||||||
bindsym $mod+s sticky toggle
|
|
||||||
bindsym $mod+Tab focus mode_toggle
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# spatial container management
|
|
||||||
bindsym $mod+h exec $HOME/.config/i3/scripts/tabfocus.sh "h"
|
|
||||||
bindsym $mod+j exec $HOME/.config/i3/scripts/tabfocus.sh "j"
|
|
||||||
bindsym $mod+k exec $HOME/.config/i3/scripts/tabfocus.sh "k"
|
|
||||||
bindsym $mod+l exec $HOME/.config/i3/scripts/tabfocus.sh "l"
|
|
||||||
bindsym $mod+Shift+h move left
|
|
||||||
bindsym $mod+Shift+j move down
|
|
||||||
bindsym $mod+Shift+k move up
|
|
||||||
bindsym $mod+Shift+l move right
|
|
||||||
bindsym $mod+minus split v
|
|
||||||
bindsym $mod+backslash split h
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# audio
|
|
||||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume 0 +2%
|
|
||||||
bindsym XF86AudioLowerVolume exec pactl set-sink-volume 0 -2%
|
|
||||||
bindsym XF86AudioMute exec pactl set-sink-mute 0 toggle
|
|
||||||
|
|
||||||
# [o]pen applications
|
|
||||||
bindsym $mod+Return exec alacritty
|
|
||||||
bindsym $mod+a exec rofi -show drun -show-icons
|
|
||||||
bindsym $mod+Shift+a exec rofi -show window -show-icons
|
|
||||||
bindsym $mod+o mode open
|
|
||||||
mode open {
|
|
||||||
bindsym b exec flatpak run org.mozilla.firefox, $e
|
|
||||||
bindsym s exec steam, $e
|
|
||||||
bindsym d exec flatpak run com.discordapp.Discord, $e
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
# s[c]ratchpads commands
|
|
||||||
bindsym $mod+c mode scratch
|
|
||||||
mode scratch {
|
|
||||||
bindsym Return exec $HOME/.config/i3/scripts/scratch.sh \
|
|
||||||
'scratch-term' 'alacritty', $e
|
|
||||||
bindsym n exec $HOME/.config/i3/scripts/scratch.sh \
|
|
||||||
'scratch-nb' 'alacritty -e tmuxinator start nb', $e
|
|
||||||
bindsym t exec $HOME/.config/i3/scripts/scratch.sh \
|
|
||||||
'scratch-warrior' 'alacritty -e tmuxinator start task', $e
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- AUTOSTART WITH I3
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
exec --no-startup-id "autorandr --change && i3-msg restart"
|
|
||||||
exec --no-startup-id "pipewire & pipewire-pulse &"
|
|
||||||
exec --no-startup-id "udiskie &"
|
|
||||||
exec_always --no-startup-id "$HOME/.config/i3/scripts/autolayout.sh"
|
|
||||||
exec_always --no-startup-id "$HOME/.config/i3/scripts/polybar.sh"
|
|
||||||
exec_always --no-startup-id "blueman-applet"
|
|
||||||
exec_always --no-startup-id "nm-applet"
|
|
||||||
exec_always --no-startup-id "flameshot"
|
|
||||||
exec_always --no-startup-id "xsetroot -solid '#282A36'"
|
|
@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import i3ipc
|
|
||||||
|
|
||||||
i3 = i3ipc.Connection()
|
|
||||||
|
|
||||||
def on_window_event(i3, e):
|
|
||||||
focused_container = i3.get_tree().find_focused().parent
|
|
||||||
# Get parent layout of focused window
|
|
||||||
parent_layout = focused_container.layout
|
|
||||||
# Get number of windows in focues container
|
|
||||||
num_parent_windows = len(focused_container.nodes)
|
|
||||||
# Get number of windows in workspace
|
|
||||||
workspace = i3.get_tree().find_focused().workspace()
|
|
||||||
num_workspace_windows = len(workspace.leaves())
|
|
||||||
if num_parent_windows > 1 and parent_layout != "tabbed":
|
|
||||||
i3.command("splitv; layout tabbed")
|
|
||||||
elif num_workspace_windows == 1:
|
|
||||||
i3.command("layout splith")
|
|
||||||
|
|
||||||
# Subscribe to window events
|
|
||||||
i3.on("window", on_window_event)
|
|
||||||
|
|
||||||
# Start the main loop
|
|
||||||
i3.main()
|
|
@ -1,11 +0,0 @@
|
|||||||
|
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
# Terminate already running bar instances
|
|
||||||
pkill clipmenud
|
|
||||||
|
|
||||||
# Wait until the processes have been shut down
|
|
||||||
while pgrep -x clipmenud >/dev/null; do sleep 1; done
|
|
||||||
|
|
||||||
# Launch clipmenud
|
|
||||||
clipmenud &
|
|
@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
# Terminate already running bar instances
|
|
||||||
pkill polybar
|
|
||||||
|
|
||||||
# Wait until the processes have been shut down
|
|
||||||
while pgrep -x polybar >/dev/null; do sleep 1; done
|
|
||||||
|
|
||||||
# Launch polybar
|
|
||||||
polybar -c {{ .chezmoi.homeDir }}/.config/polybar/dracula &
|
|
@ -1,34 +0,0 @@
|
|||||||
#!/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
|
|
@ -1,27 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import i3ipc
|
|
||||||
import sys
|
|
||||||
|
|
||||||
move_normal = {"h": "focus left",
|
|
||||||
"j": "focus down",
|
|
||||||
"k": "focus up",
|
|
||||||
"l": "focus right"}
|
|
||||||
|
|
||||||
move_tabbed = {"h": "focus parent; focus left",
|
|
||||||
"j": "focus right",
|
|
||||||
"k": "focus left",
|
|
||||||
"l": "focus parent; focus right"}
|
|
||||||
|
|
||||||
i3 = i3ipc.Connection()
|
|
||||||
|
|
||||||
# Get the focused container
|
|
||||||
focused = i3.get_tree().find_focused()
|
|
||||||
|
|
||||||
# Get the layout of the parent container
|
|
||||||
layout = focused.parent.layout
|
|
||||||
|
|
||||||
if layout == "tabbed":
|
|
||||||
i3.command(move_tabbed[sys.argv[1]])
|
|
||||||
else:
|
|
||||||
i3.command(move_normal[sys.argv[1]])
|
|
@ -1,15 +0,0 @@
|
|||||||
[calendars]
|
|
||||||
|
|
||||||
[[personal_calendar_local]]
|
|
||||||
path = ~/.calendars/*
|
|
||||||
type = discover
|
|
||||||
|
|
||||||
[locale]
|
|
||||||
timeformat = %H:%M
|
|
||||||
dateformat = %d/%m/%Y
|
|
||||||
longdateformat = %d/%m/%Y
|
|
||||||
datetimeformat = %d/%m/%Y %H:%M
|
|
||||||
longdatetimeformat = %d/%m/%Y %H:%M
|
|
||||||
|
|
||||||
[default]
|
|
||||||
default_calendar = 7d17a5ef-b32c-0782-9f29-c95bfb1a4ee0
|
|
@ -1,54 +0,0 @@
|
|||||||
# example configuration file for khard version > 0.14.0
|
|
||||||
# place it under ~/.config/khard/khard.conf
|
|
||||||
# This file is parsed by the configobj library. The syntax is described at
|
|
||||||
# https://configobj.readthedocs.io/en/latest/configobj.html#the-config-file-format
|
|
||||||
|
|
||||||
[addressbooks]
|
|
||||||
[[personal]]
|
|
||||||
path = ~/.contacts/0d4b05d1-31b6-d5a1-7a8e-a9d0b17437c6
|
|
||||||
|
|
||||||
[general]
|
|
||||||
debug = no
|
|
||||||
default_action = list
|
|
||||||
# These are either strings or comma seperated lists
|
|
||||||
editor = nvim, -i, NONE
|
|
||||||
merge_editor = vimdiff
|
|
||||||
|
|
||||||
[contact table]
|
|
||||||
# display names by first or last name: first_name / last_name / formatted_name
|
|
||||||
display = first_name
|
|
||||||
# group by address book: yes / no
|
|
||||||
group_by_addressbook = no
|
|
||||||
# reverse table ordering: yes / no
|
|
||||||
reverse = no
|
|
||||||
# append nicknames to name column: yes / no
|
|
||||||
show_nicknames = no
|
|
||||||
# show uid table column: yes / no
|
|
||||||
show_uids = yes
|
|
||||||
# show kind table column: yes / no
|
|
||||||
show_kinds = no
|
|
||||||
# sort by first or last name: first_name / last_name / formatted_name
|
|
||||||
sort = last_name
|
|
||||||
# localize dates: yes / no
|
|
||||||
localize_dates = yes
|
|
||||||
# set a comma separated list of preferred phone number types in descending priority
|
|
||||||
# or nothing for non-filtered alphabetical order
|
|
||||||
preferred_phone_number_type = pref, cell, home
|
|
||||||
# set a comma separated list of preferred email address types in descending priority
|
|
||||||
# or nothing for non-filtered alphabetical order
|
|
||||||
preferred_email_address_type = pref, work, home
|
|
||||||
|
|
||||||
[vcard]
|
|
||||||
# extend contacts with your own private objects
|
|
||||||
# these objects are stored with a leading "X-" before the object name in the vcard files
|
|
||||||
# every object label may only contain letters, digits and the - character
|
|
||||||
# example:
|
|
||||||
# private_objects = Jabber, Skype, Twitter
|
|
||||||
# default: , (the empty list)
|
|
||||||
private_objects = Jabber, Skype, Twitter
|
|
||||||
# preferred vcard version: 3.0 / 4.0
|
|
||||||
preferred_version = 3.0
|
|
||||||
# Look into source vcf files to speed up search queries: yes / no
|
|
||||||
search_in_source_files = no
|
|
||||||
# skip unparsable vcard files: yes / no
|
|
||||||
skip_unparsable = no
|
|
@ -1,24 +0,0 @@
|
|||||||
sort=-time
|
|
||||||
layer=overlay
|
|
||||||
background-color=#{{ .themes.gruvbox.bg0 }}
|
|
||||||
text-color=#{{ .themes.gruvbox.fg }}
|
|
||||||
width=300
|
|
||||||
height=110
|
|
||||||
border-size=2
|
|
||||||
border-radius=5
|
|
||||||
icons=0
|
|
||||||
max-icon-size=64
|
|
||||||
default-timeout=5000
|
|
||||||
ignore-timeout=1
|
|
||||||
font=monospace 10
|
|
||||||
anchor=top-center
|
|
||||||
|
|
||||||
[urgency=low]
|
|
||||||
border-color=#{{ .themes.gruvbox.green }}
|
|
||||||
|
|
||||||
[urgency=normal]
|
|
||||||
border-color=#{{ .themes.gruvbox.yellow }}
|
|
||||||
|
|
||||||
[urgency=high]
|
|
||||||
border-color=#{{ .themes.gruvbox.red }}
|
|
||||||
default-timeout=0
|
|
@ -1,390 +0,0 @@
|
|||||||
# 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"
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
@ -1,126 +0,0 @@
|
|||||||
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"
|
|
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
1143
|
|
@ -1,15 +0,0 @@
|
|||||||
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
|
|
@ -1,544 +0,0 @@
|
|||||||
##############################################################################
|
|
||||||
## 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
|
|
||||||
#
|
|
@ -1,86 +0,0 @@
|
|||||||
# Shadow
|
|
||||||
shadow = true;
|
|
||||||
no-dnd-shadow = true;
|
|
||||||
no-dock-shadow = true;
|
|
||||||
shadow-radius = 12.0;
|
|
||||||
shadow-offset-x = -12;
|
|
||||||
shadow-offset-y = -12;
|
|
||||||
shadow-opacity = 0.7;
|
|
||||||
# shadow-red = 0.0;
|
|
||||||
# shadow-green = 0.0;
|
|
||||||
# shadow-blue = 0.0;
|
|
||||||
#shadow-exclude = [
|
|
||||||
#"name = 'Notification'",
|
|
||||||
#"class_g = 'Conky'",
|
|
||||||
#"class_g ?= 'Notify-osd'",
|
|
||||||
#"class_g = 'Cairo-clock'",
|
|
||||||
#"_GTK_FRAME_EXTENTS@:c"
|
|
||||||
#];
|
|
||||||
# shadow-exclude = "n:e:Notification";
|
|
||||||
# shadow-exclude-reg = "x10+0+0";
|
|
||||||
# xinerama-shadow-crop = true;
|
|
||||||
|
|
||||||
# Opacity
|
|
||||||
#menu-opacity = 0.9;
|
|
||||||
#inactive-opacity = 0.9;
|
|
||||||
#active-opacity = 1.0;
|
|
||||||
#frame-opacity = 0.7;
|
|
||||||
#inactive-opacity-override = true;
|
|
||||||
#alpha-step = 0.06;
|
|
||||||
#inactive-dim = 0.2;
|
|
||||||
#inactive-dim-fixed = true;
|
|
||||||
#blur-background = true;
|
|
||||||
#blur-background-frame = true;
|
|
||||||
#blur-kern = "3x3box";
|
|
||||||
#blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
|
|
||||||
#blur-background-fixed = true;
|
|
||||||
#blur-background-exclude = [
|
|
||||||
#"window_type = 'dock'",
|
|
||||||
#"window_type = 'desktop'",
|
|
||||||
#"_GTK_FRAME_EXTENTS@:c"
|
|
||||||
#];
|
|
||||||
#opacity-rule = [ "80:class_g = 'URxvt'" ];
|
|
||||||
|
|
||||||
# Fading
|
|
||||||
fading = true;
|
|
||||||
fade-delta = 2;
|
|
||||||
fade-in-step = 0.03;
|
|
||||||
fade-out-step = 0.04;
|
|
||||||
#no-fading-openclose = true;
|
|
||||||
#no-fading-destroyed-argb = true;
|
|
||||||
#fade-exclude = [ ];
|
|
||||||
|
|
||||||
# Other
|
|
||||||
backend = "xrender";
|
|
||||||
mark-wmwin-focused = true;
|
|
||||||
mark-ovredir-focused = true;
|
|
||||||
# use-ewmh-active-win = true;
|
|
||||||
detect-rounded-corners = true;
|
|
||||||
detect-client-opacity = true;
|
|
||||||
vsync = false;
|
|
||||||
dbe = false;
|
|
||||||
paint-on-overlay = true;
|
|
||||||
# sw-opti = true;
|
|
||||||
# unredir-if-possible = true;
|
|
||||||
# unredir-if-possible-delay = 5000;
|
|
||||||
# unredir-if-possible-exclude = [ ];
|
|
||||||
focus-exclude = [ "class_g = 'Cairo-clock'" ];
|
|
||||||
detect-transient = true;
|
|
||||||
detect-client-leader = false;
|
|
||||||
invert-color-include = [ ];
|
|
||||||
# resize-damage = 1;
|
|
||||||
|
|
||||||
# GLX backend
|
|
||||||
# glx-no-stencil = true;
|
|
||||||
glx-copy-from-front = false;
|
|
||||||
# glx-use-copysubbuffermesa = true;
|
|
||||||
# glx-no-rebind-pixmap = true;
|
|
||||||
# glx-use-gpushader4 = true;
|
|
||||||
# xrender-sync = true;
|
|
||||||
# xrender-sync-fence = true;
|
|
||||||
|
|
||||||
# Window type settings
|
|
||||||
wintypes:
|
|
||||||
{
|
|
||||||
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; };
|
|
||||||
};
|
|
@ -1,23 +0,0 @@
|
|||||||
width = 100%
|
|
||||||
height = 20
|
|
||||||
radius = 0
|
|
||||||
line-size = 0
|
|
||||||
bottom = false
|
|
||||||
|
|
||||||
font-0 = "JetBrainsMono Nerd Font:size=11;2"
|
|
||||||
font-1 = "JetBrainsMono Nerd Font:style=Bold:size=12;2"
|
|
||||||
font-2 = "JetBrainsMono Nerd Font:size=12;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
|
|
@ -1,127 +0,0 @@
|
|||||||
[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 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/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
|
|
@ -1,28 +0,0 @@
|
|||||||
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'
|
|
@ -1,88 +0,0 @@
|
|||||||
"""
|
|
||||||
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)
|
|
@ -1,6 +0,0 @@
|
|||||||
from os.path import expanduser
|
|
||||||
from yaml import safe_load
|
|
||||||
|
|
||||||
# Get color config from pywal
|
|
||||||
wal_loc = expanduser("~/.config/qtile/themes/monokai.yml")
|
|
||||||
wal = safe_load(open(wal_loc))
|
|
@ -1,87 +0,0 @@
|
|||||||
# 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))
|
|
@ -1,7 +0,0 @@
|
|||||||
#!/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
|
|
@ -1,13 +0,0 @@
|
|||||||
#!/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
|
|
@ -1,28 +0,0 @@
|
|||||||
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"))
|
|
||||||
])
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
|||||||
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")),
|
|
||||||
|
|
||||||
]]
|
|
@ -1,34 +0,0 @@
|
|||||||
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,
|
|
||||||
)
|
|
@ -1,14 +0,0 @@
|
|||||||
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())
|
|
||||||
]
|
|
@ -1,4 +0,0 @@
|
|||||||
from os import path
|
|
||||||
|
|
||||||
# Define the path for qtile
|
|
||||||
qtile_path = path.join(path.expanduser('~'), ".config", "qtile")
|
|
@ -1,27 +0,0 @@
|
|||||||
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
|
|
@ -1,9 +0,0 @@
|
|||||||
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)),
|
|
||||||
]
|
|
@ -1,120 +0,0 @@
|
|||||||
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="Jet Brains Mono",
|
|
||||||
fontsize=14,
|
|
||||||
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=" ",
|
|
||||||
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"]),
|
|
||||||
]
|
|
@ -1,19 +0,0 @@
|
|||||||
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"
|
|
@ -1,41 +0,0 @@
|
|||||||
wallpaper: ""
|
|
||||||
|
|
||||||
special:
|
|
||||||
background: "#221e2d"
|
|
||||||
foreground: "#d1d1d1"
|
|
||||||
cursor: "#d1d1d1"
|
|
||||||
|
|
||||||
colors:
|
|
||||||
color0: "#272822"
|
|
||||||
color8: "#75715e"
|
|
||||||
color1: "#f92672"
|
|
||||||
color9: "#f92672"
|
|
||||||
color2: "#a6e22e"
|
|
||||||
color10: "#a6e22e"
|
|
||||||
color3: "#f4bf75"
|
|
||||||
color11: "#f4bf75"
|
|
||||||
color4: "#66d9ef"
|
|
||||||
color12: "#66d9ef"
|
|
||||||
color5: "#ae81ff"
|
|
||||||
color13: "#ae81ff"
|
|
||||||
color6: "#a1efe4"
|
|
||||||
color14: "#a1efe4"
|
|
||||||
color7: "#f8f8f2"
|
|
||||||
color15: "#f9f8f5"
|
|
||||||
|
|
||||||
|
|
||||||
# dark2 = "#19181a",
|
|
||||||
# dark1 = "#221f22",
|
|
||||||
# background = "#2d2a2e",
|
|
||||||
# text = "#fcfcfa",
|
|
||||||
# accent1 = "#ff6188",
|
|
||||||
# accent2 = "#fc9867",
|
|
||||||
# accent3 = "#ffd866",
|
|
||||||
# accent4 = "#a9dc76",
|
|
||||||
# accent5 = "#78dce8",
|
|
||||||
# accent6 = "#ab9df2",
|
|
||||||
# dimmed1 = "#c1c0c0",
|
|
||||||
# dimmed2 = "#939293", -- border
|
|
||||||
# dimmed3 = "#727072",
|
|
||||||
# dimmed4 = "#5b595c",
|
|
||||||
# dimmed5 = "#403e41",
|
|
@ -1,140 +0,0 @@
|
|||||||
* {
|
|
||||||
/* Dracula theme colour palette */
|
|
||||||
drac-bgd: #282a36;
|
|
||||||
drac-cur: #44475a;
|
|
||||||
drac-fgd: #f8f8f2;
|
|
||||||
drac-cmt: #6272a4;
|
|
||||||
drac-cya: #8be9fd;
|
|
||||||
drac-grn: #50fa7b;
|
|
||||||
drac-ora: #ffb86c;
|
|
||||||
drac-pnk: #ff79c6;
|
|
||||||
drac-pur: #bd93f9;
|
|
||||||
drac-red: #ff5555;
|
|
||||||
drac-yel: #f1fa8c;
|
|
||||||
|
|
||||||
font: "Jetbrains Mono 12";
|
|
||||||
|
|
||||||
foreground: @drac-fgd;
|
|
||||||
background-color: @drac-bgd;
|
|
||||||
active-background: @drac-pnk;
|
|
||||||
urgent-background: @drac-red;
|
|
||||||
urgent-foreground: @drac-bgd;
|
|
||||||
|
|
||||||
selected-background: @active-background;
|
|
||||||
selected-urgent-background: @urgent-background;
|
|
||||||
selected-active-background: @active-background;
|
|
||||||
separatorcolor: @active-background;
|
|
||||||
bordercolor: #6272a4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
background-color: @background-color;
|
|
||||||
border: 3;
|
|
||||||
border-radius: 6;
|
|
||||||
border-color: @bordercolor;
|
|
||||||
padding: 5;
|
|
||||||
}
|
|
||||||
#mainbox {
|
|
||||||
border: 0;
|
|
||||||
padding: 5;
|
|
||||||
}
|
|
||||||
#message {
|
|
||||||
border: 1px dash 0px 0px ;
|
|
||||||
border-color: @separatorcolor;
|
|
||||||
padding: 1px ;
|
|
||||||
}
|
|
||||||
#textbox {
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#listview {
|
|
||||||
fixed-height: 0;
|
|
||||||
border: 2px dash 0px 0px ;
|
|
||||||
border-color: @bordercolor;
|
|
||||||
spacing: 2px ;
|
|
||||||
scrollbar: false;
|
|
||||||
padding: 2px 0px 0px ;
|
|
||||||
}
|
|
||||||
#element {
|
|
||||||
border: 0;
|
|
||||||
padding: 1px ;
|
|
||||||
}
|
|
||||||
#element.normal.normal {
|
|
||||||
background-color: @background-color;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.normal.urgent {
|
|
||||||
background-color: @urgent-background;
|
|
||||||
text-color: @urgent-foreground;
|
|
||||||
}
|
|
||||||
#element.normal.active {
|
|
||||||
background-color: @active-background;
|
|
||||||
text-color: @background-color;
|
|
||||||
}
|
|
||||||
#element.selected.normal {
|
|
||||||
background-color: @selected-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.selected.urgent {
|
|
||||||
background-color: @selected-urgent-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.selected.active {
|
|
||||||
background-color: @selected-active-background;
|
|
||||||
text-color: @background-color;
|
|
||||||
}
|
|
||||||
#element.alternate.normal {
|
|
||||||
background-color: @background-color;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.alternate.urgent {
|
|
||||||
background-color: @urgent-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#element.alternate.active {
|
|
||||||
background-color: @active-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#scrollbar {
|
|
||||||
width: 2px ;
|
|
||||||
border: 0;
|
|
||||||
handle-width: 8px ;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
#sidebar {
|
|
||||||
border: 2px dash 0px 0px ;
|
|
||||||
border-color: @separatorcolor;
|
|
||||||
}
|
|
||||||
#button.selected {
|
|
||||||
background-color: @selected-background;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#inputbar {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @foreground;
|
|
||||||
padding: 1px ;
|
|
||||||
}
|
|
||||||
#case-indicator {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @foreground;
|
|
||||||
}
|
|
||||||
#entry {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @drac-cya;
|
|
||||||
}
|
|
||||||
#prompt {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: @drac-grn;
|
|
||||||
}
|
|
||||||
#inputbar {
|
|
||||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
|
||||||
}
|
|
||||||
#textbox-prompt-colon {
|
|
||||||
expand: false;
|
|
||||||
str: ":";
|
|
||||||
margin: 0px 0.3em 0em 0em ;
|
|
||||||
text-color: @drac-grn;
|
|
||||||
}
|
|
||||||
element-text, element-icon {
|
|
||||||
background-color: inherit;
|
|
||||||
text-color: inherit;
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -1,4 +0,0 @@
|
|||||||
# 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).
|
|
@ -1,21 +0,0 @@
|
|||||||
#!/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
|
|
@ -1,293 +0,0 @@
|
|||||||
;;; 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
|
|
@ -1,80 +0,0 @@
|
|||||||
;;; 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
|
|
@ -1,259 +0,0 @@
|
|||||||
# sway config file (v4)
|
|
||||||
# TODO: add scratchpads (terminal, password manager, discord, task)
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- VARIABLES
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
set $DISP_SEC DP-2
|
|
||||||
set $DISP_PRI HDMI-A-1
|
|
||||||
|
|
||||||
set $BOR_WIDTH 3
|
|
||||||
set $GAP_INNER 3
|
|
||||||
|
|
||||||
set $mod Mod4
|
|
||||||
|
|
||||||
set $tag1 "1:game"
|
|
||||||
set $tag2 "2:dev"
|
|
||||||
set $tag3 "3:web"
|
|
||||||
set $tag4 "4:note"
|
|
||||||
set $tag5 "5:web"
|
|
||||||
set $tag6 "6:web"
|
|
||||||
set $tag7 "7:web"
|
|
||||||
set $tag8 "8:comm"
|
|
||||||
|
|
||||||
set $e exec swaymsg mode default
|
|
||||||
|
|
||||||
set $mode_power "[r]eboot | [s]hutdown"
|
|
||||||
|
|
||||||
set $TERM kitty
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- COLORS
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
set $background #282A36
|
|
||||||
set $foreground #F8F8F2
|
|
||||||
set $focused #bd93f9
|
|
||||||
set $inactive #44475A
|
|
||||||
set $urgent #FF5555
|
|
||||||
set $workspace #50FA7B
|
|
||||||
|
|
||||||
# class border bground text indicator child_border
|
|
||||||
client.focused $focused $focused $foreground $focused $focused
|
|
||||||
client.focused_inactive $inactive $inactive $foreground $inactive $inactive
|
|
||||||
client.unfocused $background $background $foreground $background $background
|
|
||||||
client.urgent $inactive $urgent $foreground $urgent $urgent
|
|
||||||
client.placeholder $background $background $foreground $background $background
|
|
||||||
|
|
||||||
client.background $foreground
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- MISC. CONFIGURATION
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
font pango:JetBrains Mono Nerd Font 10
|
|
||||||
default_border pixel 3
|
|
||||||
default_floating_border pixel 3
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- 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"] {
|
|
||||||
floating enable
|
|
||||||
sticky toggle
|
|
||||||
resize set width 22ppt
|
|
||||||
resize set height 22ppt
|
|
||||||
move position 77ppt 77ppt
|
|
||||||
}
|
|
||||||
# Float w3m image previews from newsboat
|
|
||||||
for_window [title="ImageMagick"] floating enable
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- BINDING APPLICATIONS TO WORKSPACE
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
for_window [class="steam"] move container to workspace $tag1
|
|
||||||
for_window [class="discord"] move container to workspace $tag8
|
|
||||||
for_window [class="obsidian"] move container to workspace $tag4
|
|
||||||
for_window [title="launcher"] {
|
|
||||||
floating enable
|
|
||||||
resize set width 40ppt
|
|
||||||
resize set height 40ppt
|
|
||||||
move position 30ppt 30ppt
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- KEY BINDINGS
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Power commands
|
|
||||||
bindsym $mod+p mode $mode_power
|
|
||||||
mode $mode_power {
|
|
||||||
bindsym s exec shutdown now
|
|
||||||
bindsym r exec reboot
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
# Utility commands
|
|
||||||
bindsym $mod+x mode utility
|
|
||||||
mode utility {
|
|
||||||
bindsym q exit
|
|
||||||
bindsym r reload
|
|
||||||
bindsym g exec "~/.config/sway/scripts/gamemode.sh", $e
|
|
||||||
bindsym v exec "~/bin/linux-toggle-vpn", $e
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
# Layout commands
|
|
||||||
bindsym $mod+Ctrl+t splitv; layout tabbed
|
|
||||||
bindsym $mod+Ctrl+v layout splitv
|
|
||||||
bindsym $mod+Ctrl+s layout splith
|
|
||||||
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
|
|
||||||
bindsym $mod+Ctrl+c move position center
|
|
||||||
|
|
||||||
# Program management
|
|
||||||
bindsym $mod+d kill
|
|
||||||
bindsym $mod+f fullscreen toggle
|
|
||||||
bindsym $mod+t floating toggle
|
|
||||||
bindsym $mod+s sticky toggle
|
|
||||||
bindsym $mod+Tab focus mode_toggle
|
|
||||||
floating_modifier $mod
|
|
||||||
|
|
||||||
# Spatial container management
|
|
||||||
bindsym $mod+h exec ~/.config/sway/scripts/tabfocus.sh "h"
|
|
||||||
bindsym $mod+j exec ~/.config/sway/scripts/tabfocus.sh "j"
|
|
||||||
bindsym $mod+k exec ~/.config/sway/scripts/tabfocus.sh "k"
|
|
||||||
bindsym $mod+l exec ~/.config/sway/scripts/tabfocus.sh "l"
|
|
||||||
bindsym $mod+Shift+h move left
|
|
||||||
bindsym $mod+Shift+j move down
|
|
||||||
bindsym $mod+Shift+k move up
|
|
||||||
bindsym $mod+Shift+l move right
|
|
||||||
bindsym $mod+minus split v
|
|
||||||
bindsym $mod+backslash split h
|
|
||||||
bindsym $mod+z splith; layout tabbed; focus parent
|
|
||||||
bindsym $mod+Shift+z layout default
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Audio
|
|
||||||
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +2%
|
|
||||||
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -2%
|
|
||||||
bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
|
|
||||||
|
|
||||||
# Open applications
|
|
||||||
bindsym $mod+Shift+Return exec $TERM
|
|
||||||
bindsym $mod+a mode launcher
|
|
||||||
mode launcher {
|
|
||||||
bindsym r exec "$TERM --title launcher -e ~/bin/linux-app-launcher", $e
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
bindsym $mod+o mode open
|
|
||||||
mode open {
|
|
||||||
bindsym b exec chromium, $e
|
|
||||||
bindsym o exec obsidian, $e
|
|
||||||
bindsym s exec steam || flatpak run com.valvesoftware.Steam, $e
|
|
||||||
bindsym d exec discord || flatpak run com.discordapp.Discord, $e
|
|
||||||
bindsym m exec mpv $(wl-paste), $e
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
for_window [con_mark="SCRATCHPAD_jop"] border pixel 1
|
|
||||||
|
|
||||||
# Scratchpads commands
|
|
||||||
bindsym $mod+Return exec sway-scratchpad \
|
|
||||||
--command "$TERM -e tmuxp load ~/.config/tmuxp/scratch.yml" \
|
|
||||||
--mark scratch \
|
|
||||||
--width 50 \
|
|
||||||
--height 71, $e
|
|
||||||
bindsym $mod+c mode scratch
|
|
||||||
mode scratch {
|
|
||||||
bindsym b exec sway-scratchpad \
|
|
||||||
--command "blueman-manager" \
|
|
||||||
--mark blue \
|
|
||||||
--width 40 \
|
|
||||||
--height 71, $e
|
|
||||||
bindsym Shift+c move scratchpad, $e
|
|
||||||
bindsym c scratchpad show, $e
|
|
||||||
bindsym Escape mode default
|
|
||||||
}
|
|
||||||
|
|
||||||
output $DISP_PRI {
|
|
||||||
resolution 2560x1440@143.973Hz
|
|
||||||
position 2560,0
|
|
||||||
}
|
|
||||||
|
|
||||||
output $DISP_SEC {
|
|
||||||
resolution 2560x1440@143.912Hz
|
|
||||||
position 0,0
|
|
||||||
}
|
|
||||||
|
|
||||||
bar {
|
|
||||||
position top
|
|
||||||
tray_output none
|
|
||||||
pango_markup enabled
|
|
||||||
status_command while ~/.config/sway/scripts/status.sh; do sleep 1; done
|
|
||||||
colors {
|
|
||||||
background #000000
|
|
||||||
focused_workspace $workspace $workspace $background
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
#----- AUTOSTART WITH I3
|
|
||||||
#-------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#exec_always --no-startup-id "configure-gtk"
|
|
||||||
exec_always --no-startup-id "dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK"
|
|
||||||
exec_always --no-startup-id "swaybg -i ~/media/pictures/wallpapers/solar_system_wallpapers/mars.png"
|
|
||||||
exec --no-startup-id "~/.config/sway/scripts/idle.sh"
|
|
||||||
exec --no-startup-id "udiskie"
|
|
@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
status=$(gamemoded -s)
|
|
||||||
if [ "$status" == "gamemode is inactive" ]; then
|
|
||||||
gamemoded -r &
|
|
||||||
killall swayidle
|
|
||||||
else
|
|
||||||
killall gamemoded
|
|
||||||
~/.config/sway/scripts/idle.sh
|
|
||||||
fi
|
|
@ -1,3 +0,0 @@
|
|||||||
swayidle -w \
|
|
||||||
timeout 300 'swaymsg "output * dpms off"' \
|
|
||||||
resume 'swaymsg "output * dpms on"' \
|
|
@ -1,61 +0,0 @@
|
|||||||
# The Sway configuration file in ~/.config/sway/config calls this script.
|
|
||||||
# You should see changes to the status bar after saving this script.
|
|
||||||
|
|
||||||
# Uptime
|
|
||||||
uptime_formatted=$(uptime | awk -F'( |,|:)+' '{d=h=m=0; if ($7=="min") m=$6; else {if ($7~/^day/) {d=$6;h=$8;m=$9} else {h=$6;m=$7}}} {print d+0,"days,",h+0,"hours,",m+0,"minutes"}')
|
|
||||||
# Date
|
|
||||||
date_formatted=$(date "+%a %F %H:%M")
|
|
||||||
|
|
||||||
# Kernel Version
|
|
||||||
linux_version=$(uname -r)
|
|
||||||
|
|
||||||
# Gamemode status
|
|
||||||
status=$(gamemoded -s)
|
|
||||||
if [ "$status" == "gamemode is inactive" ]; then
|
|
||||||
gamemode=🧊
|
|
||||||
else
|
|
||||||
gamemode=🔥
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Volume
|
|
||||||
volume=$(pactl list sinks | grep '^[[:space:]]Volume:' | \
|
|
||||||
head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,')
|
|
||||||
mute=$(pactl list sinks | grep '^[[:space:]]Mute:' | head -n $(( $sink + 1 )) | tail -n 1 | awk '{print $2}')
|
|
||||||
|
|
||||||
if [ "$mute" == "yes" ]; then
|
|
||||||
volume_color='#f92672'
|
|
||||||
else
|
|
||||||
volume_color='#ffffff'
|
|
||||||
fi
|
|
||||||
|
|
||||||
#bluetooth=$(bluetoothctl devices | cut -f2 -d' ' | while read uuid; do bluetoothctl info $uuid; done | grep -e "Name\|Connected: yes" | grep -B1 "yes" | head -n 1 | cut -d\ -f2-)
|
|
||||||
#bluetooth="🫐"
|
|
||||||
|
|
||||||
# Network usage
|
|
||||||
r1=`cat /sys/class/net/enp3s0/statistics/rx_bytes`
|
|
||||||
t1=`cat /sys/class/net/enp3s0/statistics/tx_bytes`
|
|
||||||
sleep 1
|
|
||||||
r2=`cat /sys/class/net/enp3s0/statistics/rx_bytes`
|
|
||||||
t2=`cat /sys/class/net/enp3s0/statistics/tx_bytes`
|
|
||||||
tx=`expr $t2 - $t1`
|
|
||||||
rx=`expr $r2 - $r1`
|
|
||||||
txmb=$(echo "scale = 1; $tx / 1280000" | bc | awk '{printf "%05.1f\n", $0}')
|
|
||||||
rxmb=$(echo "scale = 1; $rx / 1280000" | bc | awk '{printf "%05.1f\n", $0}')
|
|
||||||
|
|
||||||
# Vpn status
|
|
||||||
if [ -f ~/.wg0 ] ; then
|
|
||||||
vpn="wg0"
|
|
||||||
else
|
|
||||||
vpn="none"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Logitech mouse battery status
|
|
||||||
bat=$(cat /sys/class/power_supply/hidpp_battery_[0-9]*/capacity | head -n 1)
|
|
||||||
if [ $bat -lt 20 ]; then
|
|
||||||
bat_color="#f92672"
|
|
||||||
else
|
|
||||||
bat_color="#ffffff"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#<span foreground='#c16b26'>lel</span>
|
|
||||||
echo -e "👍 $txmb 👎 $rxmb | 📡 $vpn | ⬆️ $uptime_formatted | 🔉<span foreground='$volume_color'>$volume%</span> | 🐁<span foreground='$bat_color'>$bat%</span> | $gamemode | 🐧 $linux_version | $date_formatted "
|
|
@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import i3ipc
|
|
||||||
import sys
|
|
||||||
|
|
||||||
move_normal = {"h": "focus left",
|
|
||||||
"j": "focus down",
|
|
||||||
"k": "focus up",
|
|
||||||
"l": "focus right"}
|
|
||||||
|
|
||||||
move_tabbed = {"h": "focus parent; focus left",
|
|
||||||
"j": "focus right",
|
|
||||||
"k": "focus left",
|
|
||||||
"l": "focus parent; focus right"}
|
|
||||||
|
|
||||||
move_tabbed_single = {"h": "focus left",
|
|
||||||
"j": "focus right",
|
|
||||||
"k": "focus left",
|
|
||||||
"l": "focus right"}
|
|
||||||
|
|
||||||
def count_splits(node):
|
|
||||||
if node.layout == 'splitv' or node.layout == 'splith':
|
|
||||||
return 1 + sum(count_splits(n) for n in node.nodes)
|
|
||||||
else:
|
|
||||||
return sum(count_splits(n) for n in node.nodes)
|
|
||||||
|
|
||||||
i3 = i3ipc.Connection()
|
|
||||||
|
|
||||||
# Get the focused container
|
|
||||||
focused = i3.get_tree().find_focused()
|
|
||||||
|
|
||||||
# Get number of splits (v or h)
|
|
||||||
focused_workspace = focused.workspace()
|
|
||||||
num_splits = count_splits(focused_workspace)
|
|
||||||
|
|
||||||
# Get the layout of the parent container
|
|
||||||
layout = focused.parent.layout
|
|
||||||
|
|
||||||
print(num_splits, layout)
|
|
||||||
|
|
||||||
if layout == "tabbed":
|
|
||||||
if num_splits > 0:
|
|
||||||
i3.command(move_tabbed[sys.argv[1]])
|
|
||||||
else:
|
|
||||||
i3.command(move_tabbed_single[sys.argv[1]])
|
|
||||||
else:
|
|
||||||
i3.command(move_normal[sys.argv[1]])
|
|
@ -1,87 +0,0 @@
|
|||||||
" 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
|
|
@ -1,6 +0,0 @@
|
|||||||
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.
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -1,499 +0,0 @@
|
|||||||
" 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
|
|
@ -1,89 +0,0 @@
|
|||||||
{
|
|
||||||
"layer": "top",
|
|
||||||
|
|
||||||
// Choose the order of the modules
|
|
||||||
"modules-left": ["hyprland/workspaces", "hyprland/submap", "hyprland/window"],
|
|
||||||
"modules-center": ["clock"],
|
|
||||||
"modules-right": ["tray", "custom/separator",
|
|
||||||
"network", "custom/separator",
|
|
||||||
"cpu", "custom/separator",
|
|
||||||
"memory", "custom/separator",
|
|
||||||
"custom/laptop_batt", "custom/mouse", "custom/separator",
|
|
||||||
"pulseaudio", "custom/separator",
|
|
||||||
"custom/disk", "custom/bits"],
|
|
||||||
|
|
||||||
"hyprland/workspaces": {
|
|
||||||
"format": "{icon}",
|
|
||||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
|
||||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
|
||||||
},
|
|
||||||
"hyprland/window": {
|
|
||||||
"format": "{}",
|
|
||||||
"max-length": 50,
|
|
||||||
},
|
|
||||||
"hyprland/submap": {
|
|
||||||
"format": " {}"
|
|
||||||
},
|
|
||||||
"custom/bits": {
|
|
||||||
"format": "{}",
|
|
||||||
"interval": 5,
|
|
||||||
"exec": "~/.config/waybar/scripts/bits.sh",
|
|
||||||
},
|
|
||||||
"custom/disk": {
|
|
||||||
"format": " <span color=\"#{{ .themes.gruvbox.red }}\">{}</span>G ",
|
|
||||||
"interval": 30,
|
|
||||||
"exec": "df -h --output=avail / | awk 'NR==2 {sub(/.$/, \"\", $1); print $1}'",
|
|
||||||
},
|
|
||||||
"cpu": {
|
|
||||||
"format": " <span color=\"#{{ .themes.gruvbox.red }}\">{usage}</span>%",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
"memory": {
|
|
||||||
"format": " <span color=\"#{{ .themes.gruvbox.red }}\">{used:0.1f}</span>G"
|
|
||||||
},
|
|
||||||
"network": {
|
|
||||||
"format-wifi": "({signalStrength}%) ",
|
|
||||||
"format-ethernet": "<span color=\"#{{ .themes.gruvbox.green }}\">{ifname}</span>",
|
|
||||||
"tooltip-format": "{ifname} via {gwaddr}",
|
|
||||||
"format-linked": "{ifname} (No IP) ?",
|
|
||||||
"format-disconnected": "",
|
|
||||||
"on-click": "nm-connection-editor"
|
|
||||||
},
|
|
||||||
"custom/laptop_batt": {
|
|
||||||
"format": " <span color=\"#{{ .themes.gruvbox.red }}\">{}</span>% ",
|
|
||||||
"interval": 5,
|
|
||||||
"exec": "cat /sys/class/power_supply/BAT0/capacity",
|
|
||||||
},
|
|
||||||
"custom/mouse": {
|
|
||||||
"format": " <span color=\"#{{ .themes.gruvbox.red }}\">{}</span>% ",
|
|
||||||
"interval": 5,
|
|
||||||
"exec": "cat /sys/class/power_supply/hidpp_battery_[0-9]*/capacity | head -n 1",
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "{icon} <span color=\"#{{ .themes.gruvbox.red }}\">{volume}</span>% {format_source}",
|
|
||||||
"format-muted": " {format_source}",
|
|
||||||
"format-bluetooth": "{icon} <span color=\"#{{ .themes.gruvbox.red }}\">{volume}</span>% {format_source}",
|
|
||||||
"format-bluetooth-muted": " {format_source}",
|
|
||||||
"tooltip": false,
|
|
||||||
|
|
||||||
"format-source": " <span color=\"#{{ .themes.gruvbox.red }}\">{volume}</span>%",
|
|
||||||
"format-source-muted": "",
|
|
||||||
|
|
||||||
"format-icons": {
|
|
||||||
"default": ["", "", ""]
|
|
||||||
},
|
|
||||||
"on-click": "pactl set-sink-mute @DEFAULT_SINK@ toggle",
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"interval": 1,
|
|
||||||
"format": " {:%Y-%m-%d %H:%M:%S}"
|
|
||||||
},
|
|
||||||
"tray": {
|
|
||||||
"spacing": 10
|
|
||||||
},
|
|
||||||
"custom/separator": {
|
|
||||||
"format": " <span color=\"#{{ .themes.gruvbox.green }}\">|</span> ",
|
|
||||||
"interval": "once",
|
|
||||||
"tooltip": false
|
|
||||||
},
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# https://github.com/starr-dusT/dotfiles
|
|
||||||
|
|
||||||
bits=""
|
|
||||||
|
|
||||||
# Gamemode bit
|
|
||||||
if [ "$(gamemoded -s)" != "gamemode is inactive" ]; then
|
|
||||||
bits+="<span color=\"#{{ .themes.gruvbox.blue0 }}\">G</span>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# VPN bit
|
|
||||||
if [ -f ~/.wg0 ]; then
|
|
||||||
bits+="<span color=\"#{{ .themes.gruvbox.purple0 }}\">V</span>"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Print bits if there are any
|
|
||||||
if [ "$bits" != "" ]; then
|
|
||||||
# Seperator
|
|
||||||
echo " | $bits "
|
|
||||||
fi
|
|
@ -1,137 +0,0 @@
|
|||||||
/* Colors */
|
|
||||||
@define-color bg #{{ .themes.gruvbox.bg0 }};
|
|
||||||
@define-color bg2 #{{ .themes.gruvbox.bg1 }};
|
|
||||||
@define-color bg3 #{{ .themes.gruvbox.bg2 }};
|
|
||||||
@define-color fg #{{ .themes.gruvbox.fg }};
|
|
||||||
@define-color red #{{ .themes.gruvbox.red }};
|
|
||||||
@define-color green #{{ .themes.gruvbox.green }};
|
|
||||||
@define-color yellow #{{ .themes.gruvbox.yellow }};
|
|
||||||
@define-color blue0 #{{ .themes.gruvbox.blue0 }};
|
|
||||||
@define-color blue1 #{{ .themes.gruvbox.blue1 }};
|
|
||||||
@define-color purple0 #{{ .themes.gruvbox.purple0 }};
|
|
||||||
@define-color purple1 #{{ .themes.gruvbox.purple1 }};
|
|
||||||
@define-color cyan #{{ .themes.gruvbox.cyan }};
|
|
||||||
|
|
||||||
* {
|
|
||||||
font-family: JetBrains Mono, Symbols Nerd Font Mono;
|
|
||||||
font-size: 12px;
|
|
||||||
border-radius: 0;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
tooltip {
|
|
||||||
background: @bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
/* background-color: rgba(16, 20, 25,0.5); */
|
|
||||||
background-color: @bg;
|
|
||||||
transition-property: background-color;
|
|
||||||
transition-duration: .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar.hidden {
|
|
||||||
opacity: 0.2;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
min-width: 20px;
|
|
||||||
color: @fg;
|
|
||||||
padding: 0 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.visible {
|
|
||||||
background-color: @purple1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
background-color: @red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#submap {
|
|
||||||
background-color: @blue1;
|
|
||||||
padding: 0 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery,
|
|
||||||
#cpu,
|
|
||||||
#memory,
|
|
||||||
#network,
|
|
||||||
#pulseaudio,
|
|
||||||
#pulseaudio#mic,
|
|
||||||
#custom-swayidle,
|
|
||||||
#mode {
|
|
||||||
padding: 0 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
color: @yellow;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@keyframes blink {
|
|
||||||
to {
|
|
||||||
background-color: #ffffff;
|
|
||||||
color: #000000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
color: @fg;
|
|
||||||
padding: 0 10px;
|
|
||||||
border-radius: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cpu {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-disk {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#memory {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network.disconnected {
|
|
||||||
color: @red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio.mic {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-swayidle {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-laptop_batt {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-mouse {
|
|
||||||
color: @fg;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
padding: 0 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#scratchpad {
|
|
||||||
color: @fg;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#scratchpad.empty {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
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"
|
|
@ -1,10 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
status=$(gamemoded -s)
|
|
||||||
if [ "$status" == "gamemode is inactive" ]; then
|
|
||||||
color="#a6e22e"
|
|
||||||
else
|
|
||||||
color="#f92672"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "<fc=$color> </fc>"
|
|
@ -1,19 +0,0 @@
|
|||||||
#!/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="#a6e22e"
|
|
||||||
else
|
|
||||||
color="#f92672"
|
|
||||||
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="#f4bf75"
|
|
||||||
else
|
|
||||||
color1="#a6e22e"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "<fc=$color1> </fc><fc=$color>${voltage}mV</fc>"
|
|
@ -1,12 +0,0 @@
|
|||||||
|
|
||||||
sink=$( pactl list short sinks | sed -e 's,^\([0-9][0-9]*\)[^0-9].*,\1,' | head -n 1 )
|
|
||||||
volume=$( pactl list sinks | grep '^[[:space:]]Volume:' | head -n $(( $SINK + 1 )) | tail -n 1 | sed -e 's,.* \([0-9][0-9]*\)%.*,\1,' )
|
|
||||||
mute=$(pactl list sinks | grep '^[[:space:]]Mute:' | head -n $(( $SINK + 1 )) | tail -n 1 | awk '{print $2}')
|
|
||||||
|
|
||||||
if [ "$mute" == "yes" ]; then
|
|
||||||
color="#f92672"
|
|
||||||
else
|
|
||||||
color="#a6e22e"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "<fc=$color> $volume%</fc>"
|
|
@ -1,19 +0,0 @@
|
|||||||
Config { font = "xft:Jet Brains Mono Nerd Font:pixelsize=12:antialias=true:hinting=true"
|
|
||||||
, bgColor = "#221e2d"
|
|
||||||
, fgColor = "#d1d1d1"
|
|
||||||
, position = Static {xpos = 0, ypos = 0, width = 2560, height = 20}
|
|
||||||
, iconRoot = "X"
|
|
||||||
, allDesktops = True
|
|
||||||
, commands = [ Run Cpu ["-t", " <fc=#F92672><total></fc>%","-H", "2"] 10
|
|
||||||
, Run Memory ["-t", "<fc=#F92672><usedratio></fc>%"] 10
|
|
||||||
, Run Network "enp3s0" [ "-t", "<fc=#F92672><tx></fc>kb/<fc=#F92672><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=#F92672>%StdinReader%</fc>}%date%{%enp3s0% | %mouse% | %volume% | %cpu% | %memory% | %gamemode%"
|
|
||||||
|
|
@ -1,396 +0,0 @@
|
|||||||
-- 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.OnPropertyChange
|
|
||||||
|
|
||||||
-- 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.FocusTracking (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:Jet Brains Mono: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 = "#221e2d"
|
|
||||||
myFocusedBorderColor = "#66d9ef"
|
|
||||||
|
|
||||||
-- Config for xmonad prompts
|
|
||||||
myXPConfig =
|
|
||||||
def { font = myFont
|
|
||||||
, bgColor = "#221e2d"
|
|
||||||
, fgColor = "#d1d1d1"
|
|
||||||
, fgHLight = "#66d9ef"
|
|
||||||
, bgHLight = "#221e2d"
|
|
||||||
, borderColor = "#66d9ef"
|
|
||||||
, 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 = "#66d9ef"
|
|
||||||
, inactiveColor = "#221e2d"
|
|
||||||
, activeBorderColor = "#66d9ef"
|
|
||||||
, inactiveBorderColor = "#221e2d"
|
|
||||||
, activeTextColor = "#221e2d"
|
|
||||||
, inactiveTextColor = "#66d9ef"
|
|
||||||
, decoHeight = 15
|
|
||||||
}
|
|
||||||
|
|
||||||
myStartupHook = do
|
|
||||||
spawnOnce "nitrogen --restore &"
|
|
||||||
spawnOnce "lxsession &"
|
|
||||||
spawnOnce "udiskie &"
|
|
||||||
spawnOnce "dunst -conf ~/.config/dunst/dunstrc &"
|
|
||||||
spawnOnce "picom &"
|
|
||||||
|
|
||||||
-- 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 = "flatpak run com.discordapp.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 = onXPropertyChange "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)
|
|
||||||
-- 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 Backward (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 "firefox")
|
|
||||||
-- 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-", windowGo),
|
|
||||||
("M-S-", windowSwap),
|
|
||||||
("M-C-", screenGo)]
|
|
||||||
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 "#a6e22e" "" . wrap "[" "]" -- Current workspace in xmobar
|
|
||||||
, ppVisible = xmobarColor "#ae81ff" "" -- Visible but not current workspace
|
|
||||||
, ppHidden = xmobarColor "#ae81ff" "" . wrap "*" "" -- Hidden workspaces in xmobar
|
|
||||||
, ppHiddenNoWindows= \( _ ) -> "" -- Only shows visible workspaces. Useful for TreeSelect.
|
|
||||||
, ppTitle = xmobarColor "#d1d1d1" "" . shorten 60 -- Title of active window in xmobar
|
|
||||||
, ppSep = "<fc=" ++ "#d1d1d1" ++ "> | </fc>" -- Separators in xmobar
|
|
||||||
, ppUrgent = xmobarColor "#a6e22e" "" . 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
|
|
@ -1,356 +0,0 @@
|
|||||||
#+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
|
|
@ -1,101 +0,0 @@
|
|||||||
# NOTE SETTINGS
|
|
||||||
[note]
|
|
||||||
|
|
||||||
# Language used when writing notes.
|
|
||||||
# This is used to generate slugs or with date formats.
|
|
||||||
language = "en"
|
|
||||||
|
|
||||||
# The default title used for new note, if no `--title` flag is provided.
|
|
||||||
default-title = "Untitled"
|
|
||||||
|
|
||||||
# Template used to generate a note's filename, without extension.
|
|
||||||
filename = "{{id}}-{{slug title}}"
|
|
||||||
|
|
||||||
# The file extension used for the notes.
|
|
||||||
extension = "md"
|
|
||||||
|
|
||||||
# Template used to generate a note's content.
|
|
||||||
# If not an absolute path, it is relative to .zk/templates/
|
|
||||||
template = "default.md"
|
|
||||||
|
|
||||||
# Length of the generated IDs.
|
|
||||||
id-length = 4
|
|
||||||
|
|
||||||
# Letter case for the random IDs, among lower, upper or mixed.
|
|
||||||
id-case = "lower"
|
|
||||||
|
|
||||||
# EXTRA VARIABLES
|
|
||||||
[extra]
|
|
||||||
author = "tstarr"
|
|
||||||
|
|
||||||
[group.daily]
|
|
||||||
# Directories listed here will automatically use this group when creating notes.
|
|
||||||
paths = ["journal/daily"]
|
|
||||||
|
|
||||||
[group.daily.note]
|
|
||||||
# %Y-%m-%d is actually the default format, so you could use {{format-date now}} instead.
|
|
||||||
filename = "{{format-date now '%Y-%m-%d'}}"
|
|
||||||
extension = "md"
|
|
||||||
template = "daily.md"
|
|
||||||
|
|
||||||
# MARKDOWN SETTINGS
|
|
||||||
[format.markdown]
|
|
||||||
|
|
||||||
# Format used to generate links between notes.
|
|
||||||
link-format = "markdown"
|
|
||||||
|
|
||||||
# Indicates whether a link's path will be percent-encoded.
|
|
||||||
link-encode-path = true
|
|
||||||
|
|
||||||
# Indicates whether a link's path file extension will be removed.
|
|
||||||
link-drop-extension = true
|
|
||||||
|
|
||||||
# Enable support for #hashtags.
|
|
||||||
hashtags = false
|
|
||||||
|
|
||||||
# Enable support for :colon:separated:tags:.
|
|
||||||
colon-tags = true
|
|
||||||
|
|
||||||
# EXTERNAL TOOLS
|
|
||||||
[tool]
|
|
||||||
|
|
||||||
# Default editor used to open notes. When not set, the EDITOR or VISUAL
|
|
||||||
editor = "nvim"
|
|
||||||
|
|
||||||
# Default shell used by aliases and commands.
|
|
||||||
shell = "/bin/bash"
|
|
||||||
|
|
||||||
# Pager used to scroll through long output.
|
|
||||||
pager = "less -FIRX"
|
|
||||||
|
|
||||||
# Command used to preview a note during interactive fzf mode.
|
|
||||||
fzf-preview = "bat -p --color always {-1}"
|
|
||||||
|
|
||||||
# LSP
|
|
||||||
[lsp]
|
|
||||||
[lsp.diagnostics]
|
|
||||||
|
|
||||||
# Warn for dead links between notes.
|
|
||||||
dead-link = "error"
|
|
||||||
|
|
||||||
# NAMED FILTERS
|
|
||||||
[filter]
|
|
||||||
recents = "--sort created- --created-after 'last two weeks'"
|
|
||||||
|
|
||||||
# COMMAND ALIASES
|
|
||||||
[alias]
|
|
||||||
|
|
||||||
# Admin
|
|
||||||
commit = '~/.config/zk/scripts/commit.sh $ZK_NOTEBOOK_DIR'
|
|
||||||
push = 'git push origin master'
|
|
||||||
conf = 'chezmoi edit ~/.config/zk/config.toml"'
|
|
||||||
|
|
||||||
# Note Creation/Deletion/Editing
|
|
||||||
ei = "zk edit --interactive && zk commit"
|
|
||||||
view = "zk list --interactive --format {{path}} | xargs bat --color always"
|
|
||||||
daily = 'zk new --no-input "journal/daily" && zk commit'
|
|
||||||
del = 'zk list --interactive --format "{{path}}" | xargs rm && zk commit'
|
|
||||||
bookmark = '~/.config/zk/scripts/bookmark.sh $ZK_NOTEBOOK_DIR && zk commit'
|
|
||||||
|
|
||||||
# Note Searching
|
|
||||||
recipe = "zk edit --interactive --tag recipe"
|
|
@ -1,8 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
cd "$1"
|
|
||||||
echo "Input bookmark name: "
|
|
||||||
read name
|
|
||||||
link=$(wl-paste)
|
|
||||||
echo "- [${name}](${link})" >> "$(zk list --match-strategy exact --match "title: 'Bookmarks'" --format "{{path}}")"
|
|
||||||
cd -
|
|
@ -1,17 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Usage: zk-commit <directory of zk>
|
|
||||||
|
|
||||||
something_changed=`git status --porcelain`
|
|
||||||
if [ -n "$something_changed" ]; then
|
|
||||||
git -C "$1" add .
|
|
||||||
message=$(git -c color.status=false status | sed -n -r -e '1,/Changes to be committed:/ d' \
|
|
||||||
-e '1,3 d' \
|
|
||||||
-e '/^Untracked files:/,$ d' \
|
|
||||||
-e 's/^\s*//' \
|
|
||||||
-e '/./p')
|
|
||||||
git -C "$1" commit -m "$message"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If there are no changes exit with failure
|
|
||||||
exit 1
|
|
@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
echo "TODO"
|
|
@ -1,28 +0,0 @@
|
|||||||
[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"
|
|
@ -1,41 +0,0 @@
|
|||||||
# [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
|
|
||||||
|
|
||||||
### taskwarrior-tui configuration options
|
|
||||||
|
|
||||||
uda.taskwarrior-tui.shortcuts.1=taskopen
|
|
@ -28,7 +28,6 @@
|
|||||||
# Modules
|
# Modules
|
||||||
modules = {
|
modules = {
|
||||||
desktop = {
|
desktop = {
|
||||||
sway.enable = false;
|
|
||||||
gnome = {
|
gnome = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}";
|
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}";
|
||||||
|
@ -35,7 +35,6 @@
|
|||||||
# Modules
|
# Modules
|
||||||
modules = {
|
modules = {
|
||||||
desktop = {
|
desktop = {
|
||||||
sway.enable = false;
|
|
||||||
gnome = {
|
gnome = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/kestrel.png}";
|
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/kestrel.png}";
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
./syncthing.nix
|
./syncthing.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Use zen kernel
|
# Use performance governor for sweet gaming performance!
|
||||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
powerManagement.cpuFreqGovernor = "performance";
|
||||||
|
|
||||||
# Set networking options
|
# Set networking options
|
||||||
networking.hostName = "shivan";
|
networking.hostName = "shivan";
|
||||||
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
# Enable docker
|
# Enable docker
|
||||||
virtualisation.docker.enable = true;
|
virtualisation.docker.enable = true;
|
||||||
|
virtualisation.docker.storageDriver = "btrfs";
|
||||||
|
|
||||||
# Password-less root
|
# Password-less root
|
||||||
security.sudo.extraRules = [{
|
security.sudo.extraRules = [{
|
||||||
@ -31,7 +32,11 @@
|
|||||||
# Modules
|
# Modules
|
||||||
modules = {
|
modules = {
|
||||||
desktop = {
|
desktop = {
|
||||||
sway.enable = true;
|
gnome = {
|
||||||
|
enable = true;
|
||||||
|
# TODO: Add Shivan wallpaper
|
||||||
|
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}";
|
||||||
|
};
|
||||||
browser.enable = true;
|
browser.enable = true;
|
||||||
};
|
};
|
||||||
devel = {
|
devel = {
|
||||||
@ -52,6 +57,7 @@
|
|||||||
virt-manager.enable = false;
|
virt-manager.enable = false;
|
||||||
};
|
};
|
||||||
system = {
|
system = {
|
||||||
|
nipr = true;
|
||||||
secrets.enable = true;
|
secrets.enable = true;
|
||||||
ssh.enable = true;
|
ssh.enable = true;
|
||||||
terminal.enable = true;
|
terminal.enable = true;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, user, inputs, ... }:
|
{ config, lib, pkgs, user, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [ ./keyd.nix ./browser.nix ./gnome.nix ./sway.nix ];
|
imports = [ ./keyd.nix ./browser.nix ./gnome.nix ];
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
bc # Arbitrary-precision arithmetic language.
|
bc # Arbitrary-precision arithmetic language.
|
||||||
@ -13,7 +13,6 @@
|
|||||||
mpv # Media player for playing audio and video files.
|
mpv # Media player for playing audio and video files.
|
||||||
p7zip # Command-line file archiver with high compression ratio.
|
p7zip # Command-line file archiver with high compression ratio.
|
||||||
gimp # GNU Image Manipulation Program for editing and composing raster images.
|
gimp # GNU Image Manipulation Program for editing and composing raster images.
|
||||||
wl-clipboard # Command-line utility to access and manipulate clipboard content in a Wayland session.
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# xdg-desktop-portal settings
|
# xdg-desktop-portal settings
|
||||||
|
@ -1,88 +0,0 @@
|
|||||||
{ config, lib, pkgs, user, inputs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.modules.desktop.sway;
|
|
||||||
|
|
||||||
# currently, there is some friction between sway and gtk:
|
|
||||||
# https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
|
|
||||||
# the suggested way to set gtk settings is with gsettings
|
|
||||||
# for gsettings to work, we need to tell it where the schemas are
|
|
||||||
# using the XDG_DATA_DIR environment variable
|
|
||||||
# run at the end of sway config
|
|
||||||
configure-gtk = pkgs.writeTextFile {
|
|
||||||
name = "configure-gtk";
|
|
||||||
destination = "/bin/configure-gtk";
|
|
||||||
executable = true;
|
|
||||||
text = let
|
|
||||||
schema = pkgs.gsettings-desktop-schemas;
|
|
||||||
datadir = "${schema}/share/gsettings-schemas/${schema.name}";
|
|
||||||
in ''
|
|
||||||
export XDG_DATA_DIRS=${datadir}:$XDG_DATA_DIRS
|
|
||||||
gnome_schema=org.gnome.desktop.interface
|
|
||||||
gsettings set $gnome_schema gtk-theme 'Dracula'
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
in {
|
|
||||||
options.modules.desktop.sway.enable = lib.mkEnableOption "sway";
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
sway # Tiling Wayland compositor and a drop-in replacement for the i3 window manager for X11.
|
|
||||||
swayidle # Idle manager for Wayland, executing actions when the system is idle.
|
|
||||||
swaybg # Wallpaper utility for Wayland, setting the background image.
|
|
||||||
sway-scratchpad # Helper tool for managing scratchpad windows in the Sway window manager.
|
|
||||||
grim # Screenshot utility for Wayland.
|
|
||||||
mako # Lightweight notification daemon for Wayland.
|
|
||||||
libnotify # Library for sending desktop notifications.
|
|
||||||
wdisplays # Utility for managing displays in a Wayland session.
|
|
||||||
playerctl # Command-line utility for controlling media players.
|
|
||||||
wayland # Protocol for a compositor to talk to its clients as well as a C library implementation of that protocol.
|
|
||||||
xwayland # X server running as a Wayland client.
|
|
||||||
configure-gtk # GTK-based utility for configuring various aspects of the desktop environment.
|
|
||||||
xdg-utils # Collection of tools for managing desktop environments based on the XDG specifications.
|
|
||||||
glib # Library providing various core functions for the GNOME project.
|
|
||||||
dracula-theme # Dark theme for various applications and environments.
|
|
||||||
gnome3.adwaita-icon-theme # Default icon theme for GNOME.
|
|
||||||
networkmanagerapplet # GNOME applet for NetworkManager.
|
|
||||||
pcmanfm # Lightweight file manager for X11.
|
|
||||||
udiskie # Removable disk automounter for udisks.
|
|
||||||
pavucontrol # GTK-based volume control utility for PulseAudio.
|
|
||||||
waybar # Highly customizable Wayland bar for Sway and Wlroots-based compositors.
|
|
||||||
(pkgs.waybar.overrideAttrs (oldAttrs: {
|
|
||||||
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
|
|
||||||
})
|
|
||||||
)
|
|
||||||
] ++ [
|
|
||||||
inputs.hyprland-contrib.packages.${pkgs.system}.grimblast # Hyprland version of Grimshot
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg = {
|
|
||||||
portal = {
|
|
||||||
enable = true;
|
|
||||||
wlr.enable = true;
|
|
||||||
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
gvfs.enable = true;
|
|
||||||
blueman.enable = true;
|
|
||||||
printing.enable = true;
|
|
||||||
printing.drivers = [ pkgs.hplip ];
|
|
||||||
avahi.enable = true;
|
|
||||||
avahi.nssmdns4 = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# enable sway window manager
|
|
||||||
programs.sway = {
|
|
||||||
enable = true;
|
|
||||||
wrapperFeatures.gtk = true;
|
|
||||||
};
|
|
||||||
programs.hyprland = {
|
|
||||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user