clean up old crud

This commit is contained in:
Tyler Starr 2024-08-23 22:33:46 -07:00
parent bf55e3c70e
commit ca0c355550
95 changed files with 10 additions and 16348 deletions

View File

@ -1,15 +1,3 @@
[".themes/dracula"]
type = "archive"
url = "https://github.com/dracula/gtk/archive/master.zip"
exact = true
stripComponents = 1
refreshPeriod = "168h"
[".config/alacritty/themes"]
type = "git-repo"
url = "https://github.com/alacritty/alacritty-theme"
refreshPeriod = "168h"
[".tmux/plugins/tpm"] [".tmux/plugins/tpm"]
type = "git-repo" type = "git-repo"
url = "https://github.com/tmux-plugins/tpm" url = "https://github.com/tmux-plugins/tpm"

View File

@ -1,3 +0,0 @@
#!/bin/sh
#
btrbk -c /home/tstarr/.config/btrbk/home_btrbk.conf run

View File

@ -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

View File

@ -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

View File

@ -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...

View File

@ -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)

View File

@ -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.
)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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]}"

View File

@ -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

View File

@ -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

View File

@ -1,3 +0,0 @@
swayidle -w \
timeout 300 'hyprctl dispatch dpms off' \
resume 'hyprctl dispatch dpms on' \

View File

@ -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

View File

@ -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)$

View 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

View File

@ -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'"

View File

@ -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()

View File

@ -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 &

View File

@ -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 &

View File

@ -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

View File

@ -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]])

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"
#
###############################################################################

View File

@ -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.

View File

@ -1 +0,0 @@
1143

View File

@ -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

View File

@ -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
#

View File

@ -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; };
};

View File

@ -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

View File

@ -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

View File

@ -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'

View File

@ -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)

View File

@ -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))

View File

@ -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))

View File

@ -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

View File

@ -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

View File

@ -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"))
])

View File

@ -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")),
]]

View File

@ -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,
)

View File

@ -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())
]

View File

@ -1,4 +0,0 @@
from os import path
# Define the path for qtile
qtile_path = path.join(path.expanduser('~'), ".config", "qtile")

View File

@ -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

View File

@ -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)),
]

View File

@ -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"]),
]

View File

@ -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"

View File

@ -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",

View File

@ -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

View File

@ -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).

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -1,3 +0,0 @@
swayidle -w \
timeout 300 'swaymsg "output * dpms off"' \
resume 'swaymsg "output * dpms on"' \

View File

@ -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 "

View File

@ -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]])

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
},
}

View File

@ -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

View File

@ -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;
}

View File

@ -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"

View File

@ -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>"

View File

@ -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>"

View File

@ -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>"

View File

@ -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%"

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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 -

View File

@ -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

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
echo "TODO"

View File

@ -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"

View File

@ -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

View File

@ -28,7 +28,6 @@
# Modules # Modules
modules = { modules = {
desktop = { desktop = {
sway.enable = false;
gnome = { gnome = {
enable = true; enable = true;
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}"; wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}";

View File

@ -35,7 +35,6 @@
# Modules # Modules
modules = { modules = {
desktop = { desktop = {
sway.enable = false;
gnome = { gnome = {
enable = true; enable = true;
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/kestrel.png}"; wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/kestrel.png}";

View File

@ -4,8 +4,8 @@
./syncthing.nix ./syncthing.nix
]; ];
# Use zen kernel # Use performance governor for sweet gaming performance!
boot.kernelPackages = pkgs.linuxPackages_zen; powerManagement.cpuFreqGovernor = "performance";
# Set networking options # Set networking options
networking.hostName = "shivan"; networking.hostName = "shivan";
@ -14,6 +14,7 @@
# Enable docker # Enable docker
virtualisation.docker.enable = true; virtualisation.docker.enable = true;
virtualisation.docker.storageDriver = "btrfs";
# Password-less root # Password-less root
security.sudo.extraRules = [{ security.sudo.extraRules = [{
@ -31,7 +32,11 @@
# Modules # Modules
modules = { modules = {
desktop = { desktop = {
sway.enable = true; gnome = {
enable = true;
# TODO: Add Shivan wallpaper
wallpaper = "file://${../../../resources/img/wallpapers/gruvbox/bulwark.png}";
};
browser.enable = true; browser.enable = true;
}; };
devel = { devel = {
@ -52,6 +57,7 @@
virt-manager.enable = false; virt-manager.enable = false;
}; };
system = { system = {
nipr = true;
secrets.enable = true; secrets.enable = true;
ssh.enable = true; ssh.enable = true;
terminal.enable = true; terminal.enable = true;

View File

@ -1,6 +1,6 @@
{ config, lib, pkgs, user, inputs, ... }: { config, lib, pkgs, user, inputs, ... }:
{ {
imports = [ ./keyd.nix ./browser.nix ./gnome.nix ./sway.nix ]; imports = [ ./keyd.nix ./browser.nix ./gnome.nix ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
bc # Arbitrary-precision arithmetic language. bc # Arbitrary-precision arithmetic language.
@ -13,7 +13,6 @@
mpv # Media player for playing audio and video files. mpv # Media player for playing audio and video files.
p7zip # Command-line file archiver with high compression ratio. p7zip # Command-line file archiver with high compression ratio.
gimp # GNU Image Manipulation Program for editing and composing raster images. gimp # GNU Image Manipulation Program for editing and composing raster images.
wl-clipboard # Command-line utility to access and manipulate clipboard content in a Wayland session.
]; ];
# xdg-desktop-portal settings # xdg-desktop-portal settings

View File

@ -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;
};
};
}