10 Commits

Author SHA1 Message Date
Fabio Scotto di Santolo
dbdb2cb590 Update XFCE config 2026-03-26 19:11:17 +01:00
Fabio Scotto di Santolo
e183d24673 Various task
- Update README.md
- Remove Doom Emacs config
- Update XFCE4 config
- Fix .profile
2026-03-04 23:23:34 +01:00
Fabio Scotto di Santolo
618fe4a9ce Fix yt-dlp download folder 2026-03-01 00:29:16 +01:00
Fabio Scotto di Santolo
780d466313 Restyle i3 configuration 2026-03-01 00:28:58 +01:00
Fabio Scotto di Santolo
0d1007d41f Split i3 classic config with XFCE+i3 config 2026-03-01 00:27:52 +01:00
Fabio Scotto di Santolo
ec0b9a5b8d Update i3, rofi, and kitty configurations 2026-02-25 22:39:02 +01:00
Fabio Scotto di Santolo
7a8d1e3821 Update XFCE configuration 2026-02-25 22:36:27 +01:00
Fabio Scotto di Santolo
f149a4081c Fix logout and lock session from XFCE+i3 2026-02-16 18:41:36 +01:00
Fabio Scotto di Santolo
dcfeeee394 Fix integration i3 with XFCE 2026-02-16 14:21:43 +01:00
Fabio Scotto di Santolo
a52efd5e86 Added elfeed function for streaming video with MPV 2026-02-16 14:21:15 +01:00
73 changed files with 3558 additions and 517 deletions

View File

@@ -13,7 +13,7 @@ Each directory in this repository corresponds to a specific application or tool,
> ```bash
> stow bash
> stow i3
> stow doom
> stow emacs
> ```
### 🧩 Included Tools & Configurations
@@ -24,16 +24,17 @@ This repository contains my configuration files for the following tools:
- `bash` (Oh My Bash)
- `starship`
- **Terminal Emulators & Multiplexer**
- `xfce4-terminal`
- `alacritty`
- `kitty`
- `foot`
- `tmux`
- **Editors & CLI Tools**
- `doom` (Doom Emacs config)
- `emacs` (Custom config)
- `emacs`
- `git`
- **X11 Environment**
- `xfce4` (Desktop Environment)
- `i3` (Window Manager)
- `picom` (X11 compositor)
- `polybar` (status bar)
- `rofi` (launcher)
- `dunst` (notification daemon)
- **Wayland Environment**
@@ -43,7 +44,6 @@ This repository contains my configuration files for the following tools:
- `dunst` (notification daemon)
- **Utilities**
- `fastfetch`
- `zoxide`
- `yt-dlp`
- `flameshot`

View File

@@ -15,10 +15,10 @@ export QT_STYLE_OVERRIDE=kvantum
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export DOTFILES="$HOME/.dotfiles"
export EDITOR=nano
export EDITOR=vim
# SSH socket
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
#export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gcr/ssh"
# export FZF_DEFAULT_COMMAND="fdfind --hidden --type file --strip-cwd-prefix --exclude .git"
# export FZF_CTRL_T_COMMAND="fdfind --hidden --type file --strip-cwd-prefix --exclude .git"
@@ -46,8 +46,6 @@ appendpath() {
esac
}
# appendpath "/home/linuxbrew/.linuxbrew/bin"
appendpath "$HOME/.local/bin"
appendpath "$GOBIN"
# appendpath "$HOME/.cargo/bin"
unset appendpath

View File

@@ -1,156 +0,0 @@
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
;; Place your private configuration here! Remember, you do not need to run 'doom
;; sync' after modifying this file!
;; Some functionality uses this to identify you, e.g. GPG configuration, email
;; clients, file templates and snippets. It is optional.
;; (setq user-full-name "John Doe"
;; user-mail-address "john@doe.com")
;; Doom exposes five (optional) variables for controlling fonts in Doom:
;;
;; - `doom-font' -- the primary font to use
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
;; presentations or streaming.
;; - `doom-symbol-font' -- for symbols
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
;;
;; See 'C-h v doom-font' for documentation and more examples of what they
;; accept. For example:
;;
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
;;
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
;; refresh your font settings. If Emacs still can't find your font, it likely
;; wasn't installed correctly. Font issues are rarely Doom issues!
(setq doom-font (font-spec :family "FiraCode Nerd Font" :size 16 :weight 'regular)
doom-big-font (font-spec :family "FiraCode Nerd Font" :size 18 :weight 'bold)
doom-variable-pitch-font (font-spec :family "Noto Sans" :size 16 :weight 'regular))
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
(setq doom-theme 'catppuccin)
;; This determines the style of line numbers in effect. If set to `nil', line
;; numbers are disabled. For relative line numbers, set this to `relative'.
(setq display-line-numbers-type t)
;; If you use `org' and don't want your org files in the default location below,
;; change `org-directory'. It must be set before org loads!
(setq org-directory "~/Remotes/pCloud/Org")
;; Whenever you reconfigure a package, make sure to wrap your config in an
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
;;
;; (after! PACKAGE
;; (setq x y))
;;
;; The exceptions to this rule:
;;
;; - Setting file/directory variables (like `org-directory')
;; - Setting variables which explicitly tell you to set them before their
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
;; - Setting doom variables (which start with 'doom-' or '+').
;;
;; Here are some additional functions/macros that will help you configure Doom.
;;
;; - `load!' for loading external *.el files relative to this one
;; - `use-package!' for configuring packages
;; - `after!' for running code after a package has loaded
;; - `add-load-path!' for adding directories to the `load-path', relative to
;; this file. Emacs searches the `load-path' when you load packages with
;; `require' or `use-package'.
;; - `map!' for binding new keys
;;
;; To get information about any of these functions/macros, move the cursor over
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
;; This will open documentation for it, including demos of how they are used.
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
;; etc).
;;
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
;; they are implemented.
;; Maximize each Emacs frames at startup
(add-to-list 'default-frame-alist '(fullscreen . maximized))
(after! mu4e
;; This is set to 't' to avoid mail syncing issues when using mbsync
(setq mu4e-change-filenames-when-moving t)
;; Refresh mail using isync every 10 minutes
(setq mu4e-update-interval (* 10 60))
(setq mu4e-get-mail-command "~/.config/doom/scripts/email_sync.sh")
(setq mu4e-maildir "~/Maildir")
;; Configure email accounts
(setq mu4e-contexts
(list
;; Protonmail Account
(make-mu4e-context
:name "Protonmail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/ProtonMailAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@protonmail.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/ProtonMailAccount/Drafts")
(mu4e-sent-folder . "/ProtonMailAccount/Sent")
(mu4e-refile-folder . "/ProtonMailAccount/All Mail")
(mu4e-trash-folder . "/ProtonMailAccount/Trash")))
;; iCloud Account
(make-mu4e-context
:name "iCloud Mail"
:match-func
(lambda (msg)
(when msg
(string-prefix-p "/iCloudAccount" (mu4e-message-field msg :maildir))))
:vars '((user-mail-address . "fscottodisantolo@icloud.com")
(user-full-name . "Fabio Scotto di Santolo")
(mu4e-drafts-folder . "/iCloudAccount/Drafts")
(mu4e-sent-folder . "/iCloudAccount/Sent Messages")
(mu4e-refile-folder . "/iCloudAccount/INBOX")
(mu4e-trash-folder . "/iCloudAccount/Junk")))))
;; Configure SMTP client for send emails
(setq sendmail-program "/usr/bin/msmtp"
send-mail-function 'sendmail-send-it
message-sendmail-f-is-evil t
message-sendmail-extra-arguments '("--read-envelope-from")
message-send-mail-function 'message-send-mail-with-sendmail))
;; Configure Elfeed
(after! elfeed
(setq rmh-elfeed-org-files '("~/.config/doom/elfeed.org"))
(setq elfeed-db-directory "~/.elfeed")
(setq elfeed-enclosure-default-dir "~/Downloads/")
(setq elfeed-sort-order 'descending)
(setq elfeed-search-filter "6-months-ago +unread")
;; Key bindings
(map! :map elfeed-search-mode-map
:n "d" #'elfeed-download-current-entry
:n "O" #'elfeed-search-browse-url)
;; Update hourly
(run-at-time nil (* 60 60) #'elfeed-update))
(after! elfeed-tube
(elfeed-tube-setup))
;; PDF config
(after! pdf-tools
:defer t
:commands (pdf-loader-install)
:mode "\\.pdf\\'"
:init (pdf-loader-install)
:config (add-to-list 'revert-without-query ".pdf"))

View File

@@ -1,21 +0,0 @@
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(elfeed-feeds
'("https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig" "https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg"
("https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg" youtube programming)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg" youtube programming)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw" youtube foss)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig" youtube programming)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw" youtube fashion)
("https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg" youtube linux)
("https://blog.linuxmint.com/?feed=rss2" news linuxmint)
("https://feeds.feedburner.com/TheHackersNews" programming security))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

View File

@@ -1,16 +0,0 @@
#+TITLE: RSS Urls
#+AUTHOR: Fabio Scotto di Santolo
#+DATE: <2025-10-25 Sat>
* root :elfeed:
** Programming :programming:
*** [[https://feeds.feedburner.com/TheHackersNews][Hacker News]] :news: :security:
** FOSS News :news:
*** [[https://blog.linuxmint.com/?feed=rss2][Linux Mint Blog]] :blog: :linux: :linuxmint:
** Youtube :youtube:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg][DistroTube]] :emacs: :foss: :linux:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCABhVAlCkcEG9a2UVruq9vw][Douglas Mortimer]] :fashion:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCqZe2cxQNCvgkQxUuqsIaig][Esadecimale]] :emacs: :programming:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCnDDucQDLncrauOCmanCIgw][MorroLinux]] :linux: :foss:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCDDG9vOcmgwlslJJpCWjqOg][Salvatore Sanfilippo]] :programming:
*** [[https://www.youtube.com/feeds/videos.xml?channel_id=UCrqM0Ym_NbK1fqeQG2VIohg][Tsoding Daily]] :emacs: :programming:

View File

@@ -1,201 +0,0 @@
;;; init.el -*- lexical-binding: t; -*-
;; This file controls what Doom modules are enabled and what order they load
;; in. Remember to run 'doom sync' after modifying it!
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
;; documentation. There you'll find a link to Doom's Module Index where all
;; of our modules are listed, including what flags they support.
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
;; 'C-c c k' for non-vim users) to view its documentation. This works on
;; flags as well (those symbols that start with a plus).
;;
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
;; directory (for easy access to its source code).
(doom! :input
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion
company ; the ultimate code completion backend
;;(corfu +orderless) ; complete with cap(f), cape and a flying feather!
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
ivy ; a search engine for love and life
;;vertico ; the search engine of the future
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
(emoji +unicode) ; 🙂
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;indent-guides ; highlighted indent columns
ligatures ; ligatures and symbols to make your code pretty again
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
;;nav-flash ; blink cursor line after big motions
;;neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults) ; tame sudden yet inevitable temporary windows
;;smooth-scroll ; So smooth you won't believe it's not butter
;;tabs ; a tab bar for Emacs
treemacs ; a project drawer, like neotree but cooler
unicode ; extended unicode support for various languages
(vc-gutter +pretty) ; vcs diff in the fringe
vi-tilde-fringe ; fringe tildes to mark beyond EOB
;;window-select ; visually switch windows
workspaces ; tab emulation, persistence & separate workspaces
;;zen ; distraction-free coding or writing
:editor
;;(evil +everywhere); come to the dark side, we have cookies
file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
snippets ; my elves. They type so I don't have to
(whitespace +guess +trim) ; a butler for your whitespace
;;word-wrap ; soft wrapping with language-aware indent
:emacs
dired ; making dired pretty [functional]
electric ; smarter, keyword-based electric-indent
eww ; the internet is gross
ibuffer ; interactive buffer management
tramp ; remote files at your arthritic fingertips
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
(spell +flyspell) ; tasing you for misspelling mispelling
grammar ; tasing grammar mistake every you make
:tools
ansible
;;biblio ; Writes a PhD for you (citation needed)
;;collab ; buffers with friends
debugger ; FIXME stepping through code, to help you add bugs
;;direnv
docker
editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
lookup ; navigate your code and its documentation
;;llm ; when I said you needed friends, I didn't mean...
;;(lsp +eglot) ; M-x vscode
magit ; a git porcelain for Emacs
make ; run make tasks from Emacs
pass ; password manager for nerds
pdf ; pdf enhancements
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
tree-sitter ; syntax and parsing, sitting in a tree...
;;upload ; map local to remote projects via ssh/ftp
:os
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
;;tty ; improve the terminal Emacs experience
:lang
;;ada ; In strong typing we (blindly) trust
;;agda ; types of types of types of types...
;;beancount ; mind the GAAP
(cc +lsp) ; C > C++ == 1
clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
;;dhall
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
;;ess ; emacs speaks statistics
;;factor
;;faust ; dsp, but you get to keep your soul
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
(go +lsp) ; the hipster dialect
;;(graphql +lsp) ; Give queries a REST
;;(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on
json ; At least it ain't XML
;;janet ; Fun fact: Janet is me!
;;(java +lsp) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
latex ; writing papers in Emacs has never been so fun
;;lean ; for folks with too much to prove
;;ledger ; be audit you can be
lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
org ; organize your plain life in plain text
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;graphviz ; diagrams for confusing yourself even more
;;purescript ; javascript, but functional
python ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
(scheme +guile) ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes
yaml ; JSON, but readable
zig ; C, but simpler
:tools
lsp ; lsp mode
:email
(mu4e +org +gmail)
;;notmuch
;;(wanderlust +gmail)
:app
calendar
emms
everywhere ; *leave* Emacs!? You must be joking
;;irc ; how neckbeards socialize
(rss +org) ; emacs as an RSS reader
:config
;;literate
(default +bindings +smartparens))

View File

@@ -1,59 +0,0 @@
;; -*- no-byte-compile: t; -*-
;;; $DOOMDIR/packages.el
;; To install a package:
;;
;; 1. Declare them here in a `package!' statement,
;; 2. Run 'doom sync' in the shell,
;; 3. Restart Emacs.
;;
;; Use 'C-h f package\!' to look up documentation for the `package!' macro.
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
;; (package! some-package)
;; To install a package directly from a remote git repo, you must specify a
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
;; https://github.com/radian-software/straight.el#the-recipe-format
;; (package! another-package
;; :recipe (:host github :repo "username/repo"))
;; If the package you are trying to install does not contain a PACKAGENAME.el
;; file, or is located in a subdirectory of the repo, you'll need to specify
;; `:files' in the `:recipe':
;; (package! this-package
;; :recipe (:host github :repo "username/repo"
;; :files ("some-file.el" "src/lisp/*.el")))
;; If you'd like to disable a package included with Doom, you can do so here
;; with the `:disable' property:
;; (package! builtin-package :disable t)
;; You can override the recipe of a built in package without having to specify
;; all the properties for `:recipe'. These will inherit the rest of its recipe
;; from Doom or MELPA/ELPA/Emacsmirror:
;; (package! builtin-package :recipe (:nonrecursive t))
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
;; Specify a `:branch' to install a package from a particular branch or tag.
;; This is required for some packages whose default branch isn't 'master' (which
;; our package manager can't deal with; see radian-software/straight.el#279)
;; (package! builtin-package :recipe (:branch "develop"))
;; Use `:pin' to specify a particular commit to install.
;; (package! builtin-package :pin "1a2b3c4d5e")
;; Doom's packages are pinned to a specific commit and updated from release to
;; release. The `unpin!' macro allows you to unpin single packages...
;; (unpin! pinned-package)
;; ...or multiple packages
;; (unpin! pinned-package another-pinned-package)
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
;; (unpin! t)
(package! catppuccin-theme)
(package! org-caldav)
(package! elfeed-tube)
(package! elfeed-tube-mpv)

View File

@@ -1,7 +0,0 @@
#!/usr/bin/env sh
mbsync -a & pid1=$!
wait $pid1
mu index

View File

@@ -2,6 +2,21 @@
(use-package elfeed
:ensure t
:config
(defun elfeed-play-with-mpv ()
"Open the current elfeed entry link with mpv."
(interactive)
(let* ((entry (if (eq major-mode 'elfeed-show-mode)
elfeed-show-entry
(elfeed-search-selected :ignore-region)))
(url (and entry (elfeed-entry-link entry))))
(if url
(progn
(message "Opening with mpv: %s" url)
(start-process "mpv" nil "mpv" url))
(message "No URL found"))))
(define-key elfeed-search-mode-map (kbd "v") #'elfeed-play-with-mpv)
(define-key elfeed-show-mode-map (kbd "v") #'elfeed-play-with-mpv)
:custom
(elfeed-enclosure-default-dir "~/Downloads/")
(elfeed-search-remain-on-entry t)
@@ -25,3 +40,4 @@
(with-eval-after-load 'elfeed
(elfeed-org))

View File

@@ -0,0 +1,17 @@
[Settings]
gtk-theme-name=Yaru-blue-dark
gtk-icon-theme-name=Yary-blue-dark
gtk-font-name=Noto Sans 10
gtk-cursor-theme-name=Qogir-dark
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=0

View File

@@ -0,0 +1,2 @@
[Settings]
gtk-theme-name=Yaru-purple-dark

View File

@@ -20,7 +20,6 @@ set $right l
set $term 'xfce4-terminal'
set $editor 'emacs'
set $filemanager 'thunar'
set $notification 'dunst'
set $browser 'chromium'
set $clipboard 'xfce4-clipman'
@@ -58,10 +57,10 @@ set $yellowbrown #e1b700
# define colors for windows:
#class border bground text indicator child_border
client.focused $lightblue $darkblue $white $mediumgrey $mediumgrey
client.unfocused $darkblue $darkblue $grey $darkgrey $darkgrey
client.focused_inactive $darkblue $darkblue $grey $black $black
client.urgent $urgentred $urgentred $white $yellowbrown $yellowbrown
#client.focused $lightblue $darkblue $white $mediumgrey $mediumgrey
#client.unfocused $darkblue $darkblue $grey $darkgrey $darkgrey
#client.focused_inactive $darkblue $darkblue $grey $black $black
#client.urgent $urgentred $urgentred $white $yellowbrown $yellowbrown
# Setting cursor
# seat seat0 xcursor_theme catppuccin-mocha-lavender-cursors 25
@@ -70,15 +69,11 @@ client.urgent $urgentred $urgentred $white $yellowbrown
# is used in the bar {} block below.
font pango:Liberation Sans Regular 10
# This font is widely installed, provides lots of unicode glyphs, right-to-left
# text rendering and scalability on retina/hidpi displays (thanks to pango).
#font pango:DejaVu Sans Mono 8
# Windows configuration
default_border pixel 3
default_floating_border pixel 3
gaps inner 5
gaps outer 5
#gaps inner 5
#gaps outer 5
# Apply wallpaper
exec_always --no-startup-id feh --bg-scale ~/.config/i3/wallpaper.jpg
@@ -105,12 +100,12 @@ for_window [class="Authy"] floating enable
for_window [class="Termfloat"] floating enable, resize set 960 540
for_window [class="Mpv"] floating enable, resize set 960 540
for_window [class="Spotify"] floating enable, resize set 1280 1024, move scratchpad
for_window [class="xfce4-clipman-history"] floating enable
# Workspaces
assign [class="Emacs"] 1
assign [class="firefox"] 2
assign [class="chromium"] 2
assign [class="Telegram"] 3
assign [class="Emacs"] 2
assign [class="Chromium"] 1
assign [class="Telegram"] 2
assign [class="discord"] 3
focus_follows_mouse no
@@ -136,8 +131,7 @@ mode "launcher" {
bindsym s exec "rofi -show ssh"
bindsym w exec "rofi -show window"
bindsym f exec "rofi -show filebrowser"
bindsym q exec ~/.config/i3/scripts/poweroff.sh
bindsym $mod+d mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
@@ -150,8 +144,10 @@ bindsym $mod+Shift+t exec "flatpak run org.telegram.desktop"
bindsym $mod+Shift+e exec $editor
bindsym Print exec xfce4-screenshooter
bindsym Shift+Print exec xfce4-screenshooter -r
bindsym Alt+Print exec xfce4-screenshooter -w
bindsym Mod1+Print exec xfce4-screenshooter -w
bindsym $mod+Shift+v exec --no-startup-id xfce4-clipman-history
bindsym $mod+Mod1+l exec ~/.config/i3/scripts/lockscreen.sh
bindsym Mod1+Ctrl+q exec ~/.config/i3/scripts/powermenu
# Use pactl to adjust volume in PulseAudio.
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
@@ -160,7 +156,6 @@ bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ to
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5%
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-
#bindsym $mod+Mod1+l exec ~/.config/i3/scripts/lockscreen.sh
# use Mouse+Mod4 to drag floating windows to their wanted position
floating_modifier $mod
@@ -183,7 +178,7 @@ bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+$left move left
bindsym $mod4+Shift+$down move down
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
@@ -284,3 +279,89 @@ mode "resize" {
}
bindsym $mod+r mode "resize"
############################################
# bar settings (input comes from i3blocks) #
############################################
# Start i3bar to display a workspace bar
# (plus the system information i3status finds out, if available)
bar {
font pango: Liberation Sans Regular 10
status_command i3blocks -c ~/.config/i3/i3blocks.conf
position bottom
# i3bar_command i3bar --transparency
# it could be that you have no primary display set: set one (xrandr --output <output> --primary)
# reference: https://i3wm.org/docs/userguide.html#_tray_output
tray_output primary
tray_padding 0
# When strip_workspace_numbers is set to yes,
# any workspace that has a name of the form
# “[n][:][NAME]” will display only the name.
strip_workspace_numbers yes
##strip_workspace_name no
#colors {
# separator $purple
# background $darkgrey
# statusline $white
# border bg txt indicator
# focused_workspace $mediumgrey $grey $darkgrey $purple
# active_workspace $lightblue $mediumgrey $darkgrey $purple
# inactive_workspace $darkgrey $darkgrey $grey $purple
# urgent_workspace $urgentred $urgentred $white $purple
#}
}
###############################################################
###############################################################
################## AUTOSTART ##################
###############################################################
###############################################################
### Run status bar
#exec_always --no-startup-id ~/.config/polybar/launch.sh
# Start XDG autostart .desktop files using dex. See also
# https://wiki.archlinux.org/index.php/XDG_Autostart
exec --no-startup-id dex --autostart --environment i3
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
# they are included here as an example. Modify as you see fit.
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
# screen before suspend. Use loginctl lock-session to lock your screen.
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork
### Enable autolock
exec_always xautolock -time 5 -locker ~/.config/i3/scripts/lockscreen.sh -detectsleep
# NetworkManager is the most popular way to manage wireless networks on Linux,
# and nm-applet is a desktop environment-independent system tray GUI for it.
exec --no-startup-id nm-applet
# make sure it loads gtk configs
exec_always $HOME/.config/i3/scripts/import-gsettings.sh
# start ssh-agent
#exec --no-startup-id /usr/bin/gnome-keyring-daemon --start --components=secrets
#################################################################
#################################################################
################ XFCE SERVICES #################
#################################################################
#################################################################
# Polkit Authentication agent
exec --no-startup-id /usr/libexec/xfce-polkit
# Notification daemon
exec --no-startup-id /usr/lib64/xfce4/notifyd/xfce4-notifyd
# Power Manager
exec --no-startup-id xfce4-power-manager
# Clipboard
exec_always --no-startup-id xfce4-clipman

182
i3/.config/i3/i3blocks.conf Normal file
View File

@@ -0,0 +1,182 @@
# i3blocks config file changed for EndeavourOS-i3 setup
# source is available here:
# https://raw.githubusercontent.com/endeavouros-team/endeavouros-i3wm-setup/main/etc/skel/.config/i3/i3blocks.conf
# Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
# Former Visual Designer: Florent Valetti [@FLVAL EndeavourOS]
# created for i3wm setup on EndeavourOS
# https://endeavouros.com
# cheatsheet for icon fonts used on the block-bar:
# https://fontawesome.com/v4.7/cheatsheet/
# --> to update this run the following command:
# wget --backups=1 https://raw.githubusercontent.com/endeavouros-team/endeavouros-i3wm-setup/main/etc/skel/.config/i3/i3blocks.conf -P ~/.config/i3/
# Please see man i3blocks for a complete reference!
# The man page is also hosted at http://vivien.github.io/i3blocks
# List of valid properties:
#
# align
# color
# command
# full_text
# instance
# interval
# label
# min_width
# name
# separator
# separator_block_width
# short_text
# signal
# urgent
# Global properties
#
# The top properties below are applied to every block, but can be overridden.
separator=true
markup=pango
#[Weather]
#command=~/.config/i3/scripts/openweather
#interval=1800
#color=#7275b3
#[terminal]
#full_text= 
#color=#807dfe
#command=i3-msg -q exec xfce4-terminal
#[browser]
#full_text= 
#color=#ff7f81
#command=i3-msg -q exec chromium
#[files]
#full_text= 
#color=#7f3fbf
#command=i3-msg -q exec thunar ~/
#[mail]
#full_text= 
#color=#dbcb75
#command=i3-msg -q exec thunderbird
#[simple-2]
#full_text=: :
#color=#717171
# Disk usage
#
# The directory defaults to $HOME if the instance is not specified.
# The script may be called with a optional argument to set the alert
# (defaults to 10 for 10%).
[disk]
label=
instance=/
command=~/.config/i3/scripts/disk
interval=30
# Memory usage
#
# The type defaults to "mem" if the instance is not specified.
[memory]
label=
command=~/.config/i3/scripts/memory
interval=2
[cpu_usage]
label=
command=~/.config/i3/scripts/cpu_usage
min_width=CPU: 100.00%
interval=2
[CPU-temperature]
label=
command=~/.config/i3/scripts/temperature
interval=30
#T_WARN=70
#T_CRIT=90
#SENSOR_CHIP=""
# where SENSOR_CHIP can be find with sensors output
# can be used also for GPU temperature or other temperature sensors lm-sensors detects.
# showing name of connected network (enable for wifi use)
#[net]
#label=
#command=echo "$(LANG=C nmcli d | grep connected | awk '{print $4}') | head -n1"
#interval=30
[bandwidth]
command=~/.config/i3/scripts/bandwidth2
interval=persist
#[vpn]
#command=~/.config/i3/scripts/vpn
#init_color=#FFFF00
#on_color=#00FF00
#label=VPN:
#interval=5
# Battery indicator
[battery]
command=~/.config/i3/scripts/battery
# change this to battery-pinebook-pro if you are running on pinebook-pro
label=
interval=30
#[simple-2]
#full_text=: :
#color=#717171
[pavucontrol]
full_text=♪
command=pavucontrol
[volume]
command=~/.config/i3/scripts/volume
interval=2
# display keyboard layout name
# for keyboard layouts switcher
# see i3 config file
# this needs xkblayout-state installed from the AUR:
# https://aur.archlinux.org/packages/xkblayout-state-git
#[keyboard-layout]
#command=~/.config/i3/scripts/keyboard-layout
#interval=2
#[keybindings]
#full_text=
#command=~/.config/i3/scripts/keyhint
# power-profiles-daemon implementation:
# needs package power-profiles-daemon installed and the service running see here:
# https://wiki.archlinux.org/title/CPU_frequency_scaling#power-profiles-daemon
#set power-profile
#[ppd_menu]
#full_text=
#command=~/.config/i3/scripts/power-profiles
#color=#407437
#Show the current power-profile
#[ppd-status]
#command=~/.config/i3/scripts/ppd-status
#interval=5
[time]
#label=
command=date '+%a %d %b %H:%M:%S'
interval=1
[shutdown_menu]
full_text=
command=~/.config/i3/scripts/powermenu
#[simple-2]
#full_text=: :
#color=#717171

View File

@@ -0,0 +1,100 @@
#!/usr/bin/env bash
# audio-device-switch - audio device switch with a keybind
# Adapted from this:
# https://gist.githubusercontent.com/kbravh/1117a974f89cc53664e55823a55ac320/raw/9d04a10ae925074536047ae8100c6b0dbfc303d6/audio-device-switch.sh
# Readme: https://gist.github.com/kbravh/1117a974f89cc53664e55823a55ac320
# Creator: https://github.com/kbravh
# Audio Output Switcher
# This script will cycle to the next available audio output device.
# It can be tied to a hotkey to easily be triggered.
# This is handy, for example, for swapping between speakers and headphones.
# This script will work on systems running PulseAudio or Pipewire services.
# Check which sound server is running
if pgrep pulseaudio >/dev/null; then
sound_server="pulseaudio"
elif pgrep pipewire >/dev/null; then
sound_server="pipewire"
else
echo "Neither PulseAudio nor PipeWire is running."
exit 1
fi
# Grab a count of how many audio sinks we have
if [[ "$sound_server" == "pulseaudio" ]]; then
sink_count=$(pacmd list-sinks | grep -c "index:[[:space:]][[:digit:]]")
# Create an array of the actual sink IDs
sinks=()
mapfile -t sinks < <(pacmd list-sinks | grep 'index:[[:space:]][[:digit:]]' | sed -n -e 's/.*index:[[:space:]]\([[:digit:]]\)/\1/p')
# Get the ID of the active sink
active_sink=$(pacmd list-sinks | sed -n -e 's/[[:space:]]*\*[[:space:]]index:[[:space:]]\([[:digit:]]\)/\1/p')
elif [[ "$sound_server" == "pipewire" ]]; then
sink_count=$(pactl list sinks | grep -c "Sink #[[:digit:]]")
# Create an array of the actual sink IDs
sinks=()
mapfile -t sinks < <(pactl list sinks | grep 'Sink #[[:digit:]]' | sed -n -e 's/.*Sink #\([[:digit:]]\)/\1/p')
# Get the ID of the active sink
active_sink_name=$(pactl info | grep 'Default Sink:' | sed -n -e 's/.*Default Sink:[[:space:]]\+\(.*\)/\1/p')
active_sink=$(pactl list sinks | grep -B 2 "$active_sink_name" | sed -n -e 's/Sink #\([[:digit:]]\)/\1/p' | head -n 1)
fi
# Get the ID of the last sink in the array
final_sink=${sinks[$((sink_count - 1))]}
# Find the index of the active sink
for index in "${!sinks[@]}"; do
if [[ "${sinks[$index]}" == "$active_sink" ]]; then
active_sink_index=$index
fi
done
# Default to the first sink in the list
next_sink=${sinks[0]}
next_sink_index=0
# If we're not at the end of the list, move up the list
if [[ $active_sink -ne $final_sink ]]; then
next_sink_index=$((active_sink_index + 1))
next_sink=${sinks[$next_sink_index]}
fi
#change the default sink
if [[ "$sound_server" == "pulseaudio" ]]; then
pacmd "set-default-sink ${next_sink}"
elif [[ "$sound_server" == "pipewire" ]]; then
# Get the name of the next sink
next_sink_name=$(pactl list sinks | grep -C 2 "Sink #$next_sink" | sed -n -e 's/.*Name:[[:space:]]\+\(.*\)/\1/p' | head -n 1)
pactl set-default-sink "$next_sink_name"
fi
#move all inputs to the new sink
if [[ "$sound_server" == "pulseaudio" ]]; then
for app in $(pacmd list-sink-inputs | sed -n -e 's/index:[[:space:]]\([[:digit:]]\)/\1/p'); do
pacmd "move-sink-input $app $next_sink"
done
elif [[ "$sound_server" == "pipewire" ]]; then
for app in $(pactl list sink-inputs | sed -n -e 's/.*Sink Input #\([[:digit:]]\)/\1/p'); do
pactl "move-sink-input $app $next_sink"
done
fi
# Create a list of the sink descriptions
sink_descriptions=()
if [[ "$sound_server" == "pulseaudio" ]]; then
mapfile -t sink_descriptions < <(pacmd list-sinks | sed -n -e 's/.*alsa.name[[:space:]]=[[:space:]]"\(.*\)"/\1/p')
elif [[ "$sound_server" == "pipewire" ]]; then
mapfile -t sink_descriptions < <(pactl list sinks | sed -n -e 's/.*Description:[[:space:]]\+\(.*\)/\1/p')
fi
# Find the index that matches our new active sink
for sink_index in "${!sink_descriptions[@]}"; do
if [[ "$sink_index" == "$next_sink_index" ]]; then
notify-send -i audio-volume-high "Sound output switched to:" "${sink_descriptions[$sink_index]}"
exit
fi
done

109
i3/.config/i3/scripts/bandwidth2 Executable file
View File

@@ -0,0 +1,109 @@
#!/usr/bin/env bash
#
# Copyright (C) 2015 James Murphy
# Licensed under the terms of the GNU GPL v2 only.
#
# i3blocks blocklet script to monitor bandwidth usage
# detecting active device device
# option to set used unit
iface="${BLOCK_INSTANCE}"
iface="${IFACE:-$iface}"
dt="${DT:-3}"
unit="${UNIT:-MB}"
LABEL="${LABEL:-<span font='FontAwesome'>⇄ </span>}" # down arrow up arrow
printf_command="${PRINTF_COMMAND:-"printf \"${LABEL}%1.0f/%1.0f %s/s\\n\", rx, wx, unit;"}"
function default_interface {
ip route | awk '/^default via/ {print $5; exit}'
}
function check_proc_net_dev {
if [ ! -f "/proc/net/dev" ]; then
echo "/proc/net/dev not found"
exit 1
fi
}
function list_interfaces {
check_proc_net_dev
echo "Interfaces in /proc/net/dev:"
grep -o "^[^:]\\+:" /proc/net/dev | tr -d " :"
}
while getopts i:t:u:p:lh opt; do
case "$opt" in
i) iface="$OPTARG" ;;
t) dt="$OPTARG" ;;
u) unit="$OPTARG" ;;
p) printf_command="$OPTARG" ;;
l) list_interfaces && exit 0 ;;
h) printf \
"Usage: bandwidth3 [-i interface] [-t time] [-u unit] [-p printf_command] [-l] [-h]
Options:
-i\tNetwork interface to measure. Default determined using \`ip route\`.
-t\tTime interval in seconds between measurements. Default: 3
-u\tUnits to measure bytes in. Default: Mb
\tAllowed units: Kb, KB, Mb, MB, Gb, GB, Tb, TB
\tUnits may have optional it/its/yte/ytes on the end, e.g. Mbits, KByte
-p\tAwk command to be called after a measurement is made.
\tDefault: printf \"<span font='FontAwesome'> </span>%%-5.1f/%%5.1f %%s/s\\\\n\", rx, wx, unit;
\tExposed variables: rx, wx, tx, unit, iface
-l\tList available interfaces in /proc/net/dev
-h\tShow this help text
" && exit 0;;
esac
done
check_proc_net_dev
iface="${iface:-$(default_interface)}"
while [ -z "$iface" ]; do
echo No default interface
sleep "$dt"
iface=$(default_interface)
done
case "$unit" in
Kb|Kbit|Kbits) bytes_per_unit=$((1024 / 8));;
KB|KByte|KBytes) bytes_per_unit=$((1024));;
Mb|Mbit|Mbits) bytes_per_unit=$((1024 * 1024 / 8));;
MB|MByte|MBytes) bytes_per_unit=$((1024 * 1024));;
Gb|Gbit|Gbits) bytes_per_unit=$((1024 * 1024 * 1024 / 8));;
GB|GByte|GBytes) bytes_per_unit=$((1024 * 1024 * 1024));;
Tb|Tbit|Tbits) bytes_per_unit=$((1024 * 1024 * 1024 * 1024 / 8));;
TB|TByte|TBytes) bytes_per_unit=$((1024 * 1024 * 1024 * 1024));;
*) echo Bad unit "$unit" && exit 1;;
esac
scalar=$((bytes_per_unit * dt))
init_line=$(cat /proc/net/dev | grep "^[ ]*$iface:")
if [ -z "$init_line" ]; then
echo Interface not found in /proc/net/dev: "$iface"
exit 1
fi
init_received=$(awk '{print $2}' <<< $init_line)
init_sent=$(awk '{print $10}' <<< $init_line)
(while true; do cat /proc/net/dev; sleep "$dt"; done) |\
stdbuf -oL grep "^[ ]*$iface:" |\
awk -v scalar="$scalar" -v unit="$unit" -v iface="$iface" '
BEGIN {
old_received='"$init_received"'
old_sent='"$init_sent"'
}
{
received=$2
sent=$10
rx=(received-old_received)/scalar
wx=(sent-old_sent)/scalar
tx=rx+wx
old_received=received
old_sent=sent
if (rx >= 0 && wx >= 0) {
'"$printf_command"'
fflush(stdout)
}
}
'

106
i3/.config/i3/scripts/battery Executable file
View File

@@ -0,0 +1,106 @@
#!/usr/bin/env python3
#
# Copyright (C) 2016 James Murphy
# Licensed under the GPL version 2 only
#
# A battery indicator blocklet script for i3blocks
from subprocess import check_output
import os
import re
config = dict(os.environ)
status = check_output(['acpi'], universal_newlines=True)
if not status:
# stands for no battery found
color = config.get("color_10", "red")
fulltext = "<span color='{}'><span font='FontAwesome'>\uf00d \uf240</span></span>".format(color)
percentleft = 100
else:
# if there is more than one battery in one laptop, the percentage left is
# available for each battery separately, although state and remaining
# time for overall block is shown in the status of the first battery
batteries = status.split("\n")
state_batteries=[]
commasplitstatus_batteries=[]
percentleft_batteries=[]
time = ""
for battery in batteries:
if battery!='':
state_batteries.append(battery.split(": ")[1].split(", ")[0])
commasplitstatus = battery.split(", ")
if not time:
time = commasplitstatus[-1].strip()
# check if it matches a time
time = re.match(r"(\d+):(\d+)", time)
if time:
time = ":".join(time.groups())
timeleft = " ({})".format(time)
else:
timeleft = ""
p = int(commasplitstatus[1].rstrip("%\n"))
if p>0:
percentleft_batteries.append(p)
commasplitstatus_batteries.append(commasplitstatus)
state = state_batteries[0]
commasplitstatus = commasplitstatus_batteries[0]
if percentleft_batteries:
percentleft = int(sum(percentleft_batteries)/len(percentleft_batteries))
else:
percentleft = 0
# stands for charging
color = config.get("color_charging", "yellow")
FA_LIGHTNING = "<span color='{}'><span font='FontAwesome'>\uf0e7</span></span>".format(color)
# stands for plugged in
FA_PLUG = "<span font='FontAwesome'>\uf1e6</span>"
# stands for using battery
FA_BATTERY = "<span font='FontAwesome'>\uf240</span>"
# stands for unknown status of battery
FA_QUESTION = "<span font='FontAwesome'>\uf128</span>"
if state == "Discharging":
fulltext = FA_BATTERY + " "
elif state == "Full":
fulltext = FA_PLUG + " "
timeleft = ""
elif state == "Unknown":
fulltext = FA_QUESTION + " " + FA_BATTERY + " "
timeleft = ""
else:
fulltext = FA_LIGHTNING + " " + FA_PLUG + " "
def color(percent):
if percent < 10:
# exit code 33 will turn background red
return config.get("color_10", "#FFFFFF")
if percent < 20:
return config.get("color_20", "#FF3300")
if percent < 30:
return config.get("color_30", "#FF6600")
if percent < 40:
return config.get("color_40", "#FF9900")
if percent < 50:
return config.get("color_50", "#FFCC00")
if percent < 60:
return config.get("color_60", "#FFFF00")
if percent < 70:
return config.get("color_70", "#FFFF33")
if percent < 80:
return config.get("color_80", "#FFFF66")
return config.get("color_full", "#FFFFFF")
form = '<span color="{}">{}%</span>'
fulltext += form.format(color(percentleft), percentleft)
#fulltext += timeleft
print(fulltext)
print(fulltext)
if percentleft < 10:
exit(33)

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
# simple Shellscript for i3blocks on Pinebook pro
# 05012020 geri123 //at// gmx.net Gerhard S.
# battery-symbols: you need the awesome-terminal-font package installed
PERCENT=$(cat /sys/class/power_supply/cw2015-battery/capacity)
STATUS=$(cat /sys/class/power_supply/cw2015-battery/status)
case $((
$PERCENT >= 0 && $PERCENT <= 20 ? 1 :
$PERCENT > 20 && $PERCENT <= 40 ? 2 :
$PERCENT > 40 && $PERCENT <= 60 ? 3 :
$PERCENT > 60 && $PERCENT <= 80 ? 4 : 5)) in
#
(1) echo $STATUS:"" :$PERCENT%;;
(2) echo $STATUS:"" :$PERCENT%;;
(3) echo $STATUS:"" :$PERCENT%;;
(4) echo $STATUS:"" :$PERCENT%;;
(5) echo $STATUS:"" :$PERCENT%;;
esac

14
i3/.config/i3/scripts/blur-lock Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
# simple screenlocker using i3lock that creates ablurred screenshot to overlay
PICTURE=/tmp/i3lock.png
SCREENSHOT="scrot -z $PICTURE"
BLUR="5x4"
$SCREENSHOT
magick $PICTURE -blur $BLUR $PICTURE
i3lock -i $PICTURE
shred $PICTURE
rm $PICTURE

62
i3/.config/i3/scripts/cpu_usage Executable file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/perl
#
# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
# Copyright 2014 Vivien Didelot <vivien@didelot.org>
# Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com>
#
# Licensed under the terms of the GNU GPL v3, or any later version.
use strict;
use warnings;
use utf8;
use Getopt::Long;
# default values
my $t_warn = $ENV{T_WARN} // 50;
my $t_crit = $ENV{T_CRIT} // 80;
my $cpu_usage = -1;
my $decimals = $ENV{DECIMALS} // 0;
my $label = $ENV{LABEL} // "";
sub help {
print "Usage: cpu_usage [-w <warning>] [-c <critical>] [-d <decimals>]\n";
print "-w <percent>: warning threshold to become yellow\n";
print "-c <percent>: critical threshold to become red\n";
print "-d <decimals>: Use <decimals> decimals for percentage (default is $decimals) \n";
exit 0;
}
GetOptions("help|h" => \&help,
"w=i" => \$t_warn,
"c=i" => \$t_crit,
"d=i" => \$decimals,
);
# Get CPU usage
$ENV{LC_ALL}="en_US"; # if mpstat is not run under en_US locale, things may break, so make sure it is
open (MPSTAT, 'mpstat 1 1 |') or die;
while (<MPSTAT>) {
if (/^.*\s+(\d+\.\d+)[\s\x00]?$/) {
$cpu_usage = 100 - $1; # 100% - %idle
last;
}
}
close(MPSTAT);
$cpu_usage eq -1 and die 'Can\'t find CPU information';
# Print short_text, full_text
print "${label}";
printf "%02.${decimals}f%%\n", $cpu_usage;
print "${label}";
printf "%02.${decimals}f%%\n", $cpu_usage;
# Print color, if needed
if ($cpu_usage >= $t_crit) {
print "#FF0000\n";
exit 33;
} elsif ($cpu_usage >= $t_warn) {
print "#FFFC00\n";
}
exit 0;

17
i3/.config/i3/scripts/cputemp Executable file
View File

@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# script to monitor temperatures in waybar/i3blocks e.t.c.
# example only use `sensors` to find your names to replace `Tdie|Tctl|Package`
# example output part from sensors:
# zenpower-pci-00c3
# Adapter: PCI adapter
# SVI2_Core: 1.03 V
# SVI2_SoC: 994.00 mV
# Tdie: +53.1°C
# Tctl: +53.1°C
# Tccd1: +42.5°C
# Tccd2: +43.2°C
temp=$(sensors 2>/dev/null | grep -E 'Tdie|Tctl|Package id 0' | grep -oP '\+?[0-9]+\.\d+(?=°C)' | tr -d '+' | head -n1)
echo "${temp}°C"

48
i3/.config/i3/scripts/disk Executable file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/env bash
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
DIR="${DIR:-$BLOCK_INSTANCE}"
DIR="${DIR:-$HOME}"
ALERT_LOW="${ALERT_LOW:-$1}"
ALERT_LOW="${ALERT_LOW:-10}" # color will turn red under this value (default: 10%)
LOCAL_FLAG="-l"
if [ "$1" = "-n" ] || [ "$2" = "-n" ]; then
LOCAL_FLAG=""
fi
df -h -P $LOCAL_FLAG "$DIR" | awk -v label="$LABEL" -v alert_low=$ALERT_LOW '
/\/.*/ {
# full text
print label $4
# short text
print label $4
use=$5
# no need to continue parsing
exit 0
}
END {
gsub(/%$/,"",use)
if (100 - use < alert_low) {
# color
print "#FF0000"
}
}
'

View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
# Copyright (C) 2025 Johannes Kamprad
# SPDX-License-Identifier: GPL-3.0-or-later
# empty_workspace - open a new workspace automatically named with next number on i3
MAX_DESKTOPS=20
WORKSPACES=$(seq -s '\n' 1 1 ${MAX_DESKTOPS})
EMPTY_WORKSPACE=$( (i3-msg -t get_workspaces | tr ',' '\n' | grep num | awk -F: '{print int($2)}' ; \
echo -e ${WORKSPACES} ) | sort -n | uniq -u | head -n 1)
i3-msg workspace ${EMPTY_WORKSPACE}

17
i3/.config/i3/scripts/gputemp Executable file
View File

@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# script to monitor temperatures in waybar/i3blocks e.t.c.
# example only use `sensors` to find your sensor to replace `i915-pci-0600`
# example output part from sensors:
# i915-pci-0600
# Adapter: PCI adapter
# in0: 630.00 mV
# fan1: 0 RPM
# temp1: +55.0°C
# energy1: 1.26 MJ
# examples using Nvidia tools:
#echo "$(nvidia-smi --format=csv,noheader --query-gpu=temperature.gpu) °C"
#echo "$(nvidia-settings -q gpucoretemp -t) °C"
# example using sensor name:
sensors 2>/dev/null | awk '/i915-pci-0600/{flag=1} flag && /temp1/ {gsub("\\+", "", $2); print $2, $3; exit}'

View File

@@ -0,0 +1,16 @@
#!/bin/sh
# needed for nwg-looks
# usage: import-gsettings
config="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
if [ ! -f "$config" ]; then exit 1; fi
gnome_schema="org.gnome.desktop.interface"
gtk_theme="$(grep 'gtk-theme-name' "$config" | cut -d'=' -f2)"
icon_theme="$(grep 'gtk-icon-theme-name' "$config" | cut -d'=' -f2)"
cursor_theme="$(grep 'gtk-cursor-theme-name' "$config" | cut -d'=' -f2)"
font_name="$(grep 'gtk-font-name' "$config" | cut -d'=' -f2)"
gsettings set "$gnome_schema" gtk-theme "$gtk_theme"
gsettings set "$gnome_schema" icon-theme "$icon_theme"
gsettings set "$gnome_schema" cursor-theme "$cursor_theme"
gsettings set "$gnome_schema" font-name "$font_name"

27
i3/.config/i3/scripts/keyhint Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# simple yad gui to show default keybindings
Main() {
source /usr/share/endeavouros/scripts/eos-script-lib-yad || return 1
local command=(
eos_yad --title="EndeavourOS i3-wm keybindings:" --no-buttons --geometry=400x345-15-400 --list
--column=key: --column=description: --column=command:
"ESC" "close this app" ""
"=" "modkey" "(set mod Mod4)"
"+enter" "open a terminal" ""
"+Shift+n" "new empty workspace" ""
"+w" "open Browser" ""
"+n" "open Filebrowser" ""
"+d" "app menu" ""
"+q" "close focused app" ""
"Print-key" "screenshot" ""
"+Shift+e" "logout menu" ""
"F1" "open keybinding helper" ""
)
"${command[@]}"
}
Main "$@"

10
i3/.config/i3/scripts/keyhint-2 Executable file
View File

@@ -0,0 +1,10 @@
#!/bin/sh
# keyhint rofi tool to search used keybindings in i3wm
I3_CONFIG=$HOME/.config/i3/config
mod_key=$(sed -nre 's/^set \$mod (.*)/\1/p' ${I3_CONFIG})
grep "^bindsym" ${I3_CONFIG} \
| sed "s/-\(-\w\+\)\+//g;s/\$mod/${mod_key}/g;s/Mod1/Alt/g;s/exec //;s/bindsym //;s/^\s\+//;s/^\([^ ]\+\) \(.\+\)$/\2: \1/;s/^\s\+//" \
| tr -s ' ' \
| rofi -dmenu -theme ~/.config/rofi/rofikeyhint.rasi

69
i3/.config/i3/scripts/memory Executable file
View File

@@ -0,0 +1,69 @@
#!/usr/bin/env bash
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
TYPE="${BLOCK_INSTANCE:-mem}"
awk -v type=$TYPE '
/^MemTotal:/ {
mem_total=$2
}
/^MemFree:/ {
mem_free=$2
}
/^Buffers:/ {
mem_free+=$2
}
/^Cached:/ {
mem_free+=$2
}
/^SwapTotal:/ {
swap_total=$2
}
/^SwapFree:/ {
swap_free=$2
}
END {
if (type == "swap") {
free=swap_free/1024/1024
used=(swap_total-swap_free)/1024/1024
total=swap_total/1024/1024
} else {
free=mem_free/1024/1024
used=(mem_total-mem_free)/1024/1024
total=mem_total/1024/1024
}
pct=0
if (total > 0) {
pct=used/total*100
}
# full text
# printf("%.1fG/%.1fG (%.f%%)\n", used, total, pct)
# short text
printf("%02.f%%\n", pct)
# color
if (pct > 90) {
print("#FF0000")
} else if (pct > 80) {
print("#FFAE00")
} else if (pct > 70) {
print("#FFF600")
}
}
' /proc/meminfo

471
i3/.config/i3/scripts/openweather Executable file
View File

@@ -0,0 +1,471 @@
#!/usr/bin/env bash
# openweater - OpenWeatherMap Weather Fetcher for Waybar/Status Bars
#
# Copyright (C) 2025 Johannes Kamprad
#
# SPDX-License-Identifier: GPL-3.0-or-later
# openweater - OpenWeatherMap Weather Fetcher for Waybar/Status Bars
# Secure API key handling with configurable locations
# including setup script and help
# Options:
# -h, --help Show this help message
# -c, --city-id ID Override city ID (required if not in config)
# -k, --api-key KEY Override API key (not recommended, use config file)
# -u, --units UNITS Units: metric, imperial, kelvin (default: $DEFAULT_UNITS)
# -f, --force-refresh Force refresh (ignore cache)
# --setup Interactive setup wizard
# --show-config Show current configuration
set -euo pipefail
# Set C locale to avoid German decimal formatting issues
export LC_NUMERIC=C
export LC_ALL=C
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Default configuration (no default location)
DEFAULT_UNITS="metric"
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
CONFIG_FILE="$CONFIG_DIR/openweather/config"
CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/openweather"
CACHE_FILE="$CACHE_DIR/weather_data"
CACHE_DURATION=600 # 10 minutes
# Logging functions
log_error() {
echo -e "${RED}[ERROR]${NC} $*" >&2
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $*" >&2
}
# Show help
show_help() {
cat << EOF
Usage: $(basename "$0") [OPTIONS]
Secure OpenWeatherMap weather fetcher with configurable locations.
Options:
-h, --help Show this help message
-c, --city-id ID Override city ID (required if not in config)
-k, --api-key KEY Override API key (not recommended, use config file)
-u, --units UNITS Units: metric, imperial, kelvin (default: $DEFAULT_UNITS)
-f, --force-refresh Force refresh (ignore cache)
--setup Interactive setup wizard
--show-config Show current configuration
Configuration:
Config file: $CONFIG_FILE
Create config file with:
OPENWEATHER_API_KEY="your_api_key_here"
OPENWEATHER_CITY_ID="your_city_id" # Required
OPENWEATHER_UNITS="metric" # Optional
Examples:
$(basename "$0") # Use config file settings
$(basename "$0") --city-id 5128581 # New York
$(basename "$0") --units imperial # Fahrenheit
$(basename "$0") --setup # Run setup wizard
Get your free API key at: https://openweathermap.org/api
Find city IDs at: https://openweathermap.org/find
EOF
}
# Check dependencies
check_dependencies() {
local missing_deps=()
for cmd in jq curl; do
if ! command -v "$cmd" >/dev/null 2>&1; then
missing_deps+=("$cmd")
fi
done
if [[ ${#missing_deps[@]} -gt 0 ]]; then
log_error "Missing required dependencies: ${missing_deps[*]}"
echo "Install with: sudo pacman -S ${missing_deps[*]}"
exit 1
fi
}
# Load configuration
load_config() {
# Set defaults (no default city ID)
OPENWEATHER_CITY_ID=""
OPENWEATHER_UNITS="$DEFAULT_UNITS"
# Load from config file if it exists
if [[ -f "$CONFIG_FILE" ]]; then
source "$CONFIG_FILE"
fi
# Override with environment variables if set
OPENWEATHER_API_KEY="${OPENWEATHER_API_KEY:-}"
OPENWEATHER_CITY_ID="${OPENWEATHER_CITY_ID:-}"
OPENWEATHER_UNITS="${OPENWEATHER_UNITS:-$DEFAULT_UNITS}"
}
# Validate API key
validate_api_key() {
if [[ -z "$OPENWEATHER_API_KEY" ]]; then
log_error "No API key found!"
echo
echo "To fix this:"
echo "1. Get free API key: https://openweathermap.org/api"
echo "2. Run setup wizard: $0 --setup"
echo "3. Or set environment variable: export OPENWEATHER_API_KEY=your_key"
echo "4. Or create config file: $CONFIG_FILE"
exit 1
fi
# Basic validation (OpenWeatherMap keys are typically 32 chars)
if [[ ${#OPENWEATHER_API_KEY} -ne 32 ]]; then
log_warn "API key length seems incorrect (expected 32 characters, got ${#OPENWEATHER_API_KEY})"
fi
}
# Validate city ID
validate_city_id() {
if [[ -z "$OPENWEATHER_CITY_ID" ]]; then
log_error "No city ID found!"
echo
echo "To fix this:"
echo "1. Run setup wizard: $0 --setup"
echo "2. Or set environment variable: export OPENWEATHER_CITY_ID=your_city_id"
echo "3. Or add OPENWEATHER_CITY_ID=\"your_city_id\" to: $CONFIG_FILE"
echo "4. Or provide city ID via command line: $0 --city-id your_city_id"
echo
echo "Find city IDs at: https://openweathermap.org/find"
exit 1
fi
# Basic validation (city IDs are typically numeric)
if [[ ! "$OPENWEATHER_CITY_ID" =~ ^[0-9]+$ ]]; then
log_warn "City ID format seems incorrect (expected numeric, got: $OPENWEATHER_CITY_ID)"
fi
}
# Setup wizard
run_setup() {
echo -e "${GREEN}=== OpenWeatherMap Setup Wizard ===${NC}"
echo
# Create config directory
mkdir -p "$(dirname "$CONFIG_FILE")"
# Get API key
echo "Get your free API key at: https://openweathermap.org/api"
echo
echo -n "Enter your OpenWeatherMap API key: "
read -r api_key
if [[ -z "$api_key" ]]; then
log_error "API key cannot be empty"
exit 1
fi
# Get city ID (required)
echo
echo "Find your city ID at: https://openweathermap.org/find"
echo -n "Enter city ID: "
read -r city_id
if [[ -z "$city_id" ]]; then
log_error "City ID cannot be empty"
exit 1
fi
# Get units (optional)
echo
echo "Available units: metric (°C), imperial (°F), kelvin (K)"
echo -n "Enter units [metric]: "
read -r units
units="${units:-metric}"
# Write config file
cat > "$CONFIG_FILE" << EOF
# OpenWeatherMap Configuration
# Generated by $(basename "$0") setup wizard on $(date)
# Your API key from https://openweathermap.org/api
OPENWEATHER_API_KEY="$api_key"
# City ID from https://openweathermap.org/find
OPENWEATHER_CITY_ID="$city_id"
# Units: metric, imperial, kelvin
OPENWEATHER_UNITS="$units"
EOF
# Set secure permissions
chmod 600 "$CONFIG_FILE"
echo
echo -e "${GREEN}✅ Configuration saved to: $CONFIG_FILE${NC}"
echo -e "${GREEN}✅ File permissions set to 600 (user read/write only)${NC}"
echo
echo "Testing configuration..."
# Test the configuration
OPENWEATHER_API_KEY="$api_key"
OPENWEATHER_CITY_ID="$city_id"
OPENWEATHER_UNITS="$units"
if fetch_weather_data; then
echo -e "${GREEN}✅ Configuration test successful!${NC}"
else
log_error "Configuration test failed. Please check your API key and city ID."
exit 1
fi
}
# Show current configuration
show_config() {
echo "=== Current Configuration ==="
echo "Config file: $CONFIG_FILE"
echo "Cache file: $CACHE_FILE"
echo "Cache duration: ${CACHE_DURATION}s"
echo
if [[ -f "$CONFIG_FILE" ]]; then
echo "Configuration:"
echo " API Key: ${OPENWEATHER_API_KEY:0:8}... (${#OPENWEATHER_API_KEY} chars)"
echo " City ID: $OPENWEATHER_CITY_ID"
echo " Units: $OPENWEATHER_UNITS"
else
echo "❌ No configuration file found at: $CONFIG_FILE"
echo "Run: $0 --setup"
fi
}
# Check cache validity
is_cache_valid() {
[[ -f "$CACHE_FILE" ]] && \
[[ $(($(date +%s) - $(stat -c %Y "$CACHE_FILE" 2>/dev/null || echo 0))) -lt $CACHE_DURATION ]]
}
# Fetch weather data from API
fetch_weather_data() {
local url="https://api.openweathermap.org/data/2.5/weather?id=${OPENWEATHER_CITY_ID}&units=${OPENWEATHER_UNITS}&appid=${OPENWEATHER_API_KEY}"
local response
if ! response=$(curl -sf "$url" 2>/dev/null); then
log_error "Failed to fetch weather data from API"
return 1
fi
# Validate JSON response
if ! echo "$response" | jq . >/dev/null 2>&1; then
log_error "Invalid JSON response from API"
return 1
fi
# Check for API error
local api_code
api_code=$(echo "$response" | jq -r '.cod // empty')
if [[ "$api_code" != "200" ]]; then
local api_message
api_message=$(echo "$response" | jq -r '.message // "Unknown API error"')
log_error "API Error ($api_code): $api_message"
return 1
fi
# Cache the response
mkdir -p "$CACHE_DIR"
echo "$response" > "$CACHE_FILE"
return 0
}
# Get weather data (from cache or API)
get_weather_data() {
local force_refresh="${1:-false}"
if [[ "$force_refresh" != "true" ]] && is_cache_valid; then
cat "$CACHE_FILE"
else
if fetch_weather_data; then
cat "$CACHE_FILE"
else
# Fallback to cache if available
if [[ -f "$CACHE_FILE" ]]; then
log_warn "Using stale cache data due to API failure"
cat "$CACHE_FILE"
else
return 1
fi
fi
fi
}
# Calculate wind direction
get_wind_direction() {
local degrees="$1"
local directions=(N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW)
local index
index=$(awk "BEGIN {print int(($degrees % 360) / 22.5)}")
echo "${directions[$index]}"
}
# Get weather icon
get_weather_icon() {
local condition="$1"
case "$condition" in
'Clear') echo "☀" ;; # Clear sky
'Clouds') echo "☁" ;; # Cloudy
'Rain'|'Drizzle') echo "🌧" ;; # Rain
'Snow') echo "❄" ;; # Snow
'Thunderstorm') echo "⛈" ;; # Thunder
'Mist'|'Fog') echo "🌫" ;; # Fog
*) echo "🌤" ;; # Default
esac
}
# Safe number formatting (handles locale issues)
safe_printf() {
local format="$1"
local number="$2"
# Validate number is actually numeric
if [[ ! "$number" =~ ^-?[0-9]+(\.[0-9]+)?$ ]]; then
echo "0.0"
return 1
fi
# Use awk for reliable formatting regardless of locale
awk "BEGIN {printf \"$format\", $number}"
}
# Format weather output
format_weather() {
local weather_data="$1"
# Parse weather data with error checking
local condition temp wind_speed_ms wind_deg
condition=$(echo "$weather_data" | jq -r '.weather[0].main // "Unknown"')
temp=$(echo "$weather_data" | jq -r '.main.temp // "0"')
wind_speed_ms=$(echo "$weather_data" | jq -r '.wind.speed // "0"')
wind_deg=$(echo "$weather_data" | jq -r '.wind.deg // "0"')
# Validate parsed data
[[ "$condition" == "null" ]] && condition="Unknown"
[[ "$temp" == "null" ]] && temp="0"
[[ "$wind_speed_ms" == "null" ]] && wind_speed_ms="0"
[[ "$wind_deg" == "null" ]] && wind_deg="0"
# Format temperature with safe formatting
local temp_formatted
temp_formatted=$(safe_printf "%.1f" "$temp")
# Convert wind speed to km/h with safe formatting
local wind_speed_kmh
wind_speed_kmh=$(awk "BEGIN {printf \"%.1f\", ($wind_speed_ms + 0) * 3.6}")
# Get wind direction
local wind_dir
wind_dir=$(get_wind_direction "$wind_deg")
# Get weather icon
local icon
icon=$(get_weather_icon "$condition")
# Format unit symbol
local unit_symbol
case "$OPENWEATHER_UNITS" in
"imperial") unit_symbol="°F" ;;
"kelvin") unit_symbol="K" ;;
*) unit_symbol="°C" ;;
esac
# Output formatted weather
echo "${icon} ${temp_formatted}${unit_symbol}, ${wind_speed_kmh} km/h ${wind_dir}"
}
# Main function
main() {
local city_id_override=""
local api_key_override=""
local units_override=""
local force_refresh="false"
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
show_help
exit 0
;;
-c|--city-id)
city_id_override="$2"
shift 2
;;
-k|--api-key)
api_key_override="$2"
shift 2
;;
-u|--units)
units_override="$2"
shift 2
;;
-f|--force-refresh)
force_refresh="true"
shift
;;
--setup)
check_dependencies
run_setup
exit 0
;;
--show-config)
load_config
show_config
exit 0
;;
*)
log_error "Unknown option: $1"
show_help
exit 1
;;
esac
done
# Check dependencies
check_dependencies
# Load configuration
load_config
# Apply overrides
[[ -n "$city_id_override" ]] && OPENWEATHER_CITY_ID="$city_id_override"
[[ -n "$api_key_override" ]] && OPENWEATHER_API_KEY="$api_key_override"
[[ -n "$units_override" ]] && OPENWEATHER_UNITS="$units_override"
# Validate configuration
validate_api_key
validate_city_id
# Get and format weather data
local weather_data
if weather_data=$(get_weather_data "$force_refresh"); then
format_weather "$weather_data"
else
echo "⚠️ Weather data unavailable"
exit 1
fi
}
# Run main function
main "$@"

View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
# Simple power-profiles-daemon switcher using rofi and static theme, with notification
#
# Copyright (C) 2025 Johannes Kamprad
#
# SPDX-License-Identifier: GPL-3.0-or-later
# needs rofi config:
# $HOME/.config/rofi/powermenu.rasi
ROFI_THEME="${HOME}/.config/rofi/power-profiles.rasi"
# Dependency checks
command -v powerprofilesctl >/dev/null 2>&1 || { echo "powerprofilesctl not found"; exit 1; }
command -v rofi >/dev/null 2>&1 || { echo "rofi not found"; exit 1; }
if ! command -v notify-send >/dev/null 2>&1; then
notify_send_missing=true
fi
current_profile="$(powerprofilesctl get 2>/dev/null)"
ROFI_ARGS=(-dmenu -i -theme "$ROFI_THEME" -p "Change Profile" -mesg "<b>Current used:</b> $current_profile" -markup-rows)
# Menu entries
cancel=" Cancel"
perf=" Performance"
balanced=" Balanced"
powersave=" Power Saver"
# sets chancel to be on top
options="$cancel"
if powerprofilesctl list | grep -q "performance"; then
options="$options\n$perf"
fi
if powerprofilesctl list | grep -q "balanced"; then
options="$options\n$balanced"
fi
if powerprofilesctl list | grep -q "power-saver"; then
options="$options\n$powersave"
fi
# Show menu
chosen="$(echo -e "$options" | rofi "${ROFI_ARGS[@]}")"
# Run selection
case $chosen in
"$perf")
powerprofilesctl set performance
;;
"$balanced")
powerprofilesctl set balanced
;;
"$powersave")
powerprofilesctl set power-saver
;;
"$cancel"|"")
exit 0
;;
esac
# Send notification if available
if [[ "$chosen" != "$cancel" && -z "${notify_send_missing}" ]]; then
notify-send -i dialog-information "Power Profile Changed" "New profile: ${chosen}"
fi

81
i3/.config/i3/scripts/powermenu Executable file
View File

@@ -0,0 +1,81 @@
#!/usr/bin/env bash
#
# powermenu - a very simple rofi powermenu
#
# Copyright (C) 2025 Johannes Kamprad
#
# SPDX-License-Identifier: GPL-3.0-or-later
# needs rofi config:
# $HOME/.config/rofi/powermenu.rasi
# set to be used in i3wm
ROFI_THEME="${HOME}/.config/rofi/powermenu.rasi"
# Define possible lock scripts/commands (edit this list as you like)
LOCK_SCRIPTS=("${HOME}/.config/i3/scripts/blur-lock" "i3lock")
# Find available lock script
find_lock_script() {
for script in "${LOCK_SCRIPTS[@]}"; do
# Handle command names vs full paths
if [[ "$script" =~ ^[a-zA-Z0-9_-]+$ ]]; then
# It's a command name, check if available
if command -v "$script" >/dev/null 2>&1; then
echo "$script"
return 0
fi
else
# It's a path, check if file exists and is executable
if [[ -x "$script" ]]; then
echo "$script"
return 0
fi
fi
done
return 1
}
# Menu entries
chancel=" Cancel"
lock=" Lock"
logout=" Logout"
reboot=" Reboot"
shutdown=" Shutdown"
suspend=" Suspend"
hibernate=" Hibernate"
# Add lock only if script is found
if lockcmd="$(find_lock_script)"; then
options="$chancel\n$lock\n$logout\n$reboot\n$shutdown\n$suspend\n$hibernate"
else
options="$chancel\n$logout\n$reboot\n$shutdown\n$suspend\n$hibernate"
fi
chosen="$(echo -e "$options" | rofi -dmenu -i -p "Power Menu" \
-theme $ROFI_THEME)"
case $chosen in
"$lock")
$lockcmd
;;
"$cancel"|"")
exit 0
;;
"$logout")
i3-msg exit
;;
"$reboot")
systemctl reboot
;;
"$shutdown")
systemctl poweroff
;;
"$suspend")
systemctl suspend
;;
"$hibernate")
systemctl hibernate
;;
esac

View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bash
# power-profiles-daemon implementation:
# needs package power-profiles-daemon installed and the service running see here:
# https://wiki.archlinux.org/title/CPU_frequency_scaling#power-profiles-daemon
# used in i3-blocks: ~/.config/i3/i3blocks.conf together with: ~/.config/i3/scripts/power-profiles
# assign tags or translations to each profile
declare -A tags
tags=(
[performance]="Performance"
[balanced]="Balanced"
[power-saver]="Power saver"
)
# Get current profile
current_profile=$(/usr/bin/powerprofilesctl get)
# Get tag from the array
profile_tag=${tags[$current_profile]}
# Show tag on i3block
echo "${profile_tag:-$current_profile}"

View File

@@ -0,0 +1,75 @@
#!/usr/bin/env perl
# Copyright 2014 Pierre Mavro <deimos at deimos dot fr>
# Copyright 2014 Vivien Didelot <vivien at didelot.org>
# Copyright 2014 Andreas Guldstrand <andreas.guldstrand at gmail dot com>
# Copyright 2014 Benjamin Chretien <chretien at lirmm dot fr>
# SPDX-License-Identifier: GPL-3.0-or-later
# Edited by Andreas Lindlbauer <endeavouros.mousily@aleeas.com>
use strict;
use warnings;
use utf8;
use Getopt::Long;
binmode(STDOUT, ":utf8");
# default values
my $t_warn = $ENV{T_WARN} || 70;
my $t_crit = $ENV{T_CRIT} || 90;
my $chip = $ENV{SENSOR_CHIP} || "";
my $temperature = -9999;
my $label = "😀 ";
sub help {
print "Usage: temperature [-w <warning>] [-c <critical>] [--chip <chip>]\n";
print "-w <percent>: warning threshold to become yellow\n";
print "-c <percent>: critical threshold to become red\n";
print "--chip <chip>: sensor chip\n";
exit 0;
}
GetOptions("help|h" => \&help,
"w=i" => \$t_warn,
"c=i" => \$t_crit,
"chip=s" => \$chip);
# Get chip temperature
open (SENSORS, "sensors -u $chip |") or die;
while (<SENSORS>) {
if (/^\s+temp1_input:\s+[\+]*([\-]*\d+\.\d)/) {
$temperature = $1;
last;
}
}
close(SENSORS);
$temperature eq -9999 and die 'Cannot find temperature';
if ($temperature < 45) {
$label = '';
} elsif ($temperature < 55) {
$label = '';
} elsif ($temperature < 65) {
$label = '';
} elsif ($temperature < 75) {
$label = '';
} else {
$label = '';
}
# Print short_text, full_text
print "${label}";
print " $temperature°C\n";
print "${label}";
print " $temperature°C\n";
# Print color, if needed
if ($temperature >= $t_crit) {
print "#FF0000\n";
exit 33;
} elsif ($temperature >= $t_warn) {
print "#FFFC00\n";
}
exit 0;

46
i3/.config/i3/scripts/volume Executable file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
# i3blocks volume block for PipeWire (PulseAudio compatible)
STEP=${1:-5%}
# Default sink
SINK=$(pactl info | awk '/Default Sink/ {print $3}')
[[ -z "$SINK" ]] && { echo "No audio"; exit 0; }
# Handle scroll/middle-click
case "$BLOCK_BUTTON" in
3) pactl set-sink-mute "$SINK" toggle ;; # right click = mute/unmute
4) pactl set-sink-volume "$SINK" +$STEP ;; # scroll up
5) pactl set-sink-volume "$SINK" -$STEP ;; # scroll down
esac
# Get current volume (front-left channel)
VOL=$(pactl list sinks | awk -v s="$SINK" '
$0 ~ "Name: " s {found=1}
found && /Volume:/ {gsub("%","",$5); print $5; exit}
')
# Get mute state
MUTED=$(pactl list sinks | awk -v s="$SINK" '
$0 ~ "Name: " s {found=1}
found && /Mute:/ {print $2; exit}
')
# Choose symbol
AUDIO_HIGH=''
AUDIO_MED=''
AUDIO_LOW=''
AUDIO_MUTED=''
MED_THRESH=50
LOW_THRESH=0
if [[ "$MUTED" == "no" ]]; then
SYMB=$AUDIO_HIGH
[[ $VOL -le $MED_THRESH ]] && SYMB=$AUDIO_MED
[[ $VOL -le $LOW_THRESH ]] && SYMB=$AUDIO_LOW
else
SYMB=$AUDIO_MUTED
fi
# Single-line output for i3blocks
echo "${SYMB} ${VOL}%"

View File

@@ -0,0 +1,95 @@
#!/usr/bin/env bash
# original source: https://gitlab.com/Nmoleo/i3-volume-brightness-indicator
# changed to use brightnessctl [xbacklight is non functional on modern hardware]
# by joekamprad [Aug 2025]
bar_color="#7f7fff"
volume_step=1
brightness_step=5
max_volume=100
notification_timeout=1000 # in ms
# Uses regex to get volume from pactl
function get_volume {
pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '[0-9]{1,3}(?=%)' | head -1
}
# Uses regex to get mute status from pactl
function get_mute {
pactl get-sink-mute @DEFAULT_SINK@ | grep -Po '(?<=Mute: )(yes|no)'
}
# Uses brightnessctl instead of xbacklight
function get_brightness {
brightnessctl g | awk '{print int($1)}'
# You could also use: brightnessctl info | grep -Po '(?<=Current brightness: )[0-9]+'
}
# Calculates brightness percentage
function get_brightness_percent {
current=$(brightnessctl g)
max=$(brightnessctl m)
percent=$(( 100 * current / max ))
echo $percent
}
function get_volume_icon {
volume=$(get_volume)
mute=$(get_mute)
if [ "$volume" -eq 0 ] || [ "$mute" == "yes" ] ; then
volume_icon=""
elif [ "$volume" -lt 50 ]; then
volume_icon=""
else
volume_icon=""
fi
}
function get_brightness_icon {
brightness_icon=""
}
function show_volume_notif {
volume=$(get_volume)
get_volume_icon
notify-send -i volume_icon -t 1000 "Volume" "$volume_icon $volume%" -h int:value:$volume -h string:x-canonical-private-synchronous:volume
}
function show_brightness_notif {
get_brightness_icon
brightness=$(get_brightness_percent)
notify-send -i brightness_icon -t $notification_timeout -h string:x-dunst-stack-tag:brightness_notif -h int:value:$brightness "$brightness_icon $brightness%"
}
case $1 in
volume_up)
pactl set-sink-mute @DEFAULT_SINK@ 0
volume=$(get_volume)
if [ $(( "$volume" + "$volume_step" )) -gt $max_volume ]; then
pactl set-sink-volume @DEFAULT_SINK@ $max_volume%
else
pactl set-sink-volume @DEFAULT_SINK@ +$volume_step%
fi
show_volume_notif
;;
volume_down)
pactl set-sink-volume @DEFAULT_SINK@ -$volume_step%
show_volume_notif
;;
volume_mute)
pactl set-sink-mute @DEFAULT_SINK@ toggle
show_volume_notif
;;
brightness_up)
brightnessctl s +$brightness_step% > /dev/null
show_brightness_notif
;;
brightness_down)
brightnessctl s $brightness_step%- > /dev/null
show_brightness_notif
;;
esac

View File

@@ -0,0 +1,168 @@
#!/usr/bin/env bash
# original source: https://gitlab.com/Nmoleo/i3-volume-brightness-indicator
# alternative to volume_brightness.sh that uses brightnessctl for both keyboard & screen brightness
# See README.md for usage instructions
volume_step=1
keyboard_brightness_step=20
screen_brightness_step=1
max_volume=100
notification_timeout=1000
# Specify Icon Theme here:
volume_theme_icon="audio-volume-high"
screen_brightness_theme_icon="display-brightness"
keyboard_brightness_theme_icon="display-brightness"
# Keyboard Backlight device detection here:
device_cache="/tmp/kbd_backlight_device"
if [ -f "$device_cache" ]; then
# If there is cache, load it into device
device=$(cat "$device_cache")
else
# If there is no cache, create one
device=$(brightnessctl --list | grep -Po '\w+::kbd_backlight')
echo "$device" > "$device_cache"
fi
# Uses regex to get volume from pactl
function get_volume {
pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '[0-9]{1,3}(?=%)' | head -1
}
# Uses regex to get mute status from pactl
function get_mute {
pactl get-sink-mute @DEFAULT_SINK@ | grep -Po '(?<=Mute: )(yes|no)'
}
# Get keyboard_brightness from brightnessctl
function get_keyboard_brightness {
if [ -n "$device" ]; then
keyboard_curr=$(brightnessctl -d "$device" get)
keyboard_max=$(brightnessctl -d "$device" max)
echo $(( keyboard_curr * 100 / keyboard_max))
fi
}
# Grabs screen brightness and formats it out of 100
function get_screen_brightness {
screen_curr=$(brightnessctl -q get)
screen_max=$(brightnessctl -q max)
echo $(( screen_curr * 100 / screen_max ))
}
# Returns a mute icon, a volume-low icon, or a volume-high icon, depending on the volume
function get_volume_icon {
volume=$(get_volume)
mute=$(get_mute)
if [ "$volume" -eq 0 ] || [ "$mute" == "yes" ] ; then
volume_icon=""
elif [ "$volume" -lt 50 ] ; then
volume_icon=""
else
volume_icon=""
fi
}
# Always returns the same icon - I couldn't get the brightness-low icon to work with fontawesome
function get_keyboard_brightness_icon {
kb_brightness=$(get_keyboard_brightness)
if [ "$kb_brightness" -eq 0 ] ; then
keyboard_brightness_icon="" # unfilled circle
elif [ "$kb_brightness" -lt 50 ] ; then
keyboard_brightness_icon="" # fa-adjust (low brightness)
else
keyboard_brightness_icon="" # full circle (high brightness)
fi
}
function get_screen_brightness_icon {
sc_brightness=$(get_screen_brightness)
if [ "$sc_brightness" -eq 0 ] ; then
screen_brightness_icon="" # unfilled circle
elif [ "$sc_brightness" -lt 50 ] ; then
screen_brightness_icon="" # fa-adjust (low brightness)
else
screen_brightness_icon="" # full circle (high brightness)
fi
}
# Displays a volume notification using notify-send
function show_volume_notif {
mute=$(get_mute)
volume=$(get_volume)
get_volume_icon
notify-send -i $volume_theme_icon -t $notification_timeout "Volume" "$volume_icon $volume%" -h int:value:$volume -h string:x-canonical-private-synchronous:volume
}
# Displays a keyboard_brightness notification
function show_keyboard_brightness_notif {
keyboard_brightness=$(get_keyboard_brightness)
# Debug Purposes:
# echo $keyboard_brightness
get_keyboard_brightness_icon
notify-send -i $keyboard_brightness_theme_icon -t $notification_timeout "Keyboard Brightness" -h string:x-dunst-stack-tag:keyboard_brightness_notif -h int:value:$keyboard_brightness "$keyboard_brightness_icon $keyboard_brightness%"
}
# Displays a screen_brightness notification
function show_screen_brightness_notif {
screen_brightness=$(get_screen_brightness)
# Debug Purposes:
# echo $screen_brightness
get_screen_brightness_icon
notify-send -i $screen_brightness_theme_icon -t $notification_timeout "Screen Brightness" -h string:x-dunst-stack-tag:screen_brightness_notif -h int:value:$screen_brightness "$screen_brightness_icon $screen_brightness%"
}
# Main function - Takes user input, "volume_up", "volume_down", "keyboard_brightness_up", "keyboard_brightness_down", "brightness_up", or "brightness_down"
case $1 in
volume_up)
# Unmutes and increases volume, then displays the notification
pactl set-sink-mute @DEFAULT_SINK@ 0
volume=$(get_volume)
if [ $(( "$volume" + "$volume_step" )) -gt $max_volume ]; then
pactl set-sink-volume @DEFAULT_SINK@ $max_volume%
else
pactl set-sink-volume @DEFAULT_SINK@ +$volume_step%
fi
show_volume_notif
;;
volume_down)
# Raises volume and displays the notification
pactl set-sink-volume @DEFAULT_SINK@ -$volume_step%
show_volume_notif
;;
volume_mute)
# Toggles mute and displays the notification
pactl set-sink-mute @DEFAULT_SINK@ toggle
show_volume_notif
;;
keyboard_brightness_up)
# Increases keyboard brightness and displays the notification
brightnessctl -d "$device" set ${keyboard_brightness_step}+
show_keyboard_brightness_notif
;;
keyboard_brightness_down)
# Decreases keyboard brightness and displays the notification
brightnessctl -d "$device" set ${keyboard_brightness_step}-
show_keyboard_brightness_notif
;;
screen_brightness_up)
# Increases screen brightness and displays the notification
brightnessctl -q set ${screen_brightness_step}%+
show_screen_brightness_notif
;;
screen_brightness_down)
# Decreases screen brightness and displays the notification
brightnessctl -q set ${screen_brightness_step}%-
show_screen_brightness_notif
;;
esac

25
i3/.config/i3/scripts/vpn Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env sh
# Parses output from nmcli to show the current connected VPN name/status for i3block
# Source: https://github.com/vivien/i3blocks-contrib/tree/master/nm-vpn
# uncomment in $HOME/.config/i3/i3blocks.conf if you want to use it
init_color=${init_color:-#FFFF00}
on_color=${on_color:-#00FF00}
export init_color on_color
nmcli -t connection show --active | awk -F ':' '
BEGIN {
init_color=ENVIRON["init_color"]
on_color=ENVIRON["on_color"]
}
$3=="vpn" {
name=$1
status="INIT"
color=init_color
}
$3=="tun" || ($4~/^tap/ || $3~/^tap/) {
if(!name) name=$1
status="ON"
color=on_color
}
END {if(status) printf("%s\n%s\n%s\n", name, status, color)}'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 249 KiB

After

Width:  |  Height:  |  Size: 93 KiB

View File

@@ -0,0 +1,59 @@
import tempfile
import os
from shutil import which
from typing import List
from kitty.boss import Boss
ENABLED_LAYOUTS = [
'fat',
'grid',
'horizontal',
'splits',
'stack',
'tall',
'vertical',
]
def fzf(choices: List[str], delimiter='\n'):
exe = which("fzf")
if not exe:
raise SystemError(f"Cannot find 'fzf' installed on $PATH.")
shell = which("zsh") or os.environ.get("SHELL")
if not shell:
raise SystemError(f"Cannot find a $SHELL to use.")
selection = []
with tempfile.NamedTemporaryFile(delete=True) as input_file:
with tempfile.NamedTemporaryFile(delete=True) as output_file:
input_file.write(delimiter.join(map(str, choices)).encode('utf-8'))
input_file.flush()
os.system(f"{shell} -c '{exe} --reverse < \"{input_file.name}\" > \"{output_file.name}\"'")
for line in output_file:
selection.append(line.strip().decode("utf-8"))
return selection
def main(args: List[str]) -> str:
fzf_path = os.path.join(os.environ["HOME"], ".fzf/bin")
os.environ["PATH"] += f":{fzf_path}"
result = fzf(ENABLED_LAYOUTS)
if len(result) > 0:
return result[0]
return ""
def handle_result(args: List[str], answer: str, target_window_id: int, boss: Boss) -> None:
try:
window = boss.window_id_map.get(target_window_id)
tab = boss.tab_for_window(window)
tab.goto_layout(answer)
except Exception:
pass

View File

@@ -0,0 +1,89 @@
# vim:ft=kitty foldmethod=marker
kitty_mod ctrl+shift
scrollback_lines 10000
# UI {{{1
# Theme
#include themes/mocha.conf
# Window layout
remember_window_size no
initial_window_width 160c
initial_window_height 45c
# Tab bar
tab_bar_min_tabs 1
tab_bar_edge bottom
tab_bar_style powerline
tab_powerline_style slanted
tab_title_template {title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}
# Fonts
font_size 14.0
font_family 0xProto Nerd Font
# Cursor
cursor_shape beam
cursor_shape_unfocused hollow
cursor_beam_thickness 3
cursor_blink_interval 1
shell_integration no-cursor no-title
# Color scheme
background_opacity 0.90
background_blur 64
background_image none
dynamic_background_opacity yes
# vim-kitty-navigator {{{1
allow_remote_control yes
listen_on unix:/tmp/mykitty
# Keyboard shortcuts
copy_on_select yes
macos_option_as_alt yes
# Zoom on a window just like in tmux
map kitty_mod+a toggle_layout stack
# Open tabs and windows in the same folder
map kitty_mod+enter new_window_with_cwd
map cmd+enter new_window_with_cwd
map kitty_mod+t new_tab_with_cwd
map cmd+t new_tab_with_cwd
# Move a window into a new tab
map kitty_mod+x detach_window new-tab
# tmux {{{1
# Jump to tabs
map ctrl+a>1 goto_tab 4
map ctrl+a>2 goto_tab 2
map ctrl+a>3 goto_tab 3
map ctrl+a>4 goto_tab 4
map ctrl+a>5 goto_tab 5
map ctrl+a>6 goto_tab 6
map ctrl+a>7 goto_tab 7
map ctrl+a>8 goto_tab 8
map ctrl+a>9 goto_tab 9
map ctrl+a>0 goto_tab 0
# Move a window into a new tab
map ctrl+a>! detach_window new-tab
# Open a new window
map ctrl+a>o new_window_with_cwd
# Open a new tab
map ctrl+a>c new_tab_with_cwd
# Zoom on a window
map ctrl+a>z toggle_layout stack
# Change layout
map ctrl+a>space next_layout
# Choose layout
map ctrl+a>l kitten choose_layout.py
# }}}

View File

@@ -0,0 +1,51 @@
# vim:ft=kitty
## name: Adwaita dark
## license: MIT
## author: Emil Löfquist (https://github.com/ewal)
## upstream: https://github.com/ewal/kitty-adwaita/blob/main/adwaita_dark.conf
## blurb: Adwaita dark - based on https://github.com/Mofiqul/adwaita.nvim
background #1d1d1d
foreground #deddda
selection_background #303030
selection_foreground #c0bfbc
url_color #1a5fb4
wayland_titlebar_color system
macos_titlebar_color system
cursor #deddda
cursor_text_color #1d1d1d
active_border_color #4f4f4f
inactive_border_color #282828
bell_border_color #ed333b
visual_bell_color none
active_tab_background #242424
active_tab_foreground #fcfcfc
inactive_tab_background #303030
inactive_tab_foreground #b0afac
tab_bar_background none
tab_bar_margin_color none
color0 #1d1d1d
color1 #ed333b
color2 #57e389
color3 #ff7800
color4 #62a0ea
color5 #9141ac
color6 #5bc8af
color7 #deddda
color8 #9a9996
color9 #f66151
color10 #8ff0a4
color11 #ffa348
color12 #99c1f1
color13 #dc8add
color14 #93ddc2
color15 #f6f5f4

View File

@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin Kitty Frappé
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/frappe.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #c6d0f5
background #303446
selection_foreground #303446
selection_background #f2d5cf
# Cursor colors
cursor #f2d5cf
cursor_text_color #303446
# URL underline color when hovering with mouse
url_color #f2d5cf
# Kitty window border colors
active_border_color #babbf1
inactive_border_color #737994
bell_border_color #e5c890
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #232634
active_tab_background #ca9ee6
inactive_tab_foreground #c6d0f5
inactive_tab_background #292c3c
tab_bar_background #232634
# Colors for marks (marked text in the terminal)
mark1_foreground #303446
mark1_background #babbf1
mark2_foreground #303446
mark2_background #ca9ee6
mark3_foreground #303446
mark3_background #85c1dc
# The 16 terminal colors
# black
color0 #51576d
color8 #626880
# red
color1 #e78284
color9 #e78284
# green
color2 #a6d189
color10 #a6d189
# yellow
color3 #e5c890
color11 #e5c890
# blue
color4 #8caaee
color12 #8caaee
# magenta
color5 #f4b8e4
color13 #f4b8e4
# cyan
color6 #81c8be
color14 #81c8be
# white
color7 #b5bfe2
color15 #a5adce

View File

@@ -0,0 +1,55 @@
# Based on https://github.com/morhetz/gruvbox by morhetz <morhetz@gmail.com>
# Adapted to kitty by wdomitrz <witekdomitrz@gmail.com>
cursor #928374
cursor_text_color background
url_color #83a598
visual_bell_color #8ec07c
bell_border_color #8ec07c
active_border_color #d3869b
inactive_border_color #665c54
foreground #ebdbb2
background #282828
selection_foreground #928374
selection_background #ebdbb2
active_tab_foreground #fbf1c7
active_tab_background #665c54
inactive_tab_foreground #a89984
inactive_tab_background #3c3836
# black (bg3/bg4)
color0 #665c54
color8 #7c6f64
# red
color1 #cc241d
color9 #fb4934
#: green
color2 #98971a
color10 #b8bb26
# yellow
color3 #d79921
color11 #fabd2f
# blue
color4 #458588
color12 #83a598
# purple
color5 #b16286
color13 #d3869b
# aqua
color6 #689d6a
color14 #8ec07c
# white (fg4/fg3)
color7 #a89984
color15 #bdae93

View File

@@ -0,0 +1,3 @@
include gruvbox_dark.conf
background #1d2021

View File

@@ -0,0 +1,3 @@
include gruvbox_dark.conf
background #32302f

View File

@@ -0,0 +1,55 @@
# Based on https://github.com/morhetz/gruvbox by morhetz <morhetz@gmail.com>
# Adapted to kitty by wdomitrz <witekdomitrz@gmail.com>
cursor #928374
cursor_text_color background
url_color #458588
visual_bell_color #689d6a
bell_border_color #689d6a
active_border_color #b16286
inactive_border_color #1d2021
foreground #3c3836
background #fbf1c7
selection_foreground #928374
selection_background #3c3836
active_tab_foreground #282828
active_tab_background #928374
inactive_tab_foreground #7c6f64
inactive_tab_background #ebdbb2
# white (bg3/bg4)
color0 #bdae93
color8 #a89984
# red
color1 #cc241d
color9 #9d0006
# green
color2 #98971a
color10 #79740e
# yellow
color3 #d79921
color11 #b57614
# blue
color4 #458588
color12 #076678
# purple
color5 #b16286
color13 #8f3f71
# aqua
color6 #689d6a
color14 #427b58
# black (fg4/fg3)
color7 #7c6f64
color15 #665c54

View File

@@ -0,0 +1,3 @@
include gruvbox_light.conf
background #f9f5d7

View File

@@ -0,0 +1,3 @@
include gruvbox_light.conf
background #f2e5bc

View File

@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin Kitty Latte
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/latte.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #4c4f69
background #eff1f5
selection_foreground #eff1f5
selection_background #dc8a78
# Cursor colors
cursor #dc8a78
cursor_text_color #eff1f5
# URL underline color when hovering with mouse
url_color #dc8a78
# Kitty window border colors
active_border_color #7287fd
inactive_border_color #9ca0b0
bell_border_color #df8e1d
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #eff1f5
active_tab_background #8839ef
inactive_tab_foreground #4c4f69
inactive_tab_background #9ca0b0
tab_bar_background #bcc0cc
# Colors for marks (marked text in the terminal)
mark1_foreground #eff1f5
mark1_background #7287fd
mark2_foreground #eff1f5
mark2_background #8839ef
mark3_foreground #eff1f5
mark3_background #209fb5
# The 16 terminal colors
# black
color0 #5c5f77
color8 #6c6f85
# red
color1 #d20f39
color9 #d20f39
# green
color2 #40a02b
color10 #40a02b
# yellow
color3 #df8e1d
color11 #df8e1d
# blue
color4 #1e66f5
color12 #1e66f5
# magenta
color5 #ea76cb
color13 #ea76cb
# cyan
color6 #179299
color14 #179299
# white
color7 #acb0be
color15 #bcc0cc

View File

@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin Kitty Macchiato
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/macchiato.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #cad3f5
background #24273a
selection_foreground #24273a
selection_background #f4dbd6
# Cursor colors
cursor #f4dbd6
cursor_text_color #24273a
# URL underline color when hovering with mouse
url_color #f4dbd6
# Kitty window border colors
active_border_color #b7bdf8
inactive_border_color #6e738d
bell_border_color #eed49f
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #181926
active_tab_background #c6a0f6
inactive_tab_foreground #cad3f5
inactive_tab_background #1e2030
tab_bar_background #181926
# Colors for marks (marked text in the terminal)
mark1_foreground #24273a
mark1_background #b7bdf8
mark2_foreground #24273a
mark2_background #c6a0f6
mark3_foreground #24273a
mark3_background #7dc4e4
# The 16 terminal colors
# black
color0 #494d64
color8 #5b6078
# red
color1 #ed8796
color9 #ed8796
# green
color2 #a6da95
color10 #a6da95
# yellow
color3 #eed49f
color11 #eed49f
# blue
color4 #8aadf4
color12 #8aadf4
# magenta
color5 #f5bde6
color13 #f5bde6
# cyan
color6 #8bd5ca
color14 #8bd5ca
# white
color7 #b8c0e0
color15 #a5adcb

View File

@@ -0,0 +1,80 @@
# vim:ft=kitty
## name: Catppuccin Kitty Mocha
## author: Catppuccin Org
## license: MIT
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf
## blurb: Soothing pastel theme for the high-spirited!
# The basic colors
foreground #cdd6f4
background #1e1e2e
selection_foreground #1e1e2e
selection_background #f5e0dc
# Cursor colors
cursor #f5e0dc
cursor_text_color #1e1e2e
# URL underline color when hovering with mouse
url_color #f5e0dc
# Kitty window border colors
active_border_color #b4befe
inactive_border_color #6c7086
bell_border_color #f9e2af
# OS Window titlebar colors
wayland_titlebar_color system
macos_titlebar_color system
# Tab bar colors
active_tab_foreground #11111b
active_tab_background #cba6f7
inactive_tab_foreground #cdd6f4
inactive_tab_background #181825
tab_bar_background #11111b
# Colors for marks (marked text in the terminal)
mark1_foreground #1e1e2e
mark1_background #b4befe
mark2_foreground #1e1e2e
mark2_background #cba6f7
mark3_foreground #1e1e2e
mark3_background #74c7ec
# The 16 terminal colors
# black
color0 #45475a
color8 #585b70
# red
color1 #f38ba8
color9 #f38ba8
# green
color2 #a6e3a1
color10 #a6e3a1
# yellow
color3 #f9e2af
color11 #f9e2af
# blue
color4 #89b4fa
color12 #89b4fa
# magenta
color5 #f5c2e7
color13 #f5c2e7
# cyan
color6 #94e2d5
color14 #94e2d5
# white
color7 #bac2de
color15 #a6adc8

View File

@@ -4,7 +4,7 @@ configuration {
modi: "drun,window,filebrowser,ssh";
icon-theme: "Papirus";
show-icons: true;
terminal: "alacritty";
terminal: "kitty";
drun-display-format: "{icon} {name}";
location: 0;
disable-history: false;

View File

@@ -0,0 +1,138 @@
/*******************************************************
* ROFI configs sway/i3 power-profiles-switcher for EndeavourOS
* Maintainer: joekamprad <joekamprad@endeavouros.com>
*******************************************************/
configuration {
font: "Noto Sans Regular 10";
show-icons: false;
icon-theme: "Qogir-dark";
scroll-method: 0;
disable-history: false;
fullscreen: false;
hide-scrollbar: true;
sidebar-mode: false;
}
@import "~/.config/rofi/config.rasi"
/* Insert theme modifications after this */
window {
background-color: @background;
border: 0;
padding: 10;
transparency: "real";
width: 200px;
location: east;
/*y-offset: 18;*/
/*x-offset: 850;*/
}
listview {
lines: 4;
columns: 1;
}
element {
border: 0;
padding: 1px ;
}
element-text {
background-color: inherit;
text-color: inherit;
}
element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px ;
border: 0;
handle-color: @normal-foreground;
handle-width: 8px ;
padding: 0;
}
mode-switcher {
border: 2px 0px 0px ;
border-color: @separatorcolor;
}
button {
spacing: 0;
text-color: @normal-foreground;
}
button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px ;
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
spacing: 0;
text-color: @normal-foreground;
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
/* Multiline header using the message widget */
mainbox {
children: [ message, inputbar, listview ];
}
message {
expand: false;
font: "Noto Sans Regular 10";
text-color: @normal-foreground;
margin: 0 0 10px 0;
}

View File

@@ -0,0 +1,125 @@
/*******************************************************
* ROFI configs i3 powermenu for EndeavourOS
* Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
*******************************************************/
configuration {
font: "Noto Sans Regular 10";
show-icons: false;
icon-theme: "Qogir";
scroll-method: 0;
disable-history: false;
sidebar-mode: false;
}
@import "~/.config/rofi/config.rasi"
/* Insert theme modifications after this */
window {
background-color: @background;
border: 0;
padding: 10;
transparency: "real";
width: 120px;
location: east;
/*y-offset: 18;*/
/*x-offset: 850;*/
}
listview {
lines: 7;
columns: 1;
scrollbar: false;
}
element {
border: 0;
padding: 1px;
}
element-text {
background-color: inherit;
text-color: inherit;
}
element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px;
border: 0;
handle-color: @normal-foreground;
handle-width: 8px;
padding: 0;
}
mode-switcher {
border: 2px 0px 0px;
border-color: @separatorcolor;
}
button {
spacing: 0;
text-color: @normal-foreground;
}
button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px;
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
spacing: 0;
text-color: @normal-foreground;
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em;
text-color: @normal-foreground;
}
/*removes the text input line*/
mainbox {
children: [listview];
}

View File

@@ -0,0 +1,136 @@
/*******************************************************
* ROFI configs i3 Apps menu for EndeavourOS
* Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
*******************************************************/
configuration {
font: "Noto Sans Regular 10";
show-icons: true;
icon-theme: "Qogir";
display-drun: "Apps";
drun-display-format: "{name}";
scroll-method: 0;
disable-history: false;
sidebar-mode: false;
}
@import "~/.config/rofi/config.rasi"
/* Insert theme modifications after this */
window {
background-color: @background;
border: 0;
padding: 30;
}
listview {
lines: 10;
columns: 3;
}
mainbox {
border: 0;
padding: 0;
}
message {
border: 2px 0px 0px;
border-color: @separatorcolor;
padding: 1px;
}
textbox {
text-color: @foreground;
}
listview {
fixed-height: 0;
border: 8px 0px 0px;
border-color: @separatorcolor;
spacing: 8px;
scrollbar: false;
padding: 2px 0px 0px;
}
element {
border: 0;
padding: 1px;
}
element-text {
background-color: inherit;
text-color: inherit;
}
element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px;
border: 0;
handle-color: @normal-foreground;
handle-width: 8px;
padding: 0;
}
mode-switcher {
border: 2px 0px 0px;
border-color: @separatorcolor;
}
button {
spacing: 0;
text-color: @normal-foreground;
}
button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px;
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
spacing: 0;
text-color: @normal-foreground;
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em;
text-color: @normal-foreground;
}

View File

@@ -0,0 +1,138 @@
/*******************************************************
* ROFI configs i3 keyhint-menu for EndeavourOS
* Maintainer: joekamprad [joekamprad //a_t// endeavouros.com]
*******************************************************/
configuration {
font: "Noto Sans Regular 10";
show-icons: false;
icon-theme: "Qogir";
display-drun: "KeyHint";
drun-display-format: "{name}";
scroll-method: 0;
disable-history: false;
fullscreen: false;
hide-scrollbar: true;
sidebar-mode: false;
}
@import "~/.config/rofi/config.rasi"
/* Insert theme modifications after this */
window {
background-color: @background;
border: 0;
padding: 30;
}
listview {
lines: 10;
columns: 1;
}
mainbox {
border: 0;
padding: 0;
}
message {
border: 2px 0px 0px;
border-color: @separatorcolor;
padding: 1px;
}
textbox {
text-color: @foreground;
}
listview {
fixed-height: 0;
border: 8px 0px 0px;
border-color: @separatorcolor;
spacing: 8px;
scrollbar: false;
padding: 2px 0px 0px;
}
element {
border: 0;
padding: 1px;
}
element-text {
background-color: inherit;
text-color: inherit;
}
element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
scrollbar {
width: 4px;
border: 0;
handle-color: @normal-foreground;
handle-width: 8px;
padding: 0;
}
mode-switcher {
border: 2px 0px 0px;
border-color: @separatorcolor;
}
button {
spacing: 0;
text-color: @normal-foreground;
}
button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px;
}
case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
entry {
spacing: 0;
text-color: @normal-foreground;
}
prompt {
spacing: 0;
text-color: @normal-foreground;
}
inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
textbox-prompt-colon {
expand: false;
str: ":";
margin: 0px 0.3em 0em 0em;
text-color: @normal-foreground;
}

View File

@@ -2,6 +2,7 @@
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/ThunarBookmarks/a92b2c1d964bbd2cee57b3ca30aec9b0" "")
; (gtk_accel_path "<Actions>/ThunarDetailsView/expandable-folders" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-type" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-last-modified" "")
; (gtk_accel_path "<Actions>/Thunarwindow/menu" "")
@@ -91,6 +92,7 @@
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-icons" "<Primary>1")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-2" "<Shift>Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in" "<Primary>plus")
; (gtk_accel_path "<Actions>/ThunarStandardView/configure-columns" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/rename" "F2")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location" "<Primary>l")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-compact-list" "<Primary>3")

279
xfce/.config/i3/config Normal file
View File

@@ -0,0 +1,279 @@
# -*- mode: i3wm-config -*-
# i3 config file (v4)
#
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
#
# This config file uses keycodes (bindsym) and was written for the QWERTY
# layout.
#
# To get a config file with the same key positions, but for your current
# layout, use the i3-config-wizard
#
# use these keys for focus, movement, and resize directions when reaching for
# the arrows is not convenient
set $left h
set $down j
set $up k
set $right l
set $term 'xfce4-terminal'
set $editor 'emacs'
set $filemanager 'thunar'
set $notification 'dunst'
set $browser 'chromium'
set $clipboard 'xfce4-clipman'
# Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
###############################################################
###############################################################
################## LOOK AND FEEL ##################
###############################################################
###############################################################
# Define colors variables:
set $darkbluetrans #08052be6
set $darkblue #08052b
set $lightblue #5294e2
set $urgentred #e53935
set $white #ffffff
set $black #000000
set $purple #e345ff
set $darkgrey #383c4a
set $grey #b0b5bd
set $mediumgrey #8b8b8b
set $yellowbrown #e1b700
# define colors for windows:
#class border bground text indicator child_border
client.focused $lightblue $darkblue $white $mediumgrey $mediumgrey
client.unfocused $darkblue $darkblue $grey $darkgrey $darkgrey
client.focused_inactive $darkblue $darkblue $grey $black $black
client.urgent $urgentred $urgentred $white $yellowbrown $yellowbrown
# Setting cursor
# seat seat0 xcursor_theme catppuccin-mocha-lavender-cursors 25
# Font for window titles. Will also be used by the bar unless a different font
# is used in the bar {} block below.
font pango:Liberation Sans Regular 10
# Windows configuration
default_border pixel 3
default_floating_border pixel 3
gaps inner 5
gaps outer 5
# Apply wallpaper
exec_always --no-startup-id feh --bg-scale ~/.config/i3/wallpaper.jpg
###############################################################
###############################################################
################## WORKSPACES ##################
###############################################################
###############################################################
# Floating/sticky windows
for_window [class="Pop-up"] floating enable
for_window [class="Bubble"] floating enable
for_window [class="Task_dialog"] floating enable
for_window [class="Preferences"] floating enable
for_window [class="Dialog"] floating enable
for_window [class="Menu"] floating enable
for_window [class="Organizer"] floating enable
for_window [class="About"] floating enable
for_window [class="Toolbox"] floating enable
for_window [class="Page-info"] floating enable
for_window [class="Webconsole"] floating enable
for_window [class="Authy"] floating enable
for_window [class="Termfloat"] floating enable, resize set 960 540
for_window [class="Mpv"] floating enable, resize set 960 540
for_window [class="Spotify"] floating enable, resize set 1280 1024, move scratchpad
for_window [class="xfce4-clipman-history"] floating enable
# Workspaces
assign [class="Emacs"] 2
assign [class="Chromium"] 1
assign [class="Telegram"] 2
assign [class="discord"] 3
focus_follows_mouse no
###############################################################
###############################################################
################## KEYBINDINGS ##################
###############################################################
###############################################################
# Logo key. Use Mod1 for Alt.
set $mod Mod4
# start a terminal
bindsym $mod+Return exec $term
# kill focused window
bindsym $mod+Shift+q kill
# define mode for launcher
mode "launcher" {
bindsym d exec "rofi -show drun"
bindsym s exec "rofi -show ssh"
bindsym w exec "rofi -show window"
bindsym f exec "rofi -show filebrowser"
bindsym $mod+d mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+d mode "launcher"
bindsym $mod+Shift+f exec $filemanager
bindsym $mod+Shift+b exec $browser
bindsym $mod+Shift+t exec "flatpak run org.telegram.desktop"
bindsym $mod+Shift+e exec $editor
bindsym Print exec xfce4-screenshooter
bindsym Shift+Print exec xfce4-screenshooter -r
bindsym Alt+Print exec xfce4-screenshooter -w
bindsym $mod+Shift+v exec --no-startup-id xfce4-clipman-history
bindsym $mod+Mod1+l exec xflock4
bindsym Mod1+Ctrl+q exec xfce4-session-logout
# Use pactl to adjust volume in PulseAudio.
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle
bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5%
bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-
# use Mouse+Mod4 to drag floating windows to their wanted position
floating_modifier $mod
# move tiling windows via drag & drop by left-clicking into the title bar,
# or left-clicking anywhere into the window while holding the floating modifier.
tiling_drag modifier titlebar
# change focus
bindsym $mod+$left focus left
bindsym $mod+$down focus down
bindsym $mod+$up focus up
bindsym $mod+$right focus right
# alternatively, you can use the cursor keys:
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# move focused window
bindsym $mod+Shift+$left move left
bindsym $mod+Shift+$down move down
bindsym $mod+Shift+$up move up
bindsym $mod+Shift+$right move right
# alternatively, you can use the cursor keys:
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# split in horizontal orientation
bindsym Mod1+h split h
# split in vertical orientation
bindsym $mod+v split v
# enter fullscreen mode for the focused container
bindsym $mod+f fullscreen toggle
# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
# change focus between tiling / floating windows
bindsym $mod+space focus mode_toggle
# focus the parent container
bindsym $mod+a focus parent
# focus the child container
bindsym Mod1+d focus child
# move the currently focused window to the scratchpad
bindsym $mod+Shift+minus move scratchpad
# Show the next scratchpad window or hide the focused scratchpad window.
# If there are multiple scratchpad windows, this command cycles through them.
bindsym $mod+minus scratchpad show
# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
bindsym $mod+period workspace next
bindsym $mod+comma workspace prev
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
# Pressing left will shrink the windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows height.
bindsym $left resize shrink width 10 px or 10 ppt
bindsym $down resize grow height 10 px or 10 ppt
bindsym $up resize shrink height 10 px or 10 ppt
bindsym $right resize grow width 10 px or 10 ppt
# same bindings, but for the arrow keys
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
# back to normal: Enter or Escape or Mod4+r
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -0,0 +1,7 @@
#/usr/bin/env bash
BACKGROUND="${XDG_CONFIG_HOME:-${HOME}/.config}/i3/lockscreen.png"
i3lock --image="${BACKGROUND}" \
--color=000000 \
--ignore-empty-password \
--show-failed-attempts

View File

@@ -0,0 +1,12 @@
#!/bin/bash
chosen=$(echo -e "⏻ Shutdown\n Restart\n Logout\n Suspend\n Hibernate" | rofi -dmenu -p "Power Menu:" -theme-str 'window {width: 20%;}')
case "$chosen" in
"⏻ Shutdown") systemctl poweroff ;;
" Restart") systemctl reboot ;;
" Logout") loginctl terminate-session $XDG_SESSION_ID ;;
" Suspend") systemctl suspend ;;
" Hibernate") systemctl hibernate ;;
*) exit 0 ;;
esac

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

View File

@@ -0,0 +1,2 @@
auto-online=false

View File

@@ -1,9 +1,9 @@
use_css=false
normal_color=rgb(154,153,150)
normal_color=rgb(255,255,255)
focused_color=rgb(255,255,255)
urgent_color=rgb(255,0,0)
mode_color=rgb(119,118,123)
visible_color=rgb(0,0,0)
mode_color=rgb(255,0,0)
visible_color=rgb(94,92,100)
css=.workspace { }\n.workspace.visible { }\n.workspace.focused { font-weight: bold; }\n.workspace.urgent { color: red; }\n.binding-mode { }\n
strip_workspace_numbers=false
auto_detect_outputs=false

View File

@@ -6,7 +6,7 @@ show_in_folder=false
screenshot_dir=file:///home/fscotto/Immagini
action=2
delay=0
region=1
region=2
show_mouse=0
show_border=0

View File

@@ -5,7 +5,15 @@
<property name="navigationbar" type="empty">
<property name="position" type="string" value="left"/>
</property>
<property name="height" type="uint" value="805"/>
<property name="width" type="uint" value="1406"/>
<property name="height" type="uint" value="1381"/>
<property name="width" type="uint" value="1702"/>
<property name="thumbnails" type="empty">
<property name="size" type="uint" value="6"/>
<property name="show" type="bool" value="false"/>
</property>
<property name="bgcolor-override" type="bool" value="false"/>
</property>
<property name="desktop" type="empty">
<property name="type" type="string" value="xfce"/>
</property>
</channel>

View File

@@ -1,10 +1,10 @@
<?xml version="1.1" encoding="UTF-8"?>
<channel name="thunar" version="1.0">
<property name="last-view" type="string" value="ThunarIconView"/>
<property name="last-view" type="string" value="ThunarDetailsView"/>
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_100_PERCENT"/>
<property name="last-window-width" type="int" value="1698"/>
<property name="last-window-height" type="int" value="1331"/>
<property name="last-window-width" type="int" value="1702"/>
<property name="last-window-height" type="int" value="1381"/>
<property name="last-window-maximized" type="bool" value="true"/>
<property name="last-separator-position" type="int" value="253"/>
<property name="misc-single-click" type="bool" value="false"/>
@@ -15,8 +15,8 @@
<property name="misc-symbolic-icons-in-sidepane" type="bool" value="true"/>
<property name="misc-middle-click-in-tab" type="bool" value="true"/>
<property name="misc-full-path-in-tab-title" type="bool" value="false"/>
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_38_PERCENT"/>
<property name="last-details-view-column-widths" type="string" value="50,50,122,50,50,85,50,50,754,50,50,58,50,62"/>
<property name="last-details-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_75_PERCENT"/>
<property name="last-details-view-column-widths" type="string" value="50,50,132,112,80,377,50,50,2744,50,50,106,50,178"/>
<property name="last-show-hidden" type="bool" value="true"/>
<property name="last-side-pane" type="string" value="THUNAR_SIDEPANE_TYPE_SHORTCUTS"/>
</channel>

View File

@@ -16,8 +16,17 @@
</property>
<property name="monitorHDMI-A-1" type="empty">
<property name="workspace0" type="empty">
<property name="last-image" type="string" value="/home/fscotto/Immagini/minimal-black-hole.jpg"/>
<property name="image-style" type="int" value="5"/>
<property name="last-image" type="string" value="/home/fscotto/Immagini/V per Vendetta/v-for-vendetta.jpg"/>
<property name="image-style" type="int" value="4"/>
</property>
</property>
<property name="monitor0" type="empty">
<property name="image-path" type="string" value="/home/fscotto/Immagini/V per Vendetta/v-for-vendetta.jpg"/>
<property name="image-show" type="bool" value="true"/>
<property name="image-style" type="int" value="5"/>
<property name="workspace0" type="empty">
<property name="last-image" type="string" value="/home/fscotto/Immagini/V per Vendetta/v-for-vendetta.jpg"/>
<property name="image-style" type="int" value="4"/>
</property>
</property>
</property>

View File

@@ -5,7 +5,9 @@
<property name="applications" type="empty">
<property name="known_applications" type="array">
<value type="string" value="blueman"/>
<value type="string" value="chromium"/>
<value type="string" value="flameshot"/>
<value type="string" value="notify-send"/>
<value type="string" value="org.freedesktop.network-manager-applet"/>
<value type="string" value="org.telegram.desktop"/>
<value type="string" value="org.xfce.Thunar"/>

View File

@@ -56,6 +56,14 @@
<property name="plugin-6" type="string" value="systray">
<property name="square-icons" type="bool" value="true"/>
<property name="known-legacy-items" type="array">
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (70%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (89%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (87%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (73%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (67%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (53%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (56%)"/>
<value type="string" value="richiesta di un indirizzo wi-fi per «skywifi_4lxsq»…"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (58%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (60%)"/>
<value type="string" value="gestore dei processi"/>
@@ -76,6 +84,8 @@
<value type="string" value="clipman"/>
</property>
<property name="known-items" type="array">
<value type="string" value="virt-manager"/>
<value type="string" value="deluge"/>
<value type="string" value="Proton Mail Bridge"/>
<value type="string" value="ProtonMailBridge"/>
<value type="string" value="blueman"/>
@@ -87,6 +97,20 @@
<property name="hide-new-items" type="bool" value="true"/>
<property name="menu-is-primary" type="bool" value="true"/>
<property name="symbolic-icons" type="bool" value="true"/>
<property name="hidden-items" type="array">
<value type="string" value="virt-manager"/>
<value type="string" value="deluge"/>
</property>
<property name="hidden-legacy-items" type="array">
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (53%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (70%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (67%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (56%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (73%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (89%)"/>
<value type="string" value="connessione wi-fi «skywifi_4lxsq» attiva: skywifi_4lxsq (87%)"/>
<value type="string" value="richiesta di un indirizzo wi-fi per «skywifi_4lxsq»…"/>
</property>
</property>
<property name="plugin-7" type="string" value="separator">
<property name="style" type="uint" value="0"/>
@@ -117,16 +141,16 @@
<property name="show-command-profile" type="bool" value="true"/>
<property name="button-icon" type="string" value="void-logo"/>
<property name="recent" type="array">
<value type="string" value="org.telegram.desktop.desktop"/>
<value type="string" value="xfce4-taskmanager.desktop"/>
<value type="string" value="org.xfce.mousepad.desktop"/>
<value type="string" value="chromium.desktop"/>
<value type="string" value="org.gnome.Shotwell.desktop"/>
<value type="string" value="xfce-settings-manager.desktop"/>
<value type="string" value="lightdm-gtk-greeter-settings.desktop"/>
<value type="string" value="emacs.desktop"/>
<value type="string" value="xfce4-terminal.desktop"/>
<value type="string" value="xfce-session-settings.desktop"/>
<value type="string" value="virt-manager.desktop"/>
<value type="string" value="io.gitlab.librewolf-community.desktop"/>
<value type="string" value="org.gnome.Shotwell.desktop"/>
<value type="string" value="org.xfce.ristretto.desktop"/>
<value type="string" value="xfce-settings-manager.desktop"/>
<value type="string" value="org.telegram.desktop.desktop"/>
<value type="string" value="org.xfce.mousepad.desktop"/>
</property>
<property name="menu-width" type="int" value="700"/>
<property name="menu-height" type="int" value="500"/>

View File

@@ -2,7 +2,7 @@
<channel name="xfce4-terminal" version="1.0">
<property name="misc-cursor-blinks" type="bool" value="true"/>
<property name="font-use-system" type="bool" value="true"/>
<property name="font-use-system" type="bool" value="false"/>
<property name="misc-menubar-default" type="bool" value="false"/>
<property name="misc-borders-default" type="bool" value="true"/>
<property name="color-use-theme" type="bool" value="false"/>
@@ -24,10 +24,10 @@
<property name="background-mode" type="string" value="TERMINAL_BACKGROUND_SOLID"/>
<property name="background-darkness" type="double" value="0.94999999999999996"/>
<property name="font-allow-bold" type="bool" value="true"/>
<property name="font-name" type="string" value="FiraCode Nerd Font 14"/>
<property name="font-name" type="string" value="Liberation Mono 14"/>
<property name="kinetic-scrolling" type="bool" value="true"/>
<property name="scrolling-bar" type="string" value="TERMINAL_SCROLLBAR_NONE"/>
<property name="scrolling-unlimited" type="bool" value="false"/>
<property name="scrolling-lines" type="uint" value="10000"/>
<property name="overlay-scrolling" type="bool" value="false"/>
<property name="overlay-scrolling" type="bool" value="true"/>
</channel>

View File

@@ -73,7 +73,7 @@
<property name="unredirect_overlays" type="bool" value="true"/>
<property name="urgent_blink" type="bool" value="false"/>
<property name="use_compositing" type="bool" value="true"/>
<property name="workspace_count" type="int" value="2"/>
<property name="workspace_count" type="int" value="3"/>
<property name="wrap_cycle" type="bool" value="true"/>
<property name="wrap_layout" type="bool" value="true"/>
<property name="wrap_resistance" type="int" value="10"/>
@@ -86,6 +86,7 @@
<value type="string" value="2"/>
<value type="string" value="3"/>
<value type="string" value="4"/>
<value type="string" value="Spazio di lavoro 5"/>
</property>
</property>
</channel>

View File

@@ -30,7 +30,7 @@
<property name="MenuImages" type="empty"/>
<property name="ButtonImages" type="empty"/>
<property name="MenuBarAccel" type="empty"/>
<property name="CursorThemeName" type="empty"/>
<property name="CursorThemeName" type="string" value="Yaru++"/>
<property name="CursorThemeSize" type="empty"/>
<property name="DecorationLayout" type="string" value="icon,menu:minimize,maximize,close"/>
<property name="DialogsUseHeader" type="bool" value="false"/>

View File

@@ -2,7 +2,7 @@
# --no-playlist
# Save in ~/Videos
-o ~/Videos/%(title)s.%(ext)s
-o ~/Video/%(title)s.%(ext)s
# Prefer 1080p or lower resolutions
-f bestvideo[ext=mp4][width<2000][height<=1200]+bestaudio[ext=m4a]/bestvideo[ext=webm][width<2000][height<=1200]+bestaudio[ext=webm]/bestvideo[width<2000][height<=1200]+bestaudio/best[width<2000][height<=1200]/best