mirror of
https://github.com/starr-dusT/dotfiles.git
synced 2025-02-13 08:17: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"]
|
||||
type = "git-repo"
|
||||
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 = {
|
||||
desktop = {
|
||||
sway.enable = false;
|
||||
gnome = {
|
||||
enable = true;
|
||||
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}";
|
||||
|
@ -35,7 +35,6 @@
|
||||
# Modules
|
||||
modules = {
|
||||
desktop = {
|
||||
sway.enable = false;
|
||||
gnome = {
|
||||
enable = true;
|
||||
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/kestrel.png}";
|
||||
|
@ -4,8 +4,8 @@
|
||||
./syncthing.nix
|
||||
];
|
||||
|
||||
# Use zen kernel
|
||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||
# Use performance governor for sweet gaming performance!
|
||||
powerManagement.cpuFreqGovernor = "performance";
|
||||
|
||||
# Set networking options
|
||||
networking.hostName = "shivan";
|
||||
@ -14,6 +14,7 @@
|
||||
|
||||
# Enable docker
|
||||
virtualisation.docker.enable = true;
|
||||
virtualisation.docker.storageDriver = "btrfs";
|
||||
|
||||
# Password-less root
|
||||
security.sudo.extraRules = [{
|
||||
@ -31,7 +32,11 @@
|
||||
# Modules
|
||||
modules = {
|
||||
desktop = {
|
||||
sway.enable = true;
|
||||
gnome = {
|
||||
enable = true;
|
||||
# TODO: Add Shivan wallpaper
|
||||
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}";
|
||||
};
|
||||
browser.enable = true;
|
||||
};
|
||||
devel = {
|
||||
@ -52,6 +57,7 @@
|
||||
virt-manager.enable = false;
|
||||
};
|
||||
system = {
|
||||
nipr = true;
|
||||
secrets.enable = true;
|
||||
ssh.enable = true;
|
||||
terminal.enable = true;
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ 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; [
|
||||
bc # Arbitrary-precision arithmetic language.
|
||||
@ -13,7 +13,6 @@
|
||||
mpv # Media player for playing audio and video files.
|
||||
p7zip # Command-line file archiver with high compression ratio.
|
||||
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
|
||||
|
@ -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