Compare commits
25 Commits
f2f205d6ee
...
master
Author | SHA1 | Date | |
---|---|---|---|
548df675a8 | |||
e25042ec71 | |||
4c453d7941 | |||
f82e7884e5 | |||
f76d82dab1 | |||
d63cab3c9f | |||
ede40bf56e | |||
1d2d92f5ef | |||
cdbfe450e7 | |||
6809a5aea8 | |||
b69a838227 | |||
de6b5fad44 | |||
0265d2e1cd | |||
a98d8d50f3 | |||
fb93f64845 | |||
09e8c64906 | |||
defda07053 | |||
e73d917430 | |||
40b1f69ffb | |||
5c8b1f63b4 | |||
ca78783f58 | |||
e878c71533 | |||
360a5f8cd3 | |||
8668a65539 | |||
1232d864c2 |
60
.mbsyncrc
Normal file
60
.mbsyncrc
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
IMAPAccount home
|
||||||
|
Host imap.gmail.com
|
||||||
|
User redacted
|
||||||
|
Pass redacted
|
||||||
|
#UseIMAPS yes
|
||||||
|
SSLType IMAPS
|
||||||
|
# The following line should work. If get certificate errors, uncomment the two following lines
|
||||||
|
CertificateFile /etc/ssl/certs/ca-certificates.crt
|
||||||
|
#CertificateFile ~/.cert/imap.gmail.com.pem
|
||||||
|
#CertificateFile ~/.cert/Equifax_Secure_CA.pem
|
||||||
|
|
||||||
|
|
||||||
|
IMAPStore home-remote
|
||||||
|
Account home
|
||||||
|
|
||||||
|
MaildirStore home-local
|
||||||
|
# The trailing "/" is important
|
||||||
|
Path ~/.mail/home/
|
||||||
|
Inbox ~/.mail/home/INBOX
|
||||||
|
|
||||||
|
Channel home-default
|
||||||
|
Far :home-remote:
|
||||||
|
near :home-local:Inbox
|
||||||
|
#Patterns INBOX
|
||||||
|
# Automatically create missing mailboxes, both locally and on the server
|
||||||
|
Create Both
|
||||||
|
# Automatically delete messages on either side if they are found deleted on the other.
|
||||||
|
Expunge Both
|
||||||
|
# Save the synchronization state files in the relevant directory
|
||||||
|
SyncState *
|
||||||
|
|
||||||
|
|
||||||
|
Channel home-drafts
|
||||||
|
Far :home-remote:"[Gmail]/Drafts"
|
||||||
|
near :home-local:drafts
|
||||||
|
|
||||||
|
Channel home-sent
|
||||||
|
Far :home-remote:"[Gmail]/Sent Mail"
|
||||||
|
near :home-local:sent
|
||||||
|
|
||||||
|
Channel home-trash
|
||||||
|
Far :home-remote:"[Gmail]/Trash"
|
||||||
|
near :home-local:trash
|
||||||
|
|
||||||
|
Channel home-archive
|
||||||
|
Far :home-remote:"[Gmail]/All Mail"
|
||||||
|
near :home-local:archive
|
||||||
|
|
||||||
|
Channel home-spam
|
||||||
|
Far :home-remote:"[Gmail]/Spam"
|
||||||
|
near :home-local:spam
|
||||||
|
|
||||||
|
|
||||||
|
Group home
|
||||||
|
Channel home-inbox
|
||||||
|
Channel home-drafts
|
||||||
|
Channel home-trash
|
||||||
|
Channel home-archive
|
||||||
|
Channel home-sent
|
||||||
|
Channel home-spam
|
283
.muttrc
Normal file
283
.muttrc
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
# A basic .muttrc for use with Gmail
|
||||||
|
|
||||||
|
# Passwords and other private data
|
||||||
|
source $HOME/.mutt/private.data
|
||||||
|
source $HOME/.mutt/aliases
|
||||||
|
|
||||||
|
# Change the following line to a different editor you prefer.
|
||||||
|
set editor = "vim -c 'source ~/.muttvimrc'"
|
||||||
|
set edit_headers=yes
|
||||||
|
# Basic config, you can leave this as is
|
||||||
|
#set folder = "imaps://imap.gmail.com:993"
|
||||||
|
set folder = "~/.mail/home"
|
||||||
|
set spoolfile = "+Inbox"
|
||||||
|
set mail_check = 120
|
||||||
|
set timeout = 300
|
||||||
|
set imap_keepalive = 300
|
||||||
|
set postponed = "+drafts"
|
||||||
|
set mime_forward
|
||||||
|
set mime_forward_rest = yes
|
||||||
|
set record = "+sent"
|
||||||
|
set header_cache=~/.mutt/cache/headers
|
||||||
|
set message_cachedir=~/.mutt/cache/bodies
|
||||||
|
set certificate_file=~/.mutt/certificates
|
||||||
|
#set signature=~/.mutt/sig
|
||||||
|
set index_format= '%4C %Z %[%b %d %T] %-15.15L [%N] (%?l?%4l&%4c?) %s'
|
||||||
|
set pager_format= '%4C %Z %[%b %d %T] %-15.15L [%N] (%?l?%4l&%4c?) %s'
|
||||||
|
set attach_format="%u%D%I %t%4n %T%.120d%> [%.7m/%.10M, %.6e%?C?, %C?, %s] "
|
||||||
|
set text_flowed=yes
|
||||||
|
set sig_on_top
|
||||||
|
set sig_dashes = no
|
||||||
|
set move = no
|
||||||
|
set delete
|
||||||
|
unset confirmappend
|
||||||
|
set smart_wrap
|
||||||
|
#set pager = /usr/bin/less
|
||||||
|
set quit
|
||||||
|
unset mark_old
|
||||||
|
unset resolve # don't advance to next message after operation
|
||||||
|
unset markers # don't insert a '+' on wrapped lines
|
||||||
|
set wait_key = no
|
||||||
|
set include
|
||||||
|
set sort='threads'
|
||||||
|
set sort_aux='reverse-last-date-received'
|
||||||
|
set auto_tag = yes
|
||||||
|
set pipe_decode = yes
|
||||||
|
ignore "Authentication-Results:"
|
||||||
|
ignore "DomainKey-Signature:"
|
||||||
|
ignore "DKIM-Signature:"
|
||||||
|
#unignore *
|
||||||
|
hdr_order Date From To Cc
|
||||||
|
auto_view text/html
|
||||||
|
auto_view text/calendar application/ics
|
||||||
|
alternative_order text/html text/plain *
|
||||||
|
#alternative_order text/plain text/html *
|
||||||
|
# Google Contacts
|
||||||
|
set query_command = "goobook reload && goobook query '%s'"
|
||||||
|
bind editor <Tab> complete-query
|
||||||
|
bind editor ^T complete
|
||||||
|
bind editor <space> noop
|
||||||
|
auto_view text/html
|
||||||
|
# Google Contacts
|
||||||
|
#set query_command = "goobook query '%s'"
|
||||||
|
#bind editor <Tab> complete-query
|
||||||
|
#bind editor ^T complete
|
||||||
|
#bind editor <space> noop
|
||||||
|
set text_flowed=yes
|
||||||
|
|
||||||
|
# sidebar patch
|
||||||
|
#set sidebar_delim = ' │'
|
||||||
|
#set sidebar_visible = no
|
||||||
|
#set sidebar_width = 30
|
||||||
|
#color sidebar_new brightgreen default
|
||||||
|
|
||||||
|
# MY keybindings
|
||||||
|
bind pager j next-line
|
||||||
|
bind pager <Down> next-line
|
||||||
|
bind pager k previous-line
|
||||||
|
bind pager <Up> previous-line
|
||||||
|
bind pager > next-undeleted
|
||||||
|
bind pager < previous-undeleted
|
||||||
|
bind pager / search
|
||||||
|
bind generic gg first-entry
|
||||||
|
bind pager gg top
|
||||||
|
bind generic G last-entry
|
||||||
|
bind index G last-entry
|
||||||
|
bind pager G bottom
|
||||||
|
bind index - collapse-thread
|
||||||
|
bind index _ collapse-all
|
||||||
|
#bind index q noop
|
||||||
|
bind index,pager s noop # unset s for saving, since our archive command below is pretty much all we do
|
||||||
|
bind index,pager f flag-message
|
||||||
|
bind index,pager F forward-message
|
||||||
|
bind index u undelete-message
|
||||||
|
#macro attach a "<pipe-message>ripmime -i - -d "
|
||||||
|
macro attach a "<save-entry><bol>"
|
||||||
|
macro attach T "<tag-pattern>"
|
||||||
|
macro index,pager a "<pipe-message>goobook add<enter>" "Add the sender address to Google Contacts"
|
||||||
|
|
||||||
|
# color settings
|
||||||
|
#color normal default default
|
||||||
|
|
||||||
|
# Gmail-style keyboard shortcuts
|
||||||
|
|
||||||
|
#folder-hook "+[Gmail]/All Mail" 'macro index y "<save-message>=Inbox<enter>" "Copy message from archive to Inbox"'
|
||||||
|
folder-hook . 'macro index,pager x "<change-folder>=Inbox<enter>" "Go to inbox"'
|
||||||
|
folder-hook . 'macro index,pager A "<group-reply>" "Group reply'
|
||||||
|
#folder-hook . 'macro index,pager a "<group-reply>" "Group reply'
|
||||||
|
folder-hook . 'macro index,pager n "<toggle-new>" "Toggle new flag"'
|
||||||
|
folder-hook +Inbox 'macro index x "<sync-mailbox><exit>" "Sync mailbox and exit"'
|
||||||
|
#folder-hook +Inbox 'macro index qq "<sync-mailbox><shell-escape>/usr/bin/offlineimap -u basic -q<enter>" "Sync mail with offlineimap (quick form)"'
|
||||||
|
folder-hook +Inbox 'macro index qq "<sync-mailbox>" "Sync mail with disk"'
|
||||||
|
#folder-hook +Inbox 'macro index qf "<sync-mailbox><shell-escape>~/bin/offlineimap.sh<enter>" "Sync mail with offlineimap (full form)"'
|
||||||
|
folder-hook +Inbox 'macro index qf "<sync-mailbox>" "Sync mail with disk"
|
||||||
|
folder-hook +Inbox 'macro index y "<clear-flag>N<save-message>=archive<enter>" "Gmail archive message"'
|
||||||
|
folder-hook +Inbox 'macro index Y "<tag-pattern>!~F<enter><tag-prefix><clear-flag>N<save-message>=archive<enter>" "Tag all unstarred messages and archive"'
|
||||||
|
folder-hook +Inbox 'macro index N "<tag-pattern>~N<enter><tag-prefix><clear-flag>N<untag-pattern>~T<enter>" "Tag all unstarred messages and archive"'
|
||||||
|
folder-hook +Inbox 'macro pager y "<save-message>=archive<enter><next-undeleted>" "Gmail archive message, move to next message"'
|
||||||
|
folder-hook +Inbox 'macro index,pager x "<sync-mailbox><exit>" "Sync mailbox to disk and exit"'
|
||||||
|
folder-hook +archive 'macro index y "<save-message>=Inbox<enter>" "Move message to Inbox"'
|
||||||
|
folder-hook results$ 'macro index y "<save-message>=Inbox<enter>" "Move message to Inbox"'
|
||||||
|
folder-hook +archive 'macro pager y "<save-message>=Inbox<enter><exit>" "Gmail archive message"'
|
||||||
|
folder-hook results$ 'macro pager y "<save-message>=Inbox<enter><exit>" "Gmail archive message"'
|
||||||
|
#folder-hook +file_transmit 'macro index s "<pipe-message>ripmime -i - -d "
|
||||||
|
#macro pager u "<pipe-entry>urlview<enter>" "Follow links in urlview"
|
||||||
|
macro index,pager d "<enter-command>set trash=trash<enter><delete-message>" "Gmail delete message"
|
||||||
|
macro index,pager gi "<change-folder>=Inbox<enter>" "Go to inbox"
|
||||||
|
macro index,pager ga "<change-folder>=archive<enter>" "Go to all mail"
|
||||||
|
macro index,pager gs "<change-folder>=spam<enter>" "Go to spam messages"
|
||||||
|
macro index,pager gd "<change-folder>=drafts<enter>" "Go to drafts"
|
||||||
|
macro index,pager gt "<change-folder>=sent<enter>" "Go to drafts"
|
||||||
|
|
||||||
|
# Index sorting keys
|
||||||
|
macro index SS "<shell-escape>~/bin/by-score<enter><enter-command>source ~/.muttrc<enter>" "Sort by score"
|
||||||
|
macro index ST "<shell-escape>~/bin/by-threads<enter><enter-command>source ~/.muttrc<enter>" "Sort by thread"
|
||||||
|
macro index SD "<shell-escape>~/bin/by-date<enter><enter-command>source ~/.muttrc<enter>" "Sort by date"
|
||||||
|
macro index SR "<shell-escape>~/bin/by-reverse<enter><enter-command>source ~/.muttrc<enter>" "Sort aux by date"
|
||||||
|
macro index SE "<shell-escape>~/bin/by-sent<enter><enter-command>source ~/.muttrc<enter>" "Sort by date sent"
|
||||||
|
|
||||||
|
|
||||||
|
# Search with notmuch
|
||||||
|
macro index / "<enter-command>unset wait_key<enter><shell-escape>notmuch-mutt --prompt search<enter><change-folder-readonly>~/.cache/notmuch/mutt/results<enter>" "Search messages"
|
||||||
|
|
||||||
|
# -*-muttrc-*-
|
||||||
|
|
||||||
|
# Star scoring
|
||||||
|
source ~/.mutt/stars
|
||||||
|
|
||||||
|
set my_red_star = 1000
|
||||||
|
set my_orange_star = 900
|
||||||
|
set my_purple_question = 800
|
||||||
|
set my_yellow_bang = 600
|
||||||
|
set my_blue_star = 500
|
||||||
|
set my_green_star = 400
|
||||||
|
set my_magenta_question = 300
|
||||||
|
set my_green_check = 200
|
||||||
|
set my_blue_info = 100
|
||||||
|
set my_del_star = 0
|
||||||
|
|
||||||
|
macro index sr "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_red_star<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with RED"
|
||||||
|
macro index so "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_orange_star<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with ORANGE"
|
||||||
|
macro index sm "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_magenta_question<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with MAGENTA"
|
||||||
|
macro index sp "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_purple_question<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with MAGENTA"
|
||||||
|
macro index sy "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_yellow_bang<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with YELLOW"
|
||||||
|
macro index sg "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_green_star<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with GREEN"
|
||||||
|
macro index sc "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_green_check<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with GREEN (check)"
|
||||||
|
macro index si "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_blue_info<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with BLUE"
|
||||||
|
macro index sb "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_blue_star<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with BLUE STAR"
|
||||||
|
macro index sd "<enter-command>set pipe_decode=no<enter><pipe-entry>~/bin/stars $my_del_star<enter><pipe-entry>~/bin/del_stars<enter><enter-command>set pipe_decode=yes<enter><enter-command>source ~/.muttrc<enter><sync-mailbox>" "Remove color marking from the current message"
|
||||||
|
|
||||||
|
macro pager sr "<pipe-entry>~/bin/stars $my_red_star<enter><next-undeleted>" "Mark the current message with RED"
|
||||||
|
macro pager so "<pipe-entry>~/bin/stars $my_orange_star<enter><previous-undeleted><enter-command>source ~/.muttrc<enter>" "Mark the current message with ORANGE"
|
||||||
|
macro pager sm "<pipe-entry>~/bin/stars $my_magenta_question<enter><next-undeleted>" "Mark the current message with MAGENTA"
|
||||||
|
macro pager sp "<pipe-entry>~/bin/stars $my_purple_question<enter>" "Mark the current message with MAGENTA"
|
||||||
|
macro pager sy "<pipe-entry>~/bin/stars $my_yellow_bang<enter><next-undeleted>" "Mark the current message with YELLOW"
|
||||||
|
macro pager sg "<pipe-entry>~/bin/stars $my_green_star<enter><next-undeleted>" "Mark the current message with GREEN"
|
||||||
|
macro pager sc "<pipe-entry>~/bin/stars $my_green_check<enter><next-undeleted>" "Mark the current message with GREEN (check)"
|
||||||
|
macro pager si "<pipe-entry>~/bin/stars $my_blue_info<enter><next-undeleted>" "Mark the current message with BLUE"
|
||||||
|
macro pager sb "<pipe-entry>~/bin/stars $my_blue_star<enter><next-undeleted>" "Mark the current message with BLUE STAR"
|
||||||
|
macro pager sd "<pipe-entry>~/bin/stars $my_del_star<enter><pipe-entry>~/bin/del_stars<enter><next-undeleted><sync-mailbox>" "Remove color marking from the current message"
|
||||||
|
macro index,pager \ci "<pipe-message> less<Enter>" "call less to extract URLs out of a message"
|
||||||
|
|
||||||
|
source ~/.mutt/mutt-gruvbox/colors-gruvbox-shuber.muttrc
|
||||||
|
#source ~/.mutt/solarized-dark-256-colors.muttrc
|
||||||
|
#source ~/.mutt/solarized-light-256-colors.muttrc
|
||||||
|
#source ~/.mutt/solarized-light-16-colors.muttrc
|
||||||
|
# Colors for items in the index
|
||||||
|
#color index brightcyan default ~N
|
||||||
|
#color index brightred default ~O
|
||||||
|
#color index brightyellow default ~F
|
||||||
|
#color index white green ~T
|
||||||
|
#color index blue default ~D
|
||||||
|
color index black color175 '~n 1900-2000' # Mark the message with pink!
|
||||||
|
color index white color196 '~n 1000-1100' # Mark the message with red!
|
||||||
|
color index color128 default '~n 300-399' # Mark the message with magenta!
|
||||||
|
color index black color220 '~n 600-799' # Mark the message with yellow!
|
||||||
|
#color index white color2 '~n 600-799' # Mark the message with yellow!
|
||||||
|
color index white color20 '~n 500-599' # Mark the message with blue star!
|
||||||
|
color index black color40 '~n 400-499' # Mark the message with green!
|
||||||
|
color index white color128 '~n 800-999' # Mark the message with magenta!
|
||||||
|
color index color40 default '~n 200-299' # Mark the message with green (check)!
|
||||||
|
color index blue default '~n 100-199' # Mark the message with blue!
|
||||||
|
color index white color208 '~n 900-999' # Mark the message with orange!
|
||||||
|
color indicator black white
|
||||||
|
#color indicator white black
|
||||||
|
#mono index bold ~N
|
||||||
|
#mono index bold ~F
|
||||||
|
#mono index bold ~T
|
||||||
|
#mono index bold ~D
|
||||||
|
#
|
||||||
|
### Highlights inside the body of a message
|
||||||
|
#
|
||||||
|
### URLs
|
||||||
|
#
|
||||||
|
#color body brightgreen default "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*"
|
||||||
|
#color body brightgreen default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
|
||||||
|
#mono body bold "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*"
|
||||||
|
#mono body bold "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
|
||||||
|
#
|
||||||
|
### Email addresses.
|
||||||
|
#color body brightgreen default "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+"
|
||||||
|
#
|
||||||
|
### Header
|
||||||
|
#color header green default "^from:"
|
||||||
|
#color header green default "^to:"
|
||||||
|
#color header green default "^cc:"
|
||||||
|
#color header green default "^date:"
|
||||||
|
#color header yellow default "^newsgroups:"
|
||||||
|
#color header yellow default "^reply-to:"
|
||||||
|
#color header brightcyan default "^subject:"
|
||||||
|
#color header red default "^x-spam-rule:"
|
||||||
|
#color header green default "^x-mailer:"
|
||||||
|
#color header yellow default "^message-id:"
|
||||||
|
#color header yellow default "^Organization:"
|
||||||
|
#color header yellow default "^Organisation:"
|
||||||
|
#color header yellow default "^User-Agent:"
|
||||||
|
#color header yellow default "^message-id: .*pine"
|
||||||
|
#color header yellow default "^X-Fnord:"
|
||||||
|
#color header yellow default "^X-WebTV-Stationery:"
|
||||||
|
#
|
||||||
|
#color header red default "^x-spam-rule:"
|
||||||
|
#color header green default "^x-mailer:"
|
||||||
|
#color header yellow default "^message-id:"
|
||||||
|
#color header yellow default "^Organization:"
|
||||||
|
#color header yellow default "^Organisation:"
|
||||||
|
#color header yellow default "^User-Agent:"
|
||||||
|
#color header yellow default "^message-id: .*pine"
|
||||||
|
#color header yellow default "^X-Fnord:"
|
||||||
|
#color header yellow default "^X-WebTV-Stationery:"
|
||||||
|
#color header yellow default "^X-Message-Flag:"
|
||||||
|
#color header yellow default "^X-Spam-Status:"
|
||||||
|
#color header yellow default "^X-SpamProbe:"
|
||||||
|
#color header red default "^X-SpamProbe: SPAM"
|
||||||
|
#
|
||||||
|
### Coloring quoted text - coloring the first 7 levels:
|
||||||
|
#color quoted cyan default
|
||||||
|
#color quoted1 yellow default
|
||||||
|
#color quoted2 red default
|
||||||
|
#color quoted3 green default
|
||||||
|
#color quoted4 cyan default
|
||||||
|
#color quoted5 yellow default
|
||||||
|
#color quoted6 red default
|
||||||
|
#color quoted7 green default
|
||||||
|
#
|
||||||
|
### Default color definitions
|
||||||
|
##color hdrdefault white green
|
||||||
|
#color signature brightmagenta default
|
||||||
|
#color indicator default cyan
|
||||||
|
#color attachment default green
|
||||||
|
#color error red default
|
||||||
|
#color message white default
|
||||||
|
#color search brightwhite magenta
|
||||||
|
#color status brightyellow blue
|
||||||
|
#color tree brightblue default
|
||||||
|
#color normal white default
|
||||||
|
#color tilde green default
|
||||||
|
#color bold brightyellow default
|
||||||
|
##color underline magenta default
|
||||||
|
#color markers brightcyan default
|
||||||
|
#
|
||||||
|
### Colour definitions when on a mono screen
|
||||||
|
#mono bold bold
|
||||||
|
#mono underline underline
|
||||||
|
#mono indicator reverse
|
135
.tmux.conf
Executable file
135
.tmux.conf
Executable file
@ -0,0 +1,135 @@
|
|||||||
|
# $Id: n-marriott.conf,v 1.11 2009-11-24 19:03:59 nicm Exp $
|
||||||
|
#
|
||||||
|
# By Nicholas Marriott. Public domain.
|
||||||
|
|
||||||
|
#set -g default-terminal "xterm-256color"
|
||||||
|
set -g default-terminal "tmux-256color"
|
||||||
|
#set -g default-terminal "screen"
|
||||||
|
#set -g default-terminal "rxvt-unicode-256color"
|
||||||
|
#set -g default-terminal "tmux-256color"
|
||||||
|
set-window-option -g xterm-keys on
|
||||||
|
setw -g mode-keys vi
|
||||||
|
|
||||||
|
bind -T root C-j \
|
||||||
|
set prefix None \;\
|
||||||
|
set key-table off \;\
|
||||||
|
set status-style "fg=$color_status_text,bg=$color_window_off_status_bg" \;\
|
||||||
|
set window-status-current-format "#[fg=$color_window_off_status_bg,bg=$color_window_off_status_current_bg]$separator_powerline_right#[default] #I:#W# #[fg=$color_window_off_status_current_bg,bg=$color_window_off_status_bg]$separator_powerline_right#[default]" \;\
|
||||||
|
set window-status-current-style "fg=$color_dark,bold,bg=$color_window_off_status_current_bg" \;\
|
||||||
|
if -F '#{pane_in_mode}' 'send-keys -X cancel' \;\
|
||||||
|
refresh-client -S \;\
|
||||||
|
|
||||||
|
bind -T off C-j \
|
||||||
|
set -u prefix \;\
|
||||||
|
set -u key-table \;\
|
||||||
|
set -u status-style \;\
|
||||||
|
set -u window-status-current-style \;\
|
||||||
|
set -u window-status-current-format \;\
|
||||||
|
display "Local key table ON" \;\
|
||||||
|
refresh-client -S
|
||||||
|
|
||||||
|
wg_is_keys_off="#[fg=$color_light,bg=$color_window_off_indicator]#([ $(tmux show-option -qv key-table) = 'off' ] && echo 'OFF')#[default]"
|
||||||
|
|
||||||
|
#set -g status-right "$wg_is_keys_off #{sysstat_cpu} | #{sysstat_mem} | #{sysstat_loadavg} | $wg_user_host"
|
||||||
|
|
||||||
|
# Default global options.
|
||||||
|
#set -g status-bg green
|
||||||
|
#set -g status-right "%H:%M" # %d-%b-%y
|
||||||
|
#set -g bell-action none
|
||||||
|
#set -g lock-after-time 1800
|
||||||
|
|
||||||
|
# Window title stuff
|
||||||
|
set-option -g set-titles on
|
||||||
|
set-option -g set-titles-string "#H:#S|#W"
|
||||||
|
# Default global window options.
|
||||||
|
setw -g remain-on-exit off
|
||||||
|
|
||||||
|
set-option -ga terminal-overrides ',*:enacs@:smacs@:rmacs@:acsc@'
|
||||||
|
#set -g utf8 on
|
||||||
|
# Prefix key.
|
||||||
|
#set -g prefix
|
||||||
|
#unbind C-b
|
||||||
|
#bind C-b send-prefix
|
||||||
|
|
||||||
|
#bind y setw force-width 81
|
||||||
|
#bind u setw force-width 0
|
||||||
|
|
||||||
|
# *word stuff
|
||||||
|
bind -n C-Right send Oc
|
||||||
|
bind -n C-Left send Od
|
||||||
|
|
||||||
|
# Window management
|
||||||
|
bind-key c command-prompt -p new-window "new-window -n %1"
|
||||||
|
bind-key N command-prompt -p new-session "new-session -s %1"
|
||||||
|
bind n next-window
|
||||||
|
bind p previous-window
|
||||||
|
|
||||||
|
#synchronize panes
|
||||||
|
bind a set synchronize-panes
|
||||||
|
|
||||||
|
# turn off escape delay
|
||||||
|
set -sg escape-time 0
|
||||||
|
|
||||||
|
# Split windows
|
||||||
|
bind - split-window -v
|
||||||
|
bind | split-window -h
|
||||||
|
bind l select-pane -R
|
||||||
|
bind k select-pane -U
|
||||||
|
bind j select-pane -D
|
||||||
|
bind h select-pane -L
|
||||||
|
unbind -n M-l
|
||||||
|
unbind -n M-k
|
||||||
|
unbind -n M-j
|
||||||
|
unbind -n M-h
|
||||||
|
#bind -n M-l select-pane -R
|
||||||
|
#bind -n M-k select-pane -U
|
||||||
|
#bind -n M-j select-pane -D
|
||||||
|
#bind -n M-h select-pane -L
|
||||||
|
#bind -n M-l resize-pane -R
|
||||||
|
#bind -n M-k resize-pane -U
|
||||||
|
#bind -n M-j resize-pane -D
|
||||||
|
#bind -n M-h resize-pane -L
|
||||||
|
|
||||||
|
# unsplit pane
|
||||||
|
bind q break-pane
|
||||||
|
|
||||||
|
|
||||||
|
# Unbind Ctrl-Shift-Insert
|
||||||
|
unbind C-S-IC
|
||||||
|
#unbind -a C-Left
|
||||||
|
#unbind -a C-Right
|
||||||
|
|
||||||
|
# mouse stuff
|
||||||
|
#set-window-option -g mode-mouse on
|
||||||
|
set -g mouse off
|
||||||
|
#set-option -g mouse-select-pane on
|
||||||
|
|
||||||
|
# scrollback history
|
||||||
|
set -g history-limit 30000
|
||||||
|
|
||||||
|
# keep session list sorted
|
||||||
|
bind s choose-tree -sZ -O name
|
||||||
|
|
||||||
|
# This tmux statusbar config was created by tmuxline.vim
|
||||||
|
# # on Sun, 20 Oct 2019
|
||||||
|
#
|
||||||
|
source-file ~/.tmux_colors.conf
|
||||||
|
#set -g status-justify "left"
|
||||||
|
#set -g status "on"
|
||||||
|
#set -g status-left-style "none"
|
||||||
|
#set -g message-command-style "fg=colour231,bg=colour31"
|
||||||
|
#set -g status-right-style "none"
|
||||||
|
#set -g pane-active-border-style "fg=colour254"
|
||||||
|
#set -g status-style "none,bg=colour234"
|
||||||
|
#set -g message-style "fg=colour231,bg=colour31"
|
||||||
|
#set -g pane-border-style "fg=colour240"
|
||||||
|
#set -g status-right-length "100"
|
||||||
|
#set -g status-left-length "100"
|
||||||
|
#setw -g window-status-activity-style "none"
|
||||||
|
#setw -g window-status-separator ""
|
||||||
|
#setw -g window-status-style "none,fg=colour250,bg=colour234"
|
||||||
|
#set -g status-left "#[fg=colour16,bg=colour254,bold] #S #[fg=colour254,bg=colour234,nobold,nounderscore,noitalics]"
|
||||||
|
#set -g status-right "$wg_is_keys_off #[fg=colour236,bg=colour234,nobold,nounderscore,noitalics]#[fg=colour247,bg=colour236] %Y-%m-%d %H:%M #[fg=colour252,bg=colour236,nobold,nounderscore,noitalics]#[fg=colour235,bg=colour252] #h "
|
||||||
|
#setw -g window-status-format "#[fg=colour244,bg=colour234] #I #[fg=colour250,bg=colour234] #W "
|
||||||
|
#setw -g window-status-current-format "#[fg=colour234,bg=colour31,nobold,nounderscore,noitalics]#[fg=colour117,bg=colour31] #I #[fg=colour231,bg=colour31,bold] #W #[fg=colour31,bg=colour234,nobold,nounderscore,noitalics]"
|
||||||
|
#
|
BIN
2023-02-11-143536_1920x1080_scrot.png
Normal file
BIN
2023-02-11-143536_1920x1080_scrot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 316 KiB |
34
2023-03-25_history.paste
Normal file
34
2023-03-25_history.paste
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
typeset -p SAVEHIST HISTFILE HISTSIZE:
|
||||||
|
typeset -i10 SAVEHIST=99999
|
||||||
|
typeset HISTFILE=/home/trey/.zhistory
|
||||||
|
export -i10 HISTSIZE=1000000
|
||||||
|
|
||||||
|
|
||||||
|
setopt:
|
||||||
|
autocd
|
||||||
|
nobeep
|
||||||
|
braceccl
|
||||||
|
correct
|
||||||
|
extendedglob
|
||||||
|
extendedhistory
|
||||||
|
histexpiredupsfirst
|
||||||
|
histignorealldups
|
||||||
|
histignorespace
|
||||||
|
histverify
|
||||||
|
incappendhistory
|
||||||
|
interactive
|
||||||
|
interactivecomments
|
||||||
|
login
|
||||||
|
nonomatch
|
||||||
|
nullglob
|
||||||
|
promptbang
|
||||||
|
shinstdin
|
||||||
|
vi
|
||||||
|
|
||||||
|
|
||||||
|
ls -alh .zhistory:
|
||||||
|
-rw-r--r-- 1 trey trey 0 Mar 25 10:04 .zhistory
|
||||||
|
|
||||||
|
|
||||||
|
lsattr .zhistory:
|
||||||
|
---------------------- .zhistory
|
BIN
2023-04-28_unixporn.png
Normal file
BIN
2023-04-28_unixporn.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 312 KiB |
61
2023-09-23_qutebrowser_config-diff.txt
Normal file
61
2023-09-23_qutebrowser_config-diff.txt
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
auto_save.session = true
|
||||||
|
backend = webengine
|
||||||
|
bindings.commands = {"normal": {"<Alt+j>": "tab-focus", "gc": "spawn --userscript qute-bitwarden --password-prompt-invocation /home/trey/bin/qutebrowser-bitwarden-prompt.sh --auto-lock 0", "gl": "spawn --userscript qute-bitwarden --password-prompt-invocation /home/trey/bin/qutebrowser-bitwarden-prompt.sh --auto-lock 86400", "gp": "spawn --userscript qute-bitwarden --password-prompt-invocation /home/trey/bin/qutebrowser-bitwarden-prompt.sh -w --auto-lock 86400"}}
|
||||||
|
colors.statusbar.normal.bg = #282828
|
||||||
|
colors.statusbar.normal.fg = #ffd7af
|
||||||
|
colors.statusbar.url.fg = #ffd7af
|
||||||
|
colors.statusbar.url.success.http.fg = #ffd7af
|
||||||
|
colors.tabs.bar.bg = #282828
|
||||||
|
colors.tabs.even.bg = #333333
|
||||||
|
colors.tabs.even.fg = #ffd7af
|
||||||
|
colors.tabs.odd.bg = #444444
|
||||||
|
colors.tabs.odd.fg = #ffd7af
|
||||||
|
colors.tabs.pinned.even.bg = #333333
|
||||||
|
colors.tabs.pinned.even.fg = #ffd7af
|
||||||
|
colors.tabs.pinned.odd.bg = #282828
|
||||||
|
colors.tabs.pinned.odd.fg = #ffd7af
|
||||||
|
colors.tabs.pinned.selected.even.bg = #cccccc
|
||||||
|
colors.tabs.pinned.selected.even.fg = #000000
|
||||||
|
colors.tabs.pinned.selected.odd.bg = #cccccc
|
||||||
|
colors.tabs.pinned.selected.odd.fg = #000000
|
||||||
|
colors.tabs.selected.even.bg = #cccccc
|
||||||
|
colors.tabs.selected.even.fg = #000000
|
||||||
|
colors.tabs.selected.odd.bg = #cccccc
|
||||||
|
colors.tabs.selected.odd.fg = #000000
|
||||||
|
colors.webpage.darkmode.enabled = true
|
||||||
|
colors.webpage.darkmode.policy.images = smart
|
||||||
|
colors.webpage.darkmode.threshold.background = 205
|
||||||
|
colors.webpage.darkmode.threshold.text = 150
|
||||||
|
colors.webpage.preferred_color_scheme = dark
|
||||||
|
completion.cmd_history_max_items = -1
|
||||||
|
completion.open_categories = ["searchengines", "quickmarks", "bookmarks", "history", "filesystem"]
|
||||||
|
completion.quick = true
|
||||||
|
https://*.instacart.com/*: content.blocking.enabled = false
|
||||||
|
https://*.rocketaccount.com/*: content.blocking.enabled = false
|
||||||
|
https://*.rocketmortgage.com/*: content.blocking.enabled = false
|
||||||
|
content.blocking.whitelist = ["https://cdn.eu1.exponea.com/zagg-us-production-2/*"]
|
||||||
|
content.cookies.accept = all
|
||||||
|
https://order.firehousesubs.com: content.geolocation = true
|
||||||
|
https://www.aetna.com: content.geolocation = true
|
||||||
|
https://www.google.com: content.geolocation = true
|
||||||
|
https://www.neworleanssaints.com: content.geolocation = false
|
||||||
|
https://www.tracfone.com: content.geolocation = false
|
||||||
|
https://forum.ghost.org: content.headers.user_agent = Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
|
||||||
|
content.javascript.clipboard = access
|
||||||
|
https://calendar.google.com: content.notifications.enabled = true
|
||||||
|
https://messages.google.com: content.notifications.enabled = true
|
||||||
|
https://www.youtube.com: content.notifications.enabled = false
|
||||||
|
https://mail.google.com: content.notifications.enabled = false
|
||||||
|
https://calendar.google.com?cid=%25s: content.register_protocol_handler = true
|
||||||
|
https://mail.google.com?extsrc=mailto&url=%25s: content.register_protocol_handler = false
|
||||||
|
editor.command = ["alacritty", "--command", "vim", "{file}", "-c", "normal {line0}G{column0}l"]
|
||||||
|
fonts.default_family = IntelOne Mono Light
|
||||||
|
new_instance_open_target = tab
|
||||||
|
tabs.pinned.shrink = false
|
||||||
|
tabs.position = left
|
||||||
|
tabs.title.format = {audio}{aligned_index}: {current_title}
|
||||||
|
tabs.title.format_pinned = {audio}{aligned_index}: {current_title}
|
||||||
|
url.auto_search = naive
|
||||||
|
url.default_page = about:blank
|
||||||
|
url.searchengines = {"DEFAULT": "https://google.com/search?q={semiquoted}"}
|
||||||
|
url.start_pages = about:blank
|
739
alacritty.yml
Normal file
739
alacritty.yml
Normal file
@ -0,0 +1,739 @@
|
|||||||
|
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
||||||
|
|
||||||
|
# Any items in the `env` entry below will be added as
|
||||||
|
# environment variables. Some entries may override variables
|
||||||
|
# set by alacritty itself.
|
||||||
|
#env:
|
||||||
|
# TERM variable
|
||||||
|
#
|
||||||
|
# This value is used to set the `$TERM` environment variable for
|
||||||
|
# each instance of Alacritty. If it is not present, alacritty will
|
||||||
|
# check the local terminfo database and use `alacritty` if it is
|
||||||
|
# available, otherwise `xterm-256color` is used.
|
||||||
|
#TERM: xterm-256color
|
||||||
|
|
||||||
|
window:
|
||||||
|
# Window dimensions (changes require restart)
|
||||||
|
#
|
||||||
|
# Specified in number of columns/lines, not pixels.
|
||||||
|
# If both are `0`, this setting is ignored.
|
||||||
|
dimensions:
|
||||||
|
columns: 0
|
||||||
|
lines: 0
|
||||||
|
|
||||||
|
# Window position (changes require restart)
|
||||||
|
#
|
||||||
|
# Specified in number of pixels.
|
||||||
|
# If the position is not set, the window manager will handle the placement.
|
||||||
|
#position:
|
||||||
|
# x: 0
|
||||||
|
# y: 0
|
||||||
|
|
||||||
|
# Window padding (changes require restart)
|
||||||
|
#
|
||||||
|
# Blank space added around the window in pixels. This padding is scaled
|
||||||
|
# by DPI and the specified value is always added at both opposing sides.
|
||||||
|
padding:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Spread additional padding evenly around the terminal content.
|
||||||
|
dynamic_padding: false
|
||||||
|
|
||||||
|
# Window decorations
|
||||||
|
#
|
||||||
|
# Values for `decorations`:
|
||||||
|
# - full: Borders and title bar
|
||||||
|
# - none: Neither borders nor title bar
|
||||||
|
#
|
||||||
|
# Values for `decorations` (macOS only):
|
||||||
|
# - transparent: Title bar, transparent background and title bar buttons
|
||||||
|
# - buttonless: Title bar, transparent background, but no title bar buttons
|
||||||
|
decorations: full
|
||||||
|
|
||||||
|
# Startup Mode (changes require restart)
|
||||||
|
#
|
||||||
|
# Values for `startup_mode`:
|
||||||
|
# - Windowed
|
||||||
|
# - Maximized
|
||||||
|
# - Fullscreen
|
||||||
|
#
|
||||||
|
# Values for `startup_mode` (macOS only):
|
||||||
|
# - SimpleFullscreen
|
||||||
|
startup_mode: Windowed
|
||||||
|
|
||||||
|
# Window title
|
||||||
|
#title: Alacritty
|
||||||
|
|
||||||
|
# Window class (Linux only):
|
||||||
|
#class: Alacritty
|
||||||
|
dynamic_title: true
|
||||||
|
|
||||||
|
scrolling:
|
||||||
|
# Maximum number of lines in the scrollback buffer.
|
||||||
|
# Specifying '0' will disable scrolling.
|
||||||
|
history: 10000
|
||||||
|
|
||||||
|
# Number of lines the viewport will move for every line scrolled when
|
||||||
|
# scrollback is enabled (history > 0).
|
||||||
|
multiplier: 3
|
||||||
|
|
||||||
|
# Faux Scrolling
|
||||||
|
#
|
||||||
|
# The `faux_multiplier` setting controls the number of lines the terminal
|
||||||
|
# should scroll when the alternate screen buffer is active. This is used
|
||||||
|
# to allow mouse scrolling for applications like `man`.
|
||||||
|
#
|
||||||
|
# Specifying `0` will disable faux scrolling.
|
||||||
|
#faux_multiplier: 3
|
||||||
|
|
||||||
|
# Scroll to the bottom when new text is written to the terminal.
|
||||||
|
#auto_scroll: false
|
||||||
|
|
||||||
|
# Spaces per Tab (changes require restart)
|
||||||
|
#
|
||||||
|
# This setting defines the width of a tab in cells.
|
||||||
|
#
|
||||||
|
# Some applications, like Emacs, rely on knowing about the width of a tab.
|
||||||
|
# To prevent unexpected behavior in these applications, it's also required to
|
||||||
|
# change the `it` value in terminfo when altering this setting.
|
||||||
|
#tabspaces: 8
|
||||||
|
|
||||||
|
# Font configuration (changes require restart)
|
||||||
|
font:
|
||||||
|
# Normal (roman) font face
|
||||||
|
normal:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) Menlo
|
||||||
|
# - (Linux) monospace
|
||||||
|
# - (Windows) Consolas
|
||||||
|
family: monospace
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Regular
|
||||||
|
|
||||||
|
# Bold font face
|
||||||
|
bold:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the bold family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
family: monospace
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Bold
|
||||||
|
|
||||||
|
# Italic font face
|
||||||
|
italic:
|
||||||
|
# Font family
|
||||||
|
#
|
||||||
|
# If the italic family is not specified, it will fall back to the
|
||||||
|
# value specified for the normal font.
|
||||||
|
family: monospace
|
||||||
|
|
||||||
|
# The `style` can be specified to pick a specific face.
|
||||||
|
style: Italic
|
||||||
|
|
||||||
|
# Point size
|
||||||
|
size: 11.0
|
||||||
|
|
||||||
|
# Offset is the extra space around each character. `offset.y` can be thought of
|
||||||
|
# as modifying the line spacing, and `offset.x` as modifying the letter spacing.
|
||||||
|
offset:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Glyph offset determines the locations of the glyphs within their cells with
|
||||||
|
# the default being at the bottom. Increasing `x` moves the glyph to the right,
|
||||||
|
# increasing `y` moves the glyph upwards.
|
||||||
|
glyph_offset:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Thin stroke font rendering (macOS only)
|
||||||
|
#
|
||||||
|
# Thin strokes are suitable for retina displays, but for non-retina screens
|
||||||
|
# it is recommended to set `use_thin_strokes` to `false`
|
||||||
|
#
|
||||||
|
# macOS >= 10.14.x:
|
||||||
|
#
|
||||||
|
# If the font quality on non-retina display looks bad then set
|
||||||
|
# `use_thin_strokes` to `true` and enable font smoothing by running the
|
||||||
|
# following command:
|
||||||
|
# `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO`
|
||||||
|
#
|
||||||
|
# This is a global setting and will require a log out or restart to take
|
||||||
|
# effect.
|
||||||
|
use_thin_strokes: false
|
||||||
|
|
||||||
|
# If `true`, bold text is drawn using the bright color variants.
|
||||||
|
draw_bold_text_with_bright_colors: true
|
||||||
|
|
||||||
|
# Colors (Solarized Dark)
|
||||||
|
#colors:
|
||||||
|
# # Default colors
|
||||||
|
# primary:
|
||||||
|
# background: '0x002b36' # base03
|
||||||
|
# foreground: '0x839496' # base0
|
||||||
|
#
|
||||||
|
# # Cursor colors
|
||||||
|
# cursor:
|
||||||
|
# text: '0x002b36' # base03
|
||||||
|
# cursor: '0x839496' # base0
|
||||||
|
#
|
||||||
|
# # Normal colors
|
||||||
|
# normal:
|
||||||
|
# black: '0x073642' # base02
|
||||||
|
# red: '0xdc322f' # red
|
||||||
|
# green: '0x859900' # green
|
||||||
|
# yellow: '0xb58900' # yellow
|
||||||
|
# blue: '0x268bd2' # blue
|
||||||
|
# magenta: '0xd33682' # magenta
|
||||||
|
# cyan: '0x2aa198' # cyan
|
||||||
|
# white: '0xeee8d5' # base2
|
||||||
|
#
|
||||||
|
# # Bright colors
|
||||||
|
# bright:
|
||||||
|
# black: '0x002b36' # base03
|
||||||
|
# red: '0xcb4b16' # orange
|
||||||
|
# green: '0x586e75' # base01
|
||||||
|
# yellow: '0x657b83' # base00
|
||||||
|
# blue: '0x839496' # base0
|
||||||
|
# magenta: '0x6c71c4' # violet
|
||||||
|
# cyan: '0x93a1a1' # base1
|
||||||
|
# white: '0xfdf6e3' # base3
|
||||||
|
|
||||||
|
|
||||||
|
# Colors (Gruvbox dark)
|
||||||
|
colors:
|
||||||
|
primary:
|
||||||
|
# hard contrast background - '#1d2021'
|
||||||
|
background: &gruvbox_dark_bg '#282828'
|
||||||
|
# soft contrast background - '#32302f'
|
||||||
|
foreground: '#ffd7af'
|
||||||
|
bright_foreground: '#ebdbb2'
|
||||||
|
dim_foreground: '#a89984'
|
||||||
|
cursor:
|
||||||
|
text: CellBackground
|
||||||
|
cursor: CellForeground
|
||||||
|
vi_mode_cursor:
|
||||||
|
text: CellBackground
|
||||||
|
cursor: CellForeground
|
||||||
|
# search:
|
||||||
|
# matches:
|
||||||
|
# foreground: '#000000'
|
||||||
|
# background: '#ffffff'
|
||||||
|
# focused_match:
|
||||||
|
# foreground: CellBackground
|
||||||
|
# background: CellForeground
|
||||||
|
# bar:
|
||||||
|
# background: ''
|
||||||
|
# foreground: ''
|
||||||
|
# line_indicator:
|
||||||
|
# foreground: None
|
||||||
|
# background: None
|
||||||
|
selection:
|
||||||
|
text: CellBackground
|
||||||
|
background: CellForeground
|
||||||
|
bright:
|
||||||
|
black: '#928374'
|
||||||
|
red: '#fb4934'
|
||||||
|
green: '#b8bb26'
|
||||||
|
yellow: '#fabd2f'
|
||||||
|
blue: '#83a598'
|
||||||
|
magenta: '#d3869b'
|
||||||
|
cyan: '#8ec07c'
|
||||||
|
white: '#ebdbb2'
|
||||||
|
normal:
|
||||||
|
black: *gruvbox_dark_bg
|
||||||
|
red: '#cc241d'
|
||||||
|
green: '#98971a'
|
||||||
|
yellow: '#d79921'
|
||||||
|
blue: '#458588'
|
||||||
|
magenta: '#b16286'
|
||||||
|
cyan: '#689d6a'
|
||||||
|
white: '#a89984'
|
||||||
|
dim:
|
||||||
|
black: '#32302f'
|
||||||
|
red: '#9d0006'
|
||||||
|
green: '#79740e'
|
||||||
|
yellow: '#b57614'
|
||||||
|
blue: '#076678'
|
||||||
|
magenta: '#8f3f71'
|
||||||
|
cyan: '#427b58'
|
||||||
|
white: '#928374'
|
||||||
|
# indexed_colors: []
|
||||||
|
# Colors (Tomorrow Night Bright)
|
||||||
|
#colors:
|
||||||
|
# Default colors
|
||||||
|
#primary:
|
||||||
|
# background: '0x000000'
|
||||||
|
# foreground: '0xeaeaea'
|
||||||
|
|
||||||
|
# Bright and dim foreground colors
|
||||||
|
#
|
||||||
|
# The dimmed foreground color is calculated automatically if it is not present.
|
||||||
|
# If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
|
||||||
|
# is `false`, the normal foreground color will be used.
|
||||||
|
#dim_foreground: '0x9a9a9a'
|
||||||
|
#bright_foreground: '0xffffff'
|
||||||
|
|
||||||
|
# Cursor colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the terminal cursor. If these are unset,
|
||||||
|
# the cursor color will be the inverse of the cell color.
|
||||||
|
cursor:
|
||||||
|
text: '0x0000ff'
|
||||||
|
cursor: '0xffff00'
|
||||||
|
|
||||||
|
# Selection colors
|
||||||
|
#
|
||||||
|
# Colors which should be used to draw the selection area. If selection
|
||||||
|
# background is unset, selection color will be the inverse of the cell colors.
|
||||||
|
# If only text is unset the cell text color will remain the same.
|
||||||
|
#selection:
|
||||||
|
# text: '0xeaeaea'
|
||||||
|
# background: '0x404040'
|
||||||
|
|
||||||
|
# Normal colors
|
||||||
|
normal:
|
||||||
|
black: '0x000000'
|
||||||
|
red: '0xd54e53'
|
||||||
|
green: '0xb9ca4a'
|
||||||
|
yellow: '0xe6c547'
|
||||||
|
blue: '0x7aa6da'
|
||||||
|
magenta: '0xc397d8'
|
||||||
|
cyan: '0x70c0ba'
|
||||||
|
white: '0xeaeaea'
|
||||||
|
|
||||||
|
# Bright colors
|
||||||
|
bright:
|
||||||
|
black: '0x666666'
|
||||||
|
red: '0xff3334'
|
||||||
|
green: '0x9ec400'
|
||||||
|
yellow: '0xe7c547'
|
||||||
|
blue: '0x7aa6da'
|
||||||
|
magenta: '0xb77ee0'
|
||||||
|
cyan: '0x54ced6'
|
||||||
|
white: '0xffffff'
|
||||||
|
|
||||||
|
# Dim colors
|
||||||
|
#
|
||||||
|
# If the dim colors are not set, they will be calculated automatically based
|
||||||
|
# on the `normal` colors.
|
||||||
|
#dim:
|
||||||
|
# black: '0x000000'
|
||||||
|
# red: '0x8c3336'
|
||||||
|
# green: '0x7a8530'
|
||||||
|
# yellow: '0x97822e'
|
||||||
|
# blue: '0x506d8f'
|
||||||
|
# magenta: '0x80638e'
|
||||||
|
# cyan: '0x497e7a'
|
||||||
|
# white: '0x9a9a9a'
|
||||||
|
|
||||||
|
# Indexed Colors
|
||||||
|
#
|
||||||
|
# The indexed colors include all colors from 16 to 256.
|
||||||
|
# When these are not set, they're filled with sensible defaults.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { index: 16, color: '0xff00ff' }`
|
||||||
|
#
|
||||||
|
indexed_colors: []
|
||||||
|
|
||||||
|
# Visual Bell
|
||||||
|
#
|
||||||
|
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
|
||||||
|
# rung, the terminal background will be set to white and transition back to the
|
||||||
|
# default background color. You can control the rate of this transition by
|
||||||
|
# setting the `duration` property (represented in milliseconds). You can also
|
||||||
|
# configure the transition function by setting the `animation` property.
|
||||||
|
#
|
||||||
|
# Values for `animation`:
|
||||||
|
# - Ease
|
||||||
|
# - EaseOut
|
||||||
|
# - EaseOutSine
|
||||||
|
# - EaseOutQuad
|
||||||
|
# - EaseOutCubic
|
||||||
|
# - EaseOutQuart
|
||||||
|
# - EaseOutQuint
|
||||||
|
# - EaseOutExpo
|
||||||
|
# - EaseOutCirc
|
||||||
|
# - Linear
|
||||||
|
#
|
||||||
|
# Specifying a `duration` of `0` will disable the visual bell.
|
||||||
|
bell:
|
||||||
|
animation: EaseOutExpo
|
||||||
|
duration: 0
|
||||||
|
color: '0xffffff'
|
||||||
|
|
||||||
|
# Background opacity
|
||||||
|
#
|
||||||
|
# Window opacity as a floating point number from `0.0` to `1.0`.
|
||||||
|
# The value `0.0` is completely transparent and `1.0` is opaque.
|
||||||
|
background_opacity: 1.0
|
||||||
|
|
||||||
|
# Mouse bindings
|
||||||
|
#
|
||||||
|
# Available fields:
|
||||||
|
# - mouse
|
||||||
|
# - action
|
||||||
|
# - mods (optional)
|
||||||
|
#
|
||||||
|
# Values for `mouse`:
|
||||||
|
# - Middle
|
||||||
|
# - Left
|
||||||
|
# - Right
|
||||||
|
# - Numeric identifier such as `5`
|
||||||
|
#
|
||||||
|
# All available `mods` and `action` values are documented in the key binding
|
||||||
|
# section.
|
||||||
|
mouse_bindings:
|
||||||
|
- { mouse: Middle, action: PasteSelection }
|
||||||
|
|
||||||
|
mouse:
|
||||||
|
# Click settings
|
||||||
|
#
|
||||||
|
# The `double_click` and `triple_click` settings control the time
|
||||||
|
# alacritty should wait for accepting multiple clicks as one double
|
||||||
|
# or triple click.
|
||||||
|
double_click: { threshold: 300 }
|
||||||
|
triple_click: { threshold: 300 }
|
||||||
|
|
||||||
|
# If this is `true`, the cursor is temporarily hidden when typing.
|
||||||
|
hide_when_typing: false
|
||||||
|
|
||||||
|
hints:
|
||||||
|
# URL launcher
|
||||||
|
#
|
||||||
|
# This program is executed when clicking on a text which is recognized as a URL.
|
||||||
|
# The URL is always added to the command as the last parameter.
|
||||||
|
#
|
||||||
|
# When set to `None`, URL launching will be disabled completely.
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) open
|
||||||
|
# - (Linux) xdg-open
|
||||||
|
# - (Windows) explorer
|
||||||
|
launcher:
|
||||||
|
program: mimeo
|
||||||
|
args: []
|
||||||
|
|
||||||
|
# URL modifiers
|
||||||
|
#
|
||||||
|
# These are the modifiers that need to be held down for opening URLs when clicking
|
||||||
|
# on them. The available modifiers are documented in the key binding section.
|
||||||
|
modifiers: None
|
||||||
|
|
||||||
|
selection:
|
||||||
|
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
|
||||||
|
|
||||||
|
# When set to `true`, selected text will be copied to the primary clipboard.
|
||||||
|
save_to_clipboard: true
|
||||||
|
|
||||||
|
# Allow terminal applications to change Alacritty's window title.
|
||||||
|
|
||||||
|
cursor:
|
||||||
|
# Cursor style
|
||||||
|
#
|
||||||
|
# Values for `style`:
|
||||||
|
# - ▇ Block
|
||||||
|
# - _ Underline
|
||||||
|
# - | Beam
|
||||||
|
style:
|
||||||
|
shape: Block
|
||||||
|
blinking: Always
|
||||||
|
blink_interval: 500
|
||||||
|
|
||||||
|
# If this is `true`, the cursor will be rendered as a hollow box when the
|
||||||
|
# window is not focused.
|
||||||
|
unfocused_hollow: true
|
||||||
|
|
||||||
|
# Live config reload (changes require restart)
|
||||||
|
live_config_reload: true
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
#
|
||||||
|
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
|
||||||
|
# Entries in `shell.args` are passed unmodified as arguments to the shell.
|
||||||
|
#
|
||||||
|
# Default:
|
||||||
|
# - (macOS) /bin/bash --login
|
||||||
|
# - (Linux) user login shell
|
||||||
|
# - (Windows) powershell
|
||||||
|
#shell:
|
||||||
|
# program: /bin/bash
|
||||||
|
# args:
|
||||||
|
# - --login
|
||||||
|
|
||||||
|
# Startup directory
|
||||||
|
#
|
||||||
|
# Directory the shell is started in. If this is unset, or `None`, the working
|
||||||
|
# directory of the parent process will be used.
|
||||||
|
working_directory: None
|
||||||
|
|
||||||
|
# Windows 10 ConPTY backend (Windows only)
|
||||||
|
#
|
||||||
|
# This will enable better color support and may resolve other issues,
|
||||||
|
# however this API and its implementation is still young and so is
|
||||||
|
# disabled by default, as stability may not be as good as the winpty
|
||||||
|
# backend.
|
||||||
|
#
|
||||||
|
# Alacritty will fall back to the WinPTY automatically if the ConPTY
|
||||||
|
# backend cannot be initialized.
|
||||||
|
enable_experimental_conpty_backend: false
|
||||||
|
|
||||||
|
# Send ESC (\x1b) before characters when alt is pressed.
|
||||||
|
alt_send_esc: true
|
||||||
|
|
||||||
|
debug:
|
||||||
|
# Display the time it takes to redraw each frame.
|
||||||
|
render_timer: false
|
||||||
|
|
||||||
|
# Keep the log file after quitting Alacritty.
|
||||||
|
persistent_logging: false
|
||||||
|
|
||||||
|
# Log level
|
||||||
|
#
|
||||||
|
# Values for `log_level`:
|
||||||
|
# - None
|
||||||
|
# - Error
|
||||||
|
# - Warn
|
||||||
|
# - Info
|
||||||
|
# - Debug
|
||||||
|
# - Trace
|
||||||
|
log_level: Warn
|
||||||
|
|
||||||
|
# Print all received window events.
|
||||||
|
print_events: false
|
||||||
|
|
||||||
|
# Record all characters and escape sequences as test data.
|
||||||
|
ref_test: false
|
||||||
|
|
||||||
|
# Key bindings
|
||||||
|
#
|
||||||
|
# Key bindings are specified as a list of objects. Each binding will specify a
|
||||||
|
# key and modifiers required to trigger it, terminal modes where the binding is
|
||||||
|
# applicable, and what should be done when the key binding fires. It can either
|
||||||
|
# send a byte sequence to the running application (`chars`), execute a
|
||||||
|
# predefined action (`action`) or fork and execute a specified command plus
|
||||||
|
# arguments (`command`).
|
||||||
|
#
|
||||||
|
# Bindings are always filled by default, but will be replaced when a new binding
|
||||||
|
# with the same triggers is defined. To unset a default binding, it can be
|
||||||
|
# mapped to the `None` action.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `- { key: V, mods: Control|Shift, action: Paste }`
|
||||||
|
#
|
||||||
|
# Available fields:
|
||||||
|
# - key
|
||||||
|
# - mods (optional)
|
||||||
|
# - chars | action | command (exactly one required)
|
||||||
|
# - mode (optional)
|
||||||
|
#
|
||||||
|
# Values for `key`:
|
||||||
|
# - `A` -> `Z`
|
||||||
|
# - `F1` -> `F12`
|
||||||
|
# - `Key1` -> `Key0`
|
||||||
|
#
|
||||||
|
# A full list with available key codes can be found here:
|
||||||
|
# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants
|
||||||
|
#
|
||||||
|
# Instead of using the name of the keys, the `key` field also supports using
|
||||||
|
# the scancode of the desired key. Scancodes have to be specified as a
|
||||||
|
# decimal number.
|
||||||
|
# This command will allow you to display the hex scancodes for certain keys:
|
||||||
|
# `showkey --scancodes`
|
||||||
|
#
|
||||||
|
# Values for `mods`:
|
||||||
|
# - Command
|
||||||
|
# - Control
|
||||||
|
# - Option
|
||||||
|
# - Super
|
||||||
|
# - Shift
|
||||||
|
# - Alt
|
||||||
|
#
|
||||||
|
# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`.
|
||||||
|
# Whitespace and capitalization is relevant and must match the example.
|
||||||
|
#
|
||||||
|
# Values for `chars`:
|
||||||
|
# The `chars` field writes the specified string to the terminal. This makes
|
||||||
|
# it possible to pass escape sequences.
|
||||||
|
# To find escape codes for bindings like `PageUp` ("\x1b[5~"), you can run
|
||||||
|
# the command `showkey -a` outside of tmux.
|
||||||
|
# Note that applications use terminfo to map escape sequences back to
|
||||||
|
# keys. It is therefore required to update the terminfo when
|
||||||
|
# changing an escape sequence.
|
||||||
|
#
|
||||||
|
# Values for `action`:
|
||||||
|
# - Paste
|
||||||
|
# - PasteSelection
|
||||||
|
# - Copy
|
||||||
|
# - IncreaseFontSize
|
||||||
|
# - DecreaseFontSize
|
||||||
|
# - ResetFontSize
|
||||||
|
# - ScrollPageUp
|
||||||
|
# - ScrollPageDown
|
||||||
|
# - ScrollLineUp
|
||||||
|
# - ScrollLineDown
|
||||||
|
# - ScrollToTop
|
||||||
|
# - ScrollToBottom
|
||||||
|
# - ClearHistory
|
||||||
|
# - Hide
|
||||||
|
# - Quit
|
||||||
|
# - ClearLogNotice
|
||||||
|
# - SpawnNewInstance
|
||||||
|
# - ToggleFullscreen
|
||||||
|
# - None
|
||||||
|
#
|
||||||
|
# Values for `action` (macOS only):
|
||||||
|
# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
|
||||||
|
#
|
||||||
|
# Values for `command`:
|
||||||
|
# The `command` field must be a map containing a `program` string and
|
||||||
|
# an `args` array of command line parameter strings.
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# `command: { program: "alacritty", args: ["-e", "vttest"] }`
|
||||||
|
#
|
||||||
|
# Values for `mode`:
|
||||||
|
# - ~AppCursor
|
||||||
|
# - AppCursor
|
||||||
|
# - ~AppKeypad
|
||||||
|
# - AppKeypad
|
||||||
|
key_bindings:
|
||||||
|
# (Windows/Linux only)
|
||||||
|
- { key: V, mods: Control, action: Paste }
|
||||||
|
- { key: V, mods: Control|Shift, chars: "\x16" }
|
||||||
|
#- { key: C, mods: Control|Shift, action: Copy }
|
||||||
|
#- { key: Insert, mods: Shift, action: PasteSelection }
|
||||||
|
#- { key: Key0, mods: Control, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Add, mods: Control, action: IncreaseFontSize }
|
||||||
|
#- { key: Subtract, mods: Control, action: DecreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||||
|
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
||||||
|
|
||||||
|
# (macOS only)
|
||||||
|
#- { key: Key0, mods: Command, action: ResetFontSize }
|
||||||
|
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Add, mods: Command, action: IncreaseFontSize }
|
||||||
|
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
||||||
|
#- { key: K, mods: Command, action: ClearHistory }
|
||||||
|
#- { key: K, mods: Command, chars: "\x0c" }
|
||||||
|
#- { key: V, mods: Command, action: Paste }
|
||||||
|
#- { key: C, mods: Command, action: Copy }
|
||||||
|
#- { key: H, mods: Command, action: Hide }
|
||||||
|
#- { key: Q, mods: Command, action: Quit }
|
||||||
|
#- { key: W, mods: Command, action: Quit }
|
||||||
|
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
||||||
|
|
||||||
|
- { key: Paste, action: Paste }
|
||||||
|
- { key: Copy, action: Copy }
|
||||||
|
- { key: L, mods: Control, action: ClearLogNotice }
|
||||||
|
- { key: L, mods: Control, chars: "\x0c" }
|
||||||
|
- { key: Home, mods: Alt, chars: "\x1b[1;3H" }
|
||||||
|
- { key: Home, chars: "\x1bOH", mode: AppCursor }
|
||||||
|
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
|
||||||
|
- { key: End, mods: Alt, chars: "\x1b[1;3F" }
|
||||||
|
- { key: End, chars: "\x1bOF", mode: AppCursor }
|
||||||
|
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
|
||||||
|
- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
|
||||||
|
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~", mode: Alt }
|
||||||
|
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
|
||||||
|
- { key: PageUp, mods: Alt, chars: "\x1b[5;3~" }
|
||||||
|
- { key: PageUp, chars: "\x1b[5~" }
|
||||||
|
- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
|
||||||
|
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~", mode: Alt }
|
||||||
|
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
|
||||||
|
- { key: PageDown, mods: Alt, chars: "\x1b[6;3~" }
|
||||||
|
- { key: PageDown, chars: "\x1b[6~" }
|
||||||
|
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
|
||||||
|
- { key: Back, chars: "\x7f" }
|
||||||
|
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
|
||||||
|
- { key: Insert, chars: "\x1b[2~" }
|
||||||
|
- { key: Delete, chars: "\x1b[3~" }
|
||||||
|
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
|
||||||
|
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
|
||||||
|
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
|
||||||
|
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
|
||||||
|
- { key: Left, chars: "\x1bOD", mode: AppCursor }
|
||||||
|
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
|
||||||
|
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
|
||||||
|
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
|
||||||
|
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
|
||||||
|
- { key: Right, chars: "\x1bOC", mode: AppCursor }
|
||||||
|
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
|
||||||
|
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
|
||||||
|
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
|
||||||
|
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
|
||||||
|
- { key: Up, chars: "\x1bOA", mode: AppCursor }
|
||||||
|
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
|
||||||
|
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
|
||||||
|
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
|
||||||
|
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
|
||||||
|
- { key: Down, chars: "\x1bOB", mode: AppCursor }
|
||||||
|
- { key: F1, chars: "\x1bOP" }
|
||||||
|
- { key: F2, chars: "\x1bOQ" }
|
||||||
|
- { key: F3, chars: "\x1bOR" }
|
||||||
|
- { key: F4, chars: "\x1bOS" }
|
||||||
|
- { key: F5, chars: "\x1b[15~" }
|
||||||
|
- { key: F6, chars: "\x1b[17~" }
|
||||||
|
- { key: F7, chars: "\x1b[18~" }
|
||||||
|
- { key: F8, chars: "\x1b[19~" }
|
||||||
|
- { key: F9, chars: "\x1b[20~" }
|
||||||
|
- { key: F10, chars: "\x1b[21~" }
|
||||||
|
- { key: F11, chars: "\x1b[23~" }
|
||||||
|
- { key: F12, chars: "\x1b[24~" }
|
||||||
|
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
|
||||||
|
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
|
||||||
|
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
|
||||||
|
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
|
||||||
|
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
|
||||||
|
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
|
||||||
|
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
|
||||||
|
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
|
||||||
|
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
|
||||||
|
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
|
||||||
|
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
|
||||||
|
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
|
||||||
|
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
|
||||||
|
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
|
||||||
|
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
|
||||||
|
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
|
||||||
|
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
|
||||||
|
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
|
||||||
|
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
|
||||||
|
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
|
||||||
|
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
|
||||||
|
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
|
||||||
|
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
|
||||||
|
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
|
||||||
|
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
|
||||||
|
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
|
||||||
|
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
|
||||||
|
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
|
||||||
|
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
|
||||||
|
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
|
||||||
|
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
|
||||||
|
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
|
||||||
|
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
|
||||||
|
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
|
||||||
|
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
|
||||||
|
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
|
||||||
|
- { key: F1, mods: Super, chars: "\x1b[1;3P" }
|
||||||
|
- { key: F2, mods: Super, chars: "\x1b[1;3Q" }
|
||||||
|
- { key: F3, mods: Super, chars: "\x1b[1;3R" }
|
||||||
|
- { key: F4, mods: Super, chars: "\x1b[1;3S" }
|
||||||
|
- { key: F5, mods: Super, chars: "\x1b[15;3~" }
|
||||||
|
- { key: F6, mods: Super, chars: "\x1b[17;3~" }
|
||||||
|
- { key: F7, mods: Super, chars: "\x1b[18;3~" }
|
||||||
|
- { key: F8, mods: Super, chars: "\x1b[19;3~" }
|
||||||
|
- { key: F9, mods: Super, chars: "\x1b[20;3~" }
|
||||||
|
- { key: F10, mods: Super, chars: "\x1b[21;3~" }
|
||||||
|
- { key: F11, mods: Super, chars: "\x1b[23;3~" }
|
||||||
|
- { key: F12, mods: Super, chars: "\x1b[24;3~" }
|
||||||
|
- { key: NumpadEnter, chars: "\n" }
|
84
bugs/2023-08-01_psi_io/2023-08-01_pidstat-dl.txt
Normal file
84
bugs/2023-08-01_psi_io/2023-08-01_pidstat-dl.txt
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
Linux 6.4.7-arch1-1 (deltachunk) 08/01/2023 _x86_64_ (8 CPU)
|
||||||
|
|
||||||
|
10:38:25 PM UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
|
||||||
|
10:38:25 PM 0 1 56.33 22.92 5.56 0 /sbin/init
|
||||||
|
10:38:25 PM 0 75 0.40 0.00 0.00 0 khugepaged
|
||||||
|
10:38:25 PM 0 216 0.00 0.94 0.00 0 jbd2/sda6-8
|
||||||
|
10:38:25 PM 0 252 0.66 16.28 0.00 0 /usr/lib/systemd/systemd-journald
|
||||||
|
10:38:25 PM 0 279 0.13 0.00 0.00 0 /usr/lib/systemd/systemd-udevd
|
||||||
|
10:38:25 PM 0 358 0.10 0.00 0.00 0 btrfs-cleaner
|
||||||
|
10:38:25 PM 0 359 1.07 15.73 0.00 0 btrfs-transaction
|
||||||
|
10:38:25 PM 0 360 1.34 0.00 0.00 0 btrfs-cleaner
|
||||||
|
10:38:25 PM 0 361 2.09 101.28 0.00 0 btrfs-transaction
|
||||||
|
10:38:25 PM 0 374 0.07 0.00 0.00 0 /usr/bin/rngd -f
|
||||||
|
10:38:25 PM 978 376 0.06 0.00 0.00 0 /usr/lib/systemd/systemd-resolved
|
||||||
|
10:38:25 PM 977 377 0.02 0.00 0.00 0 /usr/lib/systemd/systemd-timesyncd
|
||||||
|
10:38:25 PM 81 387 0.03 0.00 0.00 0 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
|
||||||
|
10:38:25 PM 0 389 0.01 0.00 0.00 0 /usr/lib/systemd/systemd-logind
|
||||||
|
10:38:25 PM 0 390 0.38 0.00 0.00 0 /usr/bin/python /usr/bin/firewalld --nofork --nopid
|
||||||
|
10:38:25 PM 980 397 0.02 0.00 0.00 0 /usr/lib/systemd/systemd-networkd
|
||||||
|
10:38:25 PM 0 413 0.06 0.00 0.00 0 sshd: /usr/bin/sshd -D [listener] 0 of 10-100 startups
|
||||||
|
10:38:25 PM 0 416 0.76 0.01 0.00 0 /usr/bin/containerd
|
||||||
|
10:38:25 PM 0 420 0.01 0.00 0.00 0 /sbin/agetty -o -p -- \u --noclear - linux
|
||||||
|
10:38:25 PM 102 512 0.02 0.00 0.00 0 /usr/lib/polkit-1/polkitd --no-debug
|
||||||
|
10:38:25 PM 0 541 0.13 0.00 0.00 0 /usr/lib/postfix/bin/master -w
|
||||||
|
10:38:25 PM 73 543 0.01 0.00 0.00 0 qmgr -l -t unix -u
|
||||||
|
10:38:25 PM 0 552 1.01 10.06 0.00 0 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 0 740 0.02 0.00 0.00 0 /usr/bin/docker-proxy -proto tcp -host-ip 127.0.0.1 -host-port 32768 -container-ip 172.23.0.2 -container-port 2368
|
||||||
|
10:38:25 PM 0 813 0.06 0.00 0.00 0 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 867fd697f8521ace06fdd9662b2cf3b5e874efebc23e9db72030327a2f3026d8 -address /run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 0 815 0.19 0.00 0.00 0 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 55c52b5be4806af5fed0259c28e8ffe325fa25b4e80d85e25f5ee18c4c79d9d4 -address /run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 27 901 2.94 0.48 0.00 0 mysqld --user=mysql
|
||||||
|
10:38:25 PM 1000 903 2.90 0.02 0.00 0 node current/index.js
|
||||||
|
10:38:25 PM 0 927 0.00 0.00 0.00 0 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 36e2430cadf11232798ffa3a740de793db7273b8e69f8adc873a3ac4b76e7c26 -address /run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 0 946 0.08 0.00 0.00 0 /usr/bin/containerd-shim-runc-v2 -namespace moby -id aa67bc8d030a30948ccf7932392eb867ea534dea7b551feffaab588525893465 -address /run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 0 1018 0.64 0.01 0.00 0 /bin/s6-svscan /etc/s6
|
||||||
|
10:38:25 PM 999 1023 1.88 0.46 0.18 0 mariadbd
|
||||||
|
10:38:25 PM 0 1036 0.00 0.00 0.00 0 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 9eab470b6b82e94e67b095b25461d7a4e734814b142a2a9c5a93b27cf6c93372 -address /run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 0 1108 0.36 0.00 0.00 0 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 2dabcb16629a954dec21bfc11d581ff870b50356155fac083ca35fc675441dc6 -address /run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 0 1138 0.00 0.00 0.00 0 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 63a059875ec719fdce5d64f144bf7cfdf599ce7cdef3207d515f986f17068081 -address /run/containerd/containerd.sock
|
||||||
|
10:38:25 PM 0 1150 0.15 0.00 0.00 0 nginx: master process nginx -g daemon off;
|
||||||
|
10:38:25 PM 0 1207 1.95 0.00 0.00 0 node server.js
|
||||||
|
10:38:25 PM 1000 1214 4.01 0.03 0.00 0 node current/index.js
|
||||||
|
10:38:25 PM 1000 1228 2.62 0.01 0.00 0 node current/index.js
|
||||||
|
10:38:25 PM 0 1366 0.00 0.00 0.00 0 s6-supervise gitea
|
||||||
|
10:38:25 PM 0 1367 0.00 0.00 0.00 0 s6-supervise openssh
|
||||||
|
10:38:25 PM 1000 1370 2.67 0.31 0.05 0 /usr/local/bin/gitea web
|
||||||
|
10:38:25 PM 0 1371 0.20 0.00 0.00 0 sshd: /usr/sbin/sshd -D -e [listener] 0 of 10-100 startups
|
||||||
|
10:38:25 PM 101 1547 0.00 0.06 0.03 0 nginx: worker process
|
||||||
|
10:38:25 PM 101 1548 0.00 0.13 0.10 0 nginx: worker process
|
||||||
|
10:38:25 PM 101 1549 0.01 0.08 0.06 0 nginx: worker process
|
||||||
|
10:38:25 PM 101 1550 0.02 0.13 0.09 0 nginx: worker process
|
||||||
|
10:38:25 PM 101 1551 0.02 0.06 0.03 0 nginx: worker process
|
||||||
|
10:38:25 PM 101 1552 0.03 0.08 0.05 0 nginx: worker process
|
||||||
|
10:38:25 PM 101 1553 0.08 0.10 0.07 0 nginx: worker process
|
||||||
|
10:38:25 PM 101 1554 0.04 1.21 0.04 0 nginx: worker process
|
||||||
|
10:38:25 PM 0 1761 0.01 0.00 0.00 0 /usr/lib/systemd/systemd --user
|
||||||
|
10:38:25 PM 0 1842 0.00 0.00 0.00 0 sshd: trey [priv]
|
||||||
|
10:38:25 PM 0 1845 0.00 0.00 0.00 0 sshd: trey [priv]
|
||||||
|
10:38:25 PM 1000 1847 0.00 0.00 0.00 0 /usr/lib/systemd/systemd --user
|
||||||
|
10:38:25 PM 1000 1858 0.21 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 1000 1952 0.00 0.00 0.00 0 /usr/bin/gpg-agent --supervised
|
||||||
|
10:38:25 PM 1000 1985 0.00 0.00 0.00 0 ssh-agent
|
||||||
|
10:38:25 PM 1000 2056 0.01 0.00 0.00 0 /usr/bin/tmux new-session -P -F#{session_id} -sborg -d -x 800 -y 600
|
||||||
|
10:38:25 PM 1000 2084 0.17 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 1000 2114 0.01 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 1000 2273 0.59 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 1000 2499 0.00 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 1000 2893 0.04 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 1000 3353 1.86 0.00 0.00 0 journalctl -b 0 -fu borg.service
|
||||||
|
10:38:25 PM 1000 3990 0.45 0.29 0.00 0 weechat-curses
|
||||||
|
10:38:25 PM 1000 4156 0.00 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 1000 4506 0.02 0.00 0.00 0 sudo -i
|
||||||
|
10:38:25 PM 0 4540 0.01 0.00 0.00 0 -zsh
|
||||||
|
10:38:25 PM 0 4602 0.00 0.00 0.00 0 /usr/bin/gpg-agent --supervised
|
||||||
|
10:38:25 PM 0 4628 0.00 0.00 0.00 0 ssh-agent
|
||||||
|
10:38:25 PM 73 40275 0.00 0.00 0.00 0 tlsmgr -l -t unix -u
|
||||||
|
10:38:25 PM 1000 232794 0.10 0.11 0.00 0 -zsh
|
||||||
|
10:38:25 PM 0 237182 0.55 0.03 0.00 0 -zsh
|
||||||
|
10:38:25 PM 0 337881 0.00 0.00 0.00 0 sshd: trey [priv]
|
||||||
|
10:38:25 PM 1000 337883 0.00 0.00 0.00 0 sshd: trey
|
||||||
|
10:38:25 PM 0 407920 0.00 0.12 0.00 0 kworker/u16:2-events_unbound
|
||||||
|
10:38:25 PM 73 424790 0.01 0.00 0.00 0 pickup -l -t unix -u
|
||||||
|
10:38:25 PM 0 440267 0.00 0.01 0.00 0 kworker/u16:1-flush-btrfs-1
|
||||||
|
10:38:25 PM 0 440268 0.00 0.01 0.00 0 kworker/u16:3-events_unbound
|
||||||
|
10:38:25 PM 0 442202 0.00 0.01 0.00 0 kworker/u16:4-events_power_efficient
|
84
bugs/2023-08-01_psi_io/2023-08-01_pidstat-dl_iodelay.txt
Normal file
84
bugs/2023-08-01_psi_io/2023-08-01_pidstat-dl_iodelay.txt
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
iodelay Command
|
||||||
|
0 /sbin/init
|
||||||
|
0 khugepaged
|
||||||
|
0 jbd2/sda6-8
|
||||||
|
0 /usr/lib/systemd/systemd-journald
|
||||||
|
0 /usr/lib/systemd/systemd-udevd
|
||||||
|
0 btrfs-cleaner
|
||||||
|
0 btrfs-transaction
|
||||||
|
0 btrfs-cleaner
|
||||||
|
0 btrfs-transaction
|
||||||
|
0 /usr/bin/rngd
|
||||||
|
0 /usr/lib/systemd/systemd-resolved
|
||||||
|
0 /usr/lib/systemd/systemd-timesyncd
|
||||||
|
0 /usr/bin/dbus-daemon
|
||||||
|
0 /usr/lib/systemd/systemd-logind
|
||||||
|
0 /usr/bin/python
|
||||||
|
0 /usr/lib/systemd/systemd-networkd
|
||||||
|
0 sshd:
|
||||||
|
0 /usr/bin/containerd
|
||||||
|
0 /sbin/agetty
|
||||||
|
0 /usr/lib/polkit-1/polkitd
|
||||||
|
0 /usr/lib/postfix/bin/master
|
||||||
|
0 qmgr
|
||||||
|
0 /usr/bin/dockerd
|
||||||
|
0 /usr/bin/docker-proxy
|
||||||
|
0 /usr/bin/containerd-shim-runc-v2
|
||||||
|
0 /usr/bin/containerd-shim-runc-v2
|
||||||
|
0 mysqld
|
||||||
|
0 node
|
||||||
|
0 /usr/bin/containerd-shim-runc-v2
|
||||||
|
0 /usr/bin/containerd-shim-runc-v2
|
||||||
|
0 /bin/s6-svscan
|
||||||
|
0 mariadbd
|
||||||
|
0 /usr/bin/containerd-shim-runc-v2
|
||||||
|
0 /usr/bin/containerd-shim-runc-v2
|
||||||
|
0 /usr/bin/containerd-shim-runc-v2
|
||||||
|
0 nginx:
|
||||||
|
0 node
|
||||||
|
0 node
|
||||||
|
0 node
|
||||||
|
0 s6-supervise
|
||||||
|
0 s6-supervise
|
||||||
|
0 /usr/local/bin/gitea
|
||||||
|
0 sshd:
|
||||||
|
0 nginx:
|
||||||
|
0 nginx:
|
||||||
|
0 nginx:
|
||||||
|
0 nginx:
|
||||||
|
0 nginx:
|
||||||
|
0 nginx:
|
||||||
|
0 nginx:
|
||||||
|
0 nginx:
|
||||||
|
0 /usr/lib/systemd/systemd
|
||||||
|
0 sshd:
|
||||||
|
0 sshd:
|
||||||
|
0 /usr/lib/systemd/systemd
|
||||||
|
0 -zsh
|
||||||
|
0 /usr/bin/gpg-agent
|
||||||
|
0 ssh-agent
|
||||||
|
0 /usr/bin/tmux
|
||||||
|
0 -zsh
|
||||||
|
0 -zsh
|
||||||
|
0 -zsh
|
||||||
|
0 -zsh
|
||||||
|
0 -zsh
|
||||||
|
0 journalctl
|
||||||
|
0 weechat-curses
|
||||||
|
0 -zsh
|
||||||
|
0 sudo
|
||||||
|
0 -zsh
|
||||||
|
0 /usr/bin/gpg-agent
|
||||||
|
0 ssh-agent
|
||||||
|
0 tlsmgr
|
||||||
|
0 -zsh
|
||||||
|
0 -zsh
|
||||||
|
0 sshd:
|
||||||
|
0 sshd:
|
||||||
|
0 kworker/u16:2-events_power_efficient
|
||||||
|
0 pickup
|
||||||
|
0 kworker/u16:6-events_power_efficient
|
||||||
|
0 kworker/u16:1-events_unbound
|
||||||
|
0 kworker/u16:3-events_unbound
|
||||||
|
0 kworker/u16:0-btrfs-endio-write
|
||||||
|
0 kworker/u16:4-flush-btrfs-1
|
2873
bugs/2023-08-01_psi_io/pressure.csv
Normal file
2873
bugs/2023-08-01_psi_io/pressure.csv
Normal file
File diff suppressed because it is too large
Load Diff
542
bugs/2024-04-14_qutebrowser_Googe_Docs/config.py
Normal file
542
bugs/2024-04-14_qutebrowser_Googe_Docs/config.py
Normal file
@ -0,0 +1,542 @@
|
|||||||
|
# Autogenerated config.py
|
||||||
|
#
|
||||||
|
# NOTE: config.py is intended for advanced users who are comfortable
|
||||||
|
# with manually migrating the config file on qutebrowser upgrades. If
|
||||||
|
# you prefer, you can also configure qutebrowser using the
|
||||||
|
# :set/:bind/:config-* commands without having to write a config.py
|
||||||
|
# file.
|
||||||
|
#
|
||||||
|
# try:
|
||||||
|
# import qutebrowser.config as config
|
||||||
|
# from qutebrowser.config import (config as c, configfiles)
|
||||||
|
# c.load_autoconfig(False)
|
||||||
|
# except ImportError:
|
||||||
|
# pass
|
||||||
|
from qutebrowser.config.configfiles import ConfigAPI
|
||||||
|
from qutebrowser.config.config import ConfigContainer
|
||||||
|
config: ConfigAPI = config
|
||||||
|
c: ConfigContainer = c
|
||||||
|
config.load_autoconfig(False)
|
||||||
|
# Documentation:
|
||||||
|
# qute://help/configuring.html
|
||||||
|
# qute://help/settings.html
|
||||||
|
|
||||||
|
# Change the argument to True to still load settings configured via
|
||||||
|
# autoconfig.yml
|
||||||
|
# c.load_autoconfig(False)
|
||||||
|
|
||||||
|
# How to open links in an existing instance if a new one is launched.
|
||||||
|
# This happens when e.g. opening a link from a terminal. See
|
||||||
|
# `new_instance_open_target_window` to customize in which window the
|
||||||
|
# link is opened in.
|
||||||
|
# Type: String
|
||||||
|
# Valid values:
|
||||||
|
# - tab: Open a new tab in the existing window and activate the window.
|
||||||
|
# - tab-bg: Open a new background tab in the existing window and activate the
|
||||||
|
# window.
|
||||||
|
# - tab-silent: Open a new tab in the existing window without activating the
|
||||||
|
# window.
|
||||||
|
# - tab-bg-silent: Open a new background tab in the existing window without
|
||||||
|
# activating the window.
|
||||||
|
# - window: Open in a new window.
|
||||||
|
# - private-window: Open in a new private window.
|
||||||
|
c.new_instance_open_target = 'tab'
|
||||||
|
|
||||||
|
# Backend to use to display websites. qutebrowser supports two different
|
||||||
|
# web rendering engines / backends, QtWebEngine and QtWebKit (not
|
||||||
|
# recommended). QtWebEngine is Qt's official successor to QtWebKit, and
|
||||||
|
# both the default/recommended backend. It's based on a stripped-down
|
||||||
|
# Chromium and regularly updated with security fixes and new features by
|
||||||
|
# the Qt project: https://wiki.qt.io/QtWebEngine QtWebKit was
|
||||||
|
# qutebrowser's original backend when the project was started. However,
|
||||||
|
# support for QtWebKit was discontinued by the Qt project with Qt 5.6 in
|
||||||
|
# 2016. The development of QtWebKit was picked up in an official fork:
|
||||||
|
# https://github.com/qtwebkit/qtwebkit - however, the project seems to
|
||||||
|
# have stalled again. The latest release (5.212.0 Alpha 4) from March
|
||||||
|
# 2020 is based on a WebKit version from 2016, with many known security
|
||||||
|
# vulnerabilities. Additionally, there is no process isolation and
|
||||||
|
# sandboxing. Due to all those issues, while support for QtWebKit is
|
||||||
|
# still available in qutebrowser for now, using it is strongly
|
||||||
|
# discouraged.
|
||||||
|
# Type: String
|
||||||
|
# Valid values:
|
||||||
|
# - webengine: Use QtWebEngine (based on Chromium - recommended).
|
||||||
|
# - webkit: Use QtWebKit (based on WebKit, similar to Safari - many known
|
||||||
|
# security issues!).
|
||||||
|
c.backend = 'webengine'
|
||||||
|
|
||||||
|
# Always restore open sites when qutebrowser is reopened. Without this
|
||||||
|
# option set, `:wq` (`:quit --save`) needs to be used to save open tabs
|
||||||
|
# (and restore them), while quitting qutebrowser in any other way will
|
||||||
|
# not save/restore the session. By default, this will save to the
|
||||||
|
# session which was last loaded. This behavior can be customized via the
|
||||||
|
# `session.default_name` setting.
|
||||||
|
# Type: Bool
|
||||||
|
c.auto_save.session = True
|
||||||
|
|
||||||
|
# Which cookies to accept. With QtWebEngine, this setting also controls
|
||||||
|
# other features with tracking capabilities similar to those of cookies;
|
||||||
|
# including IndexedDB, DOM storage, filesystem API, service workers, and
|
||||||
|
# AppCache. Note that with QtWebKit, only `all` and `never` are
|
||||||
|
# supported as per-domain values. Setting `no-3rdparty` or `no-
|
||||||
|
# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
|
||||||
|
# `all`. If this setting is used with URL patterns, the pattern gets
|
||||||
|
# applied to the origin/first party URL of the page making the request,
|
||||||
|
# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
|
||||||
|
# from URLs, so URL patterns using paths will not match. With
|
||||||
|
# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
|
||||||
|
# you will typically need to set this setting for `example.com` when the
|
||||||
|
# cookie is set on `somesubdomain.example.com` for it to work properly.
|
||||||
|
# To debug issues with this setting, start qutebrowser with `--debug
|
||||||
|
# --logfilter network --debug-flag log-cookies` which will show all
|
||||||
|
# cookies being set.
|
||||||
|
# Type: String
|
||||||
|
# Valid values:
|
||||||
|
# - all: Accept all cookies.
|
||||||
|
# - no-3rdparty: Accept cookies from the same origin only. This is known to
|
||||||
|
# break some sites, such as GMail.
|
||||||
|
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a
|
||||||
|
# cookie is already set for the domain. On QtWebEngine, this is the same
|
||||||
|
# as no-3rdparty.
|
||||||
|
# - never: Don't accept cookies at all.
|
||||||
|
config.set('content.cookies.accept', 'all', 'chrome-devtools://*')
|
||||||
|
|
||||||
|
# Which cookies to accept. With QtWebEngine, this setting also controls
|
||||||
|
# other features with tracking capabilities similar to those of cookies;
|
||||||
|
# including IndexedDB, DOM storage, filesystem API, service workers, and
|
||||||
|
# AppCache. Note that with QtWebKit, only `all` and `never` are
|
||||||
|
# supported as per-domain values. Setting `no-3rdparty` or `no-
|
||||||
|
# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
|
||||||
|
# `all`. If this setting is used with URL patterns, the pattern gets
|
||||||
|
# applied to the origin/first party URL of the page making the request,
|
||||||
|
# not the request URL. With QtWebEngine 5.15.0+, paths will be stripped
|
||||||
|
# from URLs, so URL patterns using paths will not match. With
|
||||||
|
# QtWebEngine 5.15.2+, subdomains are additionally stripped as well, so
|
||||||
|
# you will typically need to set this setting for `example.com` when the
|
||||||
|
# cookie is set on `somesubdomain.example.com` for it to work properly.
|
||||||
|
# To debug issues with this setting, start qutebrowser with `--debug
|
||||||
|
# --logfilter network --debug-flag log-cookies` which will show all
|
||||||
|
# cookies being set.
|
||||||
|
# Type: String
|
||||||
|
# Valid values:
|
||||||
|
# - all: Accept all cookies.
|
||||||
|
# - no-3rdparty: Accept cookies from the same origin only. This is known to
|
||||||
|
# break some sites, such as GMail.
|
||||||
|
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a
|
||||||
|
# cookie is already set for the domain. On QtWebEngine, this is the same
|
||||||
|
# as no-3rdparty.
|
||||||
|
# - never: Don't accept cookies at all.
|
||||||
|
config.set('content.cookies.accept', 'all', 'devtools://*')
|
||||||
|
|
||||||
|
# Allow websites to request geolocations.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.geolocation', True, 'https://order.firehousesubs.com')
|
||||||
|
config.set('content.geolocation', True, 'https://www.aetna.com')
|
||||||
|
|
||||||
|
# Allow websites to request geolocations.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.geolocation', True, 'https://www.google.com')
|
||||||
|
|
||||||
|
# Allow websites to request geolocations.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.geolocation', False, 'https://www.neworleanssaints.com')
|
||||||
|
|
||||||
|
# Allow websites to request geolocations.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.geolocation', False, 'https://www.tracfone.com')
|
||||||
|
|
||||||
|
# Value to send in the `Accept-Language` header. Note that the value
|
||||||
|
# read from JavaScript is always the global value.
|
||||||
|
# Type: String
|
||||||
|
config.set('content.headers.accept_language',
|
||||||
|
'', 'https://matchmaker.krunker.io/*')
|
||||||
|
|
||||||
|
# fix for instacart
|
||||||
|
config.set('content.blocking.enabled', False, 'https://*.instacart.com/*')
|
||||||
|
|
||||||
|
# fix for Rocket Mortgage
|
||||||
|
config.set('content.blocking.enabled', False, 'https://*.rocketaccount.com/*')
|
||||||
|
config.set('content.blocking.enabled', False, 'https://*.rocketmortgage.com/*')
|
||||||
|
|
||||||
|
c.content.blocking.whitelist = [
|
||||||
|
'https://cdn.eu1.exponea.com/zagg-us-production-2/*',
|
||||||
|
'https://*.apple.com/*',
|
||||||
|
'https://network.bazaarvoice.com/*'
|
||||||
|
]
|
||||||
|
# User agent to send. The following placeholders are defined: *
|
||||||
|
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
||||||
|
# The underlying WebKit version (set to a fixed value with
|
||||||
|
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
||||||
|
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
||||||
|
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
||||||
|
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
||||||
|
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
||||||
|
# running qutebrowser version. The default value is equal to the
|
||||||
|
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
||||||
|
# read from JavaScript is always the global value. With QtWebEngine
|
||||||
|
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
||||||
|
# JavaScript requires a restart.
|
||||||
|
# Type: FormatString
|
||||||
|
# config.set('content.headers.user_agent',
|
||||||
|
# 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version}'
|
||||||
|
# + '(KHTML, like Gecko) {upstream_browser_key}/'
|
||||||
|
# + '{upstream_browser_version} Safari/{webkit_version}'
|
||||||
|
# 'https://web.whatsapp.com/')
|
||||||
|
|
||||||
|
# User agent to send. The following placeholders are defined: *
|
||||||
|
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
||||||
|
# The underlying WebKit version (set to a fixed value with
|
||||||
|
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
||||||
|
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
||||||
|
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
||||||
|
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
||||||
|
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
||||||
|
# running qutebrowser version. The default value is equal to the
|
||||||
|
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
||||||
|
# read from JavaScript is always the global value. With QtWebEngine
|
||||||
|
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
||||||
|
# JavaScript requires a restart.
|
||||||
|
# Type: FormatString
|
||||||
|
# config.set('content.headers.user_agent',
|
||||||
|
# 'Mozilla/5.0 ({os_info}; rv:90.0) Gecko/20100101 Firefox/90.0',
|
||||||
|
# 'https://accounts.google.com/*')
|
||||||
|
#
|
||||||
|
# User agent to send. The following placeholders are defined: *
|
||||||
|
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
||||||
|
# The underlying WebKit version (set to a fixed value with
|
||||||
|
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
||||||
|
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
||||||
|
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
||||||
|
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
||||||
|
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
||||||
|
# running qutebrowser version. The default value is equal to the
|
||||||
|
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
||||||
|
# read from JavaScript is always the global value. With QtWebEngine
|
||||||
|
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
||||||
|
# JavaScript requires a restart.
|
||||||
|
# Type: FormatString
|
||||||
|
config.set('content.headers.user_agent',
|
||||||
|
'Mozilla/5.0 ({os_info}) AppleWebKit/537.36 (KHTML, like Gecko)'
|
||||||
|
+ 'Chrome/99 Safari/537.36',
|
||||||
|
'https://*.slack.com/*')
|
||||||
|
|
||||||
|
config.set('content.headers.user_agent',
|
||||||
|
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36'
|
||||||
|
+ '(KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
|
||||||
|
'https://forum.ghost.org')
|
||||||
|
|
||||||
|
# config.set('content.headers.user_agent',
|
||||||
|
# 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36'
|
||||||
|
# + '(KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
|
||||||
|
# 'https://*.instacart.com/*')
|
||||||
|
|
||||||
|
config.set('content.headers.user_agent',
|
||||||
|
'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} '
|
||||||
|
+ '(KHTML, like Gecko) {qt_key}/{qt_version} '
|
||||||
|
+ '{upstream_browser_key}/{upstream_browser_version} '
|
||||||
|
+ 'Safari/{webkit_version}',
|
||||||
|
'*')
|
||||||
|
# Load images automatically in web pages.
|
||||||
|
# Type: Bool
|
||||||
|
config.set('content.images', True, 'chrome-devtools://*')
|
||||||
|
|
||||||
|
# Load images automatically in web pages.
|
||||||
|
# Type: Bool
|
||||||
|
config.set('content.images', True, 'devtools://*')
|
||||||
|
|
||||||
|
# Enable JavaScript.
|
||||||
|
# Type: Bool
|
||||||
|
config.set('content.javascript.enabled', True, 'chrome-devtools://*')
|
||||||
|
|
||||||
|
# Enable JavaScript.
|
||||||
|
# Type: Bool
|
||||||
|
config.set('content.javascript.enabled', True, 'devtools://*')
|
||||||
|
|
||||||
|
# Enable JavaScript.
|
||||||
|
# Type: Bool
|
||||||
|
config.set('content.javascript.enabled', True, 'chrome://*/*')
|
||||||
|
|
||||||
|
# Enable JavaScript.
|
||||||
|
# Type: Bool
|
||||||
|
config.set('content.javascript.enabled', True, 'qute://*/*')
|
||||||
|
|
||||||
|
# Allow websites to show notifications.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.notifications.enabled',
|
||||||
|
True,
|
||||||
|
'https://calendar.google.com')
|
||||||
|
|
||||||
|
# Allow websites to show notifications.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.notifications.enabled',
|
||||||
|
True,
|
||||||
|
'https://messages.google.com')
|
||||||
|
|
||||||
|
# Allow websites to show notifications.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.notifications.enabled', False, 'https://www.youtube.com')
|
||||||
|
config.set('content.notifications.enabled', False, 'https://mail.google.com')
|
||||||
|
|
||||||
|
# Allow websites to register protocol handlers via
|
||||||
|
# `navigator.registerProtocolHandler`.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.register_protocol_handler',
|
||||||
|
True, 'https://calendar.google.com?cid=%25s')
|
||||||
|
|
||||||
|
# Allow websites to register protocol handlers via
|
||||||
|
# `navigator.registerProtocolHandler`.
|
||||||
|
# Type: BoolAsk
|
||||||
|
# Valid values:
|
||||||
|
# - true
|
||||||
|
# - false
|
||||||
|
# - ask
|
||||||
|
config.set('content.register_protocol_handler',
|
||||||
|
False,
|
||||||
|
'https://mail.google.com?extsrc=mailto&url=%25s')
|
||||||
|
|
||||||
|
# Number of commands to save in the command history. 0: no history / -1:
|
||||||
|
# unlimited
|
||||||
|
# Type: Int
|
||||||
|
c.completion.cmd_history_max_items = -1
|
||||||
|
|
||||||
|
# Move on to the next part when there's only one possible completion
|
||||||
|
# left.
|
||||||
|
# Type: Bool
|
||||||
|
c.completion.quick = True
|
||||||
|
|
||||||
|
# Which categories to show (in which order) in the :open completion.
|
||||||
|
# Type: FlagList
|
||||||
|
# Valid values:
|
||||||
|
# - searchengines
|
||||||
|
# - quickmarks
|
||||||
|
# - bookmarks
|
||||||
|
# - history
|
||||||
|
# - filesystem
|
||||||
|
c.completion.open_categories = [
|
||||||
|
'searchengines',
|
||||||
|
'quickmarks',
|
||||||
|
'bookmarks',
|
||||||
|
'history',
|
||||||
|
'filesystem']
|
||||||
|
|
||||||
|
# Editor (and arguments) to use for the `edit-*` commands. The following
|
||||||
|
# placeholders are defined: * `{file}`: Filename of the file to be
|
||||||
|
# edited. * `{line}`: Line in which the caret is found in the text. *
|
||||||
|
# `{column}`: Column in which the caret is found in the text. *
|
||||||
|
# `{line0}`: Same as `{line}`, but starting from index 0. * `{column0}`:
|
||||||
|
# Same as `{column}`, but starting from index 0.
|
||||||
|
# Type: ShellCommand
|
||||||
|
c.editor.command = [
|
||||||
|
'alacritty',
|
||||||
|
'--command',
|
||||||
|
'vim',
|
||||||
|
'{file}',
|
||||||
|
'-c',
|
||||||
|
'normal {line0}G{column0}l']
|
||||||
|
|
||||||
|
# What search to start when something else than a URL is entered.
|
||||||
|
# Type: String
|
||||||
|
# Valid values:
|
||||||
|
# - naive: Use simple/naive check.
|
||||||
|
# - dns: Use DNS requests (might be slow!).
|
||||||
|
# - never: Never search automatically.
|
||||||
|
# - schemeless: Always search automatically unless URL explicitly contains a
|
||||||
|
# scheme.
|
||||||
|
c.url.auto_search = 'naive'
|
||||||
|
|
||||||
|
# Page to open if :open -t/-b/-w is used without URL. Use `about:blank`
|
||||||
|
# for a blank page.
|
||||||
|
# Type: FuzzyUrl
|
||||||
|
c.url.default_page = 'about:blank'
|
||||||
|
|
||||||
|
# Search engines which can be used via the address bar. Maps a search
|
||||||
|
# engine name (such as `DEFAULT`, or `ddg`) to a URL with a `{}`
|
||||||
|
# placeholder. The placeholder will be replaced by the search term, use
|
||||||
|
# `{{` and `}}` for literal `{`/`}` braces. The following further
|
||||||
|
# placeholds are defined to configure how special characters in the
|
||||||
|
# search terms are replaced by safe characters (called 'quoting'): *
|
||||||
|
# `{}` and `{semiquoted}` quote everything except slashes; this is the
|
||||||
|
# most sensible choice for almost all search engines (for the search
|
||||||
|
# term `slash/and&` this placeholder expands to `slash/and%26amp`).
|
||||||
|
# * `{quoted}` quotes all characters (for `slash/and&` this
|
||||||
|
# placeholder expands to `slash%2Fand%26amp`). * `{unquoted}` quotes
|
||||||
|
# nothing (for `slash/and&` this placeholder expands to
|
||||||
|
# `slash/and&`). * `{0}` means the same as `{}`, but can be used
|
||||||
|
# multiple times. The search engine named `DEFAULT` is used when
|
||||||
|
# `url.auto_search` is turned on and something else than a URL was
|
||||||
|
# entered to be opened. Other search engines can be used by prepending
|
||||||
|
# the search engine name to the search term, e.g. `:open google
|
||||||
|
# qutebrowser`.
|
||||||
|
# Type: Dict
|
||||||
|
c.url.searchengines = {'DEFAULT': 'https://google.com/search?q={semiquoted}'}
|
||||||
|
|
||||||
|
# Page(s) to open at the start.
|
||||||
|
# Type: List of FuzzyUrl, or FuzzyUrl
|
||||||
|
c.url.start_pages = 'about:blank'
|
||||||
|
|
||||||
|
# tab configs
|
||||||
|
c.tabs.position = 'left'
|
||||||
|
c.tabs.new_position.related = 'last'
|
||||||
|
c.tabs.pinned.shrink = False
|
||||||
|
c.tabs.title.format = '{audio}{aligned_index}: {current_title}'
|
||||||
|
c.tabs.title.format_pinned = '{audio}{aligned_index}: {current_title}'
|
||||||
|
|
||||||
|
# Foreground color of the statusbar.
|
||||||
|
# Type: QssColor
|
||||||
|
c.colors.statusbar.normal.fg = '#ffd7af'
|
||||||
|
|
||||||
|
# Background color of the statusbar.
|
||||||
|
# Type: QssColor
|
||||||
|
c.colors.statusbar.normal.bg = '#282828'
|
||||||
|
|
||||||
|
# Default foreground color of the URL in the statusbar.
|
||||||
|
# Type: QssColor
|
||||||
|
c.colors.statusbar.url.fg = '#ffd7af'
|
||||||
|
|
||||||
|
# Foreground color of the URL in the statusbar on successful load
|
||||||
|
# (http).
|
||||||
|
# Type: QssColor
|
||||||
|
c.colors.statusbar.url.success.http.fg = '#ffd7af'
|
||||||
|
|
||||||
|
# Background color of the tab bar.
|
||||||
|
# Type: QssColor
|
||||||
|
c.colors.tabs.bar.bg = '#282828'
|
||||||
|
|
||||||
|
# Foreground color of unselected odd tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.odd.fg = '#ffd7af'
|
||||||
|
|
||||||
|
# Background color of unselected odd tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.odd.bg = '#444444'
|
||||||
|
|
||||||
|
# Foreground color of unselected even tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.even.fg = '#ffd7af'
|
||||||
|
|
||||||
|
# Background color of unselected even tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.even.bg = '#333333'
|
||||||
|
|
||||||
|
# Foreground color of selected odd tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.selected.odd.fg = '#000000'
|
||||||
|
c.colors.tabs.selected.odd.bg = '#cccccc'
|
||||||
|
|
||||||
|
# Foreground color of selected even tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.selected.even.fg = '#000000'
|
||||||
|
c.colors.tabs.selected.even.bg = '#cccccc'
|
||||||
|
|
||||||
|
# Foreground color of pinned unselected odd tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.pinned.odd.fg = '#ffd7af'
|
||||||
|
|
||||||
|
# Background color of pinned unselected odd tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.pinned.odd.bg = '#282828'
|
||||||
|
|
||||||
|
# Foreground color of pinned unselected even tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.pinned.even.fg = '#ffd7af'
|
||||||
|
|
||||||
|
# Background color of pinned unselected even tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.pinned.even.bg = '#333333'
|
||||||
|
|
||||||
|
# Foreground color of pinned selected odd tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.pinned.selected.odd.fg = '#000000'
|
||||||
|
c.colors.tabs.pinned.selected.odd.bg = '#cccccc'
|
||||||
|
|
||||||
|
# Foreground color of pinned selected even tabs.
|
||||||
|
# Type: QtColor
|
||||||
|
c.colors.tabs.pinned.selected.even.fg = '#000000'
|
||||||
|
c.colors.tabs.pinned.selected.even.bg = '#cccccc'
|
||||||
|
|
||||||
|
# Render all web contents using a dark theme. Example configurations
|
||||||
|
# from Chromium's `chrome://flags`: - "With simple HSL/CIELAB/RGB-based
|
||||||
|
# inversion": Set `colors.webpage.darkmode.algorithm` accordingly. -
|
||||||
|
# "With selective image inversion": Set
|
||||||
|
# `colors.webpage.darkmode.policy.images` to `smart`. - "With selective
|
||||||
|
# inversion of non-image elements": Set
|
||||||
|
# `colors.webpage.darkmode.threshold.text` to 150 and
|
||||||
|
# `colors.webpage.darkmode.threshold.background` to 205. - "With
|
||||||
|
# selective inversion of everything": Combines the two variants above.
|
||||||
|
# Type: Bool
|
||||||
|
c.colors.webpage.darkmode.enabled = True
|
||||||
|
c.colors.webpage.darkmode.policy.images = 'smart'
|
||||||
|
c.colors.webpage.darkmode.threshold.foreground = 150
|
||||||
|
c.colors.webpage.darkmode.threshold.background = 205
|
||||||
|
c.colors.webpage.preferred_color_scheme = 'dark'
|
||||||
|
c.colors.webpage.darkmode.algorithm = "lightness-cielab"
|
||||||
|
# c.qt.workarounds.disable_accelerated_2d_canvas = "always"
|
||||||
|
# c.colors.webpage.darkmode.algorithm = "lightness-hsl"
|
||||||
|
# c.colors.webpage.darkmode.algorithm = "brightness-rgb"
|
||||||
|
|
||||||
|
# c.fonts.default_family = 'Iosevka Term'
|
||||||
|
c.fonts.default_family = 'IntelOne Mono Light'
|
||||||
|
c.fonts.default_size = "10pt"
|
||||||
|
c.colors.hints.bg = 'qlineargradient(x1:0, y1:0, x2:0, y2:1, ' + \
|
||||||
|
'stop:0 rgba(0, 0, 133, 0.8),' + \
|
||||||
|
'stop:1 rgba(0, 0, 66, 0.8))'
|
||||||
|
c.colors.hints.fg = 'white'
|
||||||
|
c.content.cookies.accept = 'all'
|
||||||
|
c.zoom.default = "100%"
|
||||||
|
# c.content.blocking.whitelist = ['https://www.amazon.com']
|
||||||
|
|
||||||
|
# Allow Javascript access to clipboard
|
||||||
|
config.set('content.javascript.clipboard', 'access')
|
||||||
|
|
||||||
|
# BitWarden stuff
|
||||||
|
bitwarden = """spawn --userscript qute-bitwarden """
|
||||||
|
invocation = """--password-prompt-invocation """
|
||||||
|
script = """/home/trey/bin/qutebrowser-bitwarden-prompt.sh """
|
||||||
|
lock = """--auto-lock """
|
||||||
|
# Bindings for normal mode
|
||||||
|
config.unbind('r', mode='normal')
|
||||||
|
config.unbind('R', mode='normal')
|
||||||
|
config.bind('<Ctrl-r>', 'reload')
|
||||||
|
config.bind('<Ctrl-R>', 'reload --force')
|
||||||
|
config.bind('gl',
|
||||||
|
bitwarden + invocation + script + lock + "86400")
|
||||||
|
config.bind('gp',
|
||||||
|
bitwarden + invocation + script + "-w " + lock + "86400")
|
||||||
|
config.bind('gP',
|
||||||
|
bitwarden + invocation + script + "-w " + lock + "0")
|
||||||
|
config.bind('gc',
|
||||||
|
bitwarden + invocation + script + lock + "0")
|
||||||
|
|
||||||
|
config.bind('<Alt-j>', 'tab-focus')
|
BIN
bugs/2024-04-14_qutebrowser_Googe_Docs/demonstration.png
Normal file
BIN
bugs/2024-04-14_qutebrowser_Googe_Docs/demonstration.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 192 KiB |
BIN
commento.aprilandtrey.us.json.gz
Normal file
BIN
commento.aprilandtrey.us.json.gz
Normal file
Binary file not shown.
BIN
commento.eldon.me.json.gz
Normal file
BIN
commento.eldon.me.json.gz
Normal file
Binary file not shown.
31
deltachunk_history.paste
Normal file
31
deltachunk_history.paste
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
ls -alZih ~/.zshistory:
|
||||||
|
-rw-r--r-- 1 trey trey 59832 Jan 9 21:15 /home/trey/.zhistory
|
||||||
|
|
||||||
|
|
||||||
|
setopt:
|
||||||
|
autocd
|
||||||
|
nobeep
|
||||||
|
braceccl
|
||||||
|
correct
|
||||||
|
extendedglob
|
||||||
|
extendedhistory
|
||||||
|
histexpiredupsfirst
|
||||||
|
histignorealldups
|
||||||
|
histignorespace
|
||||||
|
histnostore
|
||||||
|
histverify
|
||||||
|
incappendhistory
|
||||||
|
interactive
|
||||||
|
interactivecomments
|
||||||
|
login
|
||||||
|
nonomatch
|
||||||
|
nullglob
|
||||||
|
promptbang
|
||||||
|
shinstdin
|
||||||
|
vi
|
||||||
|
|
||||||
|
|
||||||
|
env | grep -i hist:
|
||||||
|
PWD=/home/trey/bugs/2023-03-24_deltachunk_zhistory_snafu
|
||||||
|
HISTSIZE=99999
|
||||||
|
CM_HISTLENGTH=100
|
185
docker-compose.yml
Normal file
185
docker-compose.yml
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
deltachunk-ext:
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.bridge.host_binding_ipv4: "127.0.0.1"
|
||||||
|
deltachunk-int:
|
||||||
|
driver_opts:
|
||||||
|
com.docker.network.bridge.host_binding_ipv4: "127.0.0.1"
|
||||||
|
|
||||||
|
services:
|
||||||
|
nginx:
|
||||||
|
image: nginx:${NGINX_VERSION}
|
||||||
|
container_name: nginx
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- deltachunk-ext
|
||||||
|
- deltachunk-int
|
||||||
|
ports:
|
||||||
|
- "${NGINX_HOST_HTTPS_PORT}:${NGINX_CONTAINER_HTTPS_PORT}"
|
||||||
|
- "${NGINX_HOST_HTTP_PORT}:${NGINX_CONTAINER_HTTP_PORT}"
|
||||||
|
volumes:
|
||||||
|
- "${NGINX_HOST_ETC}:${NGINX_CONTAINER_ETC}:ro"
|
||||||
|
- "${NGINX_HOST_WEB_ROOT}:${NGINX_CONTAINER_WEB_ROOT}:ro"
|
||||||
|
- "${NGINX_HOST_CERTS_DIR}:${NGINX_CONTAINER_CERTS_DIR}:ro"
|
||||||
|
- "${NGINX_HOST_LOG_DIR}:${NGINX_CONTAINER_LOG_DIR}:"
|
||||||
|
- "${NGINX_HOST_CACHE}:${NGINX_CONTAINER_CACHE}"
|
||||||
|
- "${NGINX_HOST_RUN}:${NGINX_CONTAINER_RUN}"
|
||||||
|
depends_on:
|
||||||
|
- gitea
|
||||||
|
- aprilandtrey
|
||||||
|
- commento_aprilandtrey
|
||||||
|
- eldon
|
||||||
|
- commento_eldon
|
||||||
|
links:
|
||||||
|
- gitea
|
||||||
|
- aprilandtrey
|
||||||
|
- commento_aprilandtrey
|
||||||
|
- eldon
|
||||||
|
- commento_eldon
|
||||||
|
gitea:
|
||||||
|
image: gitea/gitea:${GITEA_VERSION}
|
||||||
|
container_name: gitea
|
||||||
|
environment:
|
||||||
|
- USER=${GITEA_USER}
|
||||||
|
- USER_UID=${GITEA_USER_UID}
|
||||||
|
- USER_GID=${GITEA_USER_GID}
|
||||||
|
- GITEA__database__DB_TYPE=${GITEA_DATABASE_TYPE}
|
||||||
|
- GITEA__database__HOST=${GITEA_DATABASE_HOST}
|
||||||
|
- GITEA__database__USER=${GITEA_DATABASE_USER}
|
||||||
|
- GITEA__database__PASSWD=${GITEA_DATABASE_PASS}
|
||||||
|
- GITEA__database__NAME=${GITEA_DATABASE}
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- deltachunk-int
|
||||||
|
ports:
|
||||||
|
- "${GITEA_CONTAINER_PORT}"
|
||||||
|
- "${GITEA_HOST_SSH_PORT}:${GITEA_CONTAINER_SSH_PORT}"
|
||||||
|
volumes:
|
||||||
|
- "${GITEA_CONTAINER_DATA}/.snapshots/"
|
||||||
|
- "${GITEA_HOST_DATA}:${GITEA_CONTAINER_DATA}"
|
||||||
|
- "${GITEA_HOST_SSH_DIR}:${GITEA_CONTAINER_SSH_DIR}"
|
||||||
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
|
links:
|
||||||
|
- mariadb
|
||||||
|
aprilandtrey:
|
||||||
|
image: ghost:${GHOST_VERSION}
|
||||||
|
container_name: aprilandtrey
|
||||||
|
environment:
|
||||||
|
database__client: ${APRILANDTREY_GHOST_DATABASE_CLIENT}
|
||||||
|
database__connection__host: ${APRILANDTREY_GHOST_DATABASE_HOST}
|
||||||
|
database__connection__user: ${APRILANDTREY_GHOST_DATABASE_USER}
|
||||||
|
database__connection__password: ${APRILANDTREY_GHOST_DATABASE_PASS}
|
||||||
|
database__connection__database: ${APRILANDTREY_GHOST_DATABASE}
|
||||||
|
url: ${APRILANDTREY_GHOST_URL}
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
networks:
|
||||||
|
- deltachunk-int
|
||||||
|
ports:
|
||||||
|
- "${APRILANDTREY_GHOST_CONTAINER_PORT}"
|
||||||
|
links:
|
||||||
|
- mariadb
|
||||||
|
volumes:
|
||||||
|
- "${APRILANDTREY_GHOST_HOST_DIR}:${APRILANDTREY_GHOST_CONTAINER_DIR}"
|
||||||
|
eldon:
|
||||||
|
image: ghost:${GHOST_VERSION}
|
||||||
|
container_name: eldon
|
||||||
|
environment:
|
||||||
|
database__client: ${ELDON_GHOST_DATABASE_CLIENT}
|
||||||
|
database__connection__host: ${ELDON_GHOST_DATABASE_HOST}
|
||||||
|
database__connection__user: ${ELDON_GHOST_DATABASE_USER}
|
||||||
|
database__connection__password: ${ELDON_GHOST_DATABASE_PASS}
|
||||||
|
database__connection__database: ${ELDON_GHOST_DATABASE}
|
||||||
|
url: ${ELDON_GHOST_URL}
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
networks:
|
||||||
|
- deltachunk-int
|
||||||
|
ports:
|
||||||
|
- "${ELDON_GHOST_CONTAINER_PORT}"
|
||||||
|
links:
|
||||||
|
- mariadb
|
||||||
|
volumes:
|
||||||
|
- "${ELDON_GHOST_CONTAINER_DIR}/.snapshots/"
|
||||||
|
- "${ELDON_GHOST_HOST_DIR}:${ELDON_GHOST_CONTAINER_DIR}"
|
||||||
|
commento_aprilandtrey:
|
||||||
|
image: registry.gitlab.com/commento/commento
|
||||||
|
container_name: commento_aprilandtrey
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${APRILANDTREY_COMMENTO_CONTAINER_PORT}"
|
||||||
|
environment:
|
||||||
|
COMMENTO_ORIGIN: "${APRILANDTREY_COMMENTO_ORIGIN}"
|
||||||
|
COMMENTO_PORT: "${APRILANDTREY_COMMENTO_CONTAINER_PORT}"
|
||||||
|
COMMENTO_POSTGRES: "${APRILANDTREY_COMMENTO_URL}"
|
||||||
|
COMMENTO_SMTP_HOST: "${GMAIL_HOST}"
|
||||||
|
COMMENTO_SMTP_USERNAME: "${GMAIL_USER}"
|
||||||
|
COMMENTO_SMTP_PORT: "${GMAIL_PORT}"
|
||||||
|
COMMENTO_SMTP_PASSWORD: "${GMAIL_PASS}"
|
||||||
|
COMMENTO_SMTP_FROM_ADDRESS: "noreply@aprilandtrey.us"
|
||||||
|
COMMENTO_FORBID_NEW_OWNERS: "true"
|
||||||
|
COMMENTO_AKISMET_KEY: "${COMMENTO_AKISMET_API_KEY}"
|
||||||
|
networks:
|
||||||
|
- deltachunk-int
|
||||||
|
depends_on:
|
||||||
|
- postgresdb
|
||||||
|
commento_eldon:
|
||||||
|
image: registry.gitlab.com/commento/commento
|
||||||
|
container_name: commento_eldon
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${ELDON_COMMENTO_CONTAINER_PORT}"
|
||||||
|
environment:
|
||||||
|
COMMENTO_ORIGIN: "${ELDON_COMMENTO_ORIGIN}"
|
||||||
|
COMMENTO_PORT: "${ELDON_COMMENTO_CONTAINER_PORT}"
|
||||||
|
COMMENTO_POSTGRES: "${ELDON_COMMENTO_URL}"
|
||||||
|
COMMENTO_SMTP_HOST: "${GMAIL_HOST}"
|
||||||
|
COMMENTO_SMTP_USERNAME: "${GMAIL_USER}"
|
||||||
|
COMMENTO_SMTP_PORT: "${GMAIL_PORT}"
|
||||||
|
COMMENTO_SMTP_PASSWORD: "${GMAIL_PASS}"
|
||||||
|
COMMENTO_SMTP_FROM_ADDRESS: "noreply@eldon.me"
|
||||||
|
COMMENTO_FORBID_NEW_OWNERS: "true"
|
||||||
|
COMMENTO_AKISMET_KEY: "${COMMENTO_AKISMET_API_KEY}"
|
||||||
|
networks:
|
||||||
|
- deltachunk-int
|
||||||
|
depends_on:
|
||||||
|
- postgresdb
|
||||||
|
mariadb:
|
||||||
|
image: mariadb:${MARIADB_VERSION}
|
||||||
|
container_name: mariadb
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- deltachunk-int
|
||||||
|
ports:
|
||||||
|
- "${MARIADB_CONTAINER_PORT}"
|
||||||
|
volumes:
|
||||||
|
- "${MARIADB_CONTAINER_DATA_DIR}/.snapshots/"
|
||||||
|
- "${MARIADB_HOST_DATA_DIR}:${MARIADB_CONTAINER_DATA_DIR}"
|
||||||
|
- "${MARIADB_HOST_LOG_DIR}:${MARIADB_CONTAINER_LOG_DIR}"
|
||||||
|
- "${MARIADB_HOST_CONF}:${MARIADB_CONTAINER_CONF}:ro"
|
||||||
|
- "${MARIADB_HOST_INIT}:${MARIADB_CONTAINER_INIT}:ro"
|
||||||
|
postgresdb:
|
||||||
|
image: postgres:${POSTGRES_VERSION}
|
||||||
|
container_name: postgresdb
|
||||||
|
restart: unless-stopped
|
||||||
|
shm_size: "256MB"
|
||||||
|
networks:
|
||||||
|
- deltachunk-int
|
||||||
|
environment:
|
||||||
|
POSTGRES_PASSWORD: "${POSTGRES_PASS}"
|
||||||
|
POSTGRES_USER: "${POSTGRES_USER}"
|
||||||
|
PGDATA: "${POSTGRES_CONTAINER_DIR}"
|
||||||
|
ports:
|
||||||
|
- "${POSTGRES_CONTAINER_PORT}"
|
||||||
|
volumes:
|
||||||
|
- "${POSTGRES_HOST_DIR}:${POSTGRES_CONTAINER_DIR}"
|
||||||
|
- "${POSTGRES_HOST_INIT}:${POSTGRES_CONTAINER_INIT}:ro"
|
||||||
|
- "${POSTGRES_HOST_ETC}:${POSTGRES_CONTAINER_ETC}:ro"
|
||||||
|
- "${POSTGRES_PASSWD}:${POSTGRES_CONTAINER_PASSWD}:ro"
|
||||||
|
|
6
hypr/scripts/createWorkspace
Executable file
6
hypr/scripts/createWorkspace
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
#set -x
|
||||||
|
source ~/.config/hypr/scripts/functions
|
||||||
|
create_workspace ${@}
|
||||||
|
#set +x
|
6
hypr/scripts/cycleWorkspace
Executable file
6
hypr/scripts/cycleWorkspace
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
#set -x
|
||||||
|
source ~/.config/hypr/scripts/functions
|
||||||
|
cycle_workspace ${@}
|
||||||
|
#set =x
|
28
hypr/scripts/focusOrLaunch
Executable file
28
hypr/scripts/focusOrLaunch
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
export HYPRLAND_INSTANCE_SIGNATURE=$(hyprctl -j instances | jq -r '.[0] | .instance')
|
||||||
|
app="${1}"
|
||||||
|
shift
|
||||||
|
class_name="${1}"
|
||||||
|
shift
|
||||||
|
workspace="${1}"
|
||||||
|
app_id=$(hyprctl -j clients | jq --arg class "${class_name}" \
|
||||||
|
'.[] | select(.class == $class) | .workspace.id')
|
||||||
|
|
||||||
|
if [[ -n "${app_id}" ]]; then
|
||||||
|
hyprctl dispatch focuswindow "class:${class_name}"
|
||||||
|
|
||||||
|
case "${app}" in
|
||||||
|
"qutebrowser")
|
||||||
|
hyprctl dispatch sendshortcut ", 0, class:${class_name}"
|
||||||
|
hyprctl dispatch sendshortcut ", 1, class:${class_name}"
|
||||||
|
hyprctl dispatch sendshortcut "ALT, J, class:${class_name}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#hyprctl dispatch fullscreen 1
|
||||||
|
else
|
||||||
|
hyprctl dispatch workspace "${workspace}"
|
||||||
|
${app} &
|
||||||
|
fi
|
101
hypr/scripts/functions
Normal file
101
hypr/scripts/functions
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
export HYPRLAND_INSTANCE_SIGNATURE=$(hyprctl -j instances | jq -r '.[0] | .instance')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cycle_workspace () {
|
||||||
|
|
||||||
|
if [[ -n "${@}" ]]; then
|
||||||
|
direction="${1}"
|
||||||
|
else
|
||||||
|
print "Must supply a direction! Exiting..." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
monitors=$(hyprctl -j monitors)
|
||||||
|
workspaces=$(hyprctl -j workspaces)
|
||||||
|
|
||||||
|
active_mon=$(hyprctl -j monitors | jq '.[] | select(.focused) | .id')
|
||||||
|
active_ws=$(hyprctl -j monitors | jq --argjson mon ${active_mon} '.[$mon].activeWorkspace.id')
|
||||||
|
|
||||||
|
first_ws=$(jq '.[0].id' <<< "${workspaces}")
|
||||||
|
last_ws=$(jq '.[-1].id' <<< "${workspaces}")
|
||||||
|
|
||||||
|
case "${direction}" in
|
||||||
|
"next")
|
||||||
|
if [[ ${active_ws} -eq ${last_ws} ]]; then
|
||||||
|
hyprctl dispatch workspace ${first_ws}
|
||||||
|
else
|
||||||
|
hyprctl dispatch workspace +1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"prev")
|
||||||
|
if [[ ${active_ws} -eq ${first_ws} ]]; then
|
||||||
|
hyprctl dispatch workspace ${last_ws}
|
||||||
|
else
|
||||||
|
hyprctl dispatch workspace -1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
print "Invalid direction! Exiting..." >&2
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
create_workspace () {
|
||||||
|
active_mon=$(hyprctl -j monitors | jq '.[] | select(.focused) | .id')
|
||||||
|
workspaces="$(hyprctl -j workspaces | jq --compact-output .)"
|
||||||
|
first_ws=$(jq '.[0].id' <<< "${workspaces}")
|
||||||
|
last_ws=$(jq '.[-1].id' <<< "${workspaces}")
|
||||||
|
|
||||||
|
if [[ -n "${@}" ]]; then
|
||||||
|
new_name="${1}"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
print "Must suplly at least a new workspace name! Exiting..." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${@}" ]]; then
|
||||||
|
new_ws="${1}"
|
||||||
|
else
|
||||||
|
new_ws=$(( last_ws + 1 ))
|
||||||
|
fi
|
||||||
|
|
||||||
|
old_ws=$(hyprctl -j activeworkspace | jq '.id')
|
||||||
|
if [[ ${old_ws} -ne ${last_ws} ]]; then
|
||||||
|
hyprctl dispatch workspace ${last_ws}
|
||||||
|
fi
|
||||||
|
# create new workspace
|
||||||
|
hyprctl dispatch workspace +1
|
||||||
|
active_ws=$(hyprctl -j activeworkspace | jq '.id')
|
||||||
|
hyprctl dispatch renameworkspace ${active_ws} ${new_name}
|
||||||
|
hyprctl keyword workspace "${active_ws},defaultName:${new_name}, monitor:${active_mon}, persistent:true"
|
||||||
|
|
||||||
|
if [[ ${new_ws} -lt ${last_ws} ]]; then
|
||||||
|
for ws in {${new_ws}..${last_ws}}; do
|
||||||
|
curr_name=$(jq --raw-output --argjson ws ${ws} '.[] | select(.id == $ws) | .name' <<< "${workspaces}")
|
||||||
|
if [[ ${new_ws} -eq ${ws} ]]; then
|
||||||
|
next_name=${curr_name}
|
||||||
|
else
|
||||||
|
hyprctl dispatch renameworkspace ${ws} ${next_name}
|
||||||
|
next_name=${curr_name}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
last_ws=$(hyprctl -j workspaces | jq '.[-1].id')
|
||||||
|
hyprctl dispatch renameworkspace ${last_ws} ${next_name}
|
||||||
|
fi
|
||||||
|
hyprctl dispatch renameworkspace ${new_ws} ${new_name}
|
||||||
|
active_ws=$(hyprctl -j activeworkspace | jq '.id')
|
||||||
|
hyprctl keyword workspace "${active_ws},defaultName:${next_name}, monitor:${active_mon}, persistent:true"
|
||||||
|
|
||||||
|
#set -x
|
||||||
|
if [[ ${active_ws} -ne ${new_ws} ]]; then
|
||||||
|
hyprctl dispatch workspace ${new_ws}
|
||||||
|
create_workspace ${next_name}
|
||||||
|
hyprctl dispatch workspace ${old_ws}
|
||||||
|
fi
|
||||||
|
#set +x
|
||||||
|
}
|
75
imapfilter_config.lua
Normal file
75
imapfilter_config.lua
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
---------------
|
||||||
|
-- Options --
|
||||||
|
---------------
|
||||||
|
|
||||||
|
options.timeout = 120
|
||||||
|
options.subscribe = true
|
||||||
|
|
||||||
|
|
||||||
|
----------------
|
||||||
|
-- Accounts --
|
||||||
|
----------------
|
||||||
|
|
||||||
|
-- Connects to "imap1.mail.server", as user "user1" with "secret1" as
|
||||||
|
-- password.
|
||||||
|
--account1 = IMAP {
|
||||||
|
-- server = 'imap1.mail.server',
|
||||||
|
-- username = 'user1',
|
||||||
|
-- password = 'secret1',
|
||||||
|
--}
|
||||||
|
|
||||||
|
-- Another account which connects to the mail server using the SSLv3
|
||||||
|
-- protocol.
|
||||||
|
mygmail = IMAP {
|
||||||
|
server = 'imap.gmail.com',
|
||||||
|
username = 'redacted',
|
||||||
|
password = 'redacted',
|
||||||
|
ssl = 'tls12',
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Get a list of the available mailboxes and folders
|
||||||
|
--mailboxes, folders = account1:list_all()
|
||||||
|
|
||||||
|
-- Get a list of the subscribed mailboxes and folders
|
||||||
|
--mailboxes, folders = account1:list_subscribed()
|
||||||
|
|
||||||
|
-- Create a mailbox
|
||||||
|
--account1:create_mailbox('Friends')
|
||||||
|
|
||||||
|
-- Subscribe a mailbox
|
||||||
|
--account1:subscribe_mailbox('Friends')
|
||||||
|
|
||||||
|
|
||||||
|
-----------------
|
||||||
|
-- Mailboxes --
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
-- Get the status of a mailbox
|
||||||
|
mygmail.INBOX:check_status()
|
||||||
|
|
||||||
|
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Logwatch"))
|
||||||
|
results = mygmail.INBOX:contain_subject('Logwatch for')
|
||||||
|
results:mark_flagged()
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Logwatch"))
|
||||||
|
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Facebook"))
|
||||||
|
results = (mygmail.INBOX:contain_from('facebookmail.com'))
|
||||||
|
results:move_messages(mygmail.archive)
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Facebook"))
|
||||||
|
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Groupon"))
|
||||||
|
results = (mygmail.INBOX:contain_from('noreply@r.groupon.com'))
|
||||||
|
results:move_messages(mygmail.archive)
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Groupon"))
|
||||||
|
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Mobile Saenger"))
|
||||||
|
results = (mygmail.INBOX:contain_subject('Saenger'))
|
||||||
|
results:move_messages(mygmail.archive)
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Mobile Saenger"))
|
||||||
|
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Etsy"))
|
||||||
|
results = (mygmail.INBOX:contain_from('Etsy'))
|
||||||
|
results:move_messages(mygmail.archive)
|
||||||
|
print(os.date("%Y-%m-%d %H:%M:%S Etsy"))
|
||||||
|
|
665
xmonad.hs
Executable file
665
xmonad.hs
Executable file
@ -0,0 +1,665 @@
|
|||||||
|
{-# LANGUAGE DeriveDataTypeable #-}
|
||||||
|
{-# OPTIONS_GHC -Wno-deprecations #-}
|
||||||
|
import XMonad
|
||||||
|
import XMonad.Config.Desktop
|
||||||
|
-- Actions
|
||||||
|
import XMonad.Actions.CycleWS
|
||||||
|
import XMonad.Actions.DynamicWorkspaces as DW
|
||||||
|
import XMonad.Actions.GridSelect
|
||||||
|
import XMonad.Actions.OnScreen
|
||||||
|
import XMonad.Actions.SpawnOn
|
||||||
|
import XMonad.Actions.UpdatePointer
|
||||||
|
import XMonad.Actions.WindowGo
|
||||||
|
import XMonad.Actions.WorkspaceNames hiding (workspaceNamesPP)
|
||||||
|
|
||||||
|
-- Data
|
||||||
|
import Data.List
|
||||||
|
import Data.Monoid
|
||||||
|
import Data.Ratio
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
|
-- Hooks
|
||||||
|
import XMonad.Hooks.DynamicLog
|
||||||
|
import XMonad.Hooks.EwmhDesktops
|
||||||
|
import XMonad.Hooks.FadeInactive
|
||||||
|
import XMonad.Hooks.ManageDocks
|
||||||
|
import XMonad.Hooks.ManageHelpers
|
||||||
|
import XMonad.Hooks.SetWMName
|
||||||
|
|
||||||
|
-- Layout
|
||||||
|
import XMonad.Layout
|
||||||
|
import XMonad.Layout.Gaps
|
||||||
|
import XMonad.Layout.IM as IM -- GIMP stuff
|
||||||
|
import qualified XMonad.Layout.IndependentScreens as IS
|
||||||
|
import XMonad.Layout.LayoutHints (layoutHints)
|
||||||
|
import XMonad.Layout.NoBorders (smartBorders, noBorders)
|
||||||
|
import XMonad.Layout.PerScreen
|
||||||
|
import XMonad.Layout.PerWorkspace
|
||||||
|
import XMonad.Layout.Reflect -- GIMP stuff
|
||||||
|
import XMonad.Layout.ResizableTile
|
||||||
|
import XMonad.Layout.SimpleFloat
|
||||||
|
import XMonad.Layout.Spacing
|
||||||
|
import XMonad.Layout.Tabbed
|
||||||
|
import XMonad.Layout.TrackFloating -- GIMP stuff
|
||||||
|
|
||||||
|
-- Util
|
||||||
|
import XMonad.Util.EZConfig
|
||||||
|
import XMonad.Util.Font
|
||||||
|
import XMonad.Util.Loggers
|
||||||
|
import XMonad.Util.Paste
|
||||||
|
import XMonad.Util.Run
|
||||||
|
import XMonad.Util.Ungrab
|
||||||
|
import XMonad.Util.WorkspaceCompare
|
||||||
|
import qualified XMonad.Util.ExtensibleState as XS
|
||||||
|
|
||||||
|
-- Miscellaneous
|
||||||
|
import Control.Applicative
|
||||||
|
import Control.Monad (liftM)
|
||||||
|
import Graphics.X11.ExtraTypes.XF86
|
||||||
|
import System.IO
|
||||||
|
import System.Exit
|
||||||
|
import XMonad.Operations
|
||||||
|
import XMonad.Prompt
|
||||||
|
import XMonad.Prompt.Window
|
||||||
|
import qualified Codec.Binary.UTF8.String as UTF8
|
||||||
|
--import qualified DBus as D
|
||||||
|
--import qualified DBus.Client as D
|
||||||
|
import qualified XMonad.StackSet as W
|
||||||
|
|
||||||
|
|
||||||
|
-- DynamicWorkspaces Stuff
|
||||||
|
filterWorkspaces :: [WorkspaceId] -> [WindowSpace] -> [WindowSpace]
|
||||||
|
filterWorkspaces ws = filter (\(W.Workspace tag _ _) -> tag `elem` ws)
|
||||||
|
-- xScreen are the type classes which hold the workspace name lists
|
||||||
|
newtype LeftScreen = LeftScreen {getLeftScreen :: [WorkspaceId]} deriving (Typeable,Read,Show)
|
||||||
|
instance ExtensionClass LeftScreen where
|
||||||
|
initialValue = LeftScreen []
|
||||||
|
extensionType = PersistentExtension
|
||||||
|
|
||||||
|
newtype CenterScreen = CenterScreen {getCenterScreen :: [WorkspaceId]} deriving (Typeable,Read,Show)
|
||||||
|
instance ExtensionClass CenterScreen where
|
||||||
|
initialValue = CenterScreen []
|
||||||
|
extensionType = PersistentExtension
|
||||||
|
|
||||||
|
newtype RightScreen = RightScreen {getRightScreen :: [WorkspaceId]} deriving (Typeable,Read,Show)
|
||||||
|
instance ExtensionClass RightScreen where
|
||||||
|
initialValue = RightScreen []
|
||||||
|
extensionType = PersistentExtension
|
||||||
|
|
||||||
|
genWorkspaces :: ScreenId -> [IS.PhysicalWorkspace]
|
||||||
|
genWorkspaces sc = if sc == 3
|
||||||
|
then IS.withScreen 0 ["pindrop"] ++ IS.withScreen 1 ["qb"] ++ IS.withScreen 2 ["shell", "VM"]
|
||||||
|
else IS.withScreens sc ["shell", "qb", "pindrop", "VM"]
|
||||||
|
|
||||||
|
-- End DynamicWorkspaces code (keybindings are below) --
|
||||||
|
getTopBar :: Int -> String
|
||||||
|
getTopBar sc = if sc == 1
|
||||||
|
then "dzen2 -dock -p -x 0 -ta l -w 1024 -e 'onstart:lower;button2=togglehide;sigusr1=togglehide'"
|
||||||
|
else "dzen2 -dock -p -x 1920 -ta l -w 1024 -e 'onstart:lower;button2=togglehide;sigusr1=togglehide'"
|
||||||
|
|
||||||
|
--getBarbicanBar :: Int -> String
|
||||||
|
--getBarbicanBar sc = if sc == 1
|
||||||
|
-- then "ssh barbican 'conky' | dzen2 -dock -p -x 0 -h 16 -y -112 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "ssh barbican 'conky' | dzen2 -dock -p -x 1920 -h 16 -y -112 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
|
||||||
|
--getDeltachunkBar :: Int -> String
|
||||||
|
--getDeltachunkBar sc = if sc == 1
|
||||||
|
-- then "ssh deltachunk 'conky' | dzen2 -dock -p -x 0 -h 16 -y -96 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "ssh deltachunk 'conky' | dzen2 -dock -p -x 1920 -h 16 -y -96 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
|
||||||
|
--getFerrumBar :: Int -> String
|
||||||
|
--getFerrumBar sc = if sc == 1
|
||||||
|
-- then "conky | dzen2 -dock -p -x 0 -h 16 -y -80 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "conky | dzen2 -dock -p -x 1920 -h 16 -y -80 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
|
||||||
|
-- getGammachunkBar :: Int -> String
|
||||||
|
-- getGammachunkBar sc = if sc == 1
|
||||||
|
-- then "ssh gammachunk 'conky' | dzen2 -dock -p -x 0 -y -72 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "ssh gammachunk 'conky' | dzen2 -dock -p -x 1920 -y -72 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
|
||||||
|
--getOsmiumBar :: Int -> String
|
||||||
|
--getOsmiumBar sc = if sc == 1
|
||||||
|
-- then "ssh osmium 'conky' | dzen2 -dock -p -x 0 -h 16 -y -64 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "ssh osmium 'conky' | dzen2 -dock -p -x 1920 -h 16 -y -64 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
--
|
||||||
|
--getSodiumBar :: Int -> String
|
||||||
|
--getSodiumBar sc = if sc == 1
|
||||||
|
-- then "ssh sodium 'conky' | dzen2 -dock -p -x 0 -h 16 -y -48 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "ssh sodium 'conky' | dzen2 -dock -p -x 1920 -h 16 -y -48 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
--
|
||||||
|
--getTennessineBar :: Int -> String
|
||||||
|
--getTennessineBar sc = if sc == 1
|
||||||
|
-- then "ssh tennessine 'conky' | dzen2 -dock -p -x 0 -h 16 -y -32 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "ssh tennessine 'conky' | dzen2 -dock -p -x 1920 -h 16 -y -32 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
--
|
||||||
|
--getBlancherBar :: Int -> String
|
||||||
|
--getBlancherBar sc = if sc == 1
|
||||||
|
-- then "ssh blancher 'conky' | dzen2 -dock -p -x 0 -h 16 -y -16 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
-- else "ssh blancher 'conky' | dzen2 -dock -p -x 1920 -h 16 -y -16 -ta l -w 1920 -e 'sigusr1=togglehide'"
|
||||||
|
|
||||||
|
toggleHomeScreens :: X ()
|
||||||
|
toggleHomeScreens = do
|
||||||
|
sc <- IS.countScreens
|
||||||
|
if sc == 1
|
||||||
|
then do
|
||||||
|
--spawn "xrandr --output DVI-I-2-1 --off --output DVI-I-3-2 --off"
|
||||||
|
spawn "while true; do \n\
|
||||||
|
\~/bin/battery; \n\
|
||||||
|
\echo -n ' '; \n\
|
||||||
|
\~/bin/temp.sh; \n\
|
||||||
|
\echo -n ' '; \n\
|
||||||
|
\date \"+%a, %b %d %T\"; \n\
|
||||||
|
\/usr/bin/sed -E \"s/($(date +%_d)\b)/^fg(green)\1^fg()/\" ; \n\
|
||||||
|
\sleep 1; \n\
|
||||||
|
\done | dzen2 -dock -p -x 2400 -w 480 -u -h 24 -ta r -sa c -e 'sigusr1=togglehide' &"
|
||||||
|
|
||||||
|
else if sc == 3
|
||||||
|
then do
|
||||||
|
spawn "xrandr --output eDP-1 --primary --auto --output DVI-I-3-2 --auto --left-of eDP-1 --output DVI-I-2-1 --auto --right-of eDP-1"
|
||||||
|
-- spawn "xrandr --output eDP-1-1 --primary --auto --output DVI-I-2-1 --auto --left-of eDP-1-1 --output DVI-I-3-2 --auto --right-of eDP-1-1"
|
||||||
|
-- spawn "while true; do \n\
|
||||||
|
-- \~/bin/battery; \n\
|
||||||
|
-- \echo -n ' '; \n\
|
||||||
|
-- \~/bin/temp.sh; \n\
|
||||||
|
-- \echo -n ' '; \n\
|
||||||
|
-- \date '+%a, %b %d %T'; \n\
|
||||||
|
-- \sleep 1; \n\
|
||||||
|
-- \done | dzen2 -dock -p -x 1602 -w 325 -h 24 -ta l -fn 'xos4 Terminus:style=Regular:Pixelsize=12' &"
|
||||||
|
-- spawn "while true; do \n\
|
||||||
|
-- \~/bin/battery; \n\
|
||||||
|
-- \echo -n ' '; \n\
|
||||||
|
-- \~/bin/temp.sh; \n\
|
||||||
|
-- \echo -n ' '; \n\
|
||||||
|
-- \date '+%a, %b %d %T'; \n\
|
||||||
|
-- \sleep 1; \n\
|
||||||
|
-- \done | dzen2 -dock -p -x 3522 -w 325 -h 24 -ta l -fn 'xos4 Terminus:style=Regular:Pixelsize=12' &"
|
||||||
|
spawn "while true; do \n\
|
||||||
|
\~/bin/battery; \n\
|
||||||
|
\echo -n ' '; \n\
|
||||||
|
\~/bin/temp.sh; \n\
|
||||||
|
\echo -n ' '; \n\
|
||||||
|
\date '+%a, %b %d %T'; \n\
|
||||||
|
\sleep 1; \n\
|
||||||
|
\done | dzen2 -dock -p -x 5442 -w 325 -h 24 -ta l -fg #ebdbb2 -bg #000000 -fn 'xos4 Terminus:style=Regular:Pixelsize=12' &"
|
||||||
|
{- spawn "while true; do echo -n $(cat /tmp/temp); echo -n ' '; date '+%a, %b %d %T'; sleep 1; done | dzen2 -dock -p -x 1710 -w 210 -e 'onstart:lower;button2=togglehide' -h 24 -ta l -fg #aaaaaa -bg #282828 -fn Terminus-10 -xs 1 &"
|
||||||
|
spawn "while true; do echo -n $(cat /tmp/temp); echo -n ' '; date '+%a, %b %d %T'; sleep 1; done | dzen2 -dock -p -x 3630 -w 210 -e 'onstart:lower;button2=togglehide' -h 24 -ta l -fg #aaaaaa -bg #282828 -fn Terminus-10 -xs 0 &"
|
||||||
|
spawn "while true; do echo -n $(cat /tmp/temp); echo -n ' '; date '+%a, %b %d %T'; sleep 1; done | dzen2 -dock -p -x 5550 -w 210 -e 'onstart:lower;button2=togglehide' -h 24 -ta r -fg #aaaaaa -bg #282828 -fn Terminus-10 -xs 2 &" -}
|
||||||
|
else
|
||||||
|
return ()
|
||||||
|
|
||||||
|
|
||||||
|
-- get these with xprop
|
||||||
|
myManageHook = composeAll
|
||||||
|
[ isDialog --> doFloat
|
||||||
|
, className =? "Org.gnome.Dictionary" --> doFloat
|
||||||
|
, className =? "Xfce4-dict" --> doFloat
|
||||||
|
, className =? "Goldendict" --> doFloat
|
||||||
|
, className =? "Last.fm" --> doFloat
|
||||||
|
, className =? "Xmessage" --> doFloat
|
||||||
|
, className =? "Audacious" --> doFloat
|
||||||
|
--, className =? "Gimp" --> doFloat
|
||||||
|
, className =? "Skype" --> doFloat
|
||||||
|
, className =? "Keepassx" --> doFloat
|
||||||
|
, className =? "Kcalc" --> doFloat
|
||||||
|
, className =? "Clementine" --> doFloat
|
||||||
|
, className =? "SpiderOak" --> doFloat
|
||||||
|
, className =? "Pavucontrol" --> doFloat
|
||||||
|
, className =? "Gnome-calendar" --> doFloat
|
||||||
|
|
||||||
|
{- The following sets doFloat on the Orage window (as above)
|
||||||
|
But also ensures that it appears only on the left screen
|
||||||
|
(screen 0). (screenWorkspace 0) returns X (Maybe WorkspaceId),
|
||||||
|
and the liftX function lifts an X action to a Query (which is
|
||||||
|
Maybe WorkspaceId) and the next lines return the workspace (if
|
||||||
|
not empty), or do nothing if (Maybe WorkspaceId) -> Nothing.
|
||||||
|
idHook maps to mempty, which means do nothing
|
||||||
|
-}
|
||||||
|
, className =? "Orage" --> doFloat
|
||||||
|
<+> do
|
||||||
|
ws <- liftX (screenWorkspace 0)
|
||||||
|
case ws of
|
||||||
|
Just w -> doShift w
|
||||||
|
Nothing -> idHook
|
||||||
|
-- end Orage window stuff
|
||||||
|
|
||||||
|
-- Weather report stuff
|
||||||
|
, className =? "Wrapper" --> doFloat
|
||||||
|
<+> do
|
||||||
|
ws <- liftX (screenWorkspace 0)
|
||||||
|
case ws of
|
||||||
|
Just w -> doShift w
|
||||||
|
Nothing -> idHook
|
||||||
|
-- end Weather Report window stuff
|
||||||
|
|
||||||
|
|
||||||
|
-- , className =? "Plasma-desktop" --> doFloat
|
||||||
|
-- <+> do
|
||||||
|
-- ws <- liftX (screenWorkspace 0)
|
||||||
|
-- case ws of
|
||||||
|
-- Just w -> doShift w
|
||||||
|
-- Nothing -> idHook
|
||||||
|
-- end Plasma desktop stuff
|
||||||
|
|
||||||
|
, className =? "Xfce4-notifyd" --> doIgnore
|
||||||
|
, manageDocks
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
--shiftInsert w =
|
||||||
|
-- let translatedProgs = ["Chromium", "Chrome"]
|
||||||
|
-- in do
|
||||||
|
-- c <- runQuery className w;
|
||||||
|
-- let toTranslate = any (== c) translatedProgs
|
||||||
|
-- if toTranslate then spawn ("CLIP=$(xclip -out -selection clipboard); xclip -out"
|
||||||
|
-- ++ " | xclip -in -selection clipboard; xdotool key --clearmodifiers --window "
|
||||||
|
-- ++ show w ++ " ctrl+v; echo -n $CLIP | xclip -in -selection clipboard")
|
||||||
|
-- else sendKey shiftMask xK_Insert
|
||||||
|
|
||||||
|
layoutH = layoutHints
|
||||||
|
-- $ onWorkspace "5:" (Mirror tiled2
|
||||||
|
-- ||| tiled ||| Full)
|
||||||
|
-- $ onWorkspaces ["1:wkbr","2:wksh"] (Full
|
||||||
|
-- ||| tiled ||| Mirror tiled)
|
||||||
|
$ Full
|
||||||
|
||| Mirror tiled
|
||||||
|
||| tabbed shrinkText myTheme
|
||||||
|
||| tiled
|
||||||
|
where
|
||||||
|
tiled = Tall 1 (3 % 100) (1/2)
|
||||||
|
--tiled2 = Tall 1 (3 % 100) (5 % 9)
|
||||||
|
|
||||||
|
myTheme :: Theme
|
||||||
|
--myTheme = defaultTheme {
|
||||||
|
myTheme = def {
|
||||||
|
fontName = myFont
|
||||||
|
}
|
||||||
|
myFont = "xft:monospace:style=Regular:Pixelsize=18"
|
||||||
|
|
||||||
|
fadeHook = fadeInactiveLogHook fadeAmount
|
||||||
|
where fadeAmount = 0.8
|
||||||
|
|
||||||
|
makeLauncher yargs run exec close = concat
|
||||||
|
["exe=`yegonesh ", yargs, "` && ", run, " ", exec, "$exe", close]
|
||||||
|
|
||||||
|
--launcher = makeLauncher "-x -- -nf grey -nb black -fn 'xos4 Terminus:Pixelsize=8'" "eval" "\"exec " "\""
|
||||||
|
launcher = makeLauncher "-x" "eval" "\"exec " "\""
|
||||||
|
|
||||||
|
startTrayer = "trayer --edge top --align right --widthtype request --margin 490 --expand false --SetDockType true --SetPartialStrut false --tint 0x000000 --transparent true --alpha 0 --height 24 --monitor 'primary'"
|
||||||
|
|
||||||
|
main = do sc <- IS.countScreens
|
||||||
|
dzenTopBar <- spawnPipe (getTopBar sc)
|
||||||
|
--dzenBarbicanBar <- spawnPipe (getBarbicanBar sc)
|
||||||
|
--dzenDeltachunkBar <- spawnPipe (getDeltachunkBar sc)
|
||||||
|
--dzenFerrumBar <- spawnPipe (getFerrumBar sc)
|
||||||
|
--dzenOsmiumBar <- spawnPipe (getOsmiumBar sc)
|
||||||
|
--dzenSodiumBar <- spawnPipe (getSodiumBar sc)
|
||||||
|
--dzenTennessineBar <- spawnPipe (getTennessineBar sc)
|
||||||
|
--dzenBlancherBar <- spawnPipe (getBlancherBar sc)
|
||||||
|
xmonad $ ewmhFullscreen $ ewmh $ desktopConfig {
|
||||||
|
workspaces = genWorkspaces (S sc)
|
||||||
|
, terminal = myTerminal
|
||||||
|
, focusFollowsMouse = True
|
||||||
|
, manageHook = manageDocks <+> myManageHook -- <+> manageHook desktopConfig
|
||||||
|
, handleEventHook = handleEventHook desktopConfig
|
||||||
|
--, layoutHook = avoidStruts $ gaps [(D,108)] $ layoutH
|
||||||
|
, layoutHook = avoidStruts $ layoutH
|
||||||
|
, logHook = myLogHook dzenTopBar >> fadeHook >> updatePointer (0.5, 0.5) (0, 0)
|
||||||
|
, borderWidth = 1
|
||||||
|
, normalBorderColor = "#000000"
|
||||||
|
, focusedBorderColor = "#ebdbb2"
|
||||||
|
, modMask = winKey
|
||||||
|
, startupHook = myStartup
|
||||||
|
}
|
||||||
|
`additionalKeys` myKeys
|
||||||
|
`removeKeys` remKeys
|
||||||
|
|
||||||
|
|
||||||
|
myStartup :: X ()
|
||||||
|
myStartup = do
|
||||||
|
--setWMName "LG3D"
|
||||||
|
sc <- IS.countScreens
|
||||||
|
toggleHomeScreens
|
||||||
|
--spawn "xset dpms 600"
|
||||||
|
spawn "xautolock -secure -time 10 -locker 'i3lock -c 000000'"
|
||||||
|
if sc == 1
|
||||||
|
then do
|
||||||
|
spawn startTrayer
|
||||||
|
-- --spawn "trayer --edge top --align right --widthtype request --margin 318 --expand false --SetDockType true --SetPartialStrut false --tint 0x282828 --transparent true --alpha 0 --height 24 --monitor 'primary'"
|
||||||
|
-- --spawn "stalonetray"
|
||||||
|
-- --spawn "gnome-gmail-notifier"
|
||||||
|
-- --spawn "xautolock -secure -time 10 -locker 'i3lock -c 000000 -i /home/trey/images/black.png'"
|
||||||
|
--
|
||||||
|
else if sc == 3
|
||||||
|
then do
|
||||||
|
spawn startTrayer
|
||||||
|
-- --spawn "trayer --edge top --align right --widthtype request --margin 318 --expand false --SetDockType true --SetPartialStrut false --tint 0x282828 --transparent true --alpha 0 --height 24 --monitor 2"
|
||||||
|
|
||||||
|
else
|
||||||
|
return ()
|
||||||
|
|
||||||
|
activateMyTerminal :: X ()
|
||||||
|
activateMyTerminal = do
|
||||||
|
sc <- IS.countScreens
|
||||||
|
if sc == 1
|
||||||
|
then do
|
||||||
|
windows (viewOnScreen 0 "shell")
|
||||||
|
else if sc == 3
|
||||||
|
then do
|
||||||
|
windows (viewOnScreen 2 "shell")
|
||||||
|
else
|
||||||
|
return ()
|
||||||
|
|
||||||
|
myBitmapsDir = "/home/trey/.xmonad/dzen2"
|
||||||
|
--centerBar = fmap getCenterBar IS.countScreens
|
||||||
|
--bottomBar = fmap getBottomBar IS.countScreens
|
||||||
|
|
||||||
|
--leftBar = "dzen2 -w 0 -h 24 -ta l -fg #555753 -bg #000000 -fn Terminus-10 -xs 1"
|
||||||
|
|
||||||
|
-- rightBar = "dzen2 -w 3840 -h 24 -ta r -fg #555753 -bg #000000 -fn Terminus-10 -xs 2"
|
||||||
|
|
||||||
|
myLogHook :: Handle -> X ()
|
||||||
|
--myLogHook h = dynamicLogWithPP $ defaultPP
|
||||||
|
myLogHook h = dynamicLogWithPP $ IS.marshallPP (S 0) $ def
|
||||||
|
{
|
||||||
|
ppCurrent = dzenColor "#8AE234" "#000000" . pad
|
||||||
|
, ppVisible = dzenColor "#555753" "#000000" . pad
|
||||||
|
, ppHidden = dzenColor "#ebdbb2" "#000000" . pad
|
||||||
|
, ppHiddenNoWindows = dzenColor "#555753" "#000000" . pad
|
||||||
|
, ppUrgent = dzenColor "#cc0000" "#000000" . pad
|
||||||
|
, ppWsSep = "."
|
||||||
|
, ppSep = " | "
|
||||||
|
, ppLayout = dzenColor "#666600" "#000000" .
|
||||||
|
(\x -> case x of
|
||||||
|
"Tall" -> "^i(" ++ myBitmapsDir ++ "/tall.xbm)"
|
||||||
|
"Mirror Tall" -> "^i(" ++ myBitmapsDir ++ "/mtall.xbm)"
|
||||||
|
"Full" -> "^i(" ++ myBitmapsDir ++ "/full.xbm)"
|
||||||
|
"Simple Float" -> "~"
|
||||||
|
"IM Grid" -> "IM"
|
||||||
|
_ -> x
|
||||||
|
)
|
||||||
|
, ppTitle = ("" ++) . dzenColor "#ff6600" "#000000" . dzenEscape
|
||||||
|
, ppOutput = hPutStrLn h
|
||||||
|
}
|
||||||
|
|
||||||
|
winKey :: KeyMask
|
||||||
|
winKey = mod4Mask
|
||||||
|
|
||||||
|
lAlt :: KeyMask
|
||||||
|
lAlt = mod1Mask
|
||||||
|
|
||||||
|
{-Multiline comment for reference
|
||||||
|
winKey :: KeyMask
|
||||||
|
winKey :: KeyMask-}
|
||||||
|
|
||||||
|
--myTerminal :: String
|
||||||
|
--myTerminal = "konsole"
|
||||||
|
--myTerminal = "ssh-agent urxvtc -cd ~"
|
||||||
|
myTerminal = "alacritty"
|
||||||
|
--myTerminal = "terminator"
|
||||||
|
--altTerminal = "urxvtc -cd ~ -name altUrxvt4
|
||||||
|
|
||||||
|
--myTerminal = "gnome-terminal"
|
||||||
|
--myTerminal = "terminator"
|
||||||
|
|
||||||
|
{-slotWksp = ["1:main", "2:jobs", "3:is660","4:office","5:sysadmin","6:irc","7:digium", "8:vm","9:dump","0:music","F1:man","F2:jobs","F3:isovr","F4:offovr","F5:sysovr","F6:ircovr","F7:dgmovr","F8:vmovr","F9:dmpovr","F10:musovr"]
|
||||||
|
|
||||||
|
leftWksp = ["01:main","02:jobs","03:is660","04:office","05:sysadmin","06:irc","07:digium","08:vm","09:dump","10:music"]
|
||||||
|
|
||||||
|
rightWksp = [
|
||||||
|
"F1:man"
|
||||||
|
, "F2:jobs"
|
||||||
|
, "F3:isovr"
|
||||||
|
, "F4:offovr"
|
||||||
|
, "F5:sysovr"
|
||||||
|
, "F6:ircovr"
|
||||||
|
, "F7:dgmovr"
|
||||||
|
, "F8:vmovr"
|
||||||
|
, "F9:dmpovr"
|
||||||
|
, "F10:musovr"
|
||||||
|
]-}
|
||||||
|
|
||||||
|
|
||||||
|
{- Many of the key combinations below match or are analogs of key combinations
|
||||||
|
- in Windows. This is to keep the amount of mental context switching to a
|
||||||
|
- minimum.
|
||||||
|
-
|
||||||
|
-}
|
||||||
|
myKeys = [
|
||||||
|
--((winKey , xK_t), withFocused $ windows . W.sink) -- Push window back into tiling (default)
|
||||||
|
((winKey .|. shiftMask, xK_t), withFocused $ windows . W.sink) -- Push window back into tiling
|
||||||
|
--, ((winKey , xK_l), spawnHere "xscreensaver-command --lock && sleep 3 && xset dpms force off")
|
||||||
|
--, ((winKey , xK_l), spawnHere "gnome-screensaver-command --lock && sleep 10 && xset dpms force off")
|
||||||
|
--, ((winKey , xK_l), spawnHere "dm-tool lock")
|
||||||
|
, ((winKey , xK_l), spawnHere "i3lock --color 000000 -i /home/trey/images/black.png && sleep 3 && xset dpms force off")
|
||||||
|
-- , ((winKey , xK_l), spawnHere "light-locker-command --lock && sleep 10 && xset dpms force off")
|
||||||
|
-- , ((winKey , xK_l), spawnHere "dm-tool lock && sleep 3 && xset dpms force off")
|
||||||
|
-- ((winKey , xK_l), spawnHere "xscreensaver-command --lock")
|
||||||
|
-- ((winKey , xK_l), spawnHere "qdbus org.kde.krunner /ScreenSaver Lock")
|
||||||
|
, ((winKey , xK_Return), do
|
||||||
|
ifWindows (resource =? "Alacritty") (mapM_ focus) (spawnHere myTerminal)
|
||||||
|
activateMyTerminal)
|
||||||
|
, ((winKey , xK_v), do
|
||||||
|
ifWindows (resource =? "Alacritty") (mapM_ focus) (spawnHere myTerminal)
|
||||||
|
activateMyTerminal)
|
||||||
|
--ifWindows (resource =? "main") (mapM_ focus) (spawnHere myTerminal))
|
||||||
|
, ((controlMask .|. lAlt, xK_BackSpace), (spawnHere "xfdesktop --quit"))
|
||||||
|
, ((controlMask .|. lAlt, xK_Delete), (spawnHere "pkill -9 chromium"))
|
||||||
|
, ((controlMask .|. shiftMask, xK_Return), (spawnHere myTerminal))
|
||||||
|
, ((controlMask .|. shiftMask, xK_3), spawn "scrot --exec 'mkdir -p ~/Desktop && mv $f ~/Desktop' && paplay ~/wav/camera.wav")
|
||||||
|
, ((controlMask .|. shiftMask, xK_4), unGrab >> spawn "scrot --exec 'mkdir -p ~/Desktop && mv $f ~/Desktop' --select && paplay ~/wav/camera.wav")
|
||||||
|
, ((controlMask .|. winKey, xK_z), ifWindows (resource =? "Zoom") (mapM_ focus) (spawnHere "zoom"))
|
||||||
|
-- windows (viewOnScreen 1 "ws")
|
||||||
|
-- ifWindows (resource =? "altUrxvt") (mapM_ focus) (spawnHere altTerminal))
|
||||||
|
, ((lAlt, xK_v), spawn "clipmenu && xdotool key Ctrl+v")
|
||||||
|
--, ((winKey .|. shiftMask, xK_v), do
|
||||||
|
-- windows (viewOnScreen 1 "virtualbox")
|
||||||
|
-- ifWindows (className =? "Gvim") (mapM_ focus) (spawnHere "gvim"))
|
||||||
|
--, ((winKey , xK_v), do
|
||||||
|
-- windows (viewOnScreen 1 "timetracker")
|
||||||
|
-- ifWindows (title =? "osmium:timetracker") (mapM_ focus) (spawnHere "urxvtc -cd ~/timetracker -e 'tmux attach -t timetracker || tmux -2 new-session -s timetracker'"))
|
||||||
|
--, ((lAlt , xK_v), spawnHere "xfce4-popup-clipman")
|
||||||
|
--, ((winKey , xK_x), windowPromptGoto dXPConfig)
|
||||||
|
--, ((winKey .|. shiftMask, xK_x), windowPromptBring dXPConfig)
|
||||||
|
--, ((winKey .|. shiftMask, xK_x), windowPrompt def Bring dXPConfig)
|
||||||
|
--, ((winKey .|. shiftMask, xK_Return), windows W.swapMaster)
|
||||||
|
--, ((winKey .|. shiftMask, xK_Return), spawnHere myTerminal)
|
||||||
|
, ((winKey , xK_b), do
|
||||||
|
spawnHere "pkill -USR1 dzen2"
|
||||||
|
spawnHere "pkill trayer"
|
||||||
|
sendMessage $ ToggleStruts
|
||||||
|
sendMessage $ ToggleGaps)
|
||||||
|
--sendMessage $ ToggleStruts)
|
||||||
|
, ((lAlt , xK_g), spawnHere "~/bin/google_selection.sh")
|
||||||
|
--, ((winKey , xK_g), ifWindows (className =? "Google-chrome") (mapM_ focus) (spawnHere "google-chrome"))
|
||||||
|
, ((winKey , xK_g), do
|
||||||
|
windows (viewOnScreen 0 "pindrop")
|
||||||
|
ifWindows (className =? "Vivaldi-stable") (mapM_ focus) (spawnHere "vivaldi"))
|
||||||
|
--, ((winKey , xK_r), do
|
||||||
|
-- windows (viewOnScreen 1 "wb")
|
||||||
|
-- ifWindows (className =? "Google-chrome-stable") (mapM_ focus) (spawnHere "google-chrome-stable"))
|
||||||
|
--ifWindows (className =? "Google-chrome") (mapM_ focus) (spawnHere "chromium --user-data-directory=~/work/avoxi/chromium"))
|
||||||
|
--, ((winKey , xK_g), spawnHere "google-chrome --purge-memory-button ")
|
||||||
|
--, ((winKey , xK_i), spawnHere "iceweasel")
|
||||||
|
--, ((winKey , xK_i), spawnHere "clementine")
|
||||||
|
-- , ((winKey , xK_i), ifWindows (className =? "Clementine") (mapM_ killWindow) (spawnHere "clementine"))
|
||||||
|
-- , ((winKey , xK_d ), ifWindows (className =? "Goldendict") (mapM_ killWindow) (spawnHere "goldendict"))
|
||||||
|
-- , ((winKey , xK_d), ifWindows (className =? "Xfce4-dict") (mapM_ killWindow) (spawnHere "xfce4-dict"))
|
||||||
|
, ((winKey , xK_d), ifWindows (className =? "Org.gnome.Dictionary") (mapM_ killWindow) (spawnHere "gnome-dictionary"))
|
||||||
|
--, ((winKey , xK_f), spawnHere (myTerminal ++ " -e vifm . ~"))
|
||||||
|
--, ((winKey , xK_f), spawnHere ("export SHELL=/bin/bash && " ++ myTerminal ++ " -e mc"))
|
||||||
|
--, ((winKey , xK_e), spawnHere ("export SHELL=/bin/bash && " ++ myTerminal ++ " -e mc")) -- key stroke matches Win+E (from Win7)
|
||||||
|
, ((winKey , xK_o), do
|
||||||
|
--windows (viewOnScreen 0 "of")
|
||||||
|
ifWindows (fmap("libreoffice" `isPrefixOf`) className) (mapM_ focus) (spawnHere "libreoffice"))
|
||||||
|
-- , ((winKey , xK_o), do
|
||||||
|
-- windows (viewOnScreen 1 "rbank")
|
||||||
|
-- ifWindows (className =? "Opera") (mapM_ focus) (spawnHere "opera"))
|
||||||
|
-- , ((winKey .|. controlMask , xK_a), spawnHere "/home/trey/launchers/airdroid.desktop")
|
||||||
|
-- , ((winKey , xK_s), do
|
||||||
|
-- windows (viewOnScreen 1 "hng")
|
||||||
|
-- ifWindows (className =? "Skype") (mapM_ focus) (spawnHere "skype"))
|
||||||
|
, ((winKey , xK_s), ifWindows (className =? "Pavucontrol") (mapM_ killWindow) (spawnHere "pavucontrol"))
|
||||||
|
, ((winKey , xK_t), do
|
||||||
|
spawn "pkill trayer"
|
||||||
|
spawn startTrayer)
|
||||||
|
, ((winKey , xK_c), kill)
|
||||||
|
--, ((winKey , xK_m), windows W.focusMaster)
|
||||||
|
, ((winKey , xK_comma), sendMessage (IncMasterN 1))
|
||||||
|
, ((winKey , xK_period), sendMessage (IncMasterN (-1)))
|
||||||
|
, ((winKey , xK_j), windows W.focusDown) -- explicitly setting the default
|
||||||
|
, ((winKey .|. controlMask, xK_j), windows W.swapDown) -- explicitly setting the default
|
||||||
|
, ((winKey , xK_k), windows W.focusUp) -- explicitly setting the default
|
||||||
|
, ((winKey .|. controlMask, xK_k), windows W.swapUp) -- explicitly setting the default
|
||||||
|
, ((lAlt , xK_Tab), windows W.focusDown) -- replicating MS Windows task switcher behavior
|
||||||
|
--, ((winKey , xK_Tab), goToSelected defaultGSConfig)
|
||||||
|
, ((winKey , xK_Tab), goToSelected def)
|
||||||
|
, ((lAlt .|. shiftMask, xK_Tab), windows W.focusUp) -- replicating MS Windows task switcher behavior
|
||||||
|
, ((winKey .|. controlMask, xK_Return), windows W.swapMaster)
|
||||||
|
, ((winKey, xK_space ), sendMessage NextLayout)
|
||||||
|
--, ((winKey .|. shiftMask, xK_space), setLayout $ XMonad.layoutHook conf) -- the default, commented here for documentation and posterity
|
||||||
|
, ((winKey , xK_p), spawnHere launcher)
|
||||||
|
, ((winKey .|. shiftMask, xK_p), spawnHere "gmrun")
|
||||||
|
--, ((winKey .|. controlMask , xK_d), spawn ("sleep 1 && date +%F | tr -d '\n' | ~/bin/genxmacro | xmacroplay -d 0.1 $DISPLAY"))
|
||||||
|
--, ((controlMask .|. shiftMask , xK_d), spawn ("sleep 1 && date '+%F %T %p: ' | tr -d '\n' | ~/bin/genxmacro | xmacroplay -d 0.1 $DISPLAY"))
|
||||||
|
--, ((winKey .|. controlMask , xK_k), spawn ("sleep 1 && cat ~/.macros/code.macro | xmacroplay -d 0.1 $DISPLAY"))
|
||||||
|
--, ((shiftMask, xK_Insert), withFocused shiftInsert)
|
||||||
|
--, ((controlMask, xK_n), raiseMaybe (spawnHere myTerminal) (className =? "URxvt"))
|
||||||
|
-- , ((winKey , xK_Print), spawnHere "xfce4-screenshooter")
|
||||||
|
, ((winKey , xK_Left), prevWS)
|
||||||
|
, ((winKey , xK_Right), nextWS)
|
||||||
|
, ((winKey , xK_Up), spawnHere "skippy-xd")
|
||||||
|
--, ((0, xF86XK_Calculator), spawnHere "/home/trey/bin/calc")
|
||||||
|
--, ((0, xF86XK_Calculator), ifWindows (className =? "Gcalctool") (mapM_ killWindow) (spawnHere "gcalctool"))
|
||||||
|
, ((winKey , xK_y), spawn "dunstctl close-all")
|
||||||
|
, ((winKey , xK_x), spawn "dunstctl close")
|
||||||
|
-- , ((0, xF86XK_Calculator), ifWindows (className =? "Gnome-calculator") (mapM_ killWindow) (spawnHere "gnome-calculator"))
|
||||||
|
, ((0, xF86XK_AudioPlay), spawn "clementine --play-pause")
|
||||||
|
--, ((0, xF86XK_AudioMute), spawn "amixer -c 0 set Master toggle")
|
||||||
|
, ((0, xF86XK_AudioMute), spawn "pamixer --toggle-mute")
|
||||||
|
, ((0, xF86XK_AudioRaiseVolume), spawn "pamixer --increase 5")
|
||||||
|
, ((0, xF86XK_AudioLowerVolume), spawn "pamixer --decrease 5")
|
||||||
|
, ((0, xF86XK_MonBrightnessUp), spawn "sudo xbacklight -inc 5")
|
||||||
|
, ((0, xF86XK_MonBrightnessDown), spawn "sudo xbacklight -dec 5")
|
||||||
|
-- , ((winKey .|. controlMask, xK_Left), shiftToPrev >> prevWS)
|
||||||
|
-- , ((winKey .|. controlMask, xK_Right), shiftToNext >> nextWS)
|
||||||
|
, ((winKey .|. controlMask, xK_h), sendMessage Shrink)
|
||||||
|
, ((winKey .|. lAlt, xK_h), do
|
||||||
|
--windows (viewOnScreen 1 "hng")
|
||||||
|
--windows (viewOnScreen 1 "chromium")
|
||||||
|
--ifWindows (className =? "Chromium") (mapM_ focus) (spawnHere "chromium"))
|
||||||
|
--windows (viewOnScreen 1 "vivaldi")
|
||||||
|
--ifWindows (className =? "Vivaldi-stable") (mapM_ focus) (spawnHere "vivaldi-stable"))
|
||||||
|
windows (viewOnScreen 0 "qb")
|
||||||
|
ifWindows (className =? "qutebrowser") (mapM_ focus) (spawnHere "qutebrowser"))
|
||||||
|
--ifWindows (className =? "Iceweasel") (mapM_ focus) (spawnHere "iceweasel"))
|
||||||
|
, ((winKey .|. controlMask, xK_l), sendMessage Expand)
|
||||||
|
--, ((winKey , xK_1), windows (viewOnScreen 0 "shell"))
|
||||||
|
--, ((winKey , xK_1), ifWindows (className =? "Alacritty") (mapM_ focus) (spawnHere myTerminal))
|
||||||
|
--, ((winKey , xK_2), windows (viewOnScreen 0 "chromium"))
|
||||||
|
, ((winKey , xK_a), do
|
||||||
|
windows (viewOnScreen 0 "pindrop")
|
||||||
|
--ifWindows (className =? "Pidgin") (mapM_ focus) (spawnHere "pidgin"))
|
||||||
|
ifWindows (className =? "Slack") (mapM_ focus) (spawnHere "slack"))
|
||||||
|
, ((winKey , xK_q), spawn "killall dzen2 stalonetray; xmonad --recompile; xmonad --restart")
|
||||||
|
, ((winKey .|. shiftMask , xK_q), io (exitWith ExitSuccess))
|
||||||
|
-- win+h shows the selected workspace
|
||||||
|
, ((winKey, xK_h), DW.withWorkspace myXPConfigSelect $ \wk -> do
|
||||||
|
--sc <- screenBy 0
|
||||||
|
--if sc == 0
|
||||||
|
--then XS.modify $ LeftScreen . (wk :) . getLeftScreen -- prefix to list
|
||||||
|
-- then XS.modify $ LeftScreen . (++ [wk]) . getLeftScreen -- append to list
|
||||||
|
--else XS.modify $ RightScreen . (wk :) . getRightScreen -- prefix to list
|
||||||
|
-- else XS.modify $ RightScreen . (++ [wk]) . getRightScreen -- append to list
|
||||||
|
windows $ W.view wk)
|
||||||
|
-- win+z moves the current window to the selected workspace
|
||||||
|
, ((winKey, xK_z), DW.withWorkspace myXPConfigSelect (\ws -> do
|
||||||
|
--sc <- screenBy 0
|
||||||
|
--if sc == 0
|
||||||
|
-- then XS.modify $ LeftScreen . nub . (ws :) . getLeftScreen -- prefix to list
|
||||||
|
-- else XS.modify $ RightScreen . nub . (ws :) . getRightScreen -- prefix to list
|
||||||
|
--then XS.modify $ LeftScreen . nub . (++ [ws]) . getLeftScreen -- append to list
|
||||||
|
--else XS.modify $ RightScreen . nub . (++ [ws]) . getRightScreen -- append to list
|
||||||
|
|
||||||
|
windows $ W.shift ws
|
||||||
|
-- refresh
|
||||||
|
))
|
||||||
|
-- win+BackSpace removes the current workspace
|
||||||
|
, ((winKey , xK_BackSpace), do
|
||||||
|
curr <- gets (W.currentTag . windowset)
|
||||||
|
sc <- screenBy 0
|
||||||
|
if sc == 0
|
||||||
|
then do
|
||||||
|
ws <- XS.gets getLeftScreen
|
||||||
|
XS.put (LeftScreen (filter (/= curr) ws))
|
||||||
|
else do
|
||||||
|
ws <- XS.gets getRightScreen
|
||||||
|
XS.put (RightScreen (filter (/= curr) ws))
|
||||||
|
DW.removeWorkspace
|
||||||
|
)
|
||||||
|
-- win+ctrl+e renames the current workspace
|
||||||
|
, ((winKey .|. controlMask , xK_r), do
|
||||||
|
old <- gets (W.currentTag . windowset)
|
||||||
|
DW.renameWorkspace myXPConfigNew
|
||||||
|
created <- gets (W.currentTag . windowset)
|
||||||
|
sc <- screenBy 0
|
||||||
|
if sc == 0
|
||||||
|
then do
|
||||||
|
ws <- XS.gets getLeftScreen
|
||||||
|
XS.put (LeftScreen (filter (/= old) ws))
|
||||||
|
--XS.modify $ LeftScreen . (created :) . getLeftScreen -- prefix to list
|
||||||
|
XS.modify $ LeftScreen . (++ [created]) . getLeftScreen -- append to list
|
||||||
|
else do
|
||||||
|
ws <- XS.gets getRightScreen
|
||||||
|
XS.put (RightScreen (filter (/= old) ws))
|
||||||
|
--XS.modify $ RightScreen . (created :) . getRightScreen -- prefix to list
|
||||||
|
XS.modify $ RightScreen . (++ [created]) . getRightScreen -- append to list
|
||||||
|
refresh)
|
||||||
|
-- win+m creates a new workspace
|
||||||
|
, ((winKey , xK_m) , DW.withWorkspace myXPConfigNew $ \wk -> do
|
||||||
|
sc <- screenBy 0
|
||||||
|
if sc == 0
|
||||||
|
--then XS.modify $ LeftScreen . (wk :) . getLeftScreen -- prefix to list
|
||||||
|
then XS.modify $ LeftScreen . (++ [wk]) . getLeftScreen -- append to list
|
||||||
|
--else XS.modify $ RightScreen . (wk :) . getRightScreen -- prefix to list
|
||||||
|
else XS.modify $ RightScreen . (++ [wk]) . getRightScreen -- append to list
|
||||||
|
windows $ W.view wk)
|
||||||
|
--, ((winKey .|. shiftMask, xK_d) -- macro conflict dialog problem needs to be resolved
|
||||||
|
]
|
||||||
|
++
|
||||||
|
-- Set up window -> workspace keys
|
||||||
|
[((m .|. winKey, key), screenWorkspace sc >>= flip whenJust (windows . f))
|
||||||
|
-- | (key, sc) <- zip [xK_w, xK_r] [0..]
|
||||||
|
-- | (key, sc) <- zip [xK_Left, xK_Right] [0..] -- For arrow keys
|
||||||
|
| (key, sc) <- zip [xK_e, xK_w, xK_r] [0..] -- For w,r keys
|
||||||
|
-- | (key, sc) <- zip [xK_w, xK_r] [1,0] -- For w,r keys in backwards order
|
||||||
|
-- | (key, sc) <- zip [xK_w, xK_r] [1,0] -- For w,r keys in backwards order
|
||||||
|
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
|
||||||
|
|
||||||
|
remKeys = [(winKey, n) | n <- [xK_0 .. xK_9]]
|
||||||
|
|
||||||
|
--dXPConfig = defaultXPConfig {
|
||||||
|
dXPConfig = def {
|
||||||
|
bgColor = "yellow"
|
||||||
|
, fgColor = "blue"
|
||||||
|
, font = myFont
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
--myXPConfigSelect = defaultXPConfig {
|
||||||
|
myXPConfigSelect = def {
|
||||||
|
bgColor = "yellow"
|
||||||
|
, fgColor = "blue"
|
||||||
|
, autoComplete = Just 0
|
||||||
|
, showCompletionOnTab = True
|
||||||
|
, font = myFont
|
||||||
|
}
|
||||||
|
|
||||||
|
--myXPConfigNew = defaultXPConfig {
|
||||||
|
myXPConfigNew = def {
|
||||||
|
bgColor = "yellow"
|
||||||
|
, fgColor = "blue"
|
||||||
|
, autoComplete = Nothing
|
||||||
|
, showCompletionOnTab = True
|
||||||
|
, font = myFont
|
||||||
|
}
|
||||||
|
|
Reference in New Issue
Block a user