Compare commits

..

613 Commits

Author SHA1 Message Date
fe9d2ed6ea updated private files 2024-06-08 15:13:44 +02:00
18d79b2efe [shell] reorganised my .profile 2024-06-08 15:12:48 +02:00
1280086985 [bootstrap] update bootstrap script 2024-06-08 15:12:21 +02:00
90063ae6c5 [PKGBUILD] remove emacs PKGBUILD 2024-06-08 15:10:19 +02:00
cc5a4ebbe6 [profile] Remove podman-specific variable 2024-02-08 05:37:03 +01:00
270a89b26a [misc] don’t need this file anymore 2024-01-27 18:43:44 +01:00
20efa66147 [mimeapps] add Heroic launcher 2024-01-27 18:34:32 +01:00
9d4d6430d3 [misc] update encrypted files 2024-01-27 18:34:27 +01:00
ff914431e6 [profile] Add environment variable for Docker emulation with podman 2024-01-27 18:33:52 +01:00
84ea4de4fd [profile] Better SSH config 2024-01-27 18:33:41 +01:00
28d0955175 [PKGBUILD] update eask 2024-01-27 18:33:26 +01:00
ccaff4902a [PKGBUILD] update eask 2024-01-01 22:44:06 +01:00
284cfdae35 [Profile] fix ruby 3 path 2023-12-25 11:39:21 +01:00
fd4cabeebd Remove url rewrites in git config 2023-12-17 21:39:54 +01:00
2df3c35f5c add modrinth to mimeapps 2023-12-17 21:39:54 +01:00
ae9d929183 misc: remove org files 2023-12-17 21:39:54 +01:00
86741cf0dc [Bin] Scripts for VNC remote connection from my tablet 2023-11-13 23:29:26 +01:00
4088f199d5 [PKGBUILD] update Eask
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-05 22:49:24 +01:00
566861ee28 [Emacs] Add fix for TRAMP bug
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-18 09:57:59 +02:00
bff574afd2 [Emacs] fix engrave-faces load order 2023-09-18 09:57:11 +02:00
1cb7eba76b [Emacs] Fix all-the-icons loading 2023-09-18 09:52:30 +02:00
8ea0f40e88 [Emacs] New org-roam keybindings 2023-09-18 09:50:27 +02:00
9a1f111fac [Emacs] Don’t defer engrave-faces
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-17 17:52:40 +02:00
3cf2870437 [Emacs] Add counsel package 2023-09-17 17:52:24 +02:00
3c2a0c0ef9 [Emacs] Add smartparens package 2023-09-17 17:52:06 +02:00
640207c305 [Emacs] Remove LanguageTool LSP
The package already installed is more than enough
2023-09-17 17:51:28 +02:00
92460b57d4 [Emacs] Better languagetool keybindings 2023-09-17 17:50:49 +02:00
a463f2ba0a [Emacs] Add extra packages in orgmode’s default LaTeX exports 2023-09-17 17:50:11 +02:00
639d4029e5 [Emacs] Use user-defined labels in orgmode’s LaTeX exports 2023-09-17 17:49:37 +02:00
6c25f19639 [Emacs] fix ox-gemini configuration 2023-09-17 17:49:06 +02:00
ebc95e422f [Emacs] fix org-ref keybinding 2023-09-17 17:48:45 +02:00
9c00b684d0 [PKGBUILD] Update and rename appwrite PKGBUILD 2023-09-17 17:48:09 +02:00
e04e874549 [Misc] Update topgrade config (minor)
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-10 23:52:37 +02:00
1993e13e1c [Misc] Upgrade mimeapps 2023-09-10 23:52:27 +02:00
46e92dd821 [Qutebrowser] Update config 2023-09-10 23:50:23 +02:00
b8bdd37cbc [Misc] Update private files 2023-09-10 23:49:54 +02:00
2e5e276b61 [Shell] Revert manpager to less 2023-09-10 23:49:26 +02:00
39719850cb [Git] Fix git configuration 2023-09-10 23:48:58 +02:00
2641e6af09 [PKGBUILD] Switch to Emacs 29 2023-08-22 14:28:54 +02:00
e8e9114a90 [PKGBUILD] Update Arch package build 2023-08-22 14:28:35 +02:00
3c449f97fe [Misc] update private files
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-07 23:31:00 +02:00
9daced8c68 [Tmux] add keybind to zoom on pane
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-07 22:29:36 +02:00
749fda9b83 [Emacs] add org-roam-ui package 2023-07-07 22:29:24 +02:00
c2e3f1f848 [Misc] update private files 2023-07-07 22:29:04 +02:00
92a0d923b4 [Bin] add secure key generator
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-03 11:23:06 +02:00
acc226a21d [Emacs] search through symlinks with ivy-quick-find-files 2023-07-01 23:53:49 +02:00
fc30673d4b [Fish] fix orgmode property 2023-07-01 23:53:30 +02:00
a060958a93 wip: org-mode git 2023-06-30 10:51:34 +02:00
3d5b029ed9 [Git] update git config 2023-06-30 09:34:49 +02:00
a52285b412 [Emacs] fix org-caldav config not being tangles 2023-06-30 09:34:18 +02:00
d794c6e108 [PKGBUILD] add Nextcloud Talk desktop PKGBUILD
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-28 14:57:05 +02:00
f79e499237 [misc] testing Gitea actions
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-25 20:38:08 +02:00
d399669bab [Picom] faster fade in/out for windows
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-22 11:34:18 +02:00
a7340a4fdd [Picom] softer shadows
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-22 11:20:11 +02:00
a99244a97b [Emacs] automatically enable orgroam db sync when org-roam is loaded
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-20 11:39:56 +02:00
c3c5808b07 [Emacs] some more org-roam keybinds and config
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-17 14:49:06 +02:00
de6dd6c789 chore: CI fix
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-17 14:05:55 +02:00
08c152d1f7 [Emacs] add org-roam configuration
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-17 13:59:10 +02:00
dbe0c491bb [rofi] for some reason, `window' is not a valid value anymore 2023-06-17 13:59:01 +02:00
c4c80945e8 [bin] format and correct comments
Some checks failed
continuous-integration/drone/push Build is failing
2023-06-15 14:23:55 +02:00
7b0833252a [Emacs] enable iCalendar integration of mu4e 2023-06-15 14:20:34 +02:00
00ee413240 [StumpWM] Move commands, better function for launching WM at work 2023-06-15 14:19:49 +02:00
47d63fedb4 [Tmux] add tmux session ressurection, better keybindings 2023-06-15 14:19:10 +02:00
17034d3d9d [Bin] rename some headings, and why was color-picker here?
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-03 23:14:06 +02:00
9ffe84d760 [Bin] remove scripts I don’t use anymore
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-03 23:10:08 +02:00
05dcd7067b [nsxiv] update nsxiv and its configuration file
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-03 13:25:30 +02:00
a4766fec55 [Emacs] add major mode for Tmux config file
All checks were successful
continuous-integration/drone/push Build is passing
2023-06-02 16:54:41 +02:00
1e6e2cb09d [Tmux] add Tmux configuration 2023-06-02 16:54:14 +02:00
4e2c08c71c [Bin] add kamoji generator
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-28 16:34:05 +02:00
440ebe4a5d [Bin] add script to open ediff as a diff tool 2023-05-28 16:34:05 +02:00
3073990aa2 [StumpWM] Update functions for when I am at work 2023-05-28 16:34:05 +02:00
6efe53acad [Emacs] Update shell output of zig LSP server install 2023-05-28 16:34:05 +02:00
670fbe1380 [Emacs] Add calendar configuration 2023-05-28 16:34:05 +02:00
9dedfe3f5b [Desktop] fix tangling of Elisp files
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-25 13:47:20 +02:00
2e72a658c8 [Desktop] Switch GTK icon theme to Nordzy
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-18 22:47:15 +02:00
88972553e6 [Emacs] Workaround for elfeed-org not loading properly
Not a really clean fix, but, eh...
2023-05-18 22:46:46 +02:00
1cb1b64f59 [Emacs] Remove org project for my conlanging website
All checks were successful
continuous-integration/drone/push Build is passing
I no longer use org-publish to publish conlangs.phundrak.com, so this
config can go.
2023-05-14 13:50:31 +02:00
cf2b55878a [Emacs] Add documentation for ox-gemini 2023-05-14 13:50:19 +02:00
f2f5db5cfc [Emacs] Switch to my own fork of ox-gemini
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-14 13:18:37 +02:00
a021fed2d5 [Emacs] Better keybinds for mastodon.el 2023-05-14 13:18:27 +02:00
bbd13e4072 [Emacs] Widen two elfeed columns 2023-05-14 13:18:13 +02:00
0e9cfbde92 [PKGBUILD] Update Eask CLI 2023-05-14 13:17:58 +02:00
94a3a274dd [Mimeapps] Add FBReader as default mobi files reader 2023-05-14 13:17:36 +02:00
1e09261192 [Emacs] For some reason, I cannot install eask packages anymore
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-20 23:01:21 +02:00
13e4332af2 [Emacs] Workaround for mu4e 1.10, waiting for evil-collection 2023-04-20 23:00:10 +02:00
f9401e0b12 [Emacs] Remove mastodon-alt, update and fix some mastodon keybinds 2023-04-20 22:59:28 +02:00
89a248a03c [StumpWM] Add convenience commands for when at work 2023-04-19 13:58:52 +02:00
b3309591dc [Misc] Move code directory out of Documents 2023-04-19 13:58:15 +02:00
d6b802f059 [Emacs] add :package specification on some keybinds 2023-04-12 15:09:49 +02:00
511d0f8f38 [Emacs] Make smartparens a git package 2023-04-12 14:01:29 +02:00
45c046ce23 [Emacs] Remove unused aliases, add better less and bat altenative 2023-04-12 14:00:49 +02:00
5173238e01 [misc] Add podman compose to PATH 2023-04-12 13:58:40 +02:00
627de377b4 [Emacs] update mastodon instance
All checks were successful
continuous-integration/drone/push Build is passing
I switched from @phundrak@fosstodon.org to @phundrak@emacs.ch
2023-03-31 09:37:55 +02:00
00b00407b6 [fish] Run all commands in work abbr regardless whether they succeed
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-29 10:07:29 +02:00
ac9e161129 [sway,bin] Better swaybar
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-27 13:21:42 +02:00
494ecac073 [ssh] Add https auth method for Gitea and Github
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-27 10:03:17 +02:00
a3232ccfd9 [Emacs] Load lsp-ltex after lsp-mode 2023-03-27 10:01:37 +02:00
b4c419d852 [Emacs] Make Magit use authinfo to authenticate through HTTPS 2023-03-27 10:00:52 +02:00
20e89e938f [Emacs] fix eshell-banner-config configuration 2023-03-27 10:00:34 +02:00
4abe217eed [sway] Nicer font in swaybar 2023-03-27 09:59:04 +02:00
e201a060e6 [sway] Alignment 2023-03-27 09:58:44 +02:00
e3289051ef [sway] More sensible screenshot shortcuts 2023-03-27 09:58:15 +02:00
2f4f9cb30d [sway] Add keybind for locking screen 2023-03-27 09:57:45 +02:00
0c0a2363f6 [sway] In windows mode, immediately return to default mode
Unless entering resize mode
2023-03-27 09:57:11 +02:00
46a05e7226 [StumpWM] Don’t force Nemo on a workspace anymore
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-22 10:43:11 +01:00
a500b1eaec [mimeapps] remove unused schema
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-20 17:21:18 +01:00
29a1990a8d [Sway] Map my tablet to my HDMI screen 2023-03-20 17:20:33 +01:00
a10f3d0479 [Sway] Harmonize keybindings with my other WMs 2023-03-20 17:20:11 +01:00
86101c7cca [Bootstrap] Replace scrot with flameshot 2023-03-20 17:19:48 +01:00
97c74e22c0 [Emacs] Add lsp-ltex, add doc for writegood-mode 2023-03-20 17:19:31 +01:00
696c7cff3e [Emacs] Simpler self-screenshot function 2023-03-20 17:19:15 +01:00
3b301d3bb6 [Fish] Change chill abbrev’s source of music 2023-03-20 17:18:59 +01:00
a0d774da82 [Fish] Less latency in mpv in webcam abbreviations 2023-03-20 17:18:38 +01:00
cb35ae2d73 [Fish] Add abbrev for setting up screens at work 2023-03-20 17:18:11 +01:00
81cd095d08 [org files] Grammar 2023-03-20 17:17:57 +01:00
f790423cca [Misc] Change location of local variable in gitconfig
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-14 11:44:49 +01:00
70f7fae3af [Emacs] Better variable customization in eshell-info-banner config 2023-03-14 11:12:30 +01:00
04117fb5a9 [Emacs] Nicer faces for eshell-info-banner with my current theme 2023-03-14 11:02:29 +01:00
93c3e1cdae [Bin] Fix plock under X11 2023-03-14 11:02:11 +01:00
7e10020cc3 [Sway] Add shortcut to take region screenshot and copy in clipboard
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-11 18:57:32 +01:00
daca7f41ff [Emacs] Fix org-file export for CI
On older org-mode versions, org lists are lists of lists of only one
element, so that

    - a
    - b
    - c

translates as

    (("a") ("b") ("c"))

But in more recent versions, the same list translates as

    ("a" "b" "c")

This commit handles both situations, as my local Emacs version follows
the latter behaviour but the Emacs version available in my CI workflow
follows the former behaviour.
2023-03-11 18:57:32 +01:00
a55dec76db [Kitty] Change layout order to better fit my needs 2023-03-11 18:32:24 +01:00
b6ce065c83 [PKGBUILD] Freeze Emacs for Magit bug workaround
Some checks failed
continuous-integration/drone/push Build is failing
Due to https://github.com/magit/magit/issues/4720 and
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=62093, freeze Emacs
version at commit
0214e9021b
2023-03-10 23:31:01 +01:00
a389169420 [Emacs] Fix code-generating Elisp 2023-03-10 23:30:45 +01:00
ad6d235132 [Mimeapps] Add teams schema handler 2023-03-10 23:29:51 +01:00
f6772efd86 [Emacs] Add global keybinds for compile and recompile 2023-03-10 15:34:19 +01:00
b4d27af37a [Emacs] Remove directory from ivy-quick-find-files lookup places 2023-03-10 15:33:41 +01:00
5918d9d756 [Emacs] Remove some prettified symbols 2023-03-10 15:33:20 +01:00
a1fbe5d2f8 [Emacs] Cleaner elisp-mode configuration 2023-03-10 15:32:55 +01:00
aeefc83ac6 [Emacs] Add sdlang-mode for Zellij configuration 2023-03-10 15:32:32 +01:00
a226f325d3 [Emacs] Better dap-mode config, better documentation 2023-03-10 15:32:10 +01:00
0e4c6c6c4b [Emacs] Simplify lsp-treemacs config, replace obsolete command 2023-03-10 15:30:17 +01:00
b810990611 [Emacs] Remove unused package 2023-03-10 15:29:39 +01:00
d7caf48eb9 [Emacs] Switch from tree-sitter to built-in treesit 2023-03-10 15:28:36 +01:00
3d3dcc6123 [Emacs] Add Java configuration 2023-03-10 15:27:50 +01:00
ff6365ba8c [Emacs] typo 2023-03-10 15:26:51 +01:00
bc03b083ef [Emacs] Greatly simplify org conlang project
It's now a much simpler process to publish since I use Vuepress.
2023-03-10 15:25:19 +01:00
d9f20bc035 [Emacs] Remove autosuggestion in Eshell 2023-03-10 15:24:18 +01:00
66c6ec5071 [Emacs] Fix compilation buffer colorization 2023-03-10 15:23:39 +01:00
46fc2b62d2 [Emacs] PDF preview in Dirvish without opening PDF files 2023-03-10 15:22:55 +01:00
07b888da3b [Emacs] Add keybind for magit-log 2023-03-10 15:22:30 +01:00
f06fab1ec6 [StumpWM] Add keybind `s-o' due to the habit I took in Newm 2023-03-10 15:20:57 +01:00
6a0619d159 [Bin] Remove WIP part of the file I never ended up working on 2023-03-10 15:20:29 +01:00
8dbb4373be [Bin] Create and adapt utilities for Sway and Wayland
Create screenshot script for Wayland using grim and slurp.

Adapt plock, emoji-rofi so they can also be used by Wayland.

Add Sway launcher script
2023-03-10 15:18:54 +01:00
68807c16f3 [Sway] Add config 2023-03-10 15:18:03 +01:00
5f41c8e71d [StumpWM, bin] Add docker indicator, nerd font to font list 2023-03-10 15:17:21 +01:00
02137f0c4a [Fish] Simplify rsync abbreviation 2023-03-10 15:15:06 +01:00
31f33ea658 [Readme] Fix Emacs version in shield 2023-03-10 15:14:35 +01:00
724c27724f [PKGBUILD] Bump Emacs version 2023-03-10 15:14:14 +01:00
987f8593ba [PKGBUILD] Bump Eask version 2023-03-10 15:13:16 +01:00
b3312d539e [Newm] New keybinding for connecting to bluetooth devices 2023-03-10 15:12:52 +01:00
a27ce0ddf0 [Misc] This somehow created issues with Emacsclient 2023-03-10 15:12:18 +01:00
843348a096 [Fish] No more fish_greeting 2023-02-22 15:34:56 +01:00
e47c31d637 [Fish] Add abbreviation for following logs with docker-compose 2023-02-22 15:34:27 +01:00
8475732f42 [StumpWM] Restore previous mouse behaviour 2023-02-15 11:13:49 +01:00
ff0da86024 [Emacs] Alias lsl to exa instead of plain ls 2023-02-15 11:13:28 +01:00
afc81645ff [Qutebrowser] Fix spawn in mpv keybind
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-05 23:07:05 +01:00
c9c8832054 [Emacs] Replace linguistics mu4e bookmark with internship
I haven’t been a subscriber of some linguistics-related mailinglists
for quite some time since I began reading them through Gnus, so that
bookmark is now useless.

However, I will very soon begin my internship, so I need a bookmark
for it.
2023-02-05 23:05:09 +01:00
edb534baa1 [Emacs] Remove solidity-mode, no longer needed
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-31 15:44:03 +01:00
85e212d1f9 [Emacs] Better LSP performances 2023-01-31 15:43:48 +01:00
5b31a3fab8 [Emacs] Some more documentation
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-23 12:31:43 +01:00
5f7166b01e [Emacs] Better name for org project 2023-01-23 12:31:43 +01:00
50f5cc94d0 [Emacs] Darken foreground of tab-bar face 2023-01-23 12:31:43 +01:00
54d6b097e4 [Emacs] Better keybinds for LSP in major-modes 2023-01-23 12:31:43 +01:00
1b24386366 [Emacs] Fix configuration for editorconfig-mode 2023-01-23 12:31:43 +01:00
883795148a [Emacs] Ignore elc files in recentf 2023-01-23 12:31:43 +01:00
ab41c4810b [StumpWM] I’ve gotten used to focus on mouse hover
Also, I’m not using StumpWM all that much anymore, so commits will
come less frequently to this file.
2023-01-23 12:31:43 +01:00
0b055fef80 [Newm] Better debugging for rules 2023-01-12 10:03:18 +01:00
febef82271 [Newm] Switch back to rofi, some visual changes
All checks were successful
continuous-integration/drone/push Build is passing
Set explicit refresh rate for primary screen

Set blur and transparency for rofi

Disable animation on focus change
2023-01-10 12:26:17 +01:00
9017ccf4ef [Newm] Avoid name collision in config 2023-01-10 12:23:09 +01:00
429d050d1e [Misc] Fix Matomo tracking 2023-01-10 12:22:51 +01:00
2134e947fd [Emacs] Add keybind to toggle tab-bar-mode, hide new tab button
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-08 21:16:38 +01:00
a509efdecd [Emacs] Remove unnecessary line
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-08 16:44:45 +01:00
2161f9f3a6 [Emacs] Add customization for tab-bar 2023-01-05 18:56:18 +01:00
1ceaaf7f3f [Bootstrap] Remove github remote for yadm dotfiles
All checks were successful
continuous-integration/drone/push Build is passing
Gitea now mirrors automatically commits on its repository to Github
2023-01-05 14:19:02 +01:00
d6c7f2ccdb [PKGBUILD] Update Eask to 0.7.7
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-05 14:13:40 +01:00
e4cd19b77e [Misc] Update Matomo headers 2023-01-05 14:13:25 +01:00
f7a60d4679 [Emacs] Better keybinds for tabs 2022-12-28 18:13:41 +01:00
b3011c2825 [PKGBUILD] Add Eask PKGBUILD 2022-12-28 18:13:22 +01:00
77231c8a20 [Emacs] Add native Emacs tabs keybinds to global prefix
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-18 17:07:37 +01:00
06266f2a2e [Emacs] Add back mediawiki frontend
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-16 14:44:08 +01:00
0130f0fabd [Emacs] Fix variable not correctly set 2022-12-16 14:44:08 +01:00
4ab766b657 [Emacs] Switch to Rougier's fork of mastodon.el
The alt timeline is just so much prettier
2022-12-16 14:44:08 +01:00
6992442453 [Emacs, Bootstrap] Remove vmd-mode, I never use it
Also remove package nodejs-vmd, since the only reason for me to have
it is vmd-mode
2022-12-16 14:44:08 +01:00
24f32a7589 [Emacs] Just write plaintext by default 2022-12-16 14:41:27 +01:00
0b6a673a8c [Fish] Add sourcing private data 2022-12-16 14:41:07 +01:00
5f5c845dc4 [Emacs] Hook prettier-js into more modes
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-07 16:08:05 +01:00
baf6d0fc26 [Emacs] Add Mastodon client 2022-12-07 16:07:51 +01:00
02f2170993 [Emacs] Fix keybinds for Forge in Magit 2022-12-07 16:07:32 +01:00
47235d5040 [PKGBUILD] Add Tree-Sitter option in Emacs PKGBUILD 2022-12-07 16:06:30 +01:00
90c42309c0 [Newm] Disable network and bluetooth display for now 2022-12-07 16:06:06 +01:00
30f9c68aaf [Newm] Make generic function for getting playerctl bus 2022-12-07 16:05:41 +01:00
9481df90ea [Newm] Fix energy settings 2022-12-07 16:05:03 +01:00
36bfdfc6a8 [Newm] Get wallpaper from cache file 2022-12-07 16:04:41 +01:00
1c15014511 [Newm] More multimedia keybinds 2022-12-07 16:04:20 +01:00
4258623f54 [Newm] Fix unread email count 2022-12-07 16:04:03 +01:00
4b85da9a1e [Bootstrap] Remove obsolete package 2022-12-06 11:50:08 +01:00
e31224fa62 [Misc] Add PKGBUILD fo Appwrite CLI
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-27 01:01:06 +01:00
ffd96a277d [Newm] Replace ambiguous character
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-23 18:04:30 +01:00
8ab46ec051 [Emacs] Add timestamps in undo-tree buffer
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-23 17:59:21 +01:00
54c0f11d80 [Newm] Move everything to the middle, ignore empty results
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-23 17:56:23 +01:00
6fffa0177b [Newm] New method showing computer’s connectivity 2022-11-23 17:55:55 +01:00
e5a2527f81 [Newm] New method for displaying currently playing media 2022-11-23 17:55:35 +01:00
1214534726 [Newm] Add method for displaying connected bluetooth devices 2022-11-23 17:55:05 +01:00
af2c327eb7 [Newm] Add method for displaying active docker containers 2022-11-23 17:54:34 +01:00
d855a29b76 [Newm] Revamp display of some elements 2022-11-23 17:54:04 +01:00
4f8d4b19f3 [Newm] Add keybinding for screenshots 2022-11-23 17:52:43 +01:00
ce95e15824 [Newm] Remove unnecessary lines 2022-11-23 17:52:15 +01:00
3363d9eb77 [Newm] Add keybinding for locking the screen
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-21 17:20:09 +01:00
b723c1a591 [Misc] Update private files
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-21 11:48:32 +01:00
d6917c0f49 [Misc] Remove files I no longer use 2022-11-21 11:47:32 +01:00
6c030a639a [Fish] Remove unused fish functions
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-21 11:45:27 +01:00
92eaa4e194 [Emacs] Add keyfreq package
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-21 11:39:56 +01:00
63d778f84d [Emacs] Remove unused package 2022-11-21 11:36:54 +01:00
4a528bf34e [Emacs] Fix incorrect function name 2022-11-21 11:36:38 +01:00
51e84faa27 [Newm] Remove unused keybindings 2022-11-21 11:36:14 +01:00
c7e83b5497 [Newm] Add keybind to change focused screen 2022-11-21 11:35:55 +01:00
a697a3045e [Newm] Only toggle overview on the current screen 2022-11-21 11:35:33 +01:00
d590aa219c [Emacs] Fix receipe for two packages
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-19 10:03:53 +01:00
ad6160204d [Git] Use proper tabs in config
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-18 03:55:50 +01:00
74303bbf02 [PKGBUILD] Bump version 2022-11-18 03:54:13 +01:00
b518e078d9 [Emacs] Add SQL to ob languages 2022-11-18 03:53:59 +01:00
8022fff67e [Emacs] Faster mu4e update if no need to invoke mbsync 2022-11-18 03:53:40 +01:00
a570ebbc07 [Gnus] Don’t fetch old headers
It takes so much time depending on what needs to be loaded
2022-11-18 03:53:16 +01:00
f97d6f6bbb [Emacs] Remove personnal account from Gnus
I’ll only use Gnus to read mailing lists and my RSS feeds
2022-11-18 03:52:46 +01:00
8eea0cc0d7 [StumpWM] Add missing media keys 2022-11-18 03:52:26 +01:00
fc3a0db80b [Bin] Replace Hyprland with Qtile 2022-11-18 03:51:17 +01:00
5a41ad8355 [MPD] Fix service for mpd-mpris 2022-11-18 03:50:49 +01:00
06e1ae50c2 [profile] Add Android SDK’s bin to PATH 2022-11-18 03:50:07 +01:00
78c6365f0b [Emacs] Add unread emails and env version to doom-modeline
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-11 14:44:14 +01:00
2a652f06fd [Emacs] Add Gnus config 2022-11-11 14:44:02 +01:00
00edb760ea [PKGBUILD] Bump Emacs version 2022-11-11 14:43:32 +01:00
0402c048a3 [Newm] Prettier bar icons 2022-11-11 14:43:14 +01:00
cdddacbecb [Newm] Don’t float Discord 2022-11-11 14:42:58 +01:00
d8f6399394 [Newm] Have an easier time enabling/disabling app id logging 2022-11-11 14:42:31 +01:00
3c6fdaeff2 [Mimeapps] Add flashpoint handler 2022-11-11 14:41:58 +01:00
82de5a00de [Kitty] Only enable some layouts 2022-11-11 14:41:41 +01:00
5abc354bc5 [Git] Add some options for LFS 2022-11-11 14:41:24 +01:00
590ac77ca0 [Fish] Remove old abbr, pipe out selected images
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-09 15:32:04 +01:00
ece05b7bf3 [Fish] Launch Emacs as GUI, don’t wait for it 2022-11-09 15:31:59 +01:00
d5cbecbfe0 [Bin] Better launch Wayland 2022-11-09 15:30:16 +01:00
39d16eee5f [Drone] Apparently Git was missing 2022-11-09 15:28:28 +01:00
248a93b4b6 [Newm] Add newm config to dotfiles
All checks were successful
continuous-integration/drone/push Build is passing
Still trying some stuff out, I should convert it to an org file
relatively soon-ish
2022-11-09 15:24:48 +01:00
6ce7200739 [Fish, Profile] Move custom paths to .profile 2022-11-03 12:15:55 +01:00
ffd0a3bbeb [Bin, Fish] Move most of my environment variables to .profile
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-03 11:47:00 +01:00
da8ee0d20a [Emacs] Add support for Less css
All checks were successful
continuous-integration/drone/push Build is passing
2022-11-02 16:24:44 +01:00
cac91b95a7 [Emacs] Remove unneeded keybinds
All checks were successful
continuous-integration/drone Build is passing
2022-10-26 13:10:18 +02:00
36cb18bff4 [Misc] Set BalenaEtcher as default handler of the etcher protocol 2022-10-26 13:09:54 +02:00
430d287e5c [Emacs] Set Emacs’ inferior lisp program to SBCL 2022-10-26 13:09:47 +02:00
2e188238a6 [Emacs] Add new inboxes to mu4e bookmarks logic
I recently and finally managed to get my university’s emails with
mbsync. Time to add them to mu4e.
2022-10-26 13:08:27 +02:00
2e3be809d9 [StumpWM] Exit interactive keymaps with `q' 2022-10-26 13:07:50 +02:00
490db564ce [StumpWM] Beginning to work on Systemd interactivity 2022-10-26 13:07:19 +02:00
3c4ba3d898 [PKGBUILD] Bump Emacs version, switch to PGTK
I’m using Wayland more and more often, so PGTK now has its uses
2022-10-26 13:06:51 +02:00
65ad09cc64 [Emacs] Make dictionary change possible with flyspell hydra 2022-10-19 15:07:28 +02:00
8656b7c982 [Emacs] Add Solidity support 2022-10-19 15:07:14 +02:00
738404ac60 [Emacs] Enable prettier-js for SCSS 2022-10-19 15:06:57 +02:00
dfecd1c5f9 [Emacs] Add treesitter 2022-10-19 15:06:44 +02:00
a97fb2eb64 [Emacs] Add plantuml to org languages 2022-10-19 15:06:02 +02:00
6dedcc140b [Emacs] Add keybinds for Forge 2022-10-19 15:05:47 +02:00
6f585993bc [Emacs] Move through visual lines and not absolute lines 2022-10-19 15:04:55 +02:00
e70ca0f65c [Fish] Remove `node_modules/.bin' from PATH 2022-10-19 15:03:32 +02:00
48900cc391 [Picom] Slight changes to window shadows 2022-10-19 15:03:04 +02:00
0c838facdf [Bin] Add launchers for wayland compositors 2022-10-17 16:00:13 +02:00
fa2356f326 [Org] Update the header for unique headers 2022-10-17 15:59:54 +02:00
9859cec8b0 [Emacs] Fix incorrect command in keybind 2022-10-04 13:01:31 +02:00
d87719a476 [Emacs] Switch from XeTeX to Tectonic 2022-10-04 13:01:05 +02:00
2ac463bf17 [Emacs] Only load powerline-eshell on my main computer 2022-09-22 12:49:49 +02:00
f902b6fc92 [Emacs] Switch to Doom Nord Aurora theme 2022-09-19 12:38:34 +02:00
fdcea0b0b4 [Emacs] Remove file from agenda files 2022-09-19 12:38:22 +02:00
40c7a02110 [Emacs] Fix Yadm integration in Tramp 2022-09-19 12:38:07 +02:00
d68f406ae8 [Emacs] Better iedit configuration 2022-09-19 12:37:57 +02:00
d378016e10 [Emacs] Silence Emacs compiler, remove unused functions 2022-09-19 12:37:34 +02:00
4ff8781b52 [StumpWM] Clearer documentation 2022-09-19 12:36:04 +02:00
4868f26dad [Fish] Add abbreviation for launching software with Nvida 2022-09-19 12:35:40 +02:00
12d8e434b9 [PKGBUILD] PKGBUILDs update 2022-09-19 12:34:02 +02:00
12c9adeb36 [Bin, Autostart] Picom experimental backend flag no longer needed 2022-09-19 12:02:15 +02:00
77694e9aa0 [Bin, Systemd] Move pumopm to its own user service 2022-08-31 17:24:57 +02:00
0050fc966e [StumpWM] Control media through playerctl rather than mpc directly 2022-08-31 03:46:45 +02:00
78d4736863 [Emacs] Add new agenda file, add agenda on dashboard 2022-08-31 01:55:36 +02:00
d0bd80d0b5 [Emacs] Add keybind for org-colums 2022-08-31 01:55:08 +02:00
203c710e14 [Kitty] More accessible keys 2022-08-31 01:54:10 +02:00
34db5e9dc3 [Systemd] Add service files for playerctl and mpd-mpris 2022-08-31 01:53:29 +02:00
52c23fb47c [Emacs] Simpler hook for org-unique-id
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is failing
2022-08-24 20:08:46 +02:00
2e20b9594c [Emacs] Don’t defer counsel 2022-08-24 20:08:37 +02:00
9a6cdbb370 [Emacs] Remove Github Copilot 2022-08-24 02:38:19 +02:00
262119b8e2 [Emacs] Enable LSP for web-mode buffers
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-16 13:39:29 +02:00
d7af354c40 [Emacs] Actually enable prettier-js-mode by default in web-mode
This is how the previously reverted commit was meant to go.
2022-08-16 13:36:03 +02:00
78ae3da3b1 Revert "[Emacs] Enable prettier-js and lsp for webmode by default"
This reverts commit 31817f8452.

After this commit, web-mode stopped being enabled by default when
opening Vue files. This might have affected other file types.
2022-08-16 13:26:03 +02:00
897499394b [Emacs] Add keybind for dirvish-dispatch, and some doc 2022-08-14 13:14:44 +02:00
582178a906 [Emacs] Go back to while loop in csetq
While more elegant, `cl-loop` has a heavier setup which can make it
much slower than a while loop in the long run.
2022-08-14 13:13:17 +02:00
31817f8452 [Emacs] Enable prettier-js and lsp for webmode by default 2022-08-12 17:55:59 +02:00
8cebd9636e [StumpWM] Fix issue with selecting bluetooth device 2022-08-12 17:55:39 +02:00
993cae429d [StumpWM] Fix issue with selecting bluetooth device
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-11 23:31:14 +02:00
f8ff857e3c [Bin] Remove deprecated link
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-11 19:45:03 +02:00
1be104bf32 [PKGBUILD] Bump Emacs version
Some checks failed
continuous-integration/drone/push Build is failing
2022-08-11 17:58:25 +02:00
ae1667eadd [Emacs] Remove defer on general since it gets loaded anyways 2022-08-11 17:58:03 +02:00
23f4925aa3 [StumpWM] Remove net and wifi modules from modeline
Some checks failed
continuous-integration/drone/push Build is failing
2022-08-08 20:47:22 +02:00
0bdabaf5c0 [Emacs] Add my package mdc-mode
That package is still hugely experimental and far from ready to be
used by anyone, myself included.
2022-08-08 20:37:25 +02:00
22b6991241 [Emacs] Add eask-mode 2022-08-08 20:37:12 +02:00
a58e171913 [Emacs] Documentation 2022-08-08 20:37:03 +02:00
98a7327662 [Emacs] Remove unused package 2022-08-08 20:36:48 +02:00
b96be382a6 [PKGBUILD] Update Emacs PKGBUILD 2022-08-07 12:59:23 +02:00
d23d0deafb [Emacs] Add prettier-js-mode to typescript-mode 2022-08-07 12:59:23 +02:00
d7cdb51652 [Emacs] Force tabs in all Makefiles 2022-08-07 12:59:22 +02:00
054513273e [Emacs] Remove org-superstar in favor of org-modern 2022-08-07 12:59:22 +02:00
9c2f4a5907 [Emacs] Add possibility to run asynchronously org code blocks 2022-08-07 12:59:22 +02:00
c6a3771ff4 [Emacs] Replace dired with dirvish, optimize TRAMP 2022-08-07 12:59:22 +02:00
489074ddf1 [Emacs] Ignore node_modules directory in projectile 2022-08-07 12:55:51 +02:00
93a4fcc876 [Emacs] Less transparency by default on Emacs frames 2022-08-07 12:55:00 +02:00
bf121fec10 [StumpWM, Emacs, Bin] Move randr calls to xinitrc files
Due to a recent bug, StumpWM crashes if the screen layout is
reorganized in its configuration file (maybe not just then, I’ll have
to check).

Thus, this commit removes calls to xrandr and autorandr from my WM
configurations and moves them to their respective xinitrc file. It
also removes the `set-screens` script in my scripts collection as it
became obsolete the moment I began using `autorandr` instead.

It also removes the call to `xsetroot` in my StumpWM config since it
is redundant with its xinitrc file.
2022-08-07 12:51:10 +02:00
1e1e40160e [Emacs] More avy! 2022-07-24 11:44:24 +02:00
e88826f8d4 [Emacs] Better Dired file listing option 2022-07-24 11:41:16 +02:00
41c7c1f1a0 [Emacs] Add my Appwrite server SDK
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-19 11:24:50 +02:00
713cc07687 [StumpWM] Launch autostart even if autorandr fails 2022-07-19 11:24:13 +02:00
3b64c8e467 [Emacs] Update TODOs
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-12 04:30:50 +02:00
0cc2c90262 [Emacs] Replace npm-mode with npm-transient 2022-07-12 04:30:31 +02:00
ca38157732 [Emacs] Add dotenv-mode package 2022-07-12 04:30:18 +02:00
b208f19a8f [Kitty] Update theme settings
Also remove unused comments
2022-07-12 04:29:50 +02:00
efe4db37a3 [Emacs] Enable magit-todos by default, except for yadm
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-06 21:05:10 +02:00
2afef395a1 [Emacs] Update ignored elcord buffers
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-06 12:56:26 +02:00
ef404d0579 [Emacs] Enable rjsx-mode for jsx files
Duh
2022-07-06 12:56:06 +02:00
b4be7962fd [Emacs] Fix org-msg loading
Fix https://github.com/jeremy-compostella/org-msg/issues/153 on my
side
2022-07-06 12:55:15 +02:00
a494188cfa [Emacs] Remove obsolete variable, favor csetq to setq
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-05 15:44:23 +02:00
4a980af18d [Emacs] Add keybind for counsel-yank-pop
All checks were successful
continuous-integration/drone/push Build is passing
2022-07-05 15:31:14 +02:00
38837df541 [Emacs] Add Emacsql configuration 2022-07-05 15:30:53 +02:00
7e1d96e677 [Emacs] Remove references to minted, default to engraved backend 2022-07-05 15:30:35 +02:00
7e41b4cf70 [Emacs] Remove unused variable 2022-07-05 15:30:10 +02:00
431750aa12 [Emacs] Round transparency parameter to a nicer value 2022-07-05 15:29:45 +02:00
c3a8a7cf4a [Bin] Nicer elisp, tables formatting and code output 2022-07-05 15:29:03 +02:00
ff045fdc3a [Emacs] Fix issue with forge bindins, prefer csetq to setq
All checks were successful
continuous-integration/drone Build is passing
2022-07-03 12:26:30 +02:00
92e2eaeebc [Emacs] Add multi-vterm package 2022-07-03 12:26:04 +02:00
1703b07d91 [Emacs] Simplification and optimisation of org-msg-signature
It’s faster to modify text while it is still in a buffer. The code is
also much simpler and nicer to look at.
2022-07-03 12:24:28 +02:00
fa2e092f89 [Fish] Add local node_module’s bin to path 2022-07-03 12:24:10 +02:00
10e1695b16 [Mimeapps] Change wma player to mpv 2022-07-03 12:23:17 +02:00
8e916fad6c [Emacs] Long overdue removal of todo item 2022-06-28 23:41:49 +02:00
82e7832806 [Emacs] Fix elisp syntax 2022-06-28 23:41:35 +02:00
d2a56db780 [Emacs] mu4e workaround
Workaround for https://github.com/djcb/mu/issues/2282
2022-06-28 23:39:56 +02:00
570834c65c [Emacs] Remove incompatible code with mu4e 1.8 2022-06-28 23:39:38 +02:00
81a3b67f63 [Emacs] Better web-mode config, cleaner prettier-js config
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-26 22:24:49 +02:00
bfef9895d6 [Emacs] Fix hydra doc 2022-06-26 22:24:14 +02:00
1c2c33fd8c [Emacs] Better copilot settings 2022-06-26 22:24:03 +02:00
3bf05c8141 [Emacs] Better settings for LaTeX export with source code 2022-06-26 22:23:41 +02:00
914bfdb3b6 [Bin] update cache of elisp function 2022-06-26 22:19:55 +02:00
e6ffd2aba2 [Emacs] Evil visual line movement in markdown and org
Markdown and org files can contain long files that span several visual
lines. Moving with `evil-next-line' and `evil-previous-line' is not
exactly comfortable when that’s the case. `evil-next-visual-line' and
`evil-previous-visual-line' come to the rescue!
2022-06-26 22:19:51 +02:00
4940ee4fd3 [Emacs] Remove obsolete package, reword documentation
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-18 15:47:47 +02:00
c61bf53945 [Emacs] Add org-roll package 2022-06-18 15:47:28 +02:00
3f80d91c86 [Emacs] Fix syntax issues 2022-06-18 15:46:42 +02:00
06c444c92a [Emacs] Remove after! macro 2022-06-15 22:36:00 +02:00
a1c1387df9 [Emacs] Simpler and more effective csetq 2022-06-15 22:25:29 +02:00
26e8a61c1b [Emacs] Better customization of doom modeline 2022-06-15 21:52:34 +02:00
218307bf8e [Emacs] Add Emacs Package Dev Handbook 2022-06-15 21:50:04 +02:00
c32ae1347b [Emacs] Add ltex-lsp to Emacs 2022-06-15 21:48:01 +02:00
c8f8dcdf67 [Emacs] Remove smartparens-latex, replace after! with use-package 2022-06-15 21:42:18 +02:00
b60afb67d7 [Emacs] Improve Vue development experience 2022-06-15 21:41:17 +02:00
1550d6c3e9 [Emacs] Implement setq-like customize-set-variable macro 2022-06-15 21:38:51 +02:00
9215d8dd1e [Emacs] Better web dev options
All checks were successful
continuous-integration/drone/push Build is passing
Improve keybindings for Emmet

Auto-enable web-mode for Vue files

Prefer single quotes in Javascript and Typescript
2022-06-10 10:43:42 +02:00
f7af204479 [Emacs] Resize treemacs icons 2022-06-10 10:43:41 +02:00
09867381eb [Emacs] Enable ispell only if aspell executable is found 2022-06-10 10:43:41 +02:00
179fe277f4 [Emacs] Add Gitlab regex to mu4e bookmarks 2022-06-10 10:43:41 +02:00
515eb4ad43 [Emacs] Remove unneeded pieces of code
Also update cache of org babel result
2022-06-10 10:43:18 +02:00
77dbd8747f [Emacs] Don’t tangle generating code 2022-06-10 10:35:25 +02:00
8b8a5a1a64 Shorten CI time
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-07 19:46:43 +02:00
73c629afc4 [Misc] Move files to XDG user dirs
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-07 19:45:58 +02:00
23c9e37dfc [SBCL] Remove duplicate code 2022-06-07 19:45:58 +02:00
1dba663994 [PKGBUILD] Bump Emacs version 2022-06-07 19:45:58 +02:00
c35c79af4d [Misc, export] Better setup for package archives in exporter 2022-06-07 19:45:57 +02:00
9c830f69f8 [Emacs] Fix Eshell alias file path 2022-06-07 15:46:42 +02:00
211ec0c797 [Misc] Remove Yay config 2022-06-07 15:43:50 +02:00
641a3a4aaf [Tmux] Remove Tmux submodule and config
All checks were successful
continuous-integration/drone/push Build is passing
2022-06-07 15:42:27 +02:00
37406daca9 [Bin] Better autostart
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-31 21:08:08 +02:00
386fe3962e [StumpWM] Register AltGr key 2022-05-31 21:07:45 +02:00
031ef95b5e [StumpWM] Add Emacs group 2022-05-31 21:07:29 +02:00
0352d55664 [Fish] Remove dart’s binaries directory from PATH 2022-05-31 21:02:17 +02:00
7d4ceee8ac [Emacs] Remove Lua packages 2022-05-31 21:01:47 +02:00
411680496e [Emacs] Add Cask mode 2022-05-31 21:00:57 +02:00
3a89d7ef3e [Emacs] Fix incorrect parenthesis 2022-05-31 20:59:59 +02:00
dbafe01b1d [Emacs] Remove mediawiki, too buggy
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-22 14:13:32 +02:00
342b1ea1df [Fish] rsync abbreviation 2022-05-22 14:12:53 +02:00
6feecc1fdc [Bin, Fish] Better handling of unknown executables
Only execute stuff if it is in PATH.
2022-05-22 14:11:58 +02:00
beaea0bd66 [Emacs] Add sudo and sudoedit TRAMP protocols to ignored recentf
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-20 18:18:08 +02:00
50c45cbbf4 [Bin] Fix rofi-emoji
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-19 18:22:31 +02:00
53de06b844 [StumpWM] Fix concurrency issue
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-19 18:20:33 +02:00
3a80cc13d2 Update sitemap 2022-05-19 18:20:25 +02:00
82aee2bf9e [Emacs] Add Reddit option for atomic chromium 2022-05-19 18:19:26 +02:00
20e758789e [Emacs] Update package specifications 2022-05-19 18:19:04 +02:00
c7519cfd9d [Emacs] Simplify background transparency settings
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-17 17:26:17 +02:00
8971a5b868 [Emacs] Make sure Forge keybinds are integrated with Magit 2022-05-17 17:24:27 +02:00
143161387a [StumpWM] Dedicated threads for potentially blocking commands
All checks were successful
continuous-integration/drone/push Build is passing
Sometimes StumpWM hangs because of blocking commands. Instead of
making StumpWM completely hang, only its dedicated thread will.
2022-05-15 00:40:55 +02:00
f92904cdb0 [StumpWM] Simpler initial shell command 2022-05-15 00:40:55 +02:00
9f313b42cd [Emacs] Better lisp-mode configuration 2022-05-15 00:40:55 +02:00
debc346acf [Emacs] Org-mode-like code-block editing for Markdown 2022-05-15 00:40:55 +02:00
a38e2bede6 [Emacs] Use engrave backend for org-mode PDF exports 2022-05-15 00:40:33 +02:00
6344ef7292 [Emacs] Fix python in org-babel 2022-05-15 00:37:24 +02:00
25a9a14534 [Emacs] Markdown-mode when editing text for Github 2022-05-15 00:36:44 +02:00
d99f605d5b [Emacs] Typo and formatting 2022-05-15 00:32:51 +02:00
1c911b9821 Revert "[StumpWM, bin] Add weather module to StumpWM..."
This reverts commit d78be92786.
2022-05-08 23:15:26 +02:00
ee7e82ea03 [StumpWM] Fix name of font family
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-06 23:29:24 +02:00
d78be92786 [StumpWM, bin] Add weather module to StumpWM, convert we to POSIX sh
All checks were successful
continuous-integration/drone/push Build is passing
Convert script `we` from fish to POSIX shell

Add two new scripts:
- stump-choose-city
- stump-weather
The former one sets the default city used for weather. The latter
generates the output used by StumpWM’s mode-line.
2022-05-06 23:27:01 +02:00
46bae114e3 [Emacs] Ignore files opened through yadm/TRAMP 2022-05-06 23:26:20 +02:00
a70aac1ba5 [Emacs] Fix eshell clear alias
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-06 19:50:10 +02:00
446db02df4 [Emacs] Fewer regexes for recentf-exclude
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-06 19:48:12 +02:00
7d04a5c41a [Emacs] Add maildir keybinds to mu4e
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-05 16:08:48 +02:00
07744e872a [Misc] Update encrypted files
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-02 02:41:37 +02:00
81eb9954f8 [Misc] Update encrypted files
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-02 02:28:32 +02:00
0c971ae5a7 [Bootstrap] Correct font for StumpWM
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-02 01:39:52 +02:00
9fc9e7daf4 [paru] Add mkdir directive for paru config 2022-05-02 01:39:51 +02:00
3a75118e0d [Bootstrap] Remove code for Chaotic AUR
All checks were successful
continuous-integration/drone/push Build is passing
They change from time to time, so I can’t keep shell code for
installing Chaotic AUR repository
2022-05-02 01:03:18 +02:00
49014b6c4e [StumpWM, SBCL] Add sbclrc, instructions for clx-truetype
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-02 00:59:50 +02:00
e924306b15 [Qutebrowser] Fix symlink
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-02 00:32:55 +02:00
6ee3af65bd [Fish] Only execute pumo-system-info if found
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-01 23:17:34 +02:00
e832b3cda9 [PKGBUILD] Update nsxiv config.h 2022-05-01 23:17:33 +02:00
f1df008c43 [Emacs] Clean elcord boring buffers
All checks were successful
continuous-integration/drone/push Build is passing
2022-05-01 18:03:12 +02:00
77e208d683 [Emacs] Add bibliography for org-cite 2022-05-01 18:02:53 +02:00
53ef8cb04b [Emacs] New keybinds 2022-05-01 18:02:28 +02:00
ff6435594c [Emacs] Update filters for mu4e bookmarks 2022-05-01 18:01:44 +02:00
c734fea7c4 [PKGBUILD] Remove PGTK option for Emacs 2022-05-01 18:00:29 +02:00
8c1e8c9b5b [PKGBUILD] Re-enable xwidget browser in Emacs, version bump
All checks were successful
continuous-integration/drone/push Build is passing
The xwidget browser is a lot more stable now! Not perfect yet, but
usable with simple websites.
2022-04-21 14:31:59 +02:00
40f211bdd8 [Gitconfig] Add email credentials helper
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-21 12:40:26 +02:00
5bbfcdfd2b [StumpWM] Make backlight changes more natural 2022-04-21 12:39:28 +02:00
525711238f [Emacs] Load org-protocol by default 2022-04-21 12:39:07 +02:00
bb1dfc15fc [StumpWM] Fix issue with undeclared my/kbd
`my/kbd` appeared as undefined in `bluetooth.lisp` and
`utilities.lisp`. This commit fixes this error.
2022-04-19 15:30:48 +02:00
3e476e67a9 [Emacs] Remove unused code with undo-tree config, update doc
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-19 14:34:50 +02:00
59335cf663 [Emacs] Fix Magit keybinds
With a recent package update, whether by Magit’s or Evil Collection’s
fault, the keybinds for `c` and `t` got replaced with evil movement up
and down instead of respectively staging and tagging in Magit. This
commit fixes this behavior.
2022-04-19 14:31:07 +02:00
5bd012e5b9 [StumpWM] Simplify keybinds declaration
All checks were successful
continuous-integration/drone/push Build is passing
This commit adds the function `my/kbd` which translates characters
`kbd` does not know into their internal name.

Simplify Elisp noweb code.
2022-04-19 14:10:55 +02:00
b708275c36 [Topgrade] Add topgrade config to dotfiles 2022-04-19 13:19:41 +02:00
e7b85d56d4 [Emacs] Add Github Copilot package
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-18 21:17:31 +02:00
f6d7485531 [Emacs] Remove prettified keywords 2022-04-18 21:17:09 +02:00
1b224d1aaf [Emacs] Add Condict project packages 2022-04-18 21:16:51 +02:00
5639ce1fc8 [Emacs] Fix errors on Emacs startup 2022-04-18 21:16:24 +02:00
b0ace772ce [Emacs] Change scrolling behavior in Emacs
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-11 14:50:29 +02:00
f29e48ed37 [Bin] Add CPU scaling script 2022-04-11 14:50:05 +02:00
d41fc9c3ca [Emacs] Update mu4e filters
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-06 19:52:42 +02:00
e2a19dec6e [Emacs] Better LangTool configuration 2022-04-06 19:44:02 +02:00
67bbce62d9 [Emacs] add elisp-demo, some more documentation
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-06 19:01:41 +02:00
e1454699ea [Emacs] Some more documentation
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-06 18:55:42 +02:00
aafb677591 [Emacs] improve Dired configuration
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-06 18:51:14 +02:00
26f1999c02 [Emacs] Better undo-tree configuration 2022-04-06 18:51:01 +02:00
8ff0beec06 [Emacs] More documentation 2022-04-06 18:50:46 +02:00
4d7f5fe947 [StumpWM] Update ncmpcpp keybind 2022-04-06 18:48:45 +02:00
d2d00d4442 [StumpWM] Minor markup change 2022-04-05 17:16:19 +02:00
f5df9b649f [Emacs] Only use xelb when using EXWM 2022-04-05 17:16:19 +02:00
f22e54691d [Emacs] TRAMP optimisation
Disable all-the-icons-dired for remote repositories
Disable auto-save and backups for files opened with TRAMP
2022-04-05 17:16:19 +02:00
b13b6f1e64 [Emacs] Update list of ignored files in recentf
Also simplify regex
2022-04-05 17:16:19 +02:00
57ad8b2fdc [PKGBUILD] Switch to Emacs 29.0.50
Rebase Emacs PKGBUILD on AUR’s emacs-git
2022-04-05 17:16:19 +02:00
0e413d00a3 [StumpWM] Replace scrot with Flameshot 2022-04-02 15:19:39 +02:00
e5ddea6fd8 [Emacs] Add Gemini and Github-flavored markdown
All checks were successful
continuous-integration/drone/push Build is passing
2022-04-02 15:05:35 +02:00
3e140e7302 [StumpWM] Fix ncmpcpp keybinds 2022-04-02 15:04:50 +02:00
f81518ddd2 [Emacs] These prettified symbols are actually quite annoying
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-30 20:32:33 +02:00
7f2cae36af [Emacs] Add keybind for editing org table formulas 2022-03-30 20:24:18 +02:00
420373806a [Rofi] Update theme 2022-03-30 20:23:26 +02:00
e6387f84c5 [Desktop] Generate nicer Lisp and Elisp output 2022-03-28 02:07:03 +02:00
d63da4af42 [StumpWM] Update some elisp, more natural keybind declaration
If characters such as `«` or `»` are used, they get replaced by their
complete name. See table `tbl-char-to-name`.
2022-03-28 02:05:39 +02:00
4a6fbf3264 [Meta, Org] Update Matomo script to reflect server changes 2022-03-28 02:00:14 +02:00
872e508fc7 [StumpWM, Emacs] Change keybind for changing volume 2022-03-28 01:59:32 +02:00
a90bccca20 [Qutebrowser] Fix broken configuration
Configuration is now purely done through Python files
2022-03-27 22:19:14 +02:00
d2caf80154 [StumpWM] Better parity between Emacs and StumpWM keybinds 2022-03-27 22:18:16 +02:00
bc58766587 [Emacs] LSP optimizations 2022-03-27 22:17:55 +02:00
44b65c2d72 [Emacs] Update org project on conlanging 2022-03-27 22:17:31 +02:00
bfe1102c37 [Emacs] Reword some stuff 2022-03-15 18:31:56 +01:00
196df4fb44 [Emacs] Fix keybindings in Eshell
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-15 18:25:38 +01:00
2c7d159e9b [Emacs] Improve EXWM config
Add keybind for `exwm-debug`, fix rofi keybinds

Autostart now executed through my script in bin.org

Correct argument for `:if` in `use-package` directives

Reorganize screens for current correct layout
2022-03-15 18:21:56 +01:00
3fa9d52ddc [Emacs] Better bookmarks 2022-03-15 18:19:41 +01:00
6230f63a6e [Emacs] Promote heading, remove "Org Functions" heading
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-10 22:53:38 +01:00
ece09caca8 [Emacs] Move custom org functions in org configuration
Move `phundrak/toggle-org-src-window-split' to org configuration

Add org emphasis functions and their keybindings
2022-03-10 22:52:31 +01:00
d3d5e12222 [Emacs] Let SSH manage the ControlMaster options 2022-03-10 22:27:20 +01:00
896b3f6fe9 [Emacs] Ignore email drafts in recentf 2022-03-10 22:27:04 +01:00
d9299b664d [Emacs] Clarify some text 2022-03-10 22:26:52 +01:00
3cd50d88da [Emacs] Remove redundant functions 2022-03-10 22:26:31 +01:00
de78e16bd9 [StumpWM, Bin] Replace StumpWM’s notification manager with Dunst 2022-03-10 22:25:56 +01:00
84e3c91c51 [Emacs] Add function to remove junk files in conlanging org project 2022-03-06 22:16:46 +01:00
d5cf97d888 [Emacs] Update list of ignored files in recentf 2022-03-06 22:16:15 +01:00
1f11d7685e [StumpWM] Wider outer gaps 2022-03-06 21:48:12 +01:00
7b4c5a62db [StumpWM] Update sly functions
Rename `start-sly-server` to `sly-start-server`.

Add `stop-sly-server`. It will always try to stop a server running on
port 4005 (default port used by `sly-start-server`)
2022-03-06 21:46:46 +01:00
ff119ce02c [Emacs] Update path and name of org conlanging project 2022-03-06 21:45:52 +01:00
7bdab40832 [Bin] KDEConnect in autostart, proper bash for default audio sink 2022-03-06 21:43:40 +01:00
61c123799b [Emacs] Do not run any EXWM code if it is not used
Only run the configuration code for EXWM if the argument `--with-exwm'
is passed to Emacs, otherwise don’t
2022-03-04 15:09:51 +01:00
30086fa7ce [Emacs] Keybind to quickly open straight repositories
All checks were successful
continuous-integration/drone/push Build is passing
2022-03-04 14:49:01 +01:00
d4285f76d5 [Emacs] Disable by default valign-mode 2022-03-04 14:29:17 +01:00
64d016be84 [Emacs] Update ignored paths in recentf 2022-03-04 14:26:52 +01:00
507278d043 [Emacs] Add work in progress Bitwarden package 2022-03-04 14:26:33 +01:00
02c54f3709 [StumpWM] Update volume keybinds
Some checks failed
continuous-integration/drone/push Build encountered an error
Do not use amixer but pactl
This allows to modify the volume of whichever the default output is
instead of just the main output of the computer.
2022-03-01 20:20:12 +01:00
4c42a17fc6 [Bin] Huge simplification of wacom-setup
Some checks failed
continuous-integration/drone/push Build encountered an error
It’s not a one-liner yet, but it’s still much shorter and cleaner than
the previous mess.
Also change wacom-setup from a fish script to a sh script
2022-03-01 20:18:41 +01:00
d379f83cc8 [Bin] Make HDMI1 on the left by default
My setup changed, therefore put HDMI1 on the left of my computer.
2022-03-01 19:50:02 +01:00
728cfed605 [Mimeapps] Make nsxiv my default image viewer 2022-02-28 19:52:50 +01:00
c0f6bbc5a7 [Bin] Fish to bash autostart, fix some bash issues
Autostart is now written in Bash.

Autostart now loads a module to automatically switch devices for
PipeWire/PulseAudio when a new one is connected.

Fix some issues with using "$@" instead of "$*"
See Shellcheck’s SC2148
2022-02-26 15:40:15 +01:00
e1077bad9a [Emacs] Better tables in org-mode and markdown-mode 2022-02-26 15:39:44 +01:00
ca0cb65cdb [Emacs] Make elcord ignore more buffers 2022-02-26 15:39:22 +01:00
81a6020e83 [Emacs] Add major mode for systemd files 2022-02-26 15:38:54 +01:00
4d4f9f92ea [Emacs] Use external converter by default in image-mode 2022-02-26 15:38:16 +01:00
3e0065d9d1 [Emacs] Customize a bit Eshell’s prompt 2022-02-26 15:38:02 +01:00
bcfded9a76 [Emacs] Mu4e bookmarks reorganization 2022-02-26 15:37:42 +01:00
d982b0f6d5 [Fish] Add XFCE PolKit to PATH, add sxiv abbreviation 2022-02-26 15:37:01 +01:00
56317cc09b [Bootstrap] Switched to Pipewire 2022-02-26 15:36:23 +01:00
8bc5d228dd [Fish, Bin, Bootstrap] Sxiv to Nsxiv, install custom packages
All checks were successful
continuous-integration/drone/push Build is passing
Change all references of sxiv to nsxiv.

In bootstrap, install my custom packages from their PKGBUILD rather
than from repositories.
2022-02-24 17:13:23 +01:00
490772669b [Sxiv] Upgrade from sxiv to nsxiv
All checks were successful
continuous-integration/drone/push Build is passing
The PKGBUILD file creates a symlink to sxiv in case scripts and
programs still try to refer to it instead of nsxiv
2022-02-18 13:29:01 +01:00
7d48b240f8 [Bin, PKGBUILD] Add sxiv keyhandler to bin.org, update sxiv source
All checks were successful
continuous-integration/drone/push Build is passing
My sxiv package is now based on bakkeby’s fork of sxiv, since the
original repo is now archived
2022-02-18 00:12:53 +01:00
67916b1c9d [Emacs] Automatically enable LSP for sh-mode, register remote client
All checks were successful
continuous-integration/drone/push Build is passing
Register remote shellcheck LSP server as a new LSP client
2022-02-17 23:38:01 +01:00
27c7bd52a5 [Bootstrap] Packages now held in tables 2022-02-17 23:37:30 +01:00
fb86be08b7 [Readme] Update and add badges
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-14 15:33:07 +01:00
51b4b81c2e [Emacs] Fix org-mode keybind 2022-02-14 15:31:45 +01:00
a8aa2babd1 [StumpWM] Better media keys handling 2022-02-14 10:54:14 +01:00
6ef0d313e0 [StumpWM] Add keybind for XF86Mail to open mu4e
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-13 19:47:35 +01:00
c3da7367a8 [Emacs] Add keybinds for indirect buffer cloning 2022-02-13 19:47:12 +01:00
1b5f76c050 [Index] Reword some stuff
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-12 12:54:43 +01:00
6fa1fa5aec [Emacs] Add Info-mode to writeroom major modes
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-12 12:51:59 +01:00
8d6b7225f5 [Emacs] Add mediawiki front-end 2022-02-12 12:51:59 +01:00
3634a96054 [Org files] Fix org-lint issues
Replace deprecated `HEADERS' keyword with `HEADER'

Fix broken links

Better headers in some files

Fix some typos
2022-02-12 12:51:52 +01:00
cde979c0e4 [StumpWM] Change shortcut from discord-canary to discord 2022-02-12 12:39:58 +01:00
6fe83f0cbd [Picom] Minor picom tweaks 2022-02-12 12:39:58 +01:00
c44ca3da64 [Bin] Add experimental backends flag to picom
The upgrade from picom-git to picom makes it necessary to have this
flag enabled to have kawase-blur and rounded corners active at the
same time
2022-02-12 12:39:57 +01:00
9fa2147042 [Bootstrap] Update bootstrap to current config
Set default locale to en_DK to get sane defaults

Update package list:
- Remove mpd-rich-presence-discord-git
- Replace picom-git by picom

When installing packages, skip PKGBUILD review for AUR packages

Update list of org files to be tangled, as well as their needed
directories
- Remove awesome.org
- Add mpd.org
- Add neofetch.org
- Add stumpwm.org

Remove commands related to Spacemacs

Remove commands to symlink files in .etc in commit d1a639adaf

Better configuration for nordvpn

Symlink plock from its actual location. It is not guaranteed `which
plock` can already return something.

Remove installation of packages through pip

Remove Chicken installation

Update Fisher installation
2022-02-12 12:39:57 +01:00
b5499c4929 [Emacs] Well, it wasn’t gonna work without `shell-command' 2022-02-12 12:39:57 +01:00
dd4bd72d70 [Emacs] Set font for main server AND new frames 2022-02-12 12:39:57 +01:00
6bf56bbce3 [Emacs] Better visual settings for nov.el and markdown-mode
As well as a typo fix
2022-02-12 12:39:57 +01:00
7eda6ea9e6 [Picom] Remove deprecated option
All checks were successful
continuous-integration/drone Build is passing
2022-02-09 18:26:40 +01:00
73c1ae1a69 [Emacs] Set mirror for stardiviner’s deleted repos
All checks were successful
continuous-integration/drone/push Build is passing
2022-02-07 12:06:26 +01:00
bae81921f2 [Emacs] Activate writeroom-mode for text, org, and markdown modes 2022-02-07 12:05:50 +01:00
ae075d044d [Emacs] Better options when opening a YouTube video
All checks were successful
continuous-integration/drone Build is passing
2022-02-05 12:42:33 +01:00
5e51cba460 [Emacs] Add warning about noweb syntax
All checks were successful
continuous-integration/drone Build is passing
2022-02-05 12:25:35 +01:00
4021b8927f [Qutebrowser] Formatting
All checks were successful
continuous-integration/drone Build is passing
continuous-integration/drone/push Build is passing
2022-02-04 17:05:14 +01:00
cb37cb7208 [Qutebrowser] Allow everything from my domains 2022-02-04 17:04:40 +01:00
1d91bdf0af [StumpWM] Fix function name 2022-02-04 17:03:30 +01:00
90eaa3e1aa [Emacs] Add Enime package 2022-02-04 17:03:16 +01:00
50f88473d0 [PKGBUILD] version bump for sxiv and Emacs 2022-02-04 17:02:58 +01:00
688080eff6 [Bin] Sanitize bash scripts, some conversion from fish to bash 2022-02-04 17:02:30 +01:00
6d6af02910 [Emacs] Add keybinds for flyspell 2022-02-04 17:02:01 +01:00
1f51371031 [Emacs] Add syntax highlighting for SSH config files 2022-02-04 17:01:43 +01:00
8b68f2db2c [Emacs] Fix error on startup 2022-02-04 17:01:30 +01:00
47c4b15a58 [Emacs] Plaintext emails viewed in writeroom-mode
In mu4e, emails in plaintext are viewed in writeroom-mode by default
2022-02-04 17:00:54 +01:00
999485e609 [Emacs] Open YouTube videos with mpv in Elfeed 2022-02-04 17:00:36 +01:00
06952a677d [Emacs] Some more transparency with the Emacs client 2022-02-04 17:00:20 +01:00
a18e1f1d48 [Emacs] Move Emacs configuration to XDG_CONFIG_HOME 2022-02-04 16:59:53 +01:00
6cf295c5dc [Fish] Add Ruby 3.0 binaries to PATH 2022-01-26 10:06:28 +01:00
18658a1556 [Emacs] Add Zig configuration 2022-01-26 10:06:12 +01:00
6123dec4e3 [Emacs] Prefer plaintext in mu4e message viewer 2022-01-26 10:05:53 +01:00
58cd252d56 [PKGBUILD] Version bump 2022-01-26 10:04:46 +01:00
e530aeb269 [Bin] Typo 2022-01-26 10:04:37 +01:00
8afc189c3d [sxiv] Add JPG conversion keybind 2022-01-26 10:03:57 +01:00
366ccd6e57 [Emacs] Add Avy shortcuts 2022-01-07 21:09:04 +01:00
4e4897021a [Emacs] Add editorconfig package 2022-01-07 21:08:51 +01:00
2be9240de9 [Emacs] Ensure pdf-tools is always properly compiled 2022-01-07 21:08:30 +01:00
90c3f2b8ff [Emacs] Add shortcut for package screenshot 2022-01-07 03:37:46 +01:00
be80e8b838 [Emacs] Add hl-todo configuration 2022-01-07 03:37:34 +01:00
243386c9e4 [Emacs] Remove uptime tracker
It causes more issues than it solves really
2022-01-07 03:37:05 +01:00
0e76b9f06e [Emacs] Install eshell-info-banner through ssh
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-05 14:13:39 +01:00
f86344561e [Emacs] Remove some prettify symbols in Lisp modes 2022-01-05 14:12:53 +01:00
47a11d9473 [Emacs] Install plantuml-mode through straight 2022-01-05 14:12:37 +01:00
55a12d8a80 [Emacs] Better straight.el usage
Add username for Github and Gitlab when using straight fork
Change default remote when a package is cloned by straight
Install use-package through straight.el
2022-01-05 14:10:40 +01:00
cc70db8439 [Emacs] Remove buggy line
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-04 20:29:44 +01:00
5cd880caf4 [Emacs] Add Solaire Mode
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-04 18:31:15 +01:00
5ef9aea7ab [StumpWM] Change floating window modifier to super
All checks were successful
continuous-integration/drone/push Build is passing
2022-01-04 18:17:10 +01:00
73203756e3 [Emacs] Add LaTeX configuration 2022-01-04 18:16:58 +01:00
184731f105 [Emacs] Update mu4e bookmarks, simplify code 2022-01-04 18:16:34 +01:00
b366894391 [Emacs] Update introduction 2022-01-04 18:16:15 +01:00
51bdc06b57 Revert "[PKGBUILD] Switch to Emacs 29"
This reverts commit 2a560e4b79.
2021-12-28 13:46:34 +01:00
1091aba3a8 [Emacs] Fix moving windows in EXWM
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-27 18:56:54 +01:00
55b404437d [Emacs] Add org-capture configuration 2021-12-27 18:51:30 +01:00
ea11f87856 [Emacs] Update mu4e filters and bookmarks 2021-12-27 18:35:08 +01:00
2a560e4b79 [PKGBUILD] Switch to Emacs 29
All checks were successful
continuous-integration/drone/push Build is passing
Temporarily remove TheVaffel’s patch

Reactivate PDF doc and Xwidgets support
2021-12-27 14:33:27 +01:00
e918a346fc [Emacs] No need to defer loading recentf
All checks were successful
continuous-integration/drone/push Build is passing
Recentf is used as soon as Emacs is created, no need to defer it and
its configuration.
2021-12-27 13:46:27 +01:00
fe423e421a [Emacs] Fix loading `ob-latex-as-png' 2021-12-27 13:46:27 +01:00
290c07d741 [Emacs] Widen inline images in org-mode 2021-12-27 13:46:27 +01:00
1f38d7a68c [Emacs] Use DBus calls instead of shell commands 2021-12-27 13:46:27 +01:00
91b06ee7b1 [Emacs] Fix commit f5a9608
f5a9608 introduces a bug which prevents the font from being applied if
Emacs is started as a server through systemd, since it does not start
in GUI mode. This commit fixes this behavior by applying the
user-defined font when a new frame is created since the new frame
might be in GUI mode.
2021-12-27 13:46:23 +01:00
413ecb2d2b [Emacs] Add Emacs debugging shortcuts
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-26 14:51:36 +01:00
f5a9608420 [Emacs] Better font configuration 2021-12-26 14:51:20 +01:00
bf9935d309 [Fish, Bootstrap] Remove unneeded fish extensions
Zoxide and Starship now replace z and bobthefish respectively
2021-12-25 21:32:49 +01:00
66475c058c [StumpWM] Add keybinding for qutebrowser
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-20 15:25:16 +01:00
6b1c2afe08 [Emacs] Add counsel keybindings, fix typo 2021-12-20 15:24:57 +01:00
a5785847f7 [Emacs] Add recentf configuration 2021-12-20 12:03:35 +01:00
82bef92274 [Fish, Starship] Lisp module is displayed a bit more nicely
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-20 11:37:09 +01:00
fc85c94a76 [Emacs] Move paragraphs down
It just makes a bit more sense to me.
2021-12-20 11:36:39 +01:00
4803c106b0 [Emacs] Create directory if it does not exist
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-19 15:24:43 +01:00
e7b8610387 [Emacs] Replace modern string-join' with mapconcat'
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-19 13:00:26 +01:00
44c47b9841 [Emacs] Remove deprecated org ELPA
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-19 11:12:59 +01:00
725233bd4b [StumpWM] Change direction powerline in mode-line, update screenshot
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-18 14:26:29 +01:00
7195f92017 [Fish] Switch to starship shell prompt
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-18 11:54:32 +01:00
c5d1c964cf [Fish] Delete mostly broken code, replace with custom utility
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-17 18:41:03 +01:00
2dfabd7d56 [StumpWM] Move xinitrc files to their respective .org file
All checks were successful
continuous-integration/drone/push Build is passing
Move .xinitrc.emacs to emacs.org
Move .xinitrc.stumpwm to stumpwm.org
Move .xinitrc.awesome to Deprecated/awesome.org
2021-12-17 17:08:28 +01:00
0e86789285 [Emacs] Better LSP setup, restore lua-mode 2021-12-17 16:56:17 +01:00
ac04636e54 [Emacs] Better bépo support with Evil 2021-12-17 16:42:14 +01:00
294411d73b [Emacs] Remove useless lines of code 2021-12-17 16:30:44 +01:00
87ce209298 [Emacs] Add csv-mode 2021-12-17 16:30:29 +01:00
4753dc9f66 [Emacs] Fix keybinds 2021-12-17 16:30:16 +01:00
03136e7f11 [Emacs] Add documentation, remove slim-mode
Add documentation for Python, webdev, modeline, theme, rainbow
delimiters, and keycast.
2021-12-17 16:30:03 +01:00
246cfdf19a [Emacs, StumpWM] Add Sly configuration 2021-12-17 16:27:09 +01:00
b8c0445d9c Appropriately rename my PKGBUILD directory 2021-12-17 16:24:41 +01:00
78fba911e7 [StumpWM] Less groups, only one automatic window placement
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-12 15:06:42 +01:00
69a12a3d4a [Emacs] Fix automatic mode for Rustic 2021-12-12 15:06:00 +01:00
b8ef56942e [Emacs] Update keybinds
`SPC e' is now dedicated to flyspell and errors-related functions.

Email keybinds move from `SPC e' to `SPC a e', and elfeed moves from
`SPC a e' to `SPC a E'
2021-12-12 15:04:35 +01:00
5a5725fec9 [Emacs] Update hydra-media appearance 2021-12-12 15:03:36 +01:00
153d7bc9a9 [Emacs] Add workaround for tecosaur/screenshot/issues/11 2021-12-12 15:02:34 +01:00
be17ca1690 [Emacs] Add image I forgot to stage
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-07 20:08:00 +01:00
b31562078d [Emacs] Add typescript keybinds, fix auto-mode-alist addition 2021-12-07 10:14:41 +01:00
3d71fb43af [Emacs] Remove accidental leftover code 2021-12-07 10:14:12 +01:00
4c926eb911 [Emacs] Fix keybinds for which-key 2021-12-07 10:13:43 +01:00
6ad3203a8e [Emacs] Better mu4e keybinds 2021-12-06 17:07:52 +01:00
126385f1f2 [Emacs] Prettify my buffers 2021-12-06 17:07:30 +01:00
e55b1bba30 [StumpWM] Change colors of modeline 2021-12-04 19:24:08 +01:00
653e117c8f [Emacs] Fix line wrapping in mu4e
All checks were successful
continuous-integration/drone/push Build is passing
2021-12-04 14:18:01 +01:00
1301eaf0a9 [Drone] Change Docker image to pure alpine image
All checks were successful
continuous-integration/drone Build is passing
2021-12-01 16:49:45 +01:00
24f1fe375c [Emacs] Add EXWM buffers to ignored elcord buffers 2021-12-01 16:35:29 +01:00
d19c3da130 [Emacs] Automatic desktop-environment-mode when using EXWM
Also update results of elisp code
2021-12-01 16:34:29 +01:00
5a16398c33 [Emacs] Remove unused line 2021-12-01 16:34:06 +01:00
2756d34ab3 [Emacs] Fix mu4e keybinds 2021-11-30 02:18:13 +01:00
a6a1b3e7b6 [Emacs] Add fd for file search in EMMS, better variables
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-28 23:02:35 +01:00
d5628bd9fe [Emacs] document org-msg, force evil-collection-mu4e-setup 2021-11-28 23:01:48 +01:00
bb5699d650 [Emacs] Better org tangling 2021-11-28 22:59:02 +01:00
2f2a7aa674 [Emacs] Fix multi-monitor EXWM
Also change some buffer renaming for X windows

Fix original repo of xelp, indicate fork used
2021-11-28 22:56:59 +01:00
7252623ada [Emacs] Better keybinds definition
Also some noweb improvements
2021-11-28 22:51:48 +01:00
35ef17c7d0 [Misc] Exporter no longer generates backup files 2021-11-28 22:48:28 +01:00
2713daceda [Emacs] Remove s-I in EXWM, replaced by s-<escape>
All checks were successful
continuous-integration/drone/push Build is passing
2021-11-28 12:41:36 +01:00
99fad403f0 [Emacs] Add some EXWM documentation
All checks were successful
continuous-integration/drone/push Build is passing
Add also some literate config
2021-11-28 02:43:24 +01:00
124 changed files with 2317 additions and 37391 deletions

View File

@@ -10,7 +10,7 @@ alias df df -H $*
alias du du -ch $* alias du du -ch $*
alias grep grep --color=auto $* alias grep grep --color=auto $*
alias ls exa -halg@ --group-directories-first --git $* alias lsl exa -halg@ --group-directories-first --git $*
alias lns ln -si $* alias lns ln -si $*
alias mkdir mkdir -p $* alias mkdir mkdir -p $*
@@ -52,7 +52,5 @@ alias exti exit
alias exi exit alias exi exit
alias clean clear alias clean clear
alias vi emacs alias less view-file $1
alias vim emacs alias bat view-file $1
alias ed emacs
alias nano emacs

View File

@@ -1,31 +0,0 @@
function cnew -d "Create new C11 project"
if count $argv > /dev/null
set projname ""
for item in $argv
switch "$item"
case -h --help
man ~/dev/fishfunctions/cnew.man
return 0
case '*'
set projname $item
end
end
if [ "$projname" = "" ]
echo "Missing argument: PROJECT"
return -1
end
cp -r ~/dotfiles/dev/templateC $argv[1]
cd $argv[1]
sed -i "s/PROJECTNAME/$argv[1]/g" CMakeLists.txt
sed -i "s/PROJECTNAME/$argv[1]/g" README.org
sed -i "s/CPROJECTNAME/$argv[1]/g" doc/Doxyfile
git init
git add .
git commit -m "initial commit"
cd ..
else
echo "Missing argument: PROJECT"
return -1
end
end
complete -c cppnew -s h -l help -d 'Print Help'

View File

@@ -1,49 +0,0 @@
function cppnew -d "Create new C++17 project" --argument-names 'projectname'
if count $argv > /dev/null
set conanproj "false"
set projname ""
set conanprojname ""
for item in $argv
switch "$item"
case -c --conan
set conanproj "true"
set conanprojname $value
case -h --help
man ~/dev/fishfunctions/cppnew.man
return 0
case '*'
set projname $item
end
end
if [ "$projname" = "" ]
if [ "$conanprojname" = "" ]
echo "Missing argument: PROJECT"
return -1
end
end
if [ "$projname" = "" ]
set projname $conanprojname
end
if [ "$conanproj" = "true" ]
cp -r ~/dotfiles/dev/conan-project $projname
else
cp -r ~/dotfiles/dev/templateC++ $projname
end
cd $projname
sed -i "s/PROJECTNAME/$projname/g" README.org
sed -i "s/PROJECTNAME/$projname/g" CMakeLists.txt
if [ "$conanproj" = "true" ]
sed -i "s/PROJECTNAME/$projname/g" conanfile.py
end
sed -i "s/CPPPROJECTNAME/$projname/g" doc/Doxyfile
git init
git add .
git commit -m "initial commit"
cd ..
else
echo "Missing argument: PROJECT"
return -1
end
end
complete -c cppnew -s c -l conan -d 'Conan Project'
complete -c cppnew -s h -l help -d 'Print Help'

View File

@@ -1,4 +0,0 @@
function mkcd -d "Create directory and cd to it"
mkdir -p $argv[1]
cd $argv[1]
end

View File

@@ -1,22 +0,0 @@
function rainymood
set volume 50
getopts $argv | while read -l key option
switch $key
case v
set volume $option
case volume
set volume $option
end
end
if [ "$volume" != "" ]
set FILE (math (random) % 4)
set URL "https://rainymood.com/audio1112/$FILE.ogg"
mpv $URL --force-window=no --volume=$volume; and rainymood
else
echo "Missing value after -v/--volume option."
echo "Usage example:"
printf "\trainymood -v50\n\trainymood --volume 50\n"
return 1
end
end
complete -c rainymood -s v -l volume -d 'Volume of the rain (0-100)'

132
.config/git/config Normal file
View File

@@ -0,0 +1,132 @@
# -*- indent-tabs-mode: t; -*-
[user]
email = lucien@phundrak.com
name = Lucien Cartier-Tilet
signingkey = BD7789E705CB8DCA
[core]
editor = emacsclient -c -a emacs
whitespace = fix,-indent-with-non-tab,trailing-space
excludesfile = /home/phundrak/.gitignore_global
[pull]
rebase = true
[init]
defaultBranch = main
[color]
ui = auto
[web]
browser = firefox
[alias]
a = add --all
aca = !git add --all && git commit --amend
acan = !git add --all && git commit --amend --no-edit
b = branch
bd = branch -d
bdd = branch -D
c = commit -S
ca = commit -Sa
can = commit -Sa --no-edit
cm = commit -Sm
cam = commit -Sam
co = checkout
cob = checkout -b
cod = checkout develop
cl = clone
cl1 = clone --depth 1
f = fetch
fp = fetch --prune
ps = push
psf = push --force-with-lease
pso = push origin
psfo = push --force-with-lease origin
pushall = !git remote | xargs -L1 git push
psl = !git remote | xargs -L1 git push
pullall = !git remote | xargs -L1 git pull
pll = !git remote | xargs -L1 git pull
pl = pull
pb = pull --rebase
r = rebase
ra = rebase --abort
rc = rebase --continue
rd = rebase develop
ri = rebase -i
rmf = rm -f
rmd = rm -r
rmdf = rm -rf
sm = submodule
sms = submodule status
sma = submodule add
smu = submodule update
smui = submodule update --init
smuir = submodule update --init --recursive
st = stash
stc = stash clear
stp = stash pop
stw = stash show
u = reset --
unstage = reset --
d = diff -w
l = log --oneline --graph --decorate
s = status
staged = diff --cached
upstream = !git push -u origin HEAD
[sendemail]
smtpserver = mail.phundrak.com
smtpuser = lucien@phundrak.com
smtpencryption = tls
smtpserverport = 587
[credentials "smtp://lucien@phundrak.com@mail.phundrak.com:587"]
helper = "secret-tool lookup password email_lucien-phundrak-com"
[magithub]
online = true
[magithub "status"]
includeStatusHeader = true
includePullRequestsSection = true
includeIssuesSection = true
[gpg]
program = gpg2
[commit]
gpgsign = true
[merge]
tool = ediff
[mergetool.ediff]
cmd = emacs --eval \" (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\"Merge buffer saved in: %s\\\" file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook 'kill-emacs ediff-quit-merge-hook 'ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
[pager]
diff = delta
log = delta
reflog = delta
show = delta
[delta]
features = side-by-side line-numbers decorations
whitespace-error-style = 22 reverse
[delta "decorations"]
commit-decoration-style = bold yellow box ul
file-style = bold yellow ul
file-decoration-style = none
[interactive]
diffFilter = delta --color-only
[github]
user = phundrak
[filter "lfs"]
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process

View File

@@ -0,0 +1,50 @@
# vim:ft=kitty
## name: Nord
## author: Connor Holyday
## license: MIT
## upstream: https://raw.githubusercontent.com/connorholyday/nord-kitty/master/nord.conf
## blurb: An arctic, north-bluish clean and elegant Kitty theme.
# Nord Colorscheme for Kitty
# Based on:
# - https://gist.github.com/marcusramberg/64010234c95a93d953e8c79fdaf94192
# - https://github.com/arcticicestudio/nord-hyper
foreground #D8DEE9
background #2E3440
selection_foreground #000000
selection_background #FFFACD
url_color #0087BD
cursor #81A1C1
# black
color0 #3B4252
color8 #4C566A
# red
color1 #BF616A
color9 #BF616A
# green
color2 #A3BE8C
color10 #A3BE8C
# yellow
color3 #EBCB8B
color11 #EBCB8B
# blue
color4 #81A1C1
color12 #81A1C1
# magenta
color5 #B48EAD
color13 #B48EAD
# cyan
color6 #88C0D0
color14 #8FBCBB
# white
color7 #E5E9F0
color15 #ECEFF4

View File

@@ -151,12 +151,6 @@ box_drawing_scale 0.001, 1, 1.5, 2
#: Cursor customization {{{ #: Cursor customization {{{
cursor #D8DEE9
#: Default cursor color
cursor_text_color #2E3440
#: Choose the color of text under the cursor. If you want it rendered #: Choose the color of text under the cursor. If you want it rendered
#: with the background color of the cell underneath instead, use the #: with the background color of the cell underneath instead, use the
#: special keyword: background #: special keyword: background
@@ -244,8 +238,6 @@ mouse_hide_wait 3.0
#: typing text. Disabled by default on macOS as getting it to work #: typing text. Disabled by default on macOS as getting it to work
#: robustly with the ever-changing sea of bugs that is Cocoa is too #: robustly with the ever-changing sea of bugs that is Cocoa is too
#: much effort. #: much effort.
url_color #b48ead
url_style curly url_style curly
#: The color and style for highlighting URLs on mouse-over. url_style #: The color and style for highlighting URLs on mouse-over. url_style
@@ -412,7 +404,8 @@ initial_window_height 400
#: suffix of "c" on the width/height values to have them interpreted #: suffix of "c" on the width/height values to have them interpreted
#: as number of cells instead of pixels. #: as number of cells instead of pixels.
enabled_layouts * # enabled_layouts *
enabled_layouts fat,fat:mirrored=true,tall,tall:mirrored=true
#: The enabled window layouts. A comma separated list of layout names. #: The enabled window layouts. A comma separated list of layout names.
#: The special value all means all layouts. The first listed layout #: The special value all means all layouts. The first listed layout
@@ -475,20 +468,6 @@ placement_strategy center
#: placed centrally. A value of top-left means the padding will be on #: placed centrally. A value of top-left means the padding will be on
#: only the bottom and right edges. #: only the bottom and right edges.
active_border_color #434C5E
#: The color for the border of the active window. Set this to none to
#: not draw borders around the active window.
inactive_border_color #D8DEE9
#: The color for the border of inactive windows
bell_border_color #BF616A
#: The color for the border of inactive windows in which a bell has
#: occurred
inactive_text_alpha 1.0 inactive_text_alpha 1.0
#: Fade the text in inactive windows by the specified amount (a number #: Fade the text in inactive windows by the specified amount (a number
@@ -605,30 +584,13 @@ active_tab_title_template none
#: Template to use for active tabs, if not specified falls back to #: Template to use for active tabs, if not specified falls back to
#: tab_title_template. #: tab_title_template.
active_tab_foreground #000
active_tab_background #eee
active_tab_font_style bold-italic active_tab_font_style bold-italic
inactive_tab_foreground #444
inactive_tab_background #999
inactive_tab_font_style normal inactive_tab_font_style normal
#: Tab bar colors and styles
tab_bar_background none
#: Background color for the tab bar. Defaults to using the terminal
#: background color.
#: }}} #: }}}
#: Color scheme {{{ #: Color scheme {{{
foreground #d8dee9
background #2e3440
#: The foreground and background colors
background_opacity 0.7 background_opacity 0.7
#: The opacity of the background. A number between 0 and 1, where 1 is #: The opacity of the background. A number between 0 and 1, where 1 is
@@ -667,97 +629,17 @@ dynamic_background_opacity yes
#: keyboard shortcuts (increase_background_opacity and #: keyboard shortcuts (increase_background_opacity and
#: decrease_background_opacity) or the remote control facility. #: decrease_background_opacity) or the remote control facility.
background_tint 0.0
#: How much to tint the background image by the background color. The #: How much to tint the background image by the background color. The
#: tint is applied only under the text area, not margin/borders. Makes #: tint is applied only under the text area, not margin/borders. Makes
#: it easier to read the text. Tinting is done using the current #: it easier to read the text. Tinting is done using the current
#: background color for each window. This setting applies only if #: background color for each window. This setting applies only if
#: background_opacity is set and transparent windows are supported or #: background_opacity is set and transparent windows are supported or
#: background_image is set. #: background_image is set.
background_tint 0.0
dim_opacity 0.75
#: How much to dim text that has the DIM/FAINT attribute set. One #: How much to dim text that has the DIM/FAINT attribute set. One
#: means no dimming and zero means fully dimmed (i.e. invisible). #: means no dimming and zero means fully dimmed (i.e. invisible).
dim_opacity 0.75
selection_foreground #3b4252
#: The foreground for text selected with the mouse. A value of none
#: means to leave the color unchanged.
selection_background #e5e9f0
#: The background for text selected with the mouse.
#: The 256 terminal colors. There are 8 basic colors, each color has a
#: dull and bright version, for the first 16 colors. You can set the
#: remaining 240 colors as color16 to color255.
color0 #3B4252
color8 #4C566A
#: black
color1 #BF616A
color9 #BF616A
#: red
color2 #A3BE8C
color10 #A3BE8C
#: green
color3 #EBCB8B
color11 #EBCB8B
#: yellow
color4 #81A1C1
color12 #81A1C1
#: blue
color5 #B48EAD
color13 #B48EAD
#: magenta
color6 #88C0D0
color14 #8FBCBB
#: cyan
color7 #E5E9F0
color15 #ECEFF4
#: white
mark1_foreground black
#: Color for marks of type 1
mark1_background #88C0D0
#: Color for marks of type 1 (light steel blue)
mark2_foreground black
#: Color for marks of type 2
mark2_background #D8DEE9
#: Color for marks of type 1 (beige)
mark3_foreground black
#: Color for marks of type 3
mark3_background #B48EAD
#: Color for marks of type 1 (violet)
#: }}} #: }}}
@@ -880,70 +762,6 @@ term xterm-kitty
#: OS specific tweaks {{{ #: OS specific tweaks {{{
macos_titlebar_color system
#: Change the color of the kitty window's titlebar on macOS. A value
#: of system means to use the default system color, a value of
#: background means to use the background color of the currently
#: active window and finally you can use an arbitrary color, such as
#: #12af59 or red. WARNING: This option works by using a hack, as
#: there is no proper Cocoa API for it. It sets the background color
#: of the entire window and makes the titlebar transparent. As such it
#: is incompatible with background_opacity. If you want to use both,
#: you are probably better off just hiding the titlebar with
#: hide_window_decorations.
macos_option_as_alt no
#: Use the option key as an alt key. With this set to no, kitty will
#: use the macOS native Option+Key = unicode character behavior. This
#: will break any Alt+key keyboard shortcuts in your terminal
#: programs, but you can use the macOS unicode input technique. You
#: can use the values: left, right, or both to use only the left,
#: right or both Option keys as Alt, instead.
macos_hide_from_tasks no
#: Hide the kitty window from running tasks (Option+Tab) on macOS.
macos_quit_when_last_window_closed no
#: Have kitty quit when all the top-level windows are closed. By
#: default, kitty will stay running, even with no open windows, as is
#: the expected behavior on macOS.
macos_window_resizable yes
#: Disable this if you want kitty top-level (OS) windows to not be
#: resizable on macOS.
macos_thicken_font 0
#: Draw an extra border around the font with the given width, to
#: increase legibility at small font sizes. For example, a value of
#: 0.75 will result in rendering that looks similar to sub-pixel
#: antialiasing at common font sizes.
macos_traditional_fullscreen no
#: Use the traditional full-screen transition, that is faster, but
#: less pretty.
macos_show_window_title_in all
#: Show or hide the window title in the macOS window or menu-bar. A
#: value of window will show the title of the currently active window
#: at the top of the macOS window. A value of menubar will show the
#: title of the currently active window in the macOS menu-bar, making
#: use of otherwise wasted space. all will show the title everywhere
#: and none hides the title in the window and the menu-bar.
macos_custom_beam_cursor no
#: Enable/disable custom mouse cursor for macOS that is easier to see
#: on both light and dark backgrounds. WARNING: this might make your
#: mouse cursor invisible on dual GPU machines.
linux_display_server auto linux_display_server auto
#: Choose between Wayland and X11 backends. By default, an appropriate #: Choose between Wayland and X11 backends. By default, an appropriate
@@ -1120,8 +938,8 @@ map kitty_mod+n new_os_window
#: open a window with the current working directory. #: open a window with the current working directory.
map kitty_mod+w close_window map kitty_mod+w close_window
map kitty_mod+] next_window map kitty_mod+» next_window
map kitty_mod+[ previous_window map kitty_mod+« previous_window
map kitty_mod+f move_window_forward map kitty_mod+f move_window_forward
map kitty_mod+b move_window_backward map kitty_mod+b move_window_backward
map kitty_mod+` move_window_to_top map kitty_mod+` move_window_to_top
@@ -1314,3 +1132,9 @@ map kitty_mod+delete clear_terminal reset active
#: }}} #: }}}
# }}} # }}}
# BEGIN_KITTY_THEME
# Nord
include current-theme.conf
# END_KITTY_THEME

View File

@@ -19,13 +19,13 @@ application/zip=org.gnome.FileRoller.desktop;
audio/mpeg=mpv.desktop; audio/mpeg=mpv.desktop;
audio/x-mod=mpv.desktop; audio/x-mod=mpv.desktop;
audio/x-wav=mpv.desktop; audio/x-wav=mpv.desktop;
image/bmp=sxiv.desktop;nomacs.desktop; image/bmp=nsxiv.desktop;nomacs.desktop;
image/gif=sxiv.desktop;nomacs.desktop; image/gif=nsxiv.desktop;nomacs.desktop;
image/jpeg=sxiv.desktop;nomacs.desktop; image/jpeg=nsxiv.desktop;nomacs.desktop;com.github.weclaw1.ImageRoll.desktop;
image/png=sxiv.desktop;nomacs.desktop; image/png=nsxiv.desktop;nomacs.desktop;com.github.weclaw1.ImageRoll.desktop;
image/svg+xml=emacsclient.desktop;nomacs.desktop;org.nomacs.ImageLounge.desktop;org.inkscape.Inkscape.desktop; image/svg+xml=nsxiv.desktop;emacsclient.desktop;nomacs.desktop;org.nomacs.ImageLounge.desktop;org.inkscape.Inkscape.desktop;
image/vnd.djvu+multipage=org.pwmt.zathura.desktop; image/vnd.djvu+multipage=org.pwmt.zathura.desktop;
image/webp=sxiv.desktop;nomacs.desktop; image/webp=nsxiv.desktop;nomacs.desktop;
image/x-canon-cr2=nomacs.desktop; image/x-canon-cr2=nomacs.desktop;
inode/directory=nemo.desktop; inode/directory=nemo.desktop;
text/csv=libreoffice-calc.desktop;emacsclient.desktop; text/csv=libreoffice-calc.desktop;emacsclient.desktop;
@@ -50,6 +50,9 @@ video/x-msvideo=mpv.desktop;
x-scheme-handler/https=firefox.desktop; x-scheme-handler/https=firefox.desktop;
x-scheme-handler/mailto=mu4e.desktop x-scheme-handler/mailto=mu4e.desktop
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop; application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
audio/x-ms-wma=mpv.desktop;
application/x-mobipocket-ebook=FBReader.desktop;
application/json=emacsclient.desktop;
[Default Applications] [Default Applications]
application/epub+zip=emacsclient.desktop application/epub+zip=emacsclient.desktop
@@ -61,14 +64,14 @@ application/xml=emacsclient.desktop
audio/mpeg=mpv.desktop audio/mpeg=mpv.desktop
audio/x-mod=mpv.desktop audio/x-mod=mpv.desktop
audio/x-wav=mpv.desktop audio/x-wav=mpv.desktop
image/bmp=sxiv.desktop image/bmp=com.github.weclaw1.ImageRoll.desktop
image/gif=sxiv.desktop image/gif=com.github.weclaw1.ImageRoll.desktop
image/jpeg=sxiv.desktop image/jpeg=com.github.weclaw1.ImageRoll.desktop
image/png=sxiv.desktop image/png=com.github.weclaw1.ImageRoll.desktop
image/svg+xml=emacsclient.desktop image/svg+xml=com.github.weclaw1.ImageRoll.desktop
image/vnd.djvu+multipage=org.pwmt.zathura.desktop image/vnd.djvu+multipage=org.pwmt.zathura.desktop
image/webp=sxiv.desktop image/webp=com.github.weclaw1.ImageRoll.desktop
image/x-canon-cr2=sxiv.desktop image/x-canon-cr2=com.github.weclaw1.ImageRoll.desktop
inode/directory=nemo.desktop inode/directory=nemo.desktop
text/csv=emacsclient.desktop text/csv=emacsclient.desktop
text/html=firefox.desktop text/html=firefox.desktop
@@ -91,3 +94,10 @@ x-scheme-handler/mailto=mu4e.desktop
x-scheme-handler/unknown=firefox.desktop x-scheme-handler/unknown=firefox.desktop
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop
x-scheme-handler/discord-693493612754763907=discord-693493612754763907.desktop x-scheme-handler/discord-693493612754763907=discord-693493612754763907.desktop
audio/x-ms-wma=mpv.desktop
x-scheme-handler/flashpoint=flashpoint-launcher.desktop
x-scheme-handler/msteams=teams.desktop
application/x-mobipocket-ebook=FBReader.desktop
application/json=emacsclient.desktop
modrinth=modrinth-app-handler.desktop
x-scheme-handler/heroic=heroic.desktop

423
.config/newm/config.py Normal file
View File

@@ -0,0 +1,423 @@
from __future__ import annotations
from typing import Callable, Any
import os
import time
import logging
import psutil
import subprocess
import dbus
import docker
docker_client = docker.from_env()
from newm.layout import Layout
from newm.helper import BacklightManager, WobRunner, PaCtl
logger = logging.getLogger(__name__)
debug_windows = False
def run_shell(command: str):
"""Run a shell command asynchronously
If the shell command doesn't already end with "&", add it.
"""
if not command.endswith("&"):
command = command + " &"
os.system(command)
def command_is_running(command: str):
for proc in psutil.process_iter():
try:
cmdline = proc.cmdline()
except psutil.NoSuchProcess:
continue
if command in cmdline[0]:
return True
return False
def on_reconfigure():
run_shell('notify-send newm "Reloaded config"')
def on_startup():
run_shell("mpc stop")
run_shell("dunst")
run_shell("pactl load-module module-switch-on-connect")
run_shell("xfce-polkit")
run_shell("kdeconnectd")
os.system(
"systemctl --user import-environment DISPLAY \
WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
)
os.system(
"dbus-update-activation-environment && \
dbus-update-activation-environment --systemd DISPLAY \
WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
)
with open("{}/.cache/wallpaper".format(os.environ["HOME"])) as wp_cache:
background = {
"path": wp_cache.read().strip(),
"anim": True,
}
pywm = {
"xkb_layout": "fr",
"xkb_variant": "bepo_afnor",
"xkb_options": "caps:ctrl_modifier",
"enable_xwayland": True,
"natural_scroll": False,
"focus_follows_mouse": True,
"encourage_csd": False,
}
outputs = [
{"name": "eDP-1", "mHz": 120_000},
{
"name": "HDMI-A-1",
"pos_x": -2560,
"pos_y": 0,
"width": 2560,
"height": 1080,
},
]
wob_runner = WobRunner("wob -a bottom -M 100")
backlight_manager = BacklightManager(anim_time=1.0, bar_display=wob_runner)
kbdlight_manager = BacklightManager(
args="--device='*::kbd_backlight'", anim_time=1.0, bar_display=wob_runner
)
def synchronous_update() -> None:
backlight_manager.update()
kbdlight_manager.update()
def rules(m_view):
blur_apps = ("kitty", "wofi", "rofi", "emacsclient", "emacs")
float_apps = ("Rofi", "xfce-polkit")
nonfloat_apps = ("discord", "Discord")
m_rules = {}
if m_view.app_id in blur_apps:
m_rules.update({"blur": {"radius": 6, "passes": 2}})
if m_view.app_id in float_apps:
m_rules.update({"float": True})
if m_view.app_id in nonfloat_apps:
m_rules.update({"float": False})
if debug_windows:
with open("/tmp/newm_windows.txt", "a", encoding="utf-8") as file:
file.write(f"{str(m_view.app_id)}\t{m_rules}\n")
return m_rules
pactl = PaCtl(0, wob_runner)
focus = {
"animate_on_change": False,
"distance": 6,
"width": 2,
"color": "#5E81ACDD",
"anim_time": 0.1,
}
view = {
"corner_radius": 8,
"padding": 20,
"rules": rules,
"floating_min_size": False,
}
leader: str = "L-Spc "
def key_bindings(layout: Layout) -> list[tuple[str, Callable[[], Any]]]:
return [
("L-Return", lambda: os.system("kitty &")),
(leader + "a r b", lambda: run_shell("bluetooth-connect")),
(
leader + "a r r",
lambda: run_shell("rofi -combi-modi drun,window -show combi"),
),
(leader + "a b", lambda: run_shell("firefox")),
(leader + "a d", lambda: run_shell("discord")),
(leader + "a e", lambda: run_shell("emacsclient -c")),
(leader + "l", layout.ensure_locked),
(leader + "w f", layout.toggle_fullscreen),
(leader + "w v", layout.toggle_focused_view_floating),
(leader + "w +", lambda: layout.basic_scale(1)),
(leader + "w -", lambda: layout.basic_scale(-1)),
("L-o", layout.move_workspace),
("L-O", layout.move_workspace),
(leader + "w c", lambda: layout.move(-1, 0)),
(leader + "w t", lambda: layout.move(0, 1)),
(leader + "w s", lambda: layout.move(0, -1)),
(leader + "w r", lambda: layout.move(1, 0)),
(leader + "w n", lambda: layout.move_in_stack(1)),
("L-Tab", lambda: layout.move_in_stack(1)),
(leader + "w p", lambda: layout.move_in_stack(-1)),
(leader + "w C", lambda: layout.move_focused_view(-1, 0)),
(leader + "w T", lambda: layout.move_focused_view(0, 1)),
(leader + "w S", lambda: layout.move_focused_view(0, -1)),
(leader + "w R", lambda: layout.move_focused_view(1, 0)),
(leader + "b d", layout.close_focused_view),
(leader + "q l", lambda: layout.ensure_locked(dim=False)),
(leader + "q q", layout.terminate),
(leader + "u", layout.update_config),
("L-c", lambda: layout.move(-1, 0)),
("L-t", lambda: layout.move(0, 1)),
("L-s", lambda: layout.move(0, -1)),
("L-r", lambda: layout.move(1, 0)),
("L-plus", lambda: layout.basic_scale(-1)),
("L-minus", lambda: layout.basic_scale(1)),
("L-C", lambda: layout.move_focused_view(-1, 0)),
("L-T", lambda: layout.move_focused_view(0, 1)),
("L-S", lambda: layout.move_focused_view(0, -1)),
("L-R", lambda: layout.move_focused_view(1, 0)),
(leader + "w r c", lambda: layout.resize_focused_view(-1, 0)),
(leader + "w r t", lambda: layout.resize_focused_view(0, 1)),
(leader + "w r s", lambda: layout.resize_focused_view(0, -1)),
(leader + "w r r", lambda: layout.resize_focused_view(1, 0)),
("L-", lambda: layout.toggle_overview(only_active_workspace=True)),
(
"XF86MonBrightnessUp",
lambda: backlight_manager.set(backlight_manager.get() + 0.1),
),
(
"XF86MonBrightnessDown",
lambda: backlight_manager.set(backlight_manager.get() - 0.1),
),
(
"XF86KbdBrightnessUp",
lambda: kbdlight_manager.set(kbdlight_manager.get() + 0.1),
),
(
"XF86KbdBrightnessDown",
lambda: kbdlight_manager.set(kbdlight_manager.get() - 0.1),
),
("XF86AudioPlay", lambda: run_shell("playerctl play-pause")),
("XF86AudioPause", lambda: run_shell("playerctl pause")),
("XF86AudioStop", lambda: run_shell("playerctl stop")),
("XF86AudioPrev", lambda: run_shell("playerctl previous")),
("XF86AudioNext", lambda: run_shell("playerctl next")),
("XF86AudioForward", lambda: run_shell("playerctl position +1")),
("XF86AudioRewind", lambda: run_shell("playerctl position -1")),
("XF86AudioRaiseVolume", lambda: pactl.volume_adj(5)),
("XF86AudioLowerVolume", lambda: pactl.volume_adj(-5)),
("XF86AudioMute", pactl.mute),
("Print", lambda: run_shell("env XDG_CURRENT_DESKTOP=Sway flameshot gui")),
]
battery_icons = {
100: {True: "", False: ""},
90: {True: "", False: ""},
80: {True: "", False: ""},
70: {True: "", False: ""},
60: {True: "", False: ""},
50: {True: "", False: ""},
40: {True: "", False: ""},
30: {True: "", False: ""},
20: {True: "", False: ""},
10: {True: "", False: ""},
0: {True: "", False: ""},
}
def battery_status() -> str:
battery = psutil.sensors_battery()
percent = format(battery.percent, ".1f")
minutes = battery.secsleft // 60
remaining = "{0:0>2}:{1:0>2}".format(minutes // 60, minutes % 60)
icon = battery_icons[(int(float(percent)) // 10) * 10][battery.power_plugged]
return f"{icon} {percent}% ({remaining})"
def unread_emails() -> str:
unread = subprocess.run(
["mu", "find", "flag:unread AND (maildir:/Inbox OR maildir:/Junk)"],
capture_output=True,
text=True,
check=True,
).stdout
nbr_unread: int = len(str(unread).strip().split("\n"))
return f"{nbr_unread}"
def cpu_usage() -> str:
cpu: str = format(psutil.cpu_percent(interval=1), ".1f")
return f"{cpu}%"
def mem_usage() -> str:
mem: str = format(psutil.virtual_memory().percent, ".1f")
return f"{mem}%"
def get_bluetooth_devices() -> str:
import xml.etree.ElementTree as ET
bus = dbus.SystemBus()
service_name = "org.bluez"
# Verify if bluetooth is turned on
proxy = bus.get_object(service_name, "/org/bluez/hci0")
props = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
if not props.Get("org.bluez.Adapter1", "Powered"):
return ""
# Grab all known devices
bt_intro_iface = dbus.Interface(proxy, "org.freedesktop.DBus.Introspectable")
bt_intro = str(bt_intro_iface.Introspect())
root_node = ET.fromstring(bt_intro)
known_devices = [n.get("name") for n in root_node.findall("node")]
# Check if all devices are connected
counter = 0
for device in known_devices:
object_path = f"/org/bluez/hci0/{device}"
proxy = bus.get_object(service_name, object_path)
props = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
if props.Get("org.bluez.Device1", "Connected"):
counter = counter + 1
return f"{counter}"
def get_wifi_name(iface) -> str:
bus = dbus.SystemBus()
service_name = "org.freedesktop.NetworkManager"
proxy = bus.get_object(service_name, "/org/freedesktop/NetworkManager/Settings")
# Get the device object path based on interface name
proxy = bus.get_object(service_name, "/org/freedesktop/NetworkManager")
nm = dbus.Interface(proxy, "org.freedesktop.NetworkManager")
devpath = nm.GetDeviceByIpIface(iface)
# Get a proxy to the wifi device and get the active access point's object path
proxy = bus.get_object(service_name, devpath)
props = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
active_ap_path = props.Get(
"org.freedesktop.NetworkManager.Device.Wireless", "ActiveAccessPoint"
)
if active_ap_path == "/":
return ""
# Get the active access point's SSID and BSSID
ap_proxy = bus.get_object(service_name, active_ap_path)
ap_props = dbus.Interface(ap_proxy, "org.freedesktop.DBus.Properties")
raw_ssid = ap_props.Get("org.freedesktop.NetworkManager.AccessPoint", "Ssid")
ssid = b"".join([bytes([v]) for v in raw_ssid]).decode("utf-8")
return ssid
def get_local_address(wifi_iface, eth_iface) -> str:
if_addrs = psutil.net_if_addrs()
wifi = if_addrs.get(wifi_iface)
eth = if_addrs.get(eth_iface)
wifi_addr = wifi[0].address if wifi else ""
eth_addr = eth[0].address if eth else ""
wifi_addr = wifi_addr if not ":" in wifi_addr else ""
eth_addr = eth_addr if not ":" in eth_addr else ""
return wifi_addr or eth_addr
def get_network() -> str:
wifi_interface = "wlp8s0"
eth_interface = "enp9s0f1"
network_name = get_wifi_name(wifi_interface)
network_name = f"{network_name}" if network_name else " eth"
addr = get_local_address(wifi_interface, eth_interface)
return f"{network_name} ({addr})" if addr else "睊 disconnected"
def get_playerctl_bus():
bus = dbus.SessionBus()
service_name = "org.mpris.MediaPlayer2.playerctld"
service_props = "org.mpris.MediaPlayer2.Player"
proxy = bus.get_object(service_name, "/org/mpris/MediaPlayer2")
return (service_props, proxy)
def get_currently_playing():
(service_props, proxy) = get_playerctl_bus()
props = dbus.Interface(proxy, "org.freedesktop.DBus.Properties")
metadata = props.Get(service_props, "Metadata")
status = str(props.Get(service_props, "PlaybackStatus"))
if status != "Playing":
return ""
artist = ", ".join(metadata.get("xesam:artist"))
title = metadata.get("xesam:title")
return f"{artist}{title}"
def display_docker() -> str:
containers = docker_client.containers.list(sparse=True)
return f"{len(containers)}"
def get_time() -> str:
return time.strftime("%a %Y-%m-%d %X")
def bar_text() -> str:
return " | ".join(
[
f
for f in [
get_currently_playing(),
# get_network(),
display_docker(),
# get_bluetooth_devices(),
unread_emails(),
cpu_usage(),
mem_usage(),
get_time(),
battery_status(),
]
if f
]
)
def max_width(strings: list[str]) -> int:
r_max_width: int = 0
for s in strings:
if len(s) > r_max_width:
r_max_width = len(s)
return r_max_width
panels = {
"lock": {
"cmd": "kitty -e newm-panel-basic lock",
},
"launcher": {"cmd": "kitty -e newm-panel-basic launcher"},
"top_bar": {
"native": {
"font": "JetBrainsMono Nerd Font",
"enabled": True,
"texts": lambda: [
bar_text(),
],
},
},
"bottom_bar": {
"native": {
"enabled": False,
"texts": lambda: ["newm", "powered by pywm"],
"color": (0.5, 0.5, 0.5, 0.1),
}
},
}
energy = {
"idle_callback": backlight_manager.callback,
"idle_times": [5 * 60, 30 * 60, 24 * 60 * 60],
}

View File

@@ -1,12 +1,8 @@
# pylint: disable=C0111 # pylint: disable=C0111
from qutebrowser.config.configfiles import ConfigAPI # noqa: F401
from qutebrowser.config.config import ConfigContainer # noqa: F401
config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103
c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
# This is here so configs done via the GUI are still loaded. # This is here so configs done via the GUI are still loaded.
# Remove it to not load settings done via the GUI. # Remove it to not load settings done via the GUI.
config.load_autoconfig(True) config.load_autoconfig(False)
# Aliases for commands. The keys of the given dictionary are the # Aliases for commands. The keys of the given dictionary are the
# aliases, while the values are the commands they map to. # aliases, while the values are the commands they map to.

View File

@@ -1,6 +1,7 @@
# pylint: disable=C0111 # pylint: disable=C0111
from qutebrowser.config.configfiles import ConfigAPI # noqa: F401 from qutebrowser.config.configfiles import ConfigAPI # noqa: F401
from qutebrowser.config.config import ConfigContainer # noqa: F401 from qutebrowser.config.config import ConfigContainer # noqa: F401
config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103 config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103
c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103 c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
@@ -19,19 +20,19 @@ c.content.autoplay = False
# Type: List of Url # Type: List of Url
c.content.blocking.adblock.lists = [ c.content.blocking.adblock.lists = [
# AdBlock sources # AdBlock sources
'https://easylist.to/easylist/easylist.txt', "https://easylist.to/easylist/easylist.txt",
'https://easylist.to/easylist/easyprivacy.txt' "https://easylist.to/easylist/easyprivacy.txt"
# uBlock sources # uBlock sources
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/annoyances.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badlists.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badlists.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/badware.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2021.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2021.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/lan-block.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/lan-block.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/privacy.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/resource-abuse.txt",
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/unbreak.txt', "https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/unbreak.txt",
] ]
# Enable the ad/host blocker # Enable the ad/host blocker
@@ -55,7 +56,7 @@ c.content.blocking.hosts.block_subdomains = True
# if it exists. # if it exists.
# Type: List of Url # Type: List of Url
c.content.blocking.hosts.lists = [ c.content.blocking.hosts.lists = [
'https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts', "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts",
] ]
# Which method of blocking ads should be used. Support for Adblock Plus # Which method of blocking ads should be used. Support for Adblock Plus
@@ -69,7 +70,7 @@ c.content.blocking.hosts.lists = [
# - adblock: Use Brave's ABP-style adblocker # - adblock: Use Brave's ABP-style adblocker
# - hosts: Use hosts blocking # - hosts: Use hosts blocking
# - both: Use both hosts blocking and Brave's ABP-style adblocker # - both: Use both hosts blocking and Brave's ABP-style adblocker
c.content.blocking.method = 'auto' c.content.blocking.method = "auto"
# A list of patterns that should always be loaded, despite being blocked # A list of patterns that should always be loaded, despite being blocked
# by the ad-/host-blocker. Local domains are always exempt from # by the ad-/host-blocker. Local domains are always exempt from
@@ -81,7 +82,7 @@ c.content.blocking.method = 'auto'
# pattern instead. # pattern instead.
# Type: List of UrlPattern # Type: List of UrlPattern
c.content.blocking.whitelist = [ c.content.blocking.whitelist = [
'https://matomo.phundrak.com/*', "https://*.phundrak.com/*",
] ]
# Enable support for the HTML 5 web application cache feature. An # Enable support for the HTML 5 web application cache feature. An
@@ -133,7 +134,7 @@ c.content.canvas_reading = True
# - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail. # - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty. # - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
# - never: Don't accept cookies at all. # - never: Don't accept cookies at all.
c.content.cookies.accept = 'all' c.content.cookies.accept = "all"
# Store cookies. # Store cookies.
# Type: Bool # Type: Bool
@@ -142,7 +143,7 @@ c.content.cookies.store = True
# Default encoding to use for websites. The encoding must be a string # Default encoding to use for websites. The encoding must be a string
# describing an encoding such as _utf-8_, _iso-8859-1_, etc. # describing an encoding such as _utf-8_, _iso-8859-1_, etc.
# Type: String # Type: String
c.content.default_encoding = 'utf-8' c.content.default_encoding = "utf-8"
# Allow websites to share screen content. # Allow websites to share screen content.
# Type: BoolAsk # Type: BoolAsk
@@ -150,7 +151,7 @@ c.content.default_encoding = 'utf-8'
# - true # - true
# - false # - false
# - ask # - ask
c.content.desktop_capture = 'ask' c.content.desktop_capture = "ask"
# Try to pre-fetch DNS entries to speed up browsing. # Try to pre-fetch DNS entries to speed up browsing.
# Type: Bool # Type: Bool
@@ -177,12 +178,14 @@ c.content.fullscreen.window = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.geolocation = 'ask' c.content.geolocation = "ask"
# Value to send in the `Accept-Language` header. Note that the value # Value to send in the `Accept-Language` header. Note that the value
# read from JavaScript is always the global value. # read from JavaScript is always the global value.
# Type: String # Type: String
c.content.headers.accept_language = 'en-US,en-UK,en-GB,en;q=0.9, fr-Fr,fr;q=0.8, ja,es;q=0.5, *;q=0.2' c.content.headers.accept_language = (
"en-US,en-UK,en-GB,en;q=0.9, fr-Fr,fr;q=0.8, ja,es;q=0.5, *;q=0.2"
)
# Custom headers for qutebrowser HTTP requests. # Custom headers for qutebrowser HTTP requests.
# Type: Dict # Type: Dict
@@ -204,7 +207,7 @@ c.content.headers.do_not_track = True
# - always: Always send the Referer. # - always: Always send the Referer.
# - never: Never send the Referer. This is not recommended, as some sites may break. # - never: Never send the Referer. This is not recommended, as some sites may break.
# - same-domain: Only send the Referer for the same domain. This will still protect your privacy, but shouldn't break any sites. With QtWebEngine, the referer will still be sent for other domains, but with stripped path information. # - same-domain: Only send the Referer for the same domain. This will still protect your privacy, but shouldn't break any sites. With QtWebEngine, the referer will still be sent for other domains, but with stripped path information.
c.content.headers.referer = 'same-domain' c.content.headers.referer = "same-domain"
# User agent to send. The following placeholders are defined: * # User agent to send. The following placeholders are defined: *
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`: # `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
@@ -220,7 +223,7 @@ c.content.headers.referer = 'same-domain'
# between 5.12 and 5.14 (inclusive), changing the value exposed to # between 5.12 and 5.14 (inclusive), changing the value exposed to
# JavaScript requires a restart. # JavaScript requires a restart.
# Type: FormatString # Type: FormatString
c.content.headers.user_agent = 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {qt_key}/{qt_version} {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}' c.content.headers.user_agent = "Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {qt_key}/{qt_version} {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}"
# Enable hyperlink auditing (`<a ping>`). # Enable hyperlink auditing (`<a ping>`).
# Type: Bool # Type: Bool
@@ -234,12 +237,6 @@ c.content.images = True
# Type: Bool # Type: Bool
c.content.javascript.alert = True c.content.javascript.alert = True
# Allow JavaScript to read from or write to the clipboard. With
# QtWebEngine, writing the clipboard as response to a user interaction
# is always allowed.
# Type: Bool
c.content.javascript.can_access_clipboard = False
# Allow JavaScript to close tabs. # Allow JavaScript to close tabs.
# Type: Bool # Type: Bool
c.content.javascript.can_close_tabs = False c.content.javascript.can_close_tabs = False
@@ -259,7 +256,12 @@ c.content.javascript.enabled = True
# following levels are valid: `none`, `debug`, `info`, `warning`, # following levels are valid: `none`, `debug`, `info`, `warning`,
# `error`. # `error`.
# Type: Dict # Type: Dict
c.content.javascript.log = {'unknown': 'debug', 'info': 'debug', 'warning': 'debug', 'error': 'debug'} c.content.javascript.log = {
"unknown": "debug",
"info": "debug",
"warning": "debug",
"error": "debug",
}
# Use the standard JavaScript modal dialog for `alert()` and # Use the standard JavaScript modal dialog for `alert()` and
# `confirm()`. # `confirm()`.
@@ -288,7 +290,7 @@ c.content.local_storage = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.media.audio_capture = 'ask' c.content.media.audio_capture = "ask"
# Allow websites to record audio and video. # Allow websites to record audio and video.
# Type: BoolAsk # Type: BoolAsk
@@ -296,7 +298,7 @@ c.content.media.audio_capture = 'ask'
# - true # - true
# - false # - false
# - ask # - ask
c.content.media.audio_video_capture = 'ask' c.content.media.audio_video_capture = "ask"
# Allow websites to record video. # Allow websites to record video.
# Type: BoolAsk # Type: BoolAsk
@@ -304,7 +306,7 @@ c.content.media.audio_video_capture = 'ask'
# - true # - true
# - false # - false
# - ask # - ask
c.content.media.video_capture = 'ask' c.content.media.video_capture = "ask"
# Allow websites to lock your mouse pointer. # Allow websites to lock your mouse pointer.
# Type: BoolAsk # Type: BoolAsk
@@ -312,7 +314,7 @@ c.content.media.video_capture = 'ask'
# - true # - true
# - false # - false
# - ask # - ask
c.content.mouse_lock = 'ask' c.content.mouse_lock = "ask"
# Automatically mute tabs. Note that if the `:tab-mute` command is used, # Automatically mute tabs. Note that if the `:tab-mute` command is used,
# the mute status for the affected tab is now controlled manually, and # the mute status for the affected tab is now controlled manually, and
@@ -330,7 +332,7 @@ c.content.netrc_file = None
# - true # - true
# - false # - false
# - ask # - ask
c.content.notifications.enabled = 'ask' c.content.notifications.enabled = "ask"
# What notification presenter to use for web notifications. Note that # What notification presenter to use for web notifications. Note that
# not all implementations support all features of notifications: - With # not all implementations support all features of notifications: - With
@@ -350,7 +352,7 @@ c.content.notifications.enabled = 'ask'
# - systray: Use a notification presenter based on a systray icon. Falls back to `libnotify` or `messages` if not systray is available. This is a reimplementation of the `qt` setting value, but with the possibility to switch to it at runtime. # - systray: Use a notification presenter based on a systray icon. Falls back to `libnotify` or `messages` if not systray is available. This is a reimplementation of the `qt` setting value, but with the possibility to switch to it at runtime.
# - messages: Show notifications as qutebrowser messages. Most notification features aren't available. # - messages: Show notifications as qutebrowser messages. Most notification features aren't available.
# - herbe: (experimental!) Show notifications using herbe (github.com/dudik/herbe). Most notification features aren't available. # - herbe: (experimental!) Show notifications using herbe (github.com/dudik/herbe). Most notification features aren't available.
c.content.notifications.presenter = 'auto' c.content.notifications.presenter = "auto"
# Whether to show the origin URL for notifications. Note that URL # Whether to show the origin URL for notifications. Note that URL
# patterns with this setting only get matched against the origin part of # patterns with this setting only get matched against the origin part of
@@ -372,7 +374,7 @@ c.content.pdfjs = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.persistent_storage = 'ask' c.content.persistent_storage = "ask"
# Enable plugins in Web pages. # Enable plugins in Web pages.
# Type: Bool # Type: Bool
@@ -404,7 +406,7 @@ c.content.private_browsing = False
# Valid values: # Valid values:
# - system: Use the system wide proxy. # - system: Use the system wide proxy.
# - none: Don't use any proxy # - none: Don't use any proxy
c.content.proxy = 'system' c.content.proxy = "system"
# Send DNS requests over the configured proxy. # Send DNS requests over the configured proxy.
# Type: Bool # Type: Bool
@@ -417,7 +419,7 @@ c.content.proxy_dns_requests = True
# - true # - true
# - false # - false
# - ask # - ask
c.content.register_protocol_handler = 'ask' c.content.register_protocol_handler = "ask"
# Enable quirks (such as faked user agent headers) needed to get # Enable quirks (such as faked user agent headers) needed to get
# specific sites to work properly. # specific sites to work properly.
@@ -441,7 +443,7 @@ c.content.site_specific_quirks.enabled = True
# - js-object-fromentries # - js-object-fromentries
# - misc-krunker # - misc-krunker
# - misc-mathml-darkmode # - misc-mathml-darkmode
c.content.site_specific_quirks.skip = ['js-string-replaceall'] c.content.site_specific_quirks.skip = ["js-string-replaceall"]
# How to proceed on TLS certificate errors. # How to proceed on TLS certificate errors.
# Type: String # Type: String
@@ -450,7 +452,7 @@ c.content.site_specific_quirks.skip = ['js-string-replaceall']
# - ask-block-thirdparty: Ask how to proceed for normal page loads, but silently block resource loads. # - ask-block-thirdparty: Ask how to proceed for normal page loads, but silently block resource loads.
# - block: Automatically block loading on certificate errors. # - block: Automatically block loading on certificate errors.
# - load-insecurely: Force loading pages despite certificate errors. This is *insecure* and should be avoided. Instead of using this, consider fixing the underlying issue or importing a self-signed certificate via `certutil` (or Chromium) instead. # - load-insecurely: Force loading pages despite certificate errors. This is *insecure* and should be avoided. Instead of using this, consider fixing the underlying issue or importing a self-signed certificate via `certutil` (or Chromium) instead.
c.content.tls.certificate_errors = 'ask' c.content.tls.certificate_errors = "ask"
# How navigation requests to URLs with unknown schemes are handled. # How navigation requests to URLs with unknown schemes are handled.
# Type: String # Type: String
@@ -458,7 +460,7 @@ c.content.tls.certificate_errors = 'ask'
# - disallow: Disallows all navigation requests to URLs with unknown schemes. # - disallow: Disallows all navigation requests to URLs with unknown schemes.
# - allow-from-user-interaction: Allows navigation requests to URLs with unknown schemes that are issued from user-interaction (like a mouse-click), whereas other navigation requests (for example from JavaScript) are suppressed. # - allow-from-user-interaction: Allows navigation requests to URLs with unknown schemes that are issued from user-interaction (like a mouse-click), whereas other navigation requests (for example from JavaScript) are suppressed.
# - allow-all: Allows all navigation requests to URLs with unknown schemes. # - allow-all: Allows all navigation requests to URLs with unknown schemes.
c.content.unknown_url_scheme_policy = 'allow-from-user-interaction' c.content.unknown_url_scheme_policy = "allow-from-user-interaction"
# List of user stylesheet filenames to use. # List of user stylesheet filenames to use.
# Type: List of File, or File # Type: List of File, or File
@@ -475,7 +477,7 @@ c.content.webgl = True
# - default-public-and-private-interfaces: WebRTC should only use the default route used by http. This also exposes the associated default private address. Default route is the route chosen by the OS on a multi-homed endpoint. # - default-public-and-private-interfaces: WebRTC should only use the default route used by http. This also exposes the associated default private address. Default route is the route chosen by the OS on a multi-homed endpoint.
# - default-public-interface-only: WebRTC should only use the default route used by http. This doesn't expose any local addresses. # - default-public-interface-only: WebRTC should only use the default route used by http. This doesn't expose any local addresses.
# - disable-non-proxied-udp: WebRTC should only use TCP to contact peers or servers unless the proxy server supports UDP. This doesn't expose any local addresses either. # - disable-non-proxied-udp: WebRTC should only use TCP to contact peers or servers unless the proxy server supports UDP. This doesn't expose any local addresses either.
c.content.webrtc_ip_handling_policy = 'all-interfaces' c.content.webrtc_ip_handling_policy = "all-interfaces"
# Monitor load requests for cross-site scripting attempts. Suspicious # Monitor load requests for cross-site scripting attempts. Suspicious
# scripts will be blocked and reported in the devtools JavaScript # scripts will be blocked and reported in the devtools JavaScript

View File

@@ -1,6 +1,7 @@
# pylint: disable=C0111 # pylint: disable=C0111
from qutebrowser.config.configfiles import ConfigAPI # noqa: F401 from qutebrowser.config.configfiles import ConfigAPI # noqa: F401
from qutebrowser.config.config import ConfigContainer # noqa: F401 from qutebrowser.config.config import ConfigContainer # noqa: F401
config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103 config: ConfigAPI = config # noqa: F821 pylint: disable=E0602,C0103
c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103 c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
@@ -8,354 +9,385 @@ c: ConfigContainer = c # noqa: F821 pylint: disable=E0602,C0103
# config.bind(',d', 'spawn ytdl {url}') # config.bind(',d', 'spawn ytdl {url}')
# bookmarks # bookmarks
config.bind(',ba', 'bookmark-add') config.bind(",ba", "bookmark-add")
config.bind(',bb', 'set-cmd-text -s :bookmark-load') config.bind(",bb", "cmd-set-text -s :bookmark-load")
config.bind(',bl', 'bookmark-list') config.bind(",bl", "bookmark-list")
config.bind(',bj', 'bookmark-list --jump') config.bind(",bj", "bookmark-list --jump")
config.bind(',bt', 'set-cmd-text -s :bookmark-load -t') config.bind(",bt", "cmd-set-text -s :bookmark-load -t")
config.bind(',bw', 'set-cmd-text -s :bookmark-load -w') config.bind(",bw", "cmd-set-text -s :bookmark-load -w")
config.bind(',bql', 'set-cmd-text -s :quickmark-load') config.bind(",bql", "cmd-set-text -s :quickmark-load")
config.bind(',bqL', 'set-cmd-text -s :quickmark-load -t') config.bind(",bqL", "cmd-set-text -s :quickmark-load -t")
config.bind(',bqs', 'quickmark-save') config.bind(",bqs", "quickmark-save")
config.bind(',bqw', 'set-cmd-text -s :quickmark-load -w') config.bind(",bqw", "cmd-set-text -s :quickmark-load -w")
# config cycle # config cycle
config.bind(',cCH', 'config-cycle -p -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload') config.bind(
config.bind(',cCh', 'config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload') ",cCH",
config.bind(',cCu', 'config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; reload') "config-cycle -p -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
config.bind(',cIH', 'config-cycle -p -u *://*.{url:host}/* content.images ;; reload') )
config.bind(',cIh', 'config-cycle -p -u *://{url:host}/* content.images ;; reload') config.bind(
config.bind(',cIu', 'config-cycle -p -u {url} content.images ;; reload') ",cCh",
config.bind(',cPH', 'config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload') "config-cycle -p -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
config.bind(',cPh', 'config-cycle -p -u *://{url:host}/* content.plugins ;; reload') )
config.bind(',cPu', 'config-cycle -p -u {url} content.plugins ;; reload') config.bind(
config.bind(',cSH', 'config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload') ",cCu",
config.bind(',cSh', 'config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload') "config-cycle -p -u {url} content.cookies.accept all no-3rdparty never ;; reload",
config.bind(',cSu', 'config-cycle -p -u {url} content.javascript.enabled ;; reload') )
config.bind(',ccH', 'config-cycle -p -t -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload') config.bind(",cIH", "config-cycle -p -u *://*.{url:host}/* content.images ;; reload")
config.bind(',cch', 'config-cycle -p -t -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload') config.bind(",cIh", "config-cycle -p -u *://{url:host}/* content.images ;; reload")
config.bind(',ccu', 'config-cycle -p -t -u {url} content.cookies.accept all no-3rdparty never ;; reload') config.bind(",cIu", "config-cycle -p -u {url} content.images ;; reload")
config.bind(',ch', 'back -t') config.bind(",cPH", "config-cycle -p -u *://*.{url:host}/* content.plugins ;; reload")
config.bind(',ciH', 'config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload') config.bind(",cPh", "config-cycle -p -u *://{url:host}/* content.plugins ;; reload")
config.bind(',cih', 'config-cycle -p -t -u *://{url:host}/* content.images ;; reload') config.bind(",cPu", "config-cycle -p -u {url} content.plugins ;; reload")
config.bind(',ciu', 'config-cycle -p -t -u {url} content.images ;; reload') config.bind(
config.bind(',cl', 'forward -t') ",cSH", "config-cycle -p -u *://*.{url:host}/* content.javascript.enabled ;; reload"
config.bind(',cpH', 'config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload') )
config.bind(',cph', 'config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload') config.bind(
config.bind(',cpu', 'config-cycle -p -t -u {url} content.plugins ;; reload') ",cSh", "config-cycle -p -u *://{url:host}/* content.javascript.enabled ;; reload"
config.bind(',csH', 'config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload') )
config.bind(',csh', 'config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload') config.bind(",cSu", "config-cycle -p -u {url} content.javascript.enabled ;; reload")
config.bind(',csu', 'config-cycle -p -t -u {url} content.javascript.enabled ;; reload') config.bind(
",ccH",
"config-cycle -p -t -u *://*.{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(
",cch",
"config-cycle -p -t -u *://{url:host}/* content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(
",ccu",
"config-cycle -p -t -u {url} content.cookies.accept all no-3rdparty never ;; reload",
)
config.bind(",ch", "back -t")
config.bind(",ciH", "config-cycle -p -t -u *://*.{url:host}/* content.images ;; reload")
config.bind(",cih", "config-cycle -p -t -u *://{url:host}/* content.images ;; reload")
config.bind(",ciu", "config-cycle -p -t -u {url} content.images ;; reload")
config.bind(",cl", "forward -t")
config.bind(
",cpH", "config-cycle -p -t -u *://*.{url:host}/* content.plugins ;; reload"
)
config.bind(",cph", "config-cycle -p -t -u *://{url:host}/* content.plugins ;; reload")
config.bind(",cpu", "config-cycle -p -t -u {url} content.plugins ;; reload")
config.bind(
",csH",
"config-cycle -p -t -u *://*.{url:host}/* content.javascript.enabled ;; reload",
)
config.bind(
",csh",
"config-cycle -p -t -u *://{url:host}/* content.javascript.enabled ;; reload",
)
config.bind(",csu", "config-cycle -p -t -u {url} content.javascript.enabled ;; reload")
# downloads # downloads
config.bind(',da', 'download-cancel') config.bind(",da", "download-cancel")
config.bind(',dd', 'download') config.bind(",dd", "download")
config.bind(',dc', 'download-clear') config.bind(",dc", "download-clear")
config.bind(',dy', 'spawn ytdl {url}') config.bind(",dy", "spawn ytdl {url}")
# dev tools # dev tools
config.bind(',Dd', 'devtools') config.bind(",Dd", "devtools")
config.bind(',Df', 'devtools-focus') config.bind(",Df", "devtools-focus")
config.bind(',Dc', 'devtools left') config.bind(",Dc", "devtools left")
config.bind(',Dt', 'devtools bottom') config.bind(",Dt", "devtools bottom")
config.bind(',Ds', 'devtools top') config.bind(",Ds", "devtools top")
config.bind(',Dr', 'devtools right') config.bind(",Dr", "devtools right")
config.bind(',Dw', 'devtools window') config.bind(",Dw", "devtools window")
# save # save
config.bind('fs', 'save') config.bind("fs", "save")
# hints # hints
config.bind(',hd', 'hint links download') config.bind(",hd", "hint links download")
config.bind(',hh', 'hint') config.bind(",hh", "hint")
config.bind(',hH', 'hint all hover') config.bind(",hH", "hint all hover")
config.bind(',hii', 'hint images') config.bind(",hii", "hint images")
config.bind(',hiI', 'hint images tab') config.bind(",hiI", "hint images tab")
config.bind(',hIi', 'hint inputs') config.bind(",hIi", "hint inputs")
config.bind(',hIf', 'hint inputs --first') config.bind(",hIf", "hint inputs --first")
config.bind(',hO', 'hint links fill :open -t -r {hint-url}') config.bind(",hO", "hint links fill :open -t -r {hint-url}")
config.bind(',ho', 'hint links fill :open {hint-url}') config.bind(",ho", "hint links fill :open {hint-url}")
config.bind(',hR', 'hint --rapid links window') config.bind(",hR", "hint --rapid links window")
config.bind(',hr', 'hint --rapid links tab-bg') config.bind(",hr", "hint --rapid links tab-bg")
config.bind(',htb', 'hint all tab-bg') config.bind(",htb", "hint all tab-bg")
config.bind(',htf', 'hint all tab-fg') config.bind(",htf", "hint all tab-fg")
config.bind(',htt', 'hint all tab') config.bind(",htt", "hint all tab")
config.bind(',hw', 'hint all window') config.bind(",hw", "hint all window")
config.bind(',hy', 'hint links yank') config.bind(",hy", "hint links yank")
config.bind(',hY', 'hint links yank-primary') config.bind(",hY", "hint links yank-primary")
# Bindings for hint mode # Bindings for hint mode
config.bind('<Ctrl-B>', 'hint all tab-bg', mode='hint') config.bind("<Ctrl-B>", "hint all tab-bg", mode="hint")
config.bind('<Ctrl-F>', 'hint links', mode='hint') config.bind("<Ctrl-F>", "hint links", mode="hint")
config.bind('<Ctrl-R>', 'hint --rapid links tab-bg', mode='hint') config.bind("<Ctrl-R>", "hint --rapid links tab-bg", mode="hint")
config.bind('<Escape>', 'mode-leave', mode='hint') config.bind("<Escape>", "mode-leave", mode="hint")
config.bind('<Return>', 'hint-follow', mode='hint') config.bind("<Return>", "hint-follow", mode="hint")
# Move # Move
config.bind('<Ctrl-PgDown>', 'tab-next') config.bind("<Ctrl-PgDown>", "tab-next")
config.bind('<Ctrl-C>', 'back -w') config.bind("<Ctrl-C>", "back -w")
config.bind('<Ctrl-R>', 'forward -w') config.bind("<Ctrl-R>", "forward -w")
config.bind('<Ctrl-h>', 'home') config.bind("<Ctrl-h>", "home")
config.bind('T', 'tab-next') config.bind("T", "tab-next")
config.bind('S', 'tab-prev') config.bind("S", "tab-prev")
config.bind('C', 'back') config.bind("C", "back")
config.bind('R', 'forward') config.bind("R", "forward")
# cmd # cmd
config.bind(',sb', 'set-cmd-text -s :bind') config.bind(",sb", "cmd-set-text -s :bind")
config.bind(',st', 'set-cmd-text -s :set -t') config.bind(",st", "cmd-set-text -s :set -t")
config.bind(',ss', 'set') config.bind(",ss", "set")
config.bind(',sS', 'set-cmd-text -s :set') config.bind(",sS", "cmd-set-text -s :set")
# open # open
config.bind('<Ctrl-N>', 'open -w') config.bind("<Ctrl-N>", "open -w")
config.bind('<Ctrl-Shift-N>', 'open -p') config.bind("<Ctrl-Shift-N>", "open -p")
config.bind('<Ctrl-T>', 'open -t') config.bind("<Ctrl-T>", "open -t")
config.bind(',ob', 'set-cmd-text -s :open -b') config.bind(",ob", "cmd-set-text -s :open -b")
config.bind(',oB', 'set-cmd-text :open -b -r {url:pretty}') config.bind(",oB", "cmd-set-text :open -b -r {url:pretty}")
config.bind(',oP', 'set-cmd-text :open -t -r {url:pretty}') config.bind(",oP", "cmd-set-text :open -t -r {url:pretty}")
config.bind(',ott', 'open -t') config.bind(",ott", "open -t")
config.bind(',otT', 'set-cmd-text -s :open -t') config.bind(",otT", "cmd-set-text -s :open -t")
config.bind(',ow', 'set-cmd-text -s :open -w') config.bind(",ow", "cmd-set-text -s :open -w")
config.bind(',oW', 'set-cmd-text :open -w {url:pretty}') config.bind(",oW", "cmd-set-text :open -w {url:pretty}")
config.bind(',occ', 'open -- {clipboard}') config.bind(",occ", "open -- {clipboard}")
config.bind(',ocC', 'open -t -- {clipboard}') config.bind(",ocC", "open -t -- {clipboard}")
config.bind(',ocp', 'open -- {primary}') config.bind(",ocp", "open -- {primary}")
config.bind(',ocP', 'open -t -- {primary}') config.bind(",ocP", "open -t -- {primary}")
config.bind(',ocw', 'open -w -- {clipboard}') config.bind(",ocw", "open -w -- {clipboard}")
config.bind(',ocW', 'open -w -- {primary}') config.bind(",ocW", "open -w -- {primary}")
config.bind('o', 'set-cmd-text -s :open') config.bind("o", "cmd-set-text -s :open")
config.bind('O', 'set-cmd-text :open {url:pretty}') config.bind("O", "cmd-set-text :open {url:pretty}")
# tabs # tabs
config.bind('<Alt-1>', 'tab-focus 1') config.bind("<Alt-1>", "tab-focus 1")
config.bind('<Alt-2>', 'tab-focus 2') config.bind("<Alt-2>", "tab-focus 2")
config.bind('<Alt-3>', 'tab-focus 3') config.bind("<Alt-3>", "tab-focus 3")
config.bind('<Alt-4>', 'tab-focus 4') config.bind("<Alt-4>", "tab-focus 4")
config.bind('<Alt-5>', 'tab-focus 5') config.bind("<Alt-5>", "tab-focus 5")
config.bind('<Alt-6>', 'tab-focus 6') config.bind("<Alt-6>", "tab-focus 6")
config.bind('<Alt-7>', 'tab-focus 7') config.bind("<Alt-7>", "tab-focus 7")
config.bind('<Alt-8>', 'tab-focus 8') config.bind("<Alt-8>", "tab-focus 8")
config.bind('<Alt-9>', 'tab-focus -1') config.bind("<Alt-9>", "tab-focus -1")
config.bind('<Alt-m>', 'tab-mute') config.bind("<Alt-m>", "tab-mute")
config.bind('<Ctrl-Tab>', 'tab-focus last') config.bind("<Ctrl-Tab>", "tab-focus last")
config.bind('<Ctrl-W>', 'tab-close') config.bind("<Ctrl-W>", "tab-close")
config.bind(',tT', 'tab-move +') config.bind(",tT", "tab-move +")
config.bind(',tS', 'tab-move -') config.bind(",tS", "tab-move -")
config.bind(',tn', 'tab-next') config.bind(",tn", "tab-next")
config.bind(',tp', 'tab-prev') config.bind(",tp", "tab-prev")
config.bind(',t«', 'tab-focus -1') config.bind(",t«", "tab-focus -1")
config.bind(',t»', 'tab-focus 1') config.bind(",t»", "tab-focus 1")
config.bind(',tC', 'tab-clone') config.bind(",tC", "tab-clone")
config.bind(',tD', 'tab-only') config.bind(",tD", "tab-only")
config.bind(',td', 'tab-close') config.bind(",td", "tab-close")
config.bind(',tf', 'set-cmd-text -sr :tab-focus') config.bind(",tf", "cmd-set-text -sr :tab-focus")
config.bind(',tg', 'tab-give') config.bind(",tg", "tab-give")
config.bind(',tl', 'tab-focus last') config.bind(",tl", "tab-focus last")
config.bind(',tm', 'tab-move') config.bind(",tm", "tab-move")
config.bind(',tP', 'tab-pin') config.bind(",tP", "tab-pin")
config.bind(',ts', 'set-cmd-text -s :tab-select') config.bind(",ts", "cmd-set-text -s :tab-select")
# scoll # scoll
config.bind('G', 'scroll-to-perc') config.bind("G", "scroll-to-perc")
config.bind('gg', 'scroll-to-perc 0') config.bind("gg", "scroll-to-perc 0")
config.bind('c', 'scroll left') config.bind("c", "scroll left")
config.bind('t', 'scroll down') config.bind("t", "scroll down")
config.bind('s', 'scroll up') config.bind("s", "scroll up")
config.bind('r', 'scroll right') config.bind("r", "scroll right")
config.bind('<Ctrl-F>', 'scroll-page 0 1') config.bind("<Ctrl-F>", "scroll-page 0 1")
config.bind('<Ctrl-B>', 'scroll-page 0 -1') config.bind("<Ctrl-B>", "scroll-page 0 -1")
config.bind('<Ctrl-D>', 'scroll-page 0 0.5') config.bind("<Ctrl-D>", "scroll-page 0 0.5")
config.bind('<Ctrl-U>', 'scroll-page 0 -0.5') config.bind("<Ctrl-U>", "scroll-page 0 -0.5")
# navigate # navigate
config.bind(',nd', 'navigate decrement') config.bind(",nd", "navigate decrement")
config.bind(',ni', 'navigate increment') config.bind(",ni", "navigate increment")
config.bind(',nn', 'navigate prev') config.bind(",nn", "navigate prev")
config.bind(',nN', 'navigate next -t') config.bind(",nN", "navigate next -t")
config.bind(',np', 'navigate next') config.bind(",np", "navigate next")
config.bind(',nP', 'navigate prev -t') config.bind(",nP", "navigate prev -t")
config.bind(',nu', 'navigate up') config.bind(",nu", "navigate up")
config.bind(',nU', 'navigate up -t') config.bind(",nU", "navigate up -t")
# search # search
config.bind('n', 'search-next') config.bind("n", "search-next")
config.bind('N', 'search-prev') config.bind("N", "search-prev")
# print # print
config.bind('<Ctrl-Alt-p>', 'print') config.bind("<Ctrl-Alt-p>", "print")
config.bind(',qq', 'quit') config.bind(",qq", "quit")
config.bind(',qs', 'quit --save') config.bind(",qs", "quit --save")
config.bind(',qw', 'close') config.bind(",qw", "close")
config.bind('<Ctrl-Q>', 'quit') config.bind("<Ctrl-Q>", "quit")
# reload # reload
config.bind(',rr', 'reload') config.bind(",rr", "reload")
config.bind(',rR', 'reload -f') config.bind(",rR", "reload -f")
config.bind('<F5>', 'reload') config.bind("<F5>", "reload")
config.bind('<Ctrl-F5>', 'reload -f') config.bind("<Ctrl-F5>", "reload -f")
# view # view
config.bind(',vh', 'history') config.bind(",vh", "history")
config.bind(',vs', 'view-source') config.bind(",vs", "view-source")
config.bind(",vm", "spawn mpv {url}")
# yank # yank
config.bind('yd', 'yank domain') config.bind("yd", "yank domain")
config.bind('yD', 'yank domain -s') config.bind("yD", "yank domain -s")
config.bind('yi', 'yank inline [{title}]({url})') config.bind("yi", "yank inline [{title}]({url})")
config.bind('yI', 'yank inline [{title}]({url}) -s') config.bind("yI", "yank inline [{title}]({url}) -s")
config.bind('yp', 'yank pretty-url') config.bind("yp", "yank pretty-url")
config.bind('yP', 'yank pretty-url -s') config.bind("yP", "yank pretty-url -s")
config.bind('yt', 'yank title') config.bind("yt", "yank title")
config.bind('yT', 'yank title -s') config.bind("yT", "yank title -s")
config.bind('yy', 'yank') config.bind("yy", "yank")
config.bind('yY', 'yank -s') config.bind("yY", "yank -s")
config.bind('<Escape>', 'clear-keychain ;; search ;; fullscreen --leave') config.bind("<Escape>", "clear-keychain ;; search ;; fullscreen --leave")
config.bind('+', 'zoom-in') config.bind("+", "zoom-in")
config.bind('-', 'zoom-out') config.bind("-", "zoom-out")
config.bind('=', 'zoom') config.bind("=", "zoom")
config.bind('?', 'set-cmd-text ?') config.bind("?", "cmd-set-text ?")
config.bind('/', 'set-cmd-text /') config.bind("/", "cmd-set-text /")
config.bind(':', 'set-cmd-text :') config.bind(":", "cmd-set-text :")
config.bind('.', 'repeat-command') config.bind(".", "repeat-command")
config.bind('<Ctrl-Shift-Tab>', 'nop') config.bind("<Ctrl-Shift-Tab>", "nop")
config.bind('<Ctrl-s>', 'stop') config.bind("<Ctrl-s>", "stop")
config.bind('<F11>', 'fullscreen') config.bind("<F11>", "fullscreen")
config.bind('<Return>', 'selection-follow') config.bind("<Return>", "selection-follow")
config.bind('<Ctrl-Return>', 'selection-follow -t') config.bind("<Ctrl-Return>", "selection-follow -t")
config.bind('<back>', 'back') config.bind("<back>", "back")
config.bind('<forward>', 'forward') config.bind("<forward>", "forward")
config.bind('<Ctrl-V>', 'mode-enter passthrough') config.bind("<Ctrl-V>", "mode-enter passthrough")
config.bind("'", 'mode-enter jump_mark') config.bind("'", "mode-enter jump_mark")
config.bind('v', 'mode-enter caret') config.bind("v", "mode-enter caret")
config.bind('V', 'mode-enter caret ;; selection-toggle --line') config.bind("V", "mode-enter caret ;; selection-toggle --line")
config.bind('`', 'mode-enter set_mark') config.bind("`", "mode-enter set_mark")
config.bind('i', 'mode-enter insert') config.bind("i", "mode-enter insert")
config.bind('q', 'macro-record') config.bind("q", "macro-record")
config.bind('@', 'macro-run') config.bind("@", "macro-run")
config.bind('U', 'undo -w') config.bind("U", "undo -w")
config.bind('<Ctrl-Shift-T>', 'undo') config.bind("<Ctrl-Shift-T>", "undo")
config.bind('u', 'undo') config.bind("u", "undo")
# Bindings for caret mode # Bindings for caret mode
config.bind('C', 'scroll left', mode='caret') config.bind("C", "scroll left", mode="caret")
config.bind('T', 'scroll down', mode='caret') config.bind("T", "scroll down", mode="caret")
config.bind('S', 'scroll up', mode='caret') config.bind("S", "scroll up", mode="caret")
config.bind('R', 'scroll right', mode='caret') config.bind("R", "scroll right", mode="caret")
config.bind('c', 'move-to-prev-char', mode='caret') config.bind("c", "move-to-prev-char", mode="caret")
config.bind('t', 'move-to-next-line', mode='caret') config.bind("t", "move-to-next-line", mode="caret")
config.bind('s', 'move-to-prev-line', mode='caret') config.bind("s", "move-to-prev-line", mode="caret")
config.bind('r', 'move-to-next-char', mode='caret') config.bind("r", "move-to-next-char", mode="caret")
config.bind('$', 'move-to-end-of-line', mode='caret') config.bind("$", "move-to-end-of-line", mode="caret")
config.bind('0', 'move-to-start-of-line', mode='caret') config.bind("0", "move-to-start-of-line", mode="caret")
config.bind('<Ctrl-Space>', 'selection-drop', mode='caret') config.bind("<Ctrl-Space>", "selection-drop", mode="caret")
config.bind('<Escape>', 'mode-leave', mode='caret') config.bind("<Escape>", "mode-leave", mode="caret")
config.bind('<Return>', 'yank selection', mode='caret') config.bind("<Return>", "yank selection", mode="caret")
config.bind('<Space>', 'selection-toggle', mode='caret') config.bind("<Space>", "selection-toggle", mode="caret")
config.bind('v', 'selection-toggle', mode='caret') config.bind("v", "selection-toggle", mode="caret")
config.bind('V', 'selection-toggle --line', mode='caret') config.bind("V", "selection-toggle --line", mode="caret")
config.bind('y', 'yank selection', mode='caret') config.bind("y", "yank selection", mode="caret")
config.bind('Y', 'yank selection -s', mode='caret') config.bind("Y", "yank selection -s", mode="caret")
config.bind('[', 'move-to-start-of-prev-block', mode='caret') config.bind("[", "move-to-start-of-prev-block", mode="caret")
config.bind(']', 'move-to-start-of-next-block', mode='caret') config.bind("]", "move-to-start-of-next-block", mode="caret")
config.bind('{', 'move-to-end-of-prev-block', mode='caret') config.bind("{", "move-to-end-of-prev-block", mode="caret")
config.bind('}', 'move-to-end-of-next-block', mode='caret') config.bind("}", "move-to-end-of-next-block", mode="caret")
config.bind('b', 'move-to-prev-word', mode='caret') config.bind("b", "move-to-prev-word", mode="caret")
config.bind('e', 'move-to-end-of-word', mode='caret') config.bind("e", "move-to-end-of-word", mode="caret")
config.bind('gg', 'move-to-start-of-document', mode='caret') config.bind("gg", "move-to-start-of-document", mode="caret")
config.bind('G', 'move-to-end-of-document', mode='caret') config.bind("G", "move-to-end-of-document", mode="caret")
config.bind('n', 'mode-enter normal', mode='caret') config.bind("n", "mode-enter normal", mode="caret")
config.bind('o', 'selection-reverse', mode='caret') config.bind("o", "selection-reverse", mode="caret")
config.bind('w', 'move-to-next-word', mode='caret') config.bind("w", "move-to-next-word", mode="caret")
# Bindings for command mode # Bindings for command mode
config.bind('<Alt-B>', 'rl-backward-word', mode='command') config.bind("<Alt-B>", "rl-backward-word", mode="command")
config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='command') config.bind("<Alt-Backspace>", "rl-backward-kill-word", mode="command")
config.bind('<Alt-D>', 'rl-kill-word', mode='command') config.bind("<Alt-D>", "rl-kill-word", mode="command")
config.bind('<Alt-F>', 'rl-forward-word', mode='command') config.bind("<Alt-F>", "rl-forward-word", mode="command")
config.bind('<Ctrl-?>', 'rl-delete-char', mode='command') config.bind("<Ctrl-?>", "rl-delete-char", mode="command")
config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='command') config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="command")
config.bind('<Ctrl-B>', 'rl-backward-char', mode='command') config.bind("<Ctrl-B>", "rl-backward-char", mode="command")
config.bind('<Ctrl-C>', 'completion-item-yank', mode='command') config.bind("<Ctrl-C>", "completion-item-yank", mode="command")
config.bind('<Ctrl-D>', 'completion-item-del', mode='command') config.bind("<Ctrl-D>", "completion-item-del", mode="command")
config.bind('<Ctrl-E>', 'rl-end-of-line', mode='command') config.bind("<Ctrl-E>", "rl-end-of-line", mode="command")
config.bind('<Ctrl-F>', 'rl-forward-char', mode='command') config.bind("<Ctrl-F>", "rl-forward-char", mode="command")
config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='command') config.bind("<Ctrl-H>", "rl-backward-delete-char", mode="command")
config.bind('<Ctrl-K>', 'rl-kill-line', mode='command') config.bind("<Ctrl-K>", "rl-kill-line", mode="command")
config.bind('<Ctrl-N>', 'command-history-next', mode='command') config.bind("<Ctrl-N>", "command-history-next", mode="command")
config.bind('<Ctrl-P>', 'command-history-prev', mode='command') config.bind("<Ctrl-P>", "command-history-prev", mode="command")
config.bind('<Ctrl-Return>', 'command-accept --rapid', mode='command') config.bind("<Ctrl-Return>", "command-accept --rapid", mode="command")
config.bind('<Ctrl-Shift-C>', 'completion-item-yank --sel', mode='command') config.bind("<Ctrl-Shift-C>", "completion-item-yank --sel", mode="command")
config.bind('<Ctrl-Shift-Tab>', 'completion-item-focus prev-category', mode='command') config.bind("<Ctrl-Shift-Tab>", "completion-item-focus prev-category", mode="command")
config.bind('<Ctrl-Tab>', 'completion-item-focus next-category', mode='command') config.bind("<Ctrl-Tab>", "completion-item-focus next-category", mode="command")
config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='command') config.bind("<Ctrl-U>", "rl-unix-line-discard", mode="command")
config.bind('<Ctrl-W>', 'rl-unix-word-rubout', mode='command') config.bind("<Ctrl-W>", "rl-unix-word-rubout", mode="command")
config.bind('<Ctrl-Y>', 'rl-yank', mode='command') config.bind("<Ctrl-Y>", "rl-yank", mode="command")
config.bind('<Down>', 'completion-item-focus --history next', mode='command') config.bind("<Down>", "completion-item-focus --history next", mode="command")
config.bind('<Escape>', 'mode-leave', mode='command') config.bind("<Escape>", "mode-leave", mode="command")
config.bind('<PgDown>', 'completion-item-focus next-page', mode='command') config.bind("<PgDown>", "completion-item-focus next-page", mode="command")
config.bind('<PgUp>', 'completion-item-focus prev-page', mode='command') config.bind("<PgUp>", "completion-item-focus prev-page", mode="command")
config.bind('<Return>', 'command-accept', mode='command') config.bind("<Return>", "command-accept", mode="command")
config.bind('<Shift-Delete>', 'completion-item-del', mode='command') config.bind("<Shift-Delete>", "completion-item-del", mode="command")
config.bind('<Shift-Tab>', 'completion-item-focus prev', mode='command') config.bind("<Shift-Tab>", "completion-item-focus prev", mode="command")
config.bind('<Tab>', 'completion-item-focus next', mode='command') config.bind("<Tab>", "completion-item-focus next", mode="command")
config.bind('<Up>', 'completion-item-focus --history prev', mode='command') config.bind("<Up>", "completion-item-focus --history prev", mode="command")
# Bindings for insert mode # Bindings for insert mode
config.bind('<Ctrl-E>', 'edit-text', mode='insert') config.bind("<Ctrl-E>", "edit-text", mode="insert")
config.bind('<Escape>', 'mode-leave', mode='insert') config.bind("<Escape>", "mode-leave", mode="insert")
config.bind('<Shift-Escape>', 'fake-key <Escape>', mode='insert') config.bind("<Shift-Escape>", "fake-key <Escape>", mode="insert")
config.bind('<Shift-Ins>', 'insert-text -- {primary}', mode='insert') config.bind("<Shift-Ins>", "insert-text -- {primary}", mode="insert")
# Bindings for passthrough mode # Bindings for passthrough mode
config.bind('<Shift-Escape>', 'mode-leave', mode='passthrough') config.bind("<Shift-Escape>", "mode-leave", mode="passthrough")
# Bindings for prompt mode # Bindings for prompt mode
config.bind('<Alt-B>', 'rl-backward-word', mode='prompt') config.bind("<Alt-B>", "rl-backward-word", mode="prompt")
config.bind('<Alt-Backspace>', 'rl-backward-kill-word', mode='prompt') config.bind("<Alt-Backspace>", "rl-backward-kill-word", mode="prompt")
config.bind('<Alt-D>', 'rl-kill-word', mode='prompt') config.bind("<Alt-D>", "rl-kill-word", mode="prompt")
config.bind('<Alt-F>', 'rl-forward-word', mode='prompt') config.bind("<Alt-F>", "rl-forward-word", mode="prompt")
config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='prompt') config.bind("<Alt-Shift-Y>", "prompt-yank --sel", mode="prompt")
config.bind('<Alt-Y>', 'prompt-yank', mode='prompt') config.bind("<Alt-Y>", "prompt-yank", mode="prompt")
config.bind('<Ctrl-?>', 'rl-delete-char', mode='prompt') config.bind("<Ctrl-?>", "rl-delete-char", mode="prompt")
config.bind('<Ctrl-A>', 'rl-beginning-of-line', mode='prompt') config.bind("<Ctrl-A>", "rl-beginning-of-line", mode="prompt")
config.bind('<Ctrl-B>', 'rl-backward-char', mode='prompt') config.bind("<Ctrl-B>", "rl-backward-char", mode="prompt")
config.bind('<Ctrl-E>', 'rl-end-of-line', mode='prompt') config.bind("<Ctrl-E>", "rl-end-of-line", mode="prompt")
config.bind('<Ctrl-F>', 'rl-forward-char', mode='prompt') config.bind("<Ctrl-F>", "rl-forward-char", mode="prompt")
config.bind('<Ctrl-H>', 'rl-backward-delete-char', mode='prompt') config.bind("<Ctrl-H>", "rl-backward-delete-char", mode="prompt")
config.bind('<Ctrl-K>', 'rl-kill-line', mode='prompt') config.bind("<Ctrl-K>", "rl-kill-line", mode="prompt")
config.bind('<Ctrl-P>', 'prompt-open-download --pdfjs', mode='prompt') config.bind("<Ctrl-P>", "prompt-open-download --pdfjs", mode="prompt")
config.bind('<Ctrl-U>', 'rl-unix-line-discard', mode='prompt') config.bind("<Ctrl-U>", "rl-unix-line-discard", mode="prompt")
config.bind('<Ctrl-W>', 'rl-unix-word-rubout', mode='prompt') config.bind("<Ctrl-W>", "rl-unix-word-rubout", mode="prompt")
config.bind('<Ctrl-X>', 'prompt-open-download', mode='prompt') config.bind("<Ctrl-X>", "prompt-open-download", mode="prompt")
config.bind('<Ctrl-Y>', 'rl-yank', mode='prompt') config.bind("<Ctrl-Y>", "rl-yank", mode="prompt")
config.bind('<Down>', 'prompt-item-focus next', mode='prompt') config.bind("<Down>", "prompt-item-focus next", mode="prompt")
config.bind('<Escape>', 'mode-leave', mode='prompt') config.bind("<Escape>", "mode-leave", mode="prompt")
config.bind('<Return>', 'prompt-accept', mode='prompt') config.bind("<Return>", "prompt-accept", mode="prompt")
config.bind('<Shift-Tab>', 'prompt-item-focus prev', mode='prompt') config.bind("<Shift-Tab>", "prompt-item-focus prev", mode="prompt")
config.bind('<Tab>', 'prompt-item-focus next', mode='prompt') config.bind("<Tab>", "prompt-item-focus next", mode="prompt")
config.bind('<Up>', 'prompt-item-focus prev', mode='prompt') config.bind("<Up>", "prompt-item-focus prev", mode="prompt")
# Bindings for register mode # Bindings for register mode
config.bind('<Escape>', 'mode-leave', mode='register') config.bind("<Escape>", "mode-leave", mode="register")
# Bindings for yesno mode # Bindings for yesno mode
config.bind('<Alt-Shift-Y>', 'prompt-yank --sel', mode='yesno') config.bind("<Alt-Shift-Y>", "prompt-yank --sel", mode="yesno")
config.bind('<Alt-Y>', 'prompt-yank', mode='yesno') config.bind("<Alt-Y>", "prompt-yank", mode="yesno")
config.bind('<Escape>', 'mode-leave', mode='yesno') config.bind("<Escape>", "mode-leave", mode="yesno")
config.bind('<Return>', 'prompt-accept', mode='yesno') config.bind("<Return>", "prompt-accept", mode="yesno")
config.bind('N', 'prompt-accept --save no', mode='yesno') config.bind("N", "prompt-accept --save no", mode="yesno")
config.bind('Y', 'prompt-accept --save yes', mode='yesno') config.bind("Y", "prompt-accept --save yes", mode="yesno")
config.bind('n', 'prompt-accept no', mode='yesno') config.bind("n", "prompt-accept no", mode="yesno")
config.bind('y', 'prompt-accept yes', mode='yesno') config.bind("y", "prompt-accept yes", mode="yesno")

View File

@@ -1 +1 @@
/home/phundrak/fromGIT/nord-qutebrowser/nord-qutebrowser.py ../../fromGIT/qutebrowser-nord/nord-qutebrowser.py

View File

@@ -1,120 +1,8 @@
/* -*- mode: css -*- */ /* -*- mode: scss -*- */
/*
* sidetab-adapta theme,
* based on sidetab theme by deadguy.
*
* Theme found at https://github.com/shizonic/nord-rofi-theme
* Modified by Pundrak
*
* This theme has been dedicated to the public domain.
*
*/
configuration { configuration {
show-icons: true; show-icons: true;
sidebar-mode: false; sidebar-mode: false;
modi: "window,ssh,drun,combi"; modi: "ssh,drun,combi";
}
* {
background-color: #2e344030;
text-color: #FFFFFF;
accent-color: #88c0d0;
accent2-color: #88c0d0;
hover-color: #8fbcbb;
urgent-color: #FFFFFF;
window-color: #ffffff;
selected-normal-foreground: @background-color;
normal-foreground: @text-color;
selected-normal-background: @hover-color;
normal-background: @background-color;
selected-urgent-foreground: @background-color;
urgent-foreground: @background-color;
selected-urgent-background: @urgent-color;
urgent-background: @background-color;
selected-active-foreground: @background-color;
active-foreground: @background-color;
selected-active-background: @hover-color;
active-background: @accent-color;
}
#window {
anchor: center;
location: center;
width: 800px;
height: 80%;
}
#mainbox {
children: [ entry, listview, mode-switcher ];
}
entry {
expand: false;
margin: 8px;
}
element {
padding: 8px;
}
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;
border: 0 4px solid 0 0;
border-color: @accent2-color;
}
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: @normal-background;
text-color: @normal-foreground;
}
element alternate.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
element alternate.active {
background-color: @active-background;
text-color: @active-foreground;
}
button {
padding: 8px;
}
button selected {
background-color: @active-background;
text-color: @background-color;
} }
@theme "nord"

142
.config/rofi/nord.rasi Normal file
View File

@@ -0,0 +1,142 @@
/* -*- mode: css -*- */
/**
* Nordic rofi theme
* Adapted by undiabler <undiabler@gmail.com>
*
* Nord Color palette imported from https://www.nordtheme.com/
*
*/
configuration {
font: "Envy Code R 10";
width: 30;
line-margin: 10;
lines: 6;
columns: 2;
display-ssh: "";
display-run: "";
display-drun: "";
display-window: "";
display-combi: "";
show-icons: true;
}
* {
nord0: #2e3440;
nord1: #3b4252;
nord2: #434c5e;
nord3: #4c566a;
nord4: #d8dee9;
nord5: #e5e9f0;
nord6: #eceff4;
nord7: #8fbcbb;
nord8: #88c0d0;
nord9: #81a1c1;
nord10: #5e81ac;
nord11: #bf616a;
nord12: #d08770;
nord13: #ebcb8b;
nord14: #a3be8c;
nord15: #b48ead;
foreground: @nord9;
backlight: #ccffeedd;
background-color: transparent;
highlight: underline bold #eceff4;
transparent: rgba(46,52,64,0);
}
window {
location: center;
anchor: center;
transparency: "screenshot";
border: 0px;
border-radius: 6px;
background-color: @transparent;
spacing: 0;
children: [mainbox];
orientation: horizontal;
}
mainbox {
spacing: 0;
children: [ inputbar, message, listview ];
}
message {
color: @nord0;
padding: 5;
border-color: @foreground;
border: 0px 2px 2px 2px;
background-color: @nord7;
}
inputbar {
color: @nord6;
padding: 11px;
background-color: #3b4252;
border: 1px;
border-radius: 6px 6px 0px 0px;
border-color: @nord10;
}
entry, prompt, case-indicator {
text-font: inherit;
text-color:inherit;
}
prompt {
margin: 0px 0.3em 0em 0em ;
}
listview {
padding: 8px;
border-radius: 0px 0px 6px 6px;
border-color: @nord10;
border: 0px 1px 1px 1px;
background-color: rgba(46,52,64,0.9);
dynamic: false;
}
element {
padding: 3px;
vertical-align: 0.5;
border-radius: 4px;
background-color: transparent;
color: @foreground;
text-color: rgb(216, 222, 233);
}
element selected.normal {
background-color: @nord7;
text-color: #2e3440;
}
element-text, element-icon {
background-color: inherit;
text-color: inherit;
}
button {
padding: 6px;
color: @foreground;
horizontal-align: 0.5;
border: 2px 0px 2px 2px;
border-radius: 4px 0px 0px 4px;
border-color: @foreground;
}
button selected normal {
border: 2px 0px 2px 2px;
border-color: @foreground;
}

303
.config/sway/config Normal file
View File

@@ -0,0 +1,303 @@
set $nord0 #2E3440
set $nord1 #3B4252
set $nord2 #434C5E
set $nord3 #4C566A
set $nord4 #D8DEE9
set $nord5 #E5E9F0
set $nord6 #ECEFF4
set $nord7 #8FBCBB
set $nord8 #88C0D0
set $nord9 #81A1C1
set $nord10 #5E81AC
set $nord11 #BF616A
set $nord12 #D08770
set $nord13 #EBCB8B
set $nord14 #A3BE8C
set $nord15 #B48EAD
set $bg $nord3
set $fg $nord5
set $mod Mod4
set $left c
set $down t
set $up s
set $right r
set $term kitty
set $menu "rofi -combi-modi drun -show combi"
output eDP-1 {
mode 1920x1080@120Hz
position 2560,0
bg /home/phundrak/Pictures/Wallpapers/nord/spacemars.jpg fill
}
output HDMI-A-1 {
mode 2560x1080@60Hz
position 0,0
bg /home/phundrak/Pictures/Wallpapers/nord/spacemars.jpg fill
}
exec swayidle -w \
timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
timeout 601 'plock' \
before-sleep 'playerctl pause' \
before-sleep 'plock'
input "2:14:ETPS/2_Elantech_Touchpad" {
dwt enabled
tap enabled
natural_scroll disabled
middle_emulation enabled
}
input "1267:12642:ELAN0412:00_04F3:3162_Touchpad" {
dwt enabled
tap enabled
natural_scroll disabled
middle_emulation enabled
}
input "1386:792:Wacom_USB_Bamboo_PAD_Finger" {
dwt enabled
tap enabled
middle_emulation enabled
}
input "1386:792:Wacom_USB_Bamboo_PAD_Pen" {
map_to_output HDMI-A-1
}
input * {
xkb_layout "fr"
xkb_variant "bepo_afnor"
xkb_options "caps:ctrl_modifier"
}
input type:keyboard xkb_numlock enabled
mode "resize" {
bindsym $left resize shrink width 10px
bindsym $down resize grow height 10px
bindsym $up resize shrink height 10px
bindsym $right resize grow width 10px
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
bindsym q mode "default"
}
mode "buffers" {
bindsym d kill; mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
bindsym q mode "default"
}
mode "rofi" {
bindsym a exec awiki; mode "default"
bindsym b exec bluetooth-connect; mode "default"
bindsym e exec rofi-emoji; mode "default"
bindsym r exec $menu; mode "default"
bindsym s exec rofi -show ssh; mode "default"
bindsym y exec ytplay; mode "default"
bindsym Shift+y exec rofi-ytdl; mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
bindsym q mode "default"
}
mode "apps" {
bindsym b exec firefox; mode "default"
bindsym Shift+b exec qutebrowser; mode "default"
bindsym d exec discord; mode "default"
bindsym e exec emacsclient -c; mode "default"
bindsym g exec gimp; mode "default"
bindsym n exec nemo; mode "default"
bindsym r mode "rofi"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
bindsym q mode "default"
}
mode "windows" {
bindsym period mode "resize"
bindsym $left focus left; mode "default"
bindsym $right focus right; mode "default"
bindsym $up focus up; mode "default"
bindsym $down focus down; mode "default"
bindsym Shift+$left move left; mode "default"
bindsym Shift+$right move right; mode "default"
bindsym Shift+$up move up; mode "default"
bindsym Shift+$down move down; mode "default"
bindsym Ctrl+$left move workspace to output left; mode "default"
bindsym Ctrl+$right move workspace to output right; mode "default"
bindsym Ctrl+$up move workspace to output up; mode "default"
bindsym Ctrl+$down move workspace to output down; mode "default"
bindsym slash splith; mode "default"
bindsym minus splitv; mode "default"
bindsym a focus parent; mode "default"
bindsym d kill; mode "default"
bindsym f fullscreen; mode "default"
bindsym Shift+f floating toggle; mode "default"
bindsym Space focus mode_toggle; mode "default"
bindsym e layout toggle split; mode "default"
bindsym i layout tabbed; mode "default"
bindsym u layout stacking; mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
bindsym q mode "default"
}
mode "sway" {
bindsym r reload
bindsym q exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
}
mode "leader" {
bindsym minus move scratchpad; mode "default"
bindsym plus scratchpad show; mode "default"
bindsym a mode "apps"
bindsym b mode "buffers"
bindsym l exec "plock"; mode "default"
bindsym q mode "sway"
bindsym w mode "windows"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
}
bindsym $mod+$left focus left
bindsym $mod+$right focus right
bindsym $mod+$up focus up
bindsym $mod+$down focus down
bindgesture swipe:3:left focus left
bindgesture swipe:3:right focus right
bindgesture swipe:3:up focus up
bindgesture swipe:3:down focus down
bindsym Shift+$mod+$left move left
bindsym Shift+$mod+$right move right
bindsym Shift+$mod+$up move up
bindsym Shift+$mod+$down move down
bindgesture swipe:4:left move left
bindgesture swipe:4:right move right
bindgesture swipe:4:up move up
bindgesture swipe:4:down move down
mode "screenshot" {
bindsym Print exec "screenshot"; mode "default"
bindsym c exec "screenshot -c"; mode "default"
bindsym s exec "screenshot -s"; mode "default"
bindsym g exec "screenshot -g"; mode "default"
bindsym d exec "screenshot -d 3"; mode "default"
bindsym Shift+s exec "screenshot -sc"; mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym Ctrl+g mode "default"
bindsym q mode "default"
}
bindsym $mod+Space mode "leader"
bindsym $mod+Return exec $term
bindsym $mod+d exec $menu
bindsym Print mode "screenshot"
bindsym $mod+Print exec "screenshot -c"
bindsym $mod+quotedbl workspace number 1
bindsym $mod+guillemotleft workspace number 2
bindsym $mod+guillemotright workspace number 3
bindsym $mod+parenleft workspace number 4
bindsym $mod+parenright workspace number 5
bindsym $mod+at workspace number 6
bindsym $mod+plus workspace number 7
bindsym $mod+minus workspace number 8
bindsym $mod+slash workspace number 9
bindsym $mod+asterisk workspace number 0
bindsym $mod+Shift+quotedbl move container to workspace number 1
bindsym $mod+Shift+guillemotleft move container to workspace number 2
bindsym $mod+Shift+guillemotright move container to workspace number 3
bindsym $mod+Shift+parenleft move container to workspace number 4
bindsym $mod+Shift+parenright move container to workspace number 5
bindsym $mod+Shift+at move container to workspace number 6
bindsym $mod+Shift+plus move container to workspace number 7
bindsym $mod+Shift+minus move container to workspace number 8
bindsym $mod+Shift+slash move container to workspace number 9
bindsym $mod+Shift+asterisk move container to workspace number 0
bindsym --locked XF86AudioPlay exec playerctl play-pause
bindsym --locked XF86AudioPause exec playerctl pause
bindsym --locked XF86AudioStop exec playerctl stop
bindsym --locked XF86AudioPrev exec playerctl previous
bindsym --locked XF86AudioNext exec playerctl next
bindsym --locked XF86AudioForward exec playerctl position +1
bindsym --locked XF86AudioRewind exec playerctl position -1
bindsym --locked XF86AudioRaiseVolume exec pamixer -i 2
bindsym --locked XF86AudioLowerVolume exec pamixer -d 2
bindsym XF86MonBrightnessUp exec xbacklight -perceived -inc 2
bindsym XF86MonBrightnessDown exec xbacklight -perceived -dec 2
bindsym XF86KbdBrightnessUp exec xbacklight -perceived -inc 2
bindsym XF86KbdBrightnessDown exec xbacklight -perceived -dec 2
floating_modifier $mod normal
gaps outer 15px
gaps inner 20px
default_border pixel 2
smart_borders on
# class border background text indicator child_border
client.urgent $nord11 $nord11 $nord6 $nord11 $nord1
client.focused $nord3 $nord3 $nord5 $nord3 $nord3
client.focused_inactive $nord2 $nord2 $nord5 $nord2 $nord2
client.unfocused $nord0 $nord0 $nord4 $nord0 $nord0
client.placeholder $nord7 $nord7 $nord6 $nord7 nord7
#
# Status Bar:
#
# Read `man 5 sway-bar` for more information about this section.
bar {
position top
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
height 20
status_command while swaybar-cmd; do sleep 1; done
font FantasqueSansMono Nerd Font Mono 10
colors {
statusline $nord5
background $nord3
# border bg text
focused_workspace $nord10 $nord10 $nord5
active_workspace $nord9 $nord9 $nord5
inactive_workspace $nord7 $nord7 $nord5
urgent_workspace $nord11 $nord11 $nord6
binding_mode $nord14 $nord14 $nord6
}
}
include /etc/sway/config.d/*

View File

@@ -1,28 +0,0 @@
#!/usr/bin/fish
while read file
set -g FILES "$file" $FILES
end
switch "$argv[1]"
case "d"
trash $FILES
case "D"
rm $FILES
case "g"
gimp $FILES
case "r"
echo ROTATE
echo $FILES
for f in $FILES
convert -rotate 90 "$f" "$f"
end
case "R"
for f in $FILES
convert -rotate 270 "$f" "$f"
end
case "y"
set FILE $FILES[1]
set TYPE (file -i $FILE | sed -r 's|.*(image/[a-z]+);.*|\1|')
xclip -sel clip -t "$TYPE" -i "$FILE"
end

View File

@@ -0,0 +1,11 @@
[Unit]
Description=MPRIS implementation for MPD
Requires=mpd.service
After=mpd.service
[Service]
Type=simple
ExecStart=/usr/bin/mpd-mpris
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,12 @@
[Unit]
Description=PipeWire Input Filter Chain
After=pipewire.service
BindsTo=pipewire.service
[Service]
ExecStart=/usr/bin/pipewire -c /usr/share/pipewire/filter-chain/source-rnnoise.conf
Type=simple
Restart=on-failure
[Install]
WantedBy=pipewire.service

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Keep track of media player activity
[Service]
Type=dbus
ExecStart=/usr/bin/playerctld daemon
BusName=org.mpris.MediaPlayer2.playerctld
[Install]
WantedBy=default.target

View File

@@ -0,0 +1,9 @@
[Unit]
Description=Lightweight and dead simple power manager
[Service]
Type=simple
ExecStart=/usr/bin/pumopm
[Install]
WantedBy=default.target

Submodule .config/tmux deleted from 1f91646af1

84
.config/topgrade.toml Normal file
View File

@@ -0,0 +1,84 @@
[misc]
# Don't ask for confirmations
#assume_yes = true
# Disable specific steps - same options as the command line flag
disable = ["emacs", "flutter", "deno", "shell"]
# Ignore failures for these steps
ignore_failures = ["system"]
# Run specific steps - same options as the command line flag
#only = ["system", "emacs"]
# Do not ask to retry failed steps (default: false)
#no_retry = true
# Run inside tmux
#run_in_tmux = true
# List of remote machines with Topgrade installed on them
#remote_topgrades = ["toothless", "pi", "parnas"]
# Arguments to pass SSH when upgrading remote systems
#ssh_arguments = "-o ConnectTimeout=2"
# Path to Topgrade executable on remote machines
#remote_topgrade_path = ".cargo/bin/topgrade"
# Arguments to pass tmux when pulling Repositories
#tmux_arguments = "-S /var/tmux.sock"
# Do not set the terminal title
#set_title = false
# Cleanup temporary or old files
#cleanup = true
[git]
# max_concurrency = 5
# Additional git repositories to pull
repos = [
# "~/fromGIT/emacs-packages/*",
"~/.config/emacs/straight/repos/*",
"~/fromGIT/stumpwm/*",
"~/fromGIT/tectonics",
"~/fromGIT/reveal.js/"
]
# Don't pull the predefined git repos
#predefined_repos = false
# Arguments to pass Git when pulling Repositories
arguments = "--rebase --autostash"
#[composer]
#self_update = true
# Commands to run before anything
#[pre_commands]
#"Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
# Custom commands
#[commands]
#"Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
#[brew]
#greedy_cask = true
[linux]
# Arguments to pass yay when updating packages
yay_arguments = "--nodevel"
#trizen_arguments = "--devel"
#enable_tlmgr = true
#emerge_sync_flags = "-q"
#emerge_update_flags = "-uDNa --with-bdeps=y world"
#[windows]
# Manually select Windows updates
#accept_all_updates = false
# Causes Topgrade to rename itself during the run to allow package managers
# to upgrade it. Use this only if you installed Topgrade by using a package
# manager such as Scoop to Cargo
#self_rename = true

View File

@@ -24,7 +24,6 @@ end
set mylocales "en_US.UTF-8 UTF-8" "fr_FR.UTF-8 UTF-8" "ja_JP.UTF-8 UTF-8" set mylocales "en_US.UTF-8 UTF-8" "fr_FR.UTF-8 UTF-8" "ja_JP.UTF-8 UTF-8"
printf "\n# Set locale ##################################################################\n\n" printf "\n# Set locale ##################################################################\n\n"
for item in $mylocales for item in $mylocales
whiptail --yesno "Set the \"$item\" locale?" 8 40 whiptail --yesno "Set the \"$item\" locale?" 8 40
if test $status -eq 0 -a (grep -e "#$item" /etc/locale.gen) if test $status -eq 0 -a (grep -e "#$item" /etc/locale.gen)
@@ -32,16 +31,14 @@ for item in $mylocales
end end
end end
set localeconf "LANG=en_US.UTF-8 set localeconf "LANG=en_DK.UTF-8
LC_COLLATE=C LC_COLLATE=C
LC_NAME=fr_FR.UTF-8 LC_NAME=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8 LC_IDENTIFICATION=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8 LC_TELEPHONE=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8 LC_MONETARY=fr_FR.UTF-8
LC_PAPER=fr_FR.UTF-8 LC_PAPER=fr_FR.UTF-8
LC_ADDRESS=fr_FR.UTF-8 LC_ADDRESS=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8" LC_MEASUREMENT=fr_FR.UTF-8"
whiptail --yesno "Do you agree to have the following locale set?\n\n $localeconf" 20 43 whiptail --yesno "Do you agree to have the following locale set?\n\n $localeconf" 20 43
@@ -62,49 +59,195 @@ if test $status -eq 0 -a ! "$SHELL" = '/usr/bin/fish'
chsh -s /usr/bin/fish chsh -s /usr/bin/fish
end end
set PACKAGES \ set SYSTEMPKG acpi \
acpi acpilight adobe-source-han-sans-jp-fonts arc-gtk-theme asar ascii \ acpilight \
aspell-en aspell-fr awesome awesome-terminal-fonts awesome-freedesktop-git \ bluez-firmware \
base-devel bashtop bat biber bitwarden-bin bluez-firmware bluez-utils bzip2 \ bluez-utils \
chicken chromium clisp corrupter-git cppcheck cppreference \ bzip2 \
cppreference-devhelp cpupower discord-canary discount docker docker-compose \ cpupower \
dockerfile-language-server-bin doxygen emacs emacs-org-mode exa exfat-utils \ exfat-utils \
farbfeld fd ffmpegthumbnailer findutils firefox flake8 flat-remix-gtk freeglut \ ffmpegthumbnailer \
fzf gcc-libs gdb gimp gnome-disk-utility gnome-epub-thumbnailer gnu-free-fonts \ freeglut \
gnuplot go go-tools golangci-lint-bin graphviz htop hugo i3lock-color \ gcc-libs \
inetutils isync inter-font javascript-typescript-langserver js-beautify \ gdb \
jfsutils jmtpfs kitty lain-git libxft-bgra linux-headers lldb logrotate meson \ gnome-disk-utility \
minted man-db man-pages mpc mpd mpd-rich-presence-discord-git mpv mupdf-tools \ gnome-epub-thumbnailer \
nano ncdu ncmpcpp nemo-fileroller nemo-preview neofetch netctl \ i3lock-color \
network-manager-applet networkmanager networkmanager-openvpn \ corrupter-git \
nm-connection-editor nodejs-vmd nomacs nordic-theme-git nordvpn-bin \ inetutils \
noto-fonts-emoji npm ntfs-3g numlockx obs-studio openssh otf-fandol \ jfsutils \
otf-ipafont p7zip pacman-contrib pandoc-bin pass pavucontrol pdfpc picom-git \ jmtpfs \
powerline-fonts prettier pulseaudio-bluetooth python-autoflake python-epc \ kitty \
python-importmagic python-language-server python-nose python-pip python-poetry \ logrotate \
python-ptvsd python-pytest qt5-imageformats qemu r raw-thumbnailer reflector \ man-pages \
ripgrep rofi rsync rtv ruby-rb-fsevent ruby-sass rustup samba scrot sent \ man-db \
shadow siji-git simplescreenrecorder sshfs sxiv texlive-bibtexextra \ netctl \
texlive-fontsextra texlive-formatsextra texlive-humanities \ network-manager-applet \
texlive-langjapanese texlive-pictures texlive-pstricks texlive-publishers \ networkmanager-openvpn \
texlive-science tldr tmux tree ttf-arphic-uming ttf-baekmuk ttf-charis-sil \ nm-connection-editor \
ttf-dejavu ttf-google-fonts-opinionated-git ttf-hanazono ttf-joypixels \ ntfs-3g \
ttf-koruri ttf-liberation ttf-monapo ttf-sazanami ttf-tibetan-machine \ openssh \
typescript typescript-language-server-bin unicode-emoji unrar usbutils \ pavucontrol \
valgrind vscode-css-languageserver-bin vscode-html-languageserver-bin w3m wget \ wireplumber \
x11-ssh-askpass xclip xdg-user-dirs-gtk xfce-polkit xidlehook xfsprogs \ pipewire-pulse \
xorg-drivers xorg-server xorg-xinit xss-lock xvkbd xwallpaper \ gst-plugin-pipewire \
yaml-language-server-bin zeal noise-suppression-for-voice \
raw-thumbnailer \
reflector \
shadow \
sshfs \
usbutils \
xdg-user-dirs-gtk \
xfce-polkit \
xidlehook \
xfsprogs \
xorg-xinit \
xss-lock \
xwallpaper
printf "\n# Installing needed packages ##################################################\n\n" printf "\n# Installing SYSTEMPKG ##################################################\n\n"
sudo pacman -Syu for pkg in $SYSTEMPKG
for pkg in $PACKAGES paru -S --skipreview --needed $pkg
paru -S --needed $pkg
end end
mkdir -p $HOME/.config/awesome
mkdir -p $HOME/.config/awesome/theme set DEVELPKG asar \
mkdir -p $HOME/.config/emacs/private base-devel \
clang \
cppcheck \
cppreference \
cppreference-devhelp \
docker \
docker-compose \
dockerfile-language-server-bin \
doxygen \
emacs \
farbfeld \
flake8 \
gnuplot \
go \
go-tools \
graphviz \
hugo \
javascript-typescript-langserver \
js-beautify \
linux-headers \
lldb \
meson \
mupdf-tools \
npm \
pacman-contrib \
pandoc-bin \
prettier \
python-autoflake \
python-epc \
python-importmagic \
pyright \
python-nose \
python-pip \
python-poetry \
python-ptvsd \
python-pytest \
qemu \
r \
rustup \
sbcl \
typescript \
typescript-language-server-bin \
valgrind \
vscode-css-languageserver-bin \
vscode-html-languageserver-bin \
yaml-language-server-bin \
zeal
printf "\n# Installing DEVELPKG ##################################################\n\n"
for pkg in $DEVELPKG
paru -S --skipreview --needed $pkg
end
set LATEXPKG biber \
minted \
texlive-bibtexextra \
texlive-fontsextra \
texlive-formatsextra \
texlive-humanities \
texlive-langjapanese \
texlive-pictures \
texlive-pstricks \
texlive-publishers \
texlive-science
printf "\n# Installing LATEXPKG ##################################################\n\n"
for pkg in $LATEXPKG
paru -S --skipreview --needed $pkg
end
set TERMINALPKG ascii \
aspell-en \
aspell-fr \
bat \
bitwarden-cli \
bpytop \
exa \
fd \
findutils \
fzf \
htop \
isync \
mpc \
mpd \
mpv \
nano \
ncdu \
ncmpcpp \
neofetch \
nordvpn-bin \
numlockx \
p7zip \
pass \
pdfpc \
ripgrep \
rsync \
flameshot \
tealdeer \
tmux \
tree \
unrar \
w3m \
wget \
x11-ssh-askpass \
xclip \
yt-dlp-drop-in
printf "\n# Installing TERMINALPKG ##################################################\n\n"
for pkg in $TERMINALPKG
paru -S --skipreview --needed $pkg
end
set APPSPKG bitwarden \
discord \
firefox \
gimp \
helvum \
nemo \
nemo-fileroller \
nemo-preview \
obs-studio \
rofi
printf "\n# Installing APPSPKG ##################################################\n\n"
for pkg in $APPSPKG
paru -S --skipreview --needed $pkg
end
cd /home/phundrak/Documents/code/PKGBUILDs/emacs && makepkg -si && cd
cd /home/phundrak/Documents/code/PKGBUILDs/nsxiv && makepkg -si && cd
cd /home/phundrak/Documents/code/PKGBUILDs/pumopm-git && makepkg -si && cd
cd /home/phundrak/Documents/code/PKGBUILDs/sent && makepkg -si && cd
mkdir -p $HOME/.config/fish mkdir -p $HOME/.config/fish
mkdir -p $HOME/.config/gtk-2.0 mkdir -p $HOME/.config/gtk-2.0
mkdir -p $HOME/.config/gtk-3.0 mkdir -p $HOME/.config/gtk-3.0
@@ -113,14 +256,10 @@ mkdir -p $HOME/.config/neofetch
mkdir -p $HOME/.config/picom mkdir -p $HOME/.config/picom
mkdir -p $HOME/.config/yadm mkdir -p $HOME/.config/yadm
mkdir -p $HOME/.local/bin mkdir -p $HOME/.local/bin
mkdir -p $HOME/.stumpwm.d
mkdir -p $HOME/org/capture mkdir -p $HOME/org/capture
printf "\n# Tangling org files ##########################################################\n\n" printf "\n# Tangling org files ##########################################################\n\n"
printf '\n\n==== Tangling awesome.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/awesome.org")'
printf '\n\n==== Tangling bin.org\n\n' && \ printf '\n\n==== Tangling bin.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \ emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \ --eval '(setq org-confirm-babel-evaluate nil)' \
@@ -141,33 +280,35 @@ emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \ --eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/index.org")' --eval '(org-babel-tangle-file "~/org/config/index.org")'
printf '\n\n==== Tangling mpd.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/mpd.org")'
printf '\n\n==== Tangling neofetch.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/neofetch.org")'
printf '\n\n==== Tangling picom.org\n\n' && \ printf '\n\n==== Tangling picom.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \ emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \ --eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/picom.org")' --eval '(org-babel-tangle-file "~/org/config/picom.org")'
printf '\n\n==== Tangling rustfmt.org\n\n' && \ printf '\n\n==== Tangling stumpwm.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \ emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \ --eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/rustfmt.org")' --eval '(org-babel-tangle-file "~/org/config/stumpwm.org")'
printf '\n\n==== Tangling tmux.org\n\n' && \ printf '\n\n==== Tangling tmux.org\n\n' && \
emacs -q --batch --eval '(require \'ob-tangle)' \ emacs -q --batch --eval '(require \'ob-tangle)' \
--eval '(setq org-confirm-babel-evaluate nil)' \ --eval '(setq org-confirm-babel-evaluate nil)' \
--eval '(org-babel-tangle-file "~/org/config/tmux.org")' --eval '(org-babel-tangle-file "~/org/config/tmux.org")'
printf "\n# Installing Spacemacs ########################################################\n\n"
rm -rf $HOME/.config/emacs $HOME/.emacs* .spacemacs
git clone --branch develop https://github.com/syl20bnr/spacemacs ~/.config/emacs
yadm checkout -- ~/.config/emacs/private/
if test "$USER" = 'phundrak' if test "$USER" = 'phundrak'
printf "\n# Update yadms remotes #######################################################\n\n" printf "\n# Update yadms remotes #######################################################\n\n"
yadm remote set-url origin git@labs.phundrak.com:phundrak/dotfiles.git yadm remote set-url origin git@labs.phundrak.com:phundrak/dotfiles.git
yadm remote add github git@github.com:phundrak/dotfiles.git
printf "\n# Decrypt encrypted dotfiles ##################################################\n\n" printf "\n# Decrypt encrypted dotfiles ##################################################\n\n"
yadm decrypt yadm decrypt
@@ -182,6 +323,8 @@ sudo systemctl enable --now systemd-timesyncd
sudo timedatectl set-ntp true sudo timedatectl set-ntp true
sudo usermod -aG video $USER
printf "\n# Enabling and starting Docker ################################################\n\n" printf "\n# Enabling and starting Docker ################################################\n\n"
sudo systemctl enable --now docker sudo systemctl enable --now docker
@@ -197,24 +340,24 @@ printf "\n# Enabling Mpd as a user service #####################################
mkdir -p ~/.config/mpd/playlists mkdir -p ~/.config/mpd/playlists
systemctl --user enable --now mpd systemctl --user enable --now mpd
sudo systemctl enable --now nordvpnd
nordvpn s protocol tcp
nordvpn set notify enabled
nordvpn set ipv6 enabled
systemctl --user enable --now pipewire-pulse.service
systemctl --user enable --now pipewire-input-filter-chain.service
whiptail --yesno 'Do you want to activate the ssh server?' 8 50 whiptail --yesno 'Do you want to activate the ssh server?' 8 50
if test $status -eq 0 if test $status -eq 0
printf "\n# Enabling ssh server #########################################################\n\n" printf "\n# Enabling ssh server #########################################################\n\n"
sudo systemctl enable --now sshd sudo systemctl enable --now sshd
end end
sudo usermod -aG video $USER sudo ln -s ~/.local/bin/plock /usr/bin/plock
sudo systemctl enable --now nordvpnd
nordvpn s protocol tcp
for f in (find ~/.etc -type f)
set dest (echo $f | sed -n 's|^.*etc\(.*\)$|/etc\1|p')
sudo ln -s $f $dest
end
sudo ln -s (which plock) /usr/bin/plock
mkdir -p ~/fromGIT mkdir -p ~/fromGIT
@@ -228,30 +371,18 @@ rustup default stable
rustup toolchain install nightly rustup toolchain install nightly
printf "\n# Add rust utilities ##########################################################\n\n" printf "\n# Add rust utilities ##########################################################\n\n"
cargo install rustfmt racer cargo install rustfmt
rustup component add rust-src rustup component add rust-src
rustup component add rls
rustup component add clippy rustup component add clippy
printf "\n# Installing Python packages ##################################################\n\n"
pip install --user python-language-server[all] pyls-isort pyls-mypy pyls-black
printf "\n# Setting up Chicken ##########################################################\n\n"
chicken-install -s apropos chicken-doc
cd (chicken-csi -b -e "(import (chicken platform))" -p "(chicken-home)")
curl https://3e8.org/pub/chicken-doc/chicken-doc-repo.tgz | sudo tar zx
printf "\n# Installing fisher ###########################################################\n\n" printf "\n# Installing fisher ###########################################################\n\n"
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
printf "\n# Installing Fisher Extensions ################################################\n\n" printf "\n# Installing Fisher Extensions ################################################\n\n"
fisher add decors/fish-colored-man fisher install decors/fish-colored-man
fisher add franciscolourenco/done fisher install franciscolourenco/done
fisher add jethrokuan/fzf fisher install jethrokuan/fzf
fisher add jethrokuan/z fisher install jorgebucaran/fish-bax
fisher add jorgebucaran/fish-bax fisher install jorgebucaran/fish-getopts
fisher add jorgebucaran/fish-getopts fisher install laughedelic/pisces
fisher add laughedelic/pisces
fisher add oh-my-fish/theme-bobthefish

View File

@@ -1,5 +1,9 @@
.authinfo.gpg .authinfo.gpg
.ssh/* .config/fish/private.fish
.config/emacs/private/private_emacs.el .config/isync/mbsyncrc
.local/share/gnupg/*
.mailrc .mailrc
.mbsyncrc .profile.private
.ssh/*
org/*.org
org/roam/*

View File

@@ -1,40 +0,0 @@
{
"aururl": "https://aur.archlinux.org",
"buildDir": "/home/phundrak/.cache/yay",
"editor": "",
"editorflags": "",
"makepkgbin": "makepkg",
"makepkgconf": "",
"pacmanbin": "pacman",
"pacmanconf": "/etc/pacman.conf",
"tarbin": "bsdtar",
"redownload": "ask",
"rebuild": "ask",
"answerclean": "",
"answerdiff": "",
"answeredit": "",
"answerupgrade": "",
"gitbin": "git",
"gpgbin": "gpg",
"gpgflags": "",
"mflags": "",
"sortby": "votes",
"gitflags": "",
"removemake": "ask",
"requestsplitn": 150,
"sortmode": 0,
"completionrefreshtime": 7,
"sudoloop": true,
"timeupdate": true,
"devel": false,
"cleanAfter": false,
"gitclone": true,
"provides": true,
"pgpfetch": true,
"upgrademenu": true,
"cleanmenu": true,
"diffmenu": false,
"editmenu": true,
"combinedupgrade": false,
"useask": false
}

View File

@@ -1,38 +0,0 @@
kind: pipeline
name: default
steps:
- name: build
image: silex/emacs:27-alpine
commands:
- apk add git
- emacs --script export.el
when:
branch:
- master
event:
exclude:
- pull_request
- name: deploy
image: appleboy/drone-scp
settings:
host:
from_secret: ssh_host
target:
from_secret: ssh_target
source:
- org/config/*
strip_components: 2
username:
from_secret: ssh_username
password:
from_secret: ssh_password
port:
from_secret: ssh_port
when:
branch:
- master
event:
exclude:
- pull_request

1
.gitattributes vendored
View File

@@ -1 +0,0 @@
*.org linguist-detectable=true

View File

@@ -1,117 +0,0 @@
[user]
email = lucien@phundrak.com
name = Lucien Cartier-Tilet
signingkey = BD7789E705CB8DCA
[core]
editor = emacsclient -c -a emacs
whitespace = fix,-indent-with-non-tab,trailing-space
excludesfile = /home/phundrak/dotfiles/.gitignore_global
[web]
browser = firefox
[color]
ui = auto
[alias]
a = add --all
####
b = branch
####
c = commit -S
ca = commit -a
cm = commit -m
cam = commit -am
####
co = checkout
cob = checkout -b
####
cl = clone
cl1 = clone --depth=1
####
d = diff -w
####
l = log --oneline --graph --decorate
####
ps = push
psf = push -f
pso = push origin
psfo = push -f origin
psom = push origin master
psfom = push -f origin master
####
pl = pull
pb = pull --rebase
####
re = reset
reh = reset --hard
rehh = reset --hard HEAD
####
r = remote
ra = remote add
rr = remote rm
###
rmf = rm -f
rmrf = rm -r -f
####
s = status
sm = submodule
sms = submodule status
sma = submodule add
smu = submodule update
smui = submodule update --init
smuir = submodule update --init --recursive
####
staged = diff --cached
####
sc = stash clear
sp = stash pop
sw = stash show
####
pushall = !git remote | xargs -L1 git push
psl = !git remote | xargs -L1 git push
pullall = !git remote | xargs -L1 git pull
pll = !git remote | xargs -L1 git pull
####
u = reset --
unstage = reset --
[sendemail]
smtpserver = mail.phundrak.com
smtpuser = lucien@phundrak.com
smtpencryption = tls
smtpserverport = 587
[magithub]
online = true
[magithub "status"]
includeStatusHeader = true
includePullRequestsSection = true
includeIssuesSection = true
[gpg]
program = gpg2
[mergetool.ediff]
cmd = emacs --eval \" (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\"Merge buffer saved in: %s\\\" file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook 'kill-emacs ediff-quit-merge-hook 'ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$BASE\\\" nil \\\"$MERGED\\\"))\"
[merge]
tool = ediff
[github]
user = phundrak
[commit]
gpgsign = true
[pull]
rebase = false
[init]
defaultBranch = main
[pager]
diff = delta
log = delta
reflog = delta
show = delta
[interactive]
diffFilter = delta --color-only
[delta]
features = side-by-side line-numbers decorations
whitespace-error-style = 22 reverse
[delta "decorations"]
commit-decoration-style = bold yellow box ul
file-style = bold yellow ul
file-decoration-style = none

View File

@@ -0,0 +1,15 @@
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule ".config/tmux"]
path = .config/tmux
url = git@github.com:gpakosz/.tmux.git

Binary file not shown.

105
.profile Executable file
View File

@@ -0,0 +1,105 @@
#!/bin/sh
# shellcheck source=/dev/null
. "$HOME"/.profile.private
export EMAIL=lucien@phundrak.com
export NAME="Lucien Cartier-Tilet"
export XDG_CACHE_HOME="$HOME"/.cache
export XDG_CONFIG_HOME="$HOME"/.config
export XDG_DATA_HOME="$HOME"/.local/share
export XDG_STATE_HOME="$HOME"/.local/state
SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
export SSH_AUTH_SOCK
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":/usr/local/lib
export LSP_USE_PLISTS=true
export DIFFPROG=ediff
export SUDO_ASKPASS="$HOME"/.local/bin/askpass
export MANPAGER=less
export DART_SDK=/opt/dart-sdk/bin
export ANDROID_HOME="$HOME"/Android/Sdk
export CHROME_EXECUTABLE=/usr/bin/chromium
LESS_TERMCAP_mb=$(printf '\e[1;32m')
export LESS_TERMCAP_mb
LESS_TERMCAP_md=$(printf '\e[1;32m')
export LESS_TERMCAP_md
LESS_TERMCAP_me=$(printf '\e[0m')
export LESS_TERMCAP_me
LESS_TERMCAP_se=$(printf '\e[0m')
export LESS_TERMCAP_se
LESS_TERMCAP_so=$(printf '\e[01;33m')
export LESS_TERMCAP_so
LESS_TERMCAP_ue=$(printf '\e[0m')
export LESS_TERMCAP_ue
LESS_TERMCAP_us=$(printf '\e[1;4;31m')
export LESS_TERMCAP_us
export BROWSER=firefox
export EDITOR="emacsclient -c"
export VISUAL="emacsclient -c"
export GTK_THEME=Nordic
export GTK_ICON_THEME="Flat-Remix-Dark"
export __GL_SHADER_DISK_CACHE_PATH="$XDG_CACHE_HOME"/nv
export _JAVA_OPTIONS="-Djava.util.prefs.userRoot=${XDG_CONFIG_HOME}/java -Djavafx.cachedir=${XDG_CACHE_HOME}/openjfx"
export _Z_DATA="$XDG_DATA_HOME"/z
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
export CARGO_HOME="$XDG_DATA_HOME"/cargo
export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
export DENO_DIR="$HOME"/.config/deno
export DENO_INSTALL_ROOT="$HOME"/.local/bin/deno
export DOCKER_CONFIG="$XDG_CONFIG_HOME"/docker
export GEM_HOME="$XDG_DATA_HOME"/gem
export GEM_SPEC_CACHE="$XDG_CACHE_HOME"/gem
export GNUPGHOME="$XDG_DATA_HOME"/gnupg
export GOPATH="$XDG_DATA_HOME"/go
export GTK2_RC_FILES="$XDG_CONFIG_HOME"/gtk-2.0/gtkrc
export HISTFILE="$XDG_STATE_HOME/bash/history"
export ICEAUTHORITY="$XDG_CACHE_HOME"/ICEauthority
export LESSHISTFILE="$XDG_CACHE_HOME"/less/history
export MBSYNCRC="$XDG_CONFIG_HOME"/isync/mbsyncrc
export MPLAYER_HOME="$XDG_CONFIG_HOME"/mplayer
export MYPY_CACHE_DIR="$XDG_CACHE_HOME"/mypy
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
export NUGET_PACKAGES="$XDG_CACHE_HOME"/NuGetPackages
export NVM_DIR="$XDG_DATA_HOME"/nvm
export PARALLEL_HOME="$XDG_CONFIG_HOME"/parallel
export PASSWORD_STORE_DIR="$XDG_DATA_HOME"/pass
export PKG_CACHE_PATH="$XDG_CACHE_HOME"/pkg-cache
export PSQL_HISTORY="$XDG_DATA_HOME/psql_history"
export PYENV_ROOT="$XDG_DATA_HOME"/pyenv
export PYLINTHOME="$XDG_CACHE_HOME"/pylint
export PYTHONSTARTUP="$HOME"/python/pythonrc
export RUSTUP_HOME="$XDG_DATA_HOME"/rustup
export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history
export TERMINFO="$XDG_DATA_HOME"/terminfo
export TERMINFO_DIRS="$XDG_DATA_HOME"/terminfo:/usr/share/terminfo
export TEXMFVAR="$XDG_CACHE_HOME"/texlive/texmf-var
export W3M_DIR="$XDG_DATA_HOME"/w3m
export WINEPREFIX="$XDG_DATA_HOME"/wine
export XAUTHORITY="$XDG_RUNTIME_DIR"/Xauthority
export XCOMPOSEFILE="$XDG_CONFIG_HOME"/X11/xcompose
export XCURSOR_PATH=/usr/share/icons:$XDG_DATA_HOME/icons
export GRADLE_USER_HOME="$XDG_DATA_HOME"/gradle
export DOTNET_CLI_HOME="$XDG_DATA_HOME"/dotnet
export CUDA_CACHE_PATH="$XDG_CACHE_HOME"/nv
export ANDROID_USER_HOME="$XDG_DATA_HOME"/android
PATH="/usr/lib/xfce-polkit/:$PATH"
PATH="$HOME/.cabal/bin:$PATH"
PATH="$GEM_HOME/ruby/2.6.0/bin:$PATH"
PATH="$GEM_HOME/ruby/3.0.0/bin:$PATH"
PATH="$GOPATH/bin:$PATH"
PATH="${CARGO_HOME}/bin:$PATH"
PATH="$HOME/Android/Sdk/tools/bin:$PATH"
PATH="$HOME/.local/bin:$PATH"
PATH="$HOME/.config/plover/plugins/linux/bin:$PATH"
PATH="$HOME/.nix-profile/bin:$PATH"
export PATH

7
.sbclrc Normal file
View File

@@ -0,0 +1,7 @@
;;; -*- mode: lisp; -*-
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))

View File

@@ -1 +0,0 @@
.config/tmux/.tmux.conf

View File

@@ -1,15 +0,0 @@
#!/bin/sh
xhost +SI:localuser:$USER
wmname LG3D
# Set fallback cursor
xsetroot -cursor_name left_ptr
# If Emacs is started in server mode, `emacsclient` is a convenient way to edit
# files in place (used by e.g. `git commit`)
export _JAVA_AWT_WM_NONREPARENTING=1
export VISUAL=emacsclient
export EDITOR="$VISUAL"
exec emacs --with-exwm

View File

@@ -1,9 +0,0 @@
#!/bin/sh
# this makes it work in Ubuntu
xhost +SI:localuser:$USER
# wmname LG3D
# export _JAVA_AWT_WM_NONREPARENTING=1
exec stumpwm

View File

@@ -1,327 +0,0 @@
# Maintainer: Lucien Cartier-Tilet <https://aur.archlinux.org/users/phundrak>
################################################################################
# CAVEAT LECTOR: This PKGBUILD is highly opinionated. I give you
# enough rope to hang yourself, but by default it
# only enables the features I use.
#
# TLDR: yaourt users, cry me a river.
#
# Everyone else: do not update blindly this PKGBUILD. At least
# make sure to compare and understand the changes.
#
################################################################################
################################################################################
# Assign "YES" to the variable you want enabled; empty or any other value
# for NO.
#
# Where you read experimental, replace with foobar.
# =================================================
#
################################################################################
CHECK= # Run tests. May fail, this is developement after all.
CLANG= # Use clang.
GOLD="YES" # Use the gold linker.
LTO="YES" # Enable link-time optimization. Read emacs's INSTALL before
# attempting to use it with clang.
JIT="YES" # Enable native just-in-time compilation. libgccjit is in AUR.
# This compiles only performance critical elisp files.
# To compile all elisp on demand, set
# comp-deferred-compilation non-nil
AOT="YES" # Precompile all included elisp. It takes a long time.
# You still need to enable on-demand compilation
# for your own packages.
CLI= # CLI only binary.
NOTKIT= # Use no toolkit widgets. Like B&W Twm (001d sk00l).
LUCID= # Use the lucid, a.k.a athena, toolkit. Like XEmacs, sorta.
#
# Read https://wiki.archlinux.org/index.php/X_resources
# https://en.wikipedia.org/wiki/X_resources
# and https://www.emacswiki.org/emacs/XftGnuEmacs
# for some tips on using outline fonts with
# Xft, if you choose no toolkit or Lucid.
#
GTK2= # GTK2 support. Why would you?
NOCAIRO= # Disable here.
XWIDGETS= # Use GTK+ widgets pulled from webkit2gtk. Usable.
DOCS_HTML="YES" # Generate and install html documentation.
DOCS_PDF= # Generate and install pdf documentation.
MAGICK= # ImageMagick 7 support. Deprecated (read the logs).
# ImageMagick, like flash, won't die...
# -->>If you just *believe* you need ImageMagick, you don't.<<--
NOGZ= # Don't compress .el files.
################################################################################
################################################################################
if [[ $CLI == "YES" ]] ; then
pkgname="emacs-nox-phundrak-git"
else
pkgname="emacs-phundrak-git"
fi
pkgver=28.0.60.150971
pkgrel=1
pkgdesc="GNU Emacs. Development master branch with Phundraks tweaks."
arch=('x86_64')
url="http://www.gnu.org/software/emacs/"
license=('GPL3')
depends_nox=('alsa-lib' 'gnutls' 'libxml2' 'jansson' 'gpm')
depends=("${depends_nox[@]}" 'm17n-lib' 'libotf' 'harfbuzz')
makedepends=('git')
provides=('emacs' 'emacs26-git' 'emacs27-git' 'emacs28-git' 'emacs-seq' 'emacs-nox' 'emacs-git')
conflicts=('emacs' 'emacs26-git' 'emacs27-git' 'emacs28-git' 'emacs-seq' 'emacs-nox' 'emacs-git')
replaces=('emacs' 'emacs26-git' 'emacs27-git' 'emacs28-git' 'emacs-seq' 'emacs-nox' 'emacs-git')
#source=("emacs-git::git://git.savannah.gnu.org/emacs.git")
# If Savannah fails for reasons, use Github's mirror
source=("emacs-git::git://github.com/emacs-mirror/emacs.git#branch=emacs-28"
"https://raw.githubusercontent.com/TheVaffel/emacs/master/emacs_background_transparency.patch")
sha512sums=('SKIP'
'd45043e6925358a41fbe42457de3233cd346a7e6133704426240a0c987587328ae08719413188b11db498f27794ee55662c20e8c4b58311bb806ad71e4798574')
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug)
################################################################################
################################################################################
CFLAGS+=" -O2 -march=native -mtune=native"
CXXFLAGS+=" -O2 -march=native -mtune=native"
if [[ $GOLD == "YES" && ! $CLANG == "YES" ]]; then
export LD=/usr/bin/ld.gold
export CFLAGS+=" -fuse-ld=gold";
export CXXFLAGS+=" -fuse-ld=gold";
elif [[ $GOLD == "YES" && $CLANG == "YES" ]]; then
echo "";
echo "Clang rather uses its own linker.";
echo "";
exit 1;
fi
if [[ $CLANG == "YES" ]]; then
export CC="/usr/bin/clang" ;
export CXX="/usr/bin/clang++" ;
export CPP="/usr/bin/clang -E" ;
export LD="/usr/bin/lld" ;
export AR="/usr/bin/llvm-ar" ;
export AS="/usr/bin/llvm-as" ;
export CCFLAGS+=' -fuse-ld=lld' ;
export CXXFLAGS+=' -fuse-ld=lld' ;
makedepends+=( 'clang' 'lld' 'llvm') ;
fi
if [[ $LTO == "YES" ]]; then
if [[ $CLANG != "YES" ]]; then
CFLAGS+=" -flto -fuse-linker-plugin"
CXXFLAGS+=" -flto -fuse-linker-plugin"
else
CFLAGS+=" -flto"
CXXFLAGS+=" -flto"
fi
fi
if [[ $JIT == "YES" ]]; then
if [[ $CLI == "YES" ]]; then
depends_nox+=( 'libgccjit' );
else
depends+=( 'libgccjit' );
fi
fi
if [[ $CLI == "YES" ]]; then
depends=("${depends_nox[@]}");
elif [[ $NOTKIT == "YES" ]]; then
depends+=( 'dbus' 'hicolor-icon-theme' 'libxinerama' 'libxrandr' 'lcms2' 'librsvg' 'libxfixes' );
makedepends+=( 'xorgproto' );
elif [[ $LUCID == "YES" ]]; then
depends+=( 'dbus' 'hicolor-icon-theme' 'libxinerama' 'libxfixes' 'lcms2' 'librsvg' 'xaw3d' 'libxrandr' );
makedepends+=( 'xorgproto' );
elif [[ $GTK2 == "YES" ]]; then
depends+=( 'gtk2' 'lcms2' );
makedepends+=( 'xorgproto' );
else
depends+=( 'gtk3' );
makedepends+=( 'xorgproto' );
fi
if [[ $MAGICK == "YES" ]]; then
depends+=( 'imagemagick' 'libjpeg-turbo' 'giflib' );
elif [[ ! $NOX == "YES" ]] && [[ ! $CLI == "YES" ]]; then
depends+=( 'libjpeg-turbo' 'giflib' );
elif [[ $CLI == "YES" ]]; then
depends+=();
fi
if [[ ! $NOCAIRO == "YES" ]] && [[ ! $CLI == "YES" ]] ; then
depends+=( 'cairo' );
fi
if [[ $XWIDGETS == "YES" ]]; then
if [[ $GTK2 == "YES" ]] || [[ $LUCID == "YES" ]] || [[ $NOTKIT == "YES" ]] || [[ $CLI == "YES" ]]; then
echo "";
echo "";
echo "Xwidgets support *requires* gtk+3!!!";
echo "";
echo "";
exit 1;
else
depends+=( 'webkit2gtk' );
fi
fi
if [[ $DOCS_PDF == "YES" ]]; then
makedepends+=( 'texlive-core' );
fi
################################################################################
################################################################################
pkgver() {
cd "$srcdir/emacs-git"
printf "%s.%s" \
"$(grep AC_INIT configure.ac | \
sed -e 's/^.\+\ \([0-9]\+\.[0-9]\+\.[0-9]\+\?\).\+$/\1/')" \
"$(git rev-list --count HEAD)"
}
# There is no need to run autogen.sh after first checkout.
# Doing so, breaks incremental compilation.
prepare() {
cd "$srcdir/emacs-git"
git apply --check "../../emacs_background_transparency.patch"
git apply "../../emacs_background_transparency.patch"
[[ -x configure ]] || ( ./autogen.sh git && ./autogen.sh autoconf )
}
if [[ $CHECK == "YES" ]]; then
check() {
cd "$srcdir/emacs-git"
make check
}
fi
build() {
cd "$srcdir/emacs-git"
local _conf=(
--prefix=/usr
--sysconfdir=/etc
--libexecdir=/usr/lib
--localstatedir=/var
--mandir=/usr/share/man
--with-gameuser=:games
--with-sound=alsa
--with-modules
--with-json
# Beware https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25228
# dconf and gconf break font settings you set in ~/.emacs.
# If you insist you'll need to read that bug report in *full*.
# Good luck!
--without-gconf
--without-gsettings
)
################################################################################
################################################################################
if [[ $CLANG == "YES" ]]; then
_conf+=( '--enable-autodepend' );
fi
if [[ $LTO == "YES" ]]; then
_conf+=( '--enable-link-time-optimization' );
fi
if [[ $JIT == "YES" ]]; then
_conf+=( '--with-native-compilation' );
fi
if [[ $CLI == "YES" ]]; then
_conf+=( '--without-x' '--with-x-toolkit=no' '--without-xft' '--without-lcms2' '--without-rsvg' '--without-jpeg' '--without-gif' '--without-tiff' '--without-png' );
elif [[ $NOTKIT == "YES" ]]; then
_conf+=( '--with-x-toolkit=no' '--without-toolkit-scroll-bars' '--with-xft' '--without-xaw3d' );
elif [[ $LUCID == "YES" ]]; then
_conf+=( '--with-x-toolkit=lucid' '--with-xft' '--with-xaw3d' );
elif [[ $GTK2 == "YES" ]]; then
_conf+=( '--with-x-toolkit=gtk2' '--without-gsettings' '--without-xaw3d' );
else
_conf+=( '--with-x-toolkit=gtk3' '--without-xaw3d' );
fi
if [[ $MAGICK == "YES" ]]; then
_conf+=( '--with-imagemagick');
else
_conf+=();
fi
if [[ $NOCAIRO == "YES" || $CLI == "YES" ]]; then
_conf+=( '--without-cairo' );
fi
if [[ $XWIDGETS == "YES" ]]; then
_conf+=( '--with-xwidgets' );
fi
if [[ $NOGZ == "YES" ]]; then
_conf+=( '--without-compress-install' );
fi
# ctags/etags may be provided by other packages, e.g, universal-ctags
_conf+=('--program-transform-name=s/\([ec]tags\)/\1.emacs/')
################################################################################
################################################################################
./configure "${_conf[@]}"
# Using "make" instead of "make bootstrap" enables incremental
# compiling. Less time recompiling. Yay! But you may
# need to use bootstrap sometimes to unbreak the build.
# Just add it to the command line.
#
# Please note that incremental compilation implies that you
# are reusing your src directory!
#
if [[ $JIT == "YES" ]] && [[ $AOT == "YES" ]]; then
make NATIVE_FULL_AOT=1
else
make
fi
# You may need to run this if 'loaddefs.el' files become corrupt.
#cd "$srcdir/emacs-git/lisp"
#make autoloads
#cd ../
# Optional documentation formats.
if [[ $DOCS_HTML == "YES" ]]; then
make html;
fi
if [[ $DOCS_PDF == "YES" ]]; then
make pdf;
fi
}
package() {
cd "$srcdir/emacs-git"
make DESTDIR="$pkgdir/" install
# Install optional documentation formats
if [[ $DOCS_HTML == "YES" ]]; then make DESTDIR="$pkgdir/" install-html; fi
if [[ $DOCS_PDF == "YES" ]]; then make DESTDIR="$pkgdir/" install-pdf; fi
# fix user/root permissions on usr/share files
find "$pkgdir"/usr/share/emacs/ | xargs chown root:root
# fix permssions on /var/games
mkdir -p "$pkgdir"/var/games/emacs
chmod 775 "$pkgdir"/var/games
chmod 775 "$pkgdir"/var/games/emacs
chown -R root:games "$pkgdir"/var/games
}
################################################################################
# vim:set ft=sh ts=2 sw=2 et:

View File

@@ -1,49 +0,0 @@
# Maintainer: Jason Ryan <jasonwryan@gmail.com>
# Contributor: Steven Allen <steven@stebalien.com>
# Contributor: Army
# Contributor: Bastien Dejean <baskerville@lavabit.com>
_name=sxiv
pkgname="${_name}-bepo-git"
pkgver=2020.01.16
pkgrel=2
pkgdesc="Simple (or small or suckless) X Image Viewer"
arch=('i686' 'x86_64')
url="https://github.com/muennich/${_name}"
license=('GPL2')
depends=('imlib2' 'libexif' 'libxft' 'hicolor-icon-theme')
makedepends=('git')
provides=("${_name}")
conflicts=("${_name}" "${_name}-git")
source=("${_name}::git+${url}.git" config.h)
sha512sums=('SKIP'
'f3cd5532977033ffb878e397c76b4576f931b74dc2c158f373d6618d0d4155387bc983b745f0adeffeee85de9ebdc9e9418d823cceef8895b2d8e6ab1d4791ca')
pkgver() {
cd "${srcdir}/${_name}"
git log -1 --format="%cd" --date=short | sed 's/-/./g'
}
prepare() {
cd "${srcdir}/${_name}"
[[ -f $srcdir/config.h ]] && cp $srcdir/config.h .
# Allow custom FLAGS
sed -i Makefile -e 's|^CFLAGS\s*=|CFLAGS +=|' -e 's|^LDFLAGS\s*=|LDFLAGS +=|'
}
build() {
cd "$srcdir/${_name}"
export CFLAGS="$CFLAGS $CPPFLAGS"
make PREFIX="/usr"
}
package() {
cd "$srcdir/${_name}"
make PREFIX="/usr" DESTDIR="$pkgdir" install
make -C icon PREFIX="/usr" DESTDIR="$pkgdir" install
install -Dm644 sxiv.desktop "$pkgdir/usr/share/applications/${_name}.desktop"
}
# vim:set ts=2 sw=2 et:

View File

@@ -1,151 +0,0 @@
#ifdef _WINDOW_CONFIG
/* default window dimensions (overwritten via -g option): */
enum {
WIN_WIDTH = 800,
WIN_HEIGHT = 600
};
/* colors and font are configured with 'background', 'foreground' and
* 'font' X resource properties.
* See X(7) section Resources and xrdb(1) for more information.
*/
#endif
#ifdef _IMAGE_CONFIG
/* levels (in percent) to use when zooming via '-' and '+':
* (first/last value is used as min/max zoom level)
*/
static const float zoom_levels[] = {
12.5, 25.0, 50.0, 75.0,
100.0, 150.0, 200.0, 400.0, 800.0
};
/* default slideshow delay (in sec, overwritten via -S option): */
enum { SLIDESHOW_DELAY = 5 };
/* gamma correction: the user-visible ranges [-GAMMA_RANGE, 0] and
* (0, GAMMA_RANGE] are mapped to the ranges [0, 1], and (1, GAMMA_MAX].
* */
static const double GAMMA_MAX = 10.0;
static const int GAMMA_RANGE = 32;
/* command i_scroll pans image 1/PAN_FRACTION of screen width/height */
static const int PAN_FRACTION = 5;
/* if false, pixelate images at zoom level != 100%,
* toggled with 'a' key binding
*/
static const bool ANTI_ALIAS = true;
/* if true, use a checkerboard background for alpha layer,
* toggled with 'A' key binding
*/
static const bool ALPHA_LAYER = false;
#endif
#ifdef _THUMBS_CONFIG
/* thumbnail sizes in pixels (width == height): */
static const int thumb_sizes[] = { 32, 64, 96, 128, 160 };
/* thumbnail size at startup, index into thumb_sizes[]: */
static const int THUMB_SIZE = 3;
#endif
#ifdef _MAPPINGS_CONFIG
/* keyboard mappings for image and thumbnail mode: */
static const keymap_t keys[] = {
/* modifiers key function argument */
{ 0, XK_q, g_quit, None },
{ 0, XK_Return, g_switch_mode, None },
{ 0, XK_f, g_toggle_fullscreen, None },
{ 0, XK_b, g_toggle_bar, None },
{ 0, XK_space, g_prefix_external, None },
{ 0, XK_g, g_first, None },
{ 0, XK_G, g_n_or_last, None },
{ 0, XK_h, g_reload_image, None },
{ 0, XK_D, g_remove_image, None },
{ ControlMask, XK_c, g_scroll_screen, DIR_LEFT },
{ ControlMask, XK_Left, g_scroll_screen, DIR_LEFT },
{ ControlMask, XK_t, g_scroll_screen, DIR_DOWN },
{ ControlMask, XK_Down, g_scroll_screen, DIR_DOWN },
{ ControlMask, XK_s, g_scroll_screen, DIR_UP },
{ ControlMask, XK_Up, g_scroll_screen, DIR_UP },
{ ControlMask, XK_r, g_scroll_screen, DIR_RIGHT },
{ ControlMask, XK_Right, g_scroll_screen, DIR_RIGHT },
{ 0, XK_plus, g_zoom, +1 },
{ 0, XK_KP_Add, g_zoom, +1 },
{ 0, XK_minus, g_zoom, -1 },
{ 0, XK_KP_Subtract, g_zoom, -1 },
{ 0, XK_m, g_toggle_image_mark, None },
{ 0, XK_M, g_mark_range, None },
{ ControlMask, XK_m, g_reverse_marks, None },
{ ControlMask, XK_u, g_unmark_all, None },
{ 0, XK_N, g_navigate_marked, +1 },
{ 0, XK_P, g_navigate_marked, -1 },
{ 0, XK_braceleft, g_change_gamma, -1 },
{ 0, XK_braceright, g_change_gamma, +1 },
{ ControlMask, XK_g, g_change_gamma, 0 },
{ 0, XK_c, t_move_sel, DIR_LEFT },
{ 0, XK_Left, t_move_sel, DIR_LEFT },
{ 0, XK_t, t_move_sel, DIR_DOWN },
{ 0, XK_Down, t_move_sel, DIR_DOWN },
{ 0, XK_s, t_move_sel, DIR_UP },
{ 0, XK_Up, t_move_sel, DIR_UP },
{ 0, XK_r, t_move_sel, DIR_RIGHT },
{ 0, XK_Right, t_move_sel, DIR_RIGHT },
{ 0, XK_H, t_reload_all, None },
{ 0, XK_n, i_navigate, +1 },
{ 0, XK_n, i_scroll_to_edge, DIR_LEFT | DIR_UP },
{ 0, XK_p, i_navigate, -1 },
{ 0, XK_p, i_scroll_to_edge, DIR_LEFT | DIR_UP },
{ 0, XK_BackSpace, i_navigate, -1 },
{ 0, XK_bracketright, i_navigate, +10 },
{ 0, XK_bracketleft, i_navigate, -10 },
{ ControlMask, XK_6, i_alternate, None },
{ ControlMask, XK_n, i_navigate_frame, +1 },
{ ControlMask, XK_p, i_navigate_frame, -1 },
{ ControlMask, XK_space, i_toggle_animation, None },
{ 0, XK_c, i_scroll, DIR_LEFT },
{ 0, XK_Left, i_scroll, DIR_LEFT },
{ 0, XK_t, i_scroll, DIR_DOWN },
{ 0, XK_Down, i_scroll, DIR_DOWN },
{ 0, XK_s, i_scroll, DIR_UP },
{ 0, XK_Up, i_scroll, DIR_UP },
{ 0, XK_r, i_scroll, DIR_RIGHT },
{ 0, XK_Right, i_scroll, DIR_RIGHT },
{ 0, XK_C, i_scroll_to_edge, DIR_LEFT },
{ 0, XK_T, i_scroll_to_edge, DIR_DOWN },
{ 0, XK_S, i_scroll_to_edge, DIR_UP },
{ 0, XK_R, i_scroll_to_edge, DIR_RIGHT },
{ 0, XK_equal, i_set_zoom, 100 },
{ 0, XK_w, i_fit_to_win, SCALE_DOWN },
{ 0, XK_W, i_fit_to_win, SCALE_FIT },
{ 0, XK_e, i_fit_to_win, SCALE_WIDTH },
{ 0, XK_E, i_fit_to_win, SCALE_HEIGHT },
{ 0, XK_less, i_rotate, DEGREE_270 },
{ 0, XK_greater, i_rotate, DEGREE_90 },
{ 0, XK_question, i_rotate, DEGREE_180 },
{ 0, XK_bar, i_flip, FLIP_HORIZONTAL },
{ 0, XK_underscore, i_flip, FLIP_VERTICAL },
{ 0, XK_a, i_toggle_antialias, None },
{ 0, XK_A, i_toggle_alpha, None },
{ 0, XK_k, i_slideshow, None },
};
/* mouse button mappings for image mode: */
static const button_t buttons[] = {
/* modifiers button function argument */
{ 0, 1, i_cursor_navigate, None },
{ 0, 2, i_drag, DRAG_ABSOLUTE },
{ 0, 3, g_switch_mode, None },
{ 0, 4, g_zoom, +1 },
{ 0, 5, g_zoom, -1 },
};
#endif

View File

@@ -3,50 +3,31 @@
#+EMAIL: lucien@phundrak.com #+EMAIL: lucien@phundrak.com
#+CREATOR: Lucien Cartier-Tilet #+CREATOR: Lucien Cartier-Tilet
#+LANGUAGE: en #+LANGUAGE: en
#+OPTIONS: auto-id:t H:4 broken_links:mark email:t ^:{} #+OPTIONS: H:4 broken_links:mark email:t ^:{}
#+KEYWORDS: dotfiles linux emacs configuration phundrak drakpa #+KEYWORDS: dotfiles linux emacs configuration phundrak drakpa
#+begin_export html #+html: <a href="https://archlinux.org/"><img src="https://img.shields.io/badge/OS-Arch%20Linux-10A0CC?logo=Arch%20Linux&logoColor=white&style=flat-square"/></a>
<a href="https://drone.phundrak.com/phundrak/dotfiles">
<img src="https://drone.phundrak.com/api/badges/phundrak/dotfiles/status.svg" />
</a>
#+end_export
* Presentation * Presentation
:PROPERTIES: This repository is where I keep most of my configuration files. With
:CUSTOM_ID: Presentation-e5605995 what is stored here, anyone can recreate a working desktop
:END: configuration similar to my daily one.
This repository is where I keep most of my configuration files. With what is
stored here, anyone can recreate a working desktop configuration similar to my
daily one.
My dotfiles are managed by [[https://yadm.io/][yadm]], and although I dont use its alternate files My dotfiles are managed by [[https://yadm.io/][yadm]], and although I dont use its
features (which is pretty neat btw), it allows me to painlessly manage my alternate files features (which is pretty neat btw), it allows me to
dotfiles right where they are and not in a separate Git repository somewhere painlessly manage my dotfiles right where they are and not in a
with everything symlinked. Another advantage of yadm is it will automatically separate Git repository somewhere with everything symlinked. Another
execute (with your authorization, of course) my homemade bootstrap when my advantage of yadm is it will automatically execute (with your
dotfiles are cloned through yadm. authorization, of course) my homemade bootstrap when my dotfiles are
cloned through yadm.
* Wheres the config file for X? * A lot of things are missing!
:PROPERTIES: Yep, a lot of things are not in this repository but over at
:CUSTOM_ID: Wheres_the_config_file_for_X?-7b214c4a [[https://config.phundrak.com][config.phundrak.com]]. This is where I store all my litterate config.
:END: You can check out its own repo over at
As you may have noticed, I am striving for a 100% amount of configuration [[https://labs.phundrak.com/phundrak/config.phundrak.com][labs.phundrak.com/phundrak/config.phundrak.com]].
files exported from Org files, that is, through literary programming. This is
still very much a work in progress though. Most of what you need can be found
in my [[file:org/config/index.org][index.org]] file and in its folder.
* Some more info please?
:PROPERTIES:
:CUSTOM_ID: Some_more_info_please?-f54ae73a
:END:
Everything you need to know is in my [[file:org/config/]] folder, and my Org files
are also available in web format on my website [[https://config.phundrak.com/][config.phundrak.com]].
* Neat, whats the license? * Neat, whats the license?
:PROPERTIES:
:CUSTOM_ID: Neat,_whats_the_license?-399aa236
:END:
All of my dotfiles (and my dotfiles only) are available under the GNU GPLv3 All of my dotfiles (and my dotfiles only) are available under the GNU GPLv3
Licence. Please consult [[file:LICENCE.md]] for more information. In short: you Licence. Please consult [[file:LICENCE.md]] for more information. In short: you
are free to access, edit and redistribute all of my dotfiles under the same are free to access, edit and redistribute all of my dotfiles under the same

View File

@@ -0,0 +1,32 @@
# Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
_pkgname=nextcloud-talk
pkgname="${_pkgname}-bin"
pkgver=0.10.0
_dirname="Nextcloud Talk-linux-x64"
_archivename="${_dirname// /.}-${pkgver}"
pkgrel=1
pkgdesc="Nextcloud Talk Desktop Client Preview"
arch=('x86_64')
url="https://github.com/nextcloud/talk-desktop"
makedepend=('unzip')
license=('AGPL-3.0')
provides=('nextcloud-talk')
source=("https://github.com/nextcloud-releases/talk-desktop/releases/download/v${pkgver}/${_archivename}.zip"
nextcloud-talk.desktop )
sha256sums=('3b1c1620665078069491ff86395d87727c91da8153a9842e9206c4b2f7f020dd'
'2fba0d3e869145cbdfcd24c104d196ee8857a05950b7a59b47f025f39e9e5214')
package() {
cd "$srcdir"
mkdir -p "${pkgdir}/usr/share/applications/"
install -Dm644 "${_pkgname}.desktop" "${pkgdir}/usr/share/applications/"
cd "$_dirname"
mkdir -p "${pkgdir}/usr/share-licenses/${_pkgname}"
install -Dm644 LICENSE "${pkgdir}/usr/share-licenses/${_pkgname}"
install -Dm644 LICENSES.chromium.html "${pkgdir}/usr/share-licenses/${_pkgname}"
mkdir -p "${pkgdir}/opt/nextcloud-talk"
mv "Nextcloud Talk" nextcloud-talk
mv * "${pkgdir}/opt/nextcloud-talk/"
}
# vim:set ts=2 sw=2 et:

View File

@@ -0,0 +1,9 @@
[Desktop Entry]
Name=Nextcloud Talk
Version=0.7.0
Type=Application
Exec=/opt/nextcloud-talk/nextcloud-talk
StartupNotify=true
Terminal=false
Categories=Network
Keywords=Nextcloud

View File

@@ -1,6 +1,6 @@
# Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com> # Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
pkgname=Wonderdraft pkgname=Wonderdraft
pkgver=1.1.6.1 pkgver=1.1.7.3
pkgrel=1 pkgrel=1
epoch= epoch=
pkgdesc="" pkgdesc=""
@@ -19,7 +19,7 @@ options=(!strip docs !libtool !staticlibs emptydirs zipman purge !debug)
install= install=
changelog= changelog=
source=($pkgname-$pkgver-Linux64.zip) source=($pkgname-$pkgver-Linux64.zip)
sha512sums=('27b0a56c95efe99c2b3cadb10c4e70186591bef0793d58b1acff99f8dfc789806ae7821adcdfc10af1c46e4801a8fe753380913ea4aeb4fb8030fe7cf80ea090') sha512sums=('4eaff01dad549223265cca10c3f9bf9cdbee4542b6a4afbf513fd655a47238e2d757c36d8ed7ffe16a19879f6d41739ee1e722ebc120507cde3b39250ae22c9c')
noextract=() noextract=()
package() { package() {

View File

@@ -0,0 +1,28 @@
# Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
_pkgname=appwrite-cli
_orgname=appwrite
_ghpkgname=sdk-for-cli
pkgname="nodejs-${_pkgname}"
pkgver=4.1.0
pkgrel=1
pkgdesc="Command-line tool for building and testing Emacs Lisp packages"
url="https://github.com/${_orgname}/${_ghpkgname}"
license=("BSD-3-Clause")
arch=("any")
depends=("nodejs")
makedepends=("npm")
source=("https://registry.npmjs.org/${_pkgname}/-/${_pkgname}-${pkgver}.tgz")
sha256sums=('83f35fcc7c54fec519791e4bc28f2c6913971357a055eb9113cbaa7259f3edc4')
noextract=("$_pkgname-$pkgver.tgz")
prepare() {
tar xzf "$_pkgname-$pkgver.tgz"
}
package() {
npm i --location=global --cache "${srcdir}/npm-cache" --prefix "$pkgdir/usr" "$srcdir/$_pkgname-$pkgver.tgz"
install -Dm644 package/LICENSE.md "$pkgdir/usr/share/licenses/$_pkgname/COPYING"
}
# vim:set ts=2 sw=2 et:

View File

@@ -0,0 +1,27 @@
# Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
_pkgname=eask
_orgname=emacs-eask
_nodepkgname=cli
pkgname="nodejs-${_pkgname}"
pkgver=0.9.3
pkgrel=1
pkgdesc="Command-line tool for building and testing Emacs Lisp packages"
url="https://github.com/${_orgname}/${_pkgname}"
license=("GPL3")
arch=("any")
depends=("nodejs")
makedepends=("npm")
source=("https://registry.npmjs.org/@${_orgname}/${_nodepkgname}/-/${_nodepkgname}-${pkgver}.tgz")
sha256sums=('1f3d948d89544c7680f882c9dee72f121a500947a42aa14b785ac949f729a3d0')
noextract=("$_pkgname-$pkgver.tgz")
prepare() {
tar xf "$_nodepkgname-$pkgver.tgz" package/COPYING
}
package() {
npm i --location=global --cache "${srcdir}/npm-cache" --prefix "$pkgdir/usr" "$srcdir/$_nodepkgname-$pkgver.tgz"
install -Dm644 package/COPYING "$pkgdir/usr/share/licenses/${_pkgname}/COPYING"
install -Dm644 package/README.md "$pkgdir/usr/share/doc/${_pkgname}/README.md"
}

View File

@@ -0,0 +1,40 @@
# Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
# Original Maintainer: Sanjay Pavan <withercubes@protonmail.com>
_pkgname=nsxiv
pkgname="${_pkgname}-bepo-git"
pkgver=31.r19.gc03ec39
pkgrel=1
pkgdesc='New Simple X Image Viewer'
arch=('x86_64')
license=('GPL2')
conflicts=("$_pkgname" "${_pkgname}-git")
provides=('sxiv')
url="https://codeberg.org/${_pkgname}/${_pkgname}"
depends=('imlib2' 'desktop-file-utils' 'xdg-utils' 'hicolor-icon-theme' 'libexif' 'libxft' 'giflib' 'libwebp')
makedepends=(git)
source=("${_pkgname}::git+$url" config.h)
b2sums=('SKIP'
'657b40dab4ed27e2d1402feb4fcd2dd225504c2e3a619da08cf87e36405d18a161a64939374670626e896c03a553a718f93b1bf54703f2d30dcdb27e082d6c21')
pkgver() {
cd "$srcdir/${_pkgname}"
git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}
prepare() {
cd "$srcdir/${_pkgname}"
[[ -f $srcdir/config.h ]] && cp $srcdir/config.h .
}
build() {
make -C "$_pkgname"
}
package() {
cd "$srcdir/${_pkgname}"
make PREFIX=/usr DESTDIR="$pkgdir" install-all
ln -s /usr/bin/nsxiv "${pkgdir}/usr/bin/sxiv"
}
# vim:set ts=2 sw=2 et:

View File

@@ -0,0 +1,208 @@
#ifdef INCLUDE_WINDOW_CONFIG
/* default window dimensions (overwritten via -g option): */
static const int WIN_WIDTH = 800;
static const int WIN_HEIGHT = 600;
/* colors and font can be overwritten via X resource properties.
* See nsxiv(1), X(7) section Resources and xrdb(1) for more information.
*/
static const char *DEFAULT_WIN_BG = "nord0";
static const char *DEFAULT_WIN_FG = "nord4";
static const char *DEFAULT_MARK_COLOR = NULL; /* NULL means it will default to window foreground */
#if HAVE_LIBFONTS
static const char *DEFAULT_BAR_BG = NULL; /* NULL means it will default to window background */
static const char *DEFAULT_BAR_FG = NULL; /* NULL means it will default to window foreground */
static const char *DEFAULT_FONT = "monospace-8";
/* if true, statusbar appears on top of the window */
static const bool TOP_STATUSBAR = false;
#endif /* HAVE_LIBFONTS */
#endif
#ifdef INCLUDE_IMAGE_CONFIG
/* levels (in percent) to use when zooming via '-' and '+':
* (first/last value is used as min/max zoom level)
*/
static const float zoom_levels[] = {
12.5, 25.0, 50.0, 75.0,
100.0, 150.0, 200.0, 400.0, 800.0
};
/* default slideshow delay (in sec, overwritten via -S option): */
static const int SLIDESHOW_DELAY = 5;
/* color correction: the user-visible ranges [-CC_STEPS, 0] and
* (0, CC_STEPS] are mapped to the ranges [0, 1], and (1, *_MAX].
* Higher step count will have higher granulairy.
*/
static const int CC_STEPS = 32;
static const double GAMMA_MAX = 10.0;
static const double BRIGHTNESS_MAX = 2.0;
static const double CONTRAST_MAX = 4.0;
/* command i_scroll pans image 1/PAN_FRACTION of screen width/height */
static const int PAN_FRACTION = 5;
/* percentage of memory to use for imlib2's cache size.
* 3 means use 3% of total memory which is about 245MiB on 8GiB machine.
* 0 or less means disable cache.
* 100 means use all available memory (but not above CACHE_SIZE_LIMIT).
*
* NOTE: higher cache size means better image reloading performance, but also
* higher memory usage.
*/
static const int CACHE_SIZE_MEM_PERCENTAGE = 3; /* use 3% of total memory for cache */
static const int CACHE_SIZE_LIMIT = 256 * 1024 * 1024; /* but not above 256MiB */
static const int CACHE_SIZE_FALLBACK = 32 * 1024 * 1024; /* fallback to 32MiB if we can't determine total memory */
#endif
#ifdef INCLUDE_OPTIONS_CONFIG
/* if false, pixelate images at zoom level != 100%,
* toggled with 'a' key binding (overwritten via `--anti-alias` option)
*/
static const bool ANTI_ALIAS = true;
/* if true, use a checkerboard background for alpha layer,
* toggled with 'A' key binding (overwritten via `--alpha-layer` option)
*/
static const bool ALPHA_LAYER = false;
#endif
#ifdef INCLUDE_THUMBS_CONFIG
/* thumbnail sizes in pixels (width == height): */
static const int thumb_sizes[] = { 32, 64, 96, 128, 160 };
/* thumbnail size at startup, index into thumb_sizes[]: */
static const int THUMB_SIZE = 3;
#endif
#ifdef INCLUDE_MAPPINGS_CONFIG
/* these modifiers will be used when processing keybindings */
static const unsigned int USED_MODMASK = ShiftMask | ControlMask | Mod1Mask;
/* abort the keyhandler */
static const KeySym KEYHANDLER_ABORT = XK_Escape;
/* keyboard mappings for image and thumbnail mode: */
static const keymap_t keys[] = {
/* modifiers key function argument */
{ 0, XK_q, g_quit, 0 },
{ 0, XK_Return, g_switch_mode, None },
{ 0, XK_f, g_toggle_fullscreen, None },
{ 0, XK_b, g_toggle_bar, None },
{ 0, XK_space, g_prefix_external, None },
{ 0, XK_g, g_first, None },
{ 0, XK_G, g_n_or_last, None },
{ 0, XK_h, g_reload_image, None },
{ 0, XK_D, g_remove_image, None },
{ ControlMask, XK_c, g_scroll_screen, DIR_LEFT },
{ ControlMask, XK_Left, g_scroll_screen, DIR_LEFT },
{ ControlMask, XK_t, g_scroll_screen, DIR_DOWN },
{ ControlMask, XK_Down, g_scroll_screen, DIR_DOWN },
{ ControlMask, XK_s, g_scroll_screen, DIR_UP },
{ ControlMask, XK_Up, g_scroll_screen, DIR_UP },
{ ControlMask, XK_r, g_scroll_screen, DIR_RIGHT },
{ ControlMask, XK_Right, g_scroll_screen, DIR_RIGHT },
{ 0, XK_plus, g_zoom, +1 },
{ 0, XK_KP_Add, g_zoom, +1 },
{ 0, XK_minus, g_zoom, -1 },
{ 0, XK_KP_Subtract, g_zoom, -1 },
{ 0, XK_m, g_toggle_image_mark, None },
{ 0, XK_M, g_mark_range, None },
{ ControlMask, XK_m, g_reverse_marks, None },
{ ControlMask, XK_u, g_unmark_all, None },
{ 0, XK_N, g_navigate_marked, +1 },
{ 0, XK_P, g_navigate_marked, -1 },
{ 0, XK_braceleft, g_change_gamma, -1 },
{ 0, XK_braceright, g_change_gamma, +1 },
{ ControlMask, XK_g, g_change_gamma, 0 },
{ 0, XK_c, t_move_sel, DIR_LEFT },
{ 0, XK_Left, t_move_sel, DIR_LEFT },
{ 0, XK_t, t_move_sel, DIR_DOWN },
{ 0, XK_Down, t_move_sel, DIR_DOWN },
{ 0, XK_s, t_move_sel, DIR_UP },
{ 0, XK_Up, t_move_sel, DIR_UP },
{ 0, XK_r, t_move_sel, DIR_RIGHT },
{ 0, XK_Right, t_move_sel, DIR_RIGHT },
{ 0, XK_H, t_reload_all, None },
{ 0, XK_n, i_navigate, +1 },
{ 0, XK_n, i_scroll_to_edge, DIR_LEFT | DIR_UP },
{ 0, XK_p, i_navigate, -1 },
{ 0, XK_p, i_scroll_to_edge, DIR_LEFT | DIR_UP },
{ 0, XK_BackSpace, i_navigate, -1 },
{ 0, XK_bracketright, i_navigate, +10 },
{ 0, XK_bracketleft, i_navigate, -10 },
{ ControlMask, XK_6, i_alternate, None },
{ ControlMask, XK_n, i_navigate_frame, +1 },
{ ControlMask, XK_p, i_navigate_frame, -1 },
{ ControlMask, XK_space, i_toggle_animation, None },
{ ControlMask, XK_a, i_toggle_animation, None },
{ 0, XK_c, i_scroll, DIR_LEFT },
{ 0, XK_Left, i_scroll, DIR_LEFT },
{ 0, XK_t, i_scroll, DIR_DOWN },
{ 0, XK_Down, i_scroll, DIR_DOWN },
{ 0, XK_s, i_scroll, DIR_UP },
{ 0, XK_Up, i_scroll, DIR_UP },
{ 0, XK_r, i_scroll, DIR_RIGHT },
{ 0, XK_Right, i_scroll, DIR_RIGHT },
{ 0, XK_C, i_scroll_to_edge, DIR_LEFT },
{ 0, XK_T, i_scroll_to_edge, DIR_DOWN },
{ 0, XK_S, i_scroll_to_edge, DIR_UP },
{ 0, XK_R, i_scroll_to_edge, DIR_RIGHT },
{ 0, XK_z, i_scroll_to_center, None },
{ 0, XK_equal, i_set_zoom, 100 },
{ 0, XK_w, i_fit_to_win, SCALE_DOWN },
{ 0, XK_W, i_fit_to_win, SCALE_FIT },
{ 0, XK_F, i_fit_to_win, SCALE_FILL },
{ 0, XK_e, i_fit_to_win, SCALE_WIDTH },
{ 0, XK_E, i_fit_to_win, SCALE_HEIGHT },
{ 0, XK_less, i_rotate, DEGREE_270 },
{ 0, XK_greater, i_rotate, DEGREE_90 },
{ 0, XK_question, i_rotate, DEGREE_180 },
{ 0, XK_bar, i_flip, FLIP_HORIZONTAL },
{ 0, XK_underscore, i_flip, FLIP_VERTICAL },
{ 0, XK_a, i_toggle_antialias, None },
{ 0, XK_A, i_toggle_alpha, None },
{ 0, XK_k, i_slideshow, None },
};
/* mouse button mappings for image mode: */
static const button_t buttons_img[] = {
/* modifiers button function argument */
{ 0, 1, i_cursor_navigate, None },
{ ControlMask, 1, i_drag, DRAG_RELATIVE },
{ 0, 2, i_drag, DRAG_ABSOLUTE },
{ 0, 3, g_switch_mode, None },
{ 0, 4, g_zoom, +1 },
{ 0, 5, g_zoom, -1 },
};
/* mouse button mappings for thumbnail mode: */
static const button_t buttons_tns[] = {
/* modifiers button function argument */
{ 0, 1, t_select, None },
{ 0, 3, t_drag_mark_image, None },
{ 0, 4, t_scroll, DIR_UP },
{ 0, 5, t_scroll, DIR_DOWN },
{ ControlMask, 4, g_scroll_screen, DIR_UP },
{ ControlMask, 5, g_scroll_screen, DIR_DOWN },
};
/* true means NAV_WIDTH is relative (33%), false means absolute (33 pixels) */
static const bool NAV_IS_REL = true;
/* width of navigation area, 0 disables cursor navigation, */
static const unsigned int NAV_WIDTH = 33;
/* mouse cursor on left, middle and right part of the window */
static const cursor_t imgcursor[3] = {
CURSOR_LEFT, CURSOR_ARROW, CURSOR_RIGHT
};
#endif

View File

@@ -1,25 +1,20 @@
# Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com> # Maintainer: Lucien Cartier-Tilet <lucien@phundrak.com>
pkgname=pumopm-git pkgname=pumopm-bin
pkgver=0.1.1.r1.g4fd33bf pkgver=0.1.1
pkgrel=3 pkgrel=3
pkgdesc="A tiny power manager written in Rust" pkgdesc="A tiny power manager written in Rust"
arch=('i686' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64') arch=('i686' 'x86_64' 'arm' 'armv6h' 'armv7h' 'aarch64')
url="https://labs.phundrak.com/phundrak/pumopm" url="https://labs.phundrak.com/phundrak/pumopm"
license=('GPL3') license=('GPL3')
depends=() depends=()
makedepends=('rustup' 'git') makedepends=('rustup')
options=('strip' 'zipman') options=('strip' 'zipman')
source=("$pkgname::git+https://labs.phundrak.com/phundrak/pumopm.git#branch=develop") source=("${pkgname%-bin}::https://labs.phundrak.com/phundrak/pumopm/archive/$pkgver.tar.gz")
sha512sums=('SKIP')
conflicts=('pumopm' 'pumopm-bin')
# If Phundraks Gitea takes too long to answer, or if it is down, use the # If Phundraks Gitea takes too long to answer, or if it is down, use the
# Github mirror # Github mirror
# source=("$pkgname}::git+https://github.com/Phundrak/pumopm.git#branch=develop") # source=("${pkgname%-bin}::https://github.com/Phundrak/pumopm/archive/$pkgver.tar.gz")
md5sums=('347a95efacdbf9f8ab3b2da6a7eff6cc')
pkgver() { conflicts=('pumopm' 'pumopm-git')
cd "$pkgname"
git describe --tags --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g'
}
build() { build() {
cd "$pkgname" cd "$pkgname"
@@ -34,9 +29,13 @@ build() {
package() { package() {
cd "$pkgname" cd "$pkgname"
echo EXE
install -Dm755 "target/release/pumopm" "$pkgdir/usr/bin/pumopm" install -Dm755 "target/release/pumopm" "$pkgdir/usr/bin/pumopm"
echo LICENSE
install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/${pkgname}/LICENSE" install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/${pkgname}/LICENSE"
echo MAN
install -Dm644 "pumopm.1" "$pkgdir/usr/share/man/man1/pumopm.1" install -Dm644 "pumopm.1" "$pkgdir/usr/share/man/man1/pumopm.1"
echo SERVCE
install -Dm644 "pumopm.service" "$pkgdir/usr/lib/systemd/system/pumopm.service" install -Dm644 "pumopm.service" "$pkgdir/usr/lib/systemd/system/pumopm.service"
} }

View File

@@ -1,58 +0,0 @@
---
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: 'true'
AlignEscapedNewlines: Left
AlignOperands: 'true'
AlignTrailingComments: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'true'
AllowShortBlocksOnASingleLine: 'true'
AllowShortCaseLabelsOnASingleLine: 'true'
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: 'false'
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'false'
AlwaysBreakTemplateDeclarations: 'true'
BinPackArguments: 'true'
BinPackParameters: 'true'
BreakAfterJavaFieldAnnotations: 'true'
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Linux
BreakBeforeInheritanceComma: 'false'
BreakBeforeTernaryOperators: 'true'
BreakConstructorInitializers: BeforeColon
BreakStringLiterals: 'true'
ColumnLimit: '80'
CompactNamespaces: 'false'
ConstructorInitializerAllOnOneLineOrOnePerLine: 'false'
Cpp11BracedListStyle: 'true'
FixNamespaceComments: 'true'
IncludeBlocks: Regroup
IndentCaseLabels: 'false'
IndentPPDirectives: AfterHash
IndentWrappedFunctionNames: 'false'
JavaScriptQuotes: Leave
JavaScriptWrapImports: 'true'
KeepEmptyLinesAtTheStartOfBlocks: 'false'
Language: Cpp
MaxEmptyLinesToKeep: '1'
NamespaceIndentation: Inner
PointerAlignment: Right
ReflowComments: 'true'
SortIncludes: 'true'
SortUsingDeclarations: 'true'
SpaceAfterCStyleCast: 'false'
SpaceAfterTemplateKeyword: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: 'false'
SpacesBeforeTrailingComments: '2'
SpacesInAngles: 'false'
SpacesInCStyleCastParentheses: 'false'
SpacesInContainerLiterals: 'false'
SpacesInParentheses: 'false'
SpacesInSquareBrackets: 'false'
Standard: Cpp11
UseTab: ForIndentation
...

View File

@@ -1,179 +0,0 @@
# Created by https://www.gitignore.io/api/c,c++,ninja,macos,linux,cmake,windows,visualstudiocode
# Edit at https://www.gitignore.io/?templates=c,c++,ninja,macos,linux,cmake,windows,visualstudiocode
### C ###
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
### C++ ###
# Prerequisites
# Compiled Object files
*.slo
# Precompiled Headers
# Compiled Dynamic libraries
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
# Executables
### CMake ###
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
### CMake Patch ###
# External projects
*-prefix/
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Ninja ###
.ninja_deps
.ninja_log
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### VisualStudioCode Patch ###
# Ignore all local history of files
.history
### Windows ###
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.gitignore.io/api/c,c++,ninja,macos,linux,cmake,windows,visualstudiocode
build

View File

@@ -1,56 +0,0 @@
cmake_minimum_required(VERSION 3.14)
project("PROJECTNAME"
VERSION 0.1
DESCRIPTION "Description of PROJECTNAME"
HOMEPAGE_URL "https://labs.phundrak.fr/phundrak/PROJECTNAME"
LANGUAGES CXX)
set(CMAKE_CXX_COMPILER /usr/bin/clang++)
file(GLOB SRC_FILES "src/*.cc")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
include(functions)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
enable_cxx_compiler_flag_if_supported("-Wall")
enable_cxx_compiler_flag_if_supported("-pedantic")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
enable_cxx_compiler_flag_if_supported("-g")
else()
enable_cxx_compiler_flag_if_supported("-O3")
enable_cxx_compiler_flag_if_supported("-flto")
endif()
# include_directories(<PUBLIC HEADER DIRECTORIES>)
# Main software
set(TGT PROJECTNAME)
add_executable(${TGT} ${SRC_FILES})
target_compile_features(${TGT} PRIVATE cxx_std_17)
target_include_directories(${TGT} PRIVATE include/PROJECTNAME)
target_link_libraries(${TGT} ${CONAN_LIBS})
# Tests, -DTESTS=True to activate
if(TESTS)
set(TESTTGT PROJECTNAME-tests)
file(GLOB TEST_FILES "tests/tests.cc")
add_executable(${TESTTGT} ${TEST_FILES})
target_compile_features(${TESTTGT} PRIVATE cxx_std_17)
target_include_directories(${TESTTGT} PRIVATE include/PROJECTNAME)
target_link_libraries(${TESTTGT} ${CONAN_LIBS})
endif()
# OS specific instructions.
if(APPLE)
elseif(WIN32)
# Windows developer environment specific instructions.
if(MINGW)
elseif(MSYS)
elseif(CYGWIN)
endif()
elseif(UNIX)
else()
endif()

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2019 Jinsoo Heo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,60 +0,0 @@
[[http://spacemacs.org][file:https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg]]
* PROJECTNAME
PROJECTNAME is a C++17 project written for and built with CMake and Ninja.
* How to build PROJECTNAME
You will ned to have Ninja and Conan installed. To install Ninja, install the
appropriate package offered by your package manager (~ninja-build~ on Debian,
~ninja~ on Arch Linux and Void Linux), and to install conan, use ~pip~.
#+begin_src shell
pip install --user conan
#+end_src
This project is built with conan, ninja and cmake using clang-7 for C++17. To
use it, first install clang-7 and lldb 7, then run this:
#+begin_src shell
conan profile new default --detect
conan profile update settings.compiler=clang default
conan profile update settings.compiler.version=7.0 default
conan profile update settings.compiler.libcxx=libstdc++11 default
conan profile update env.CC=/bin/clang default
conan profile update env.CXX=/bin/clang++ default
#+end_src
If you do not wish to overwrite your ~default~ profile, you can instead create a
new one, for instance ~clang~. To do so, write the name of your new profile (in
this example ~clang~) instead of ~default~ in the commands shown above.
Then, To build and run the program, go to the root of the project and run this:
#+begin_src shell
mkdir build && cd build
conan install .. --build missing
cmake -DCMAKE_CXX_COMPILER=clang++ .. -G Ninja
cmake --build .
#+end_src
If you want to use another profile than your default one, you should run the
following line instead of the second line:
#+begin_src shell
conan install .. --build missing --profile <your_profile>
#+end_src
If you wish to build the projects tests in addition to the project itself, you
can add the option ~-DTESTS=True~ to the first ~cmake~ command to build the
projects tests too.
#+begin_src shell
cmake -DCMAKE_CXX_COMPILER=clang++ -DTESTS=True .. -G Ninja
#+end_src
If you do not wish to build your project with Ninja but with another generator,
such as Unix Makefiles, simply replace ~Ninja~ in the second to last ~cmake~
command with the name of your generator. For instance:
#+begin_src shell
cmake -DCMAKE_CXX_COMPILER=clang++ .. -G "Unix Makefiles"
#+end_src
You can still build your project by running ~cmake --build .~ or by running
~make~ manually.
* Credits
Awesome C++ Template by [[https://github.com/devkoriel/AwesomeCppTemplate][devkoriel]].

View File

@@ -1,12 +0,0 @@
INCLUDE(CheckCXXCompilerFlag)
function(enable_cxx_compiler_flag_if_supported flag)
string(FIND "${CMAKE_CXX_FLAGS}" "${flag}" flag_already_set)
if(flag_already_set EQUAL -1)
check_cxx_compiler_flag("${flag}" flag_supported)
if(flag_supported)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" PARENT_SCOPE)
endif()
unset(flag_supported CACHE)
endif()
endfunction()

View File

@@ -1,16 +0,0 @@
from conans import ConanFile, CMake
class PROJECTNAMEConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
requires = "gtest/1.8.1@bincrafters/stable"
generators = "cmake", "gcc", "txt"
def imports(self):
self.copy("*.dll", dst="bin", src="bin") # From bin to bin
self.copy("*.dylib*", dst="bin", src="lib") # From lib to bin
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +0,0 @@
#include <iostream>
int main(int argc, char* argv[]) {
std::cout << "Hello World!" << std::endl;
return 0;
}

View File

@@ -1,16 +0,0 @@
#include "Poco/MD5Engine.h"
#include "Poco/DigestStream.h"
#include "class.hpp"
#include <iostream>
int main(int argc, char** argv)
{
Poco::MD5Engine md5;
Poco::DigestOutputStream ds(md5);
ds << "abcdefghijklmnopqrstuvwxyz";
ds.close();
std::cout << Poco::DigestEngine::digestToHex(md5.digest()) << std::endl;
return 0;
}

View File

@@ -1,16 +0,0 @@
#include <gtest/gtest.h>
TEST(SquareRootTest, PositiveNos) {
ASSERT_EQ(6, 2 * 3);
ASSERT_EQ(6, -2 * -3);
}
TEST(SquareRootTest, NegativeNos) {
ASSERT_EQ(-6, -2 * 3);
ASSERT_EQ(-6, 2 * -3);
}
int main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@@ -1,26 +0,0 @@
.\" Automatically generated by Pandoc 2.5
.\"
.TH "cnew" "" "" "" ""
.hy
.SH NAME
.PP
\f[B]cnew\f[R] \- New C11 Project
.SH SYNOPSIS
.PP
cnew PROJECT
.SH DESCRIPTION
.PP
Creates a new C11 CMake\-based project named PROJECT.
.SH REPORTING BUGS
.PP
Git repository available at
<https://labs.phundrak.fr/phundrak/dotfiles>.
.SH Copyright
.PP
Copyright Lucien \[dq]Phundrak\[dq] Cartier Tilet 2019\-2020.
Licence GPLv3+: GNU GPL version 3 or later
<https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
.SH AUTHORS
Lucien \[dq]Phundrak\[dq] Cartier Tilet.

View File

@@ -1,16 +0,0 @@
#+TITLE: cnew
#+AUTHOR: Lucien "Phundrak" Cartier Tilet
* NAME
*{{{title}}}* - New C11 Project
* SYNOPSIS
{{{title}}} PROJECT
* DESCRIPTION
Creates a new C11 CMake-based project named PROJECT.
* REPORTING BUGS
Git repository available at [[https://labs.phundrak.fr/phundrak/dotfiles]].
* Copyright
Copyright {{{author}}} 2019-2020. Licence GPLv3+: GNU GPL version 3 or later [[https://gnu.org/licenses/gpl.html]]. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

View File

@@ -1,30 +0,0 @@
.\" Automatically generated by Pandoc 2.5
.\"
.TH "cppnew" "" "" "" ""
.hy
.SH NAME
.PP
\f[B]cppnew\f[R] \- New C++17 Project
.SH SYNOPSIS
.PP
cppnew [\-c, \[en]connan] PROJECT
.SH DESCRIPTION
.PP
Creates a new C++17 project named PROJECT, either CMake\-based only or
CMake and Conan\-based.
.TP
.B \f[C]\-c\f[R], \f[C]\-\-connan\f[R]
Creates a Conan\-based project
.SH REPORTING BUGS
.PP
Git repository available at
<https://labs.phundrak.fr/phundrak/dotfiles>.
.SH Copyright
.PP
Copyright Lucien \[dq]Phundrak\[dq] Cartier Tilet 2019\-2020.
Licence GPLv3+: GNU GPL version 3 or later
<https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
.SH AUTHORS
Lucien \[dq]Phundrak\[dq] Cartier Tilet.

View File

@@ -1,18 +0,0 @@
#+TITLE: cppnew
#+AUTHOR: Lucien "Phundrak" Cartier Tilet
* NAME
*{{{title}}}* - New C++17 Project
* SYNOPSIS
{{{title}}} [-c, --connan] PROJECT
* DESCRIPTION
Creates a new C++17 project named PROJECT, either CMake-based only or CMake and Conan-based.
- ~-c~, ~--connan~ :: Creates a Conan-based project
* REPORTING BUGS
Git repository available at [[https://labs.phundrak.fr/phundrak/dotfiles]].
* Copyright
Copyright {{{author}}} 2019-2020. Licence GPLv3+: GNU GPL version 3 or later [[https://gnu.org/licenses/gpl.html]]. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

View File

@@ -1,58 +0,0 @@
---
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: 'true'
AlignEscapedNewlines: Left
AlignOperands: 'true'
AlignTrailingComments: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'true'
AllowShortBlocksOnASingleLine: 'true'
AllowShortCaseLabelsOnASingleLine: 'true'
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: 'false'
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'false'
AlwaysBreakTemplateDeclarations: 'true'
BinPackArguments: 'true'
BinPackParameters: 'true'
BreakAfterJavaFieldAnnotations: 'true'
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Linux
BreakBeforeInheritanceComma: 'false'
BreakBeforeTernaryOperators: 'true'
BreakConstructorInitializers: BeforeColon
BreakStringLiterals: 'true'
ColumnLimit: '80'
CompactNamespaces: 'false'
ConstructorInitializerAllOnOneLineOrOnePerLine: 'false'
Cpp11BracedListStyle: 'true'
FixNamespaceComments: 'true'
IncludeBlocks: Regroup
IndentCaseLabels: 'false'
IndentPPDirectives: AfterHash
IndentWrappedFunctionNames: 'false'
JavaScriptQuotes: Leave
JavaScriptWrapImports: 'true'
KeepEmptyLinesAtTheStartOfBlocks: 'false'
Language: Cpp
MaxEmptyLinesToKeep: '1'
NamespaceIndentation: Inner
PointerAlignment: Right
ReflowComments: 'true'
SortIncludes: 'true'
SortUsingDeclarations: 'true'
SpaceAfterCStyleCast: 'false'
SpaceAfterTemplateKeyword: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: 'false'
SpacesBeforeTrailingComments: '2'
SpacesInAngles: 'false'
SpacesInCStyleCastParentheses: 'false'
SpacesInContainerLiterals: 'false'
SpacesInParentheses: 'false'
SpacesInSquareBrackets: 'false'
Standard: Cpp11
UseTab: ForIndentation
...

View File

@@ -1,4 +0,0 @@
bin
build
debug
!.gitignore

View File

@@ -1,26 +0,0 @@
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
set(CMAKE_LEGACY_CYGWIN_WIN32 0)
project("PROJECTNAME")
set(TGT "PROJECTNAME")
set(${TGT}_VERSION_MAJOR 0)
set(${TGT}_VERSION_MINOR 1)
set(CXX_COVERAGE_COMPILE_FLAGS "-pedantic -Wall -Wextra -Wold-style-cast -Woverloaded-virtual -Wfloat-equal -Wwrite-strings -Wpointer-arith -Wcast-qual -Wcast-align -Wconversion -Wsign-conversion -Wshadow -Weffc++ -Wredundant-decls -Wdouble-promotion -Winit-self -Wswitch-default -Wswitch-enum -Wundef -Winline -Wunused -Wnon-virtual-dtor")
set(CMAKE_CXX_FLAGS_DEBUG "${CXX_COVERAGE_COMPILE_FLAGS} -DDebug -g -pg")
set(CMAKE_CXX_FLAGS_RELEASE "${CXX_COVERAGE_COMPILE_FLAGS} -O3 -flto")
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "../bin/")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "../debug/")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_COVERAGE_COMPILE_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CXX_COVERAGE_COMPILE_FLAGS}")
include_directories(include)
file(GLOB SOURCES "src/*.cc")
add_executable(${TGT} ${SOURCES})

View File

@@ -1,12 +0,0 @@
release:
@mkdir -p build bin
@cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make
debug:
@mkdir -p build debug
@cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make
clean:
@rm -rf bin
@rm -rf build
@rm -rf debug

View File

@@ -1,14 +0,0 @@
[[http://spacemacs.org][file:https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg]]
* PROJECTNAME
PROJECTNAME is a C++17 project written for and built with CMake.
* How to build PROJECTNAME
You can directly run either ~make~ or ~make release~ to compile the release
version of the binaries which will be generated in ~bin/~. If you wish to
compile its debug version instead, run ~make debug~ to generate the binaries in
the ~debug/~ directory. Once you have ran ~make~ at the root of the project, you
can recompile the project from the ~build/~ directory if you wish to avoid to
re-run CMake.

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +0,0 @@
#include <iostream>
int main(int argc, char* argv[]) {
std::cout << "Hello World!" << std::endl;
return 0;
}

View File

@@ -1,58 +0,0 @@
---
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: 'true'
AlignEscapedNewlines: Left
AlignOperands: 'true'
AlignTrailingComments: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'true'
AllowShortBlocksOnASingleLine: 'true'
AllowShortCaseLabelsOnASingleLine: 'true'
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: 'false'
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'false'
AlwaysBreakTemplateDeclarations: 'true'
BinPackArguments: 'true'
BinPackParameters: 'true'
BreakAfterJavaFieldAnnotations: 'true'
BreakBeforeBinaryOperators: All
BreakBeforeBraces: Linux
BreakBeforeInheritanceComma: 'false'
BreakBeforeTernaryOperators: 'true'
BreakConstructorInitializers: BeforeColon
BreakStringLiterals: 'true'
ColumnLimit: '80'
CompactNamespaces: 'false'
ConstructorInitializerAllOnOneLineOrOnePerLine: 'false'
Cpp11BracedListStyle: 'true'
FixNamespaceComments: 'true'
IncludeBlocks: Regroup
IndentCaseLabels: 'false'
IndentPPDirectives: AfterHash
IndentWrappedFunctionNames: 'false'
JavaScriptQuotes: Leave
JavaScriptWrapImports: 'true'
KeepEmptyLinesAtTheStartOfBlocks: 'false'
Language: Cpp
MaxEmptyLinesToKeep: '1'
NamespaceIndentation: Inner
PointerAlignment: Right
ReflowComments: 'true'
SortIncludes: 'true'
SortUsingDeclarations: 'true'
SpaceAfterCStyleCast: 'false'
SpaceAfterTemplateKeyword: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: 'false'
SpacesBeforeTrailingComments: '2'
SpacesInAngles: 'false'
SpacesInCStyleCastParentheses: 'false'
SpacesInContainerLiterals: 'false'
SpacesInParentheses: 'false'
SpacesInSquareBrackets: 'false'
Standard: Cpp11
UseTab: ForIndentation
...

View File

@@ -1,4 +0,0 @@
bin
build
debug
!.gitignore

View File

@@ -1,74 +0,0 @@
cmake_minimum_required(VERSION 3.10)
project("PROJECTNAME"
VERSION 0.1
DESCRIPTION "Description of PROJECTNAME"
HOMEPAGE_URL "https://labs.phundrak.fr/phundrak/PROJECTNAME"
LANGUAGES C)
set(CMAKE_C_COMPILER /usr/bin/clang)
file(GLOB SRC_FILES "src/*.c")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
include(functions)
enable_c_compiler_flag_if_supported("-Wall")
enable_c_compiler_flag_if_supported("-pedantic")
enable_c_compiler_flag_if_supported("-Wextra")
enable_c_compiler_flag_if_supported("-Wfloat-equal")
enable_c_compiler_flag_if_supported("-Wwrite-strings")
enable_c_compiler_flag_if_supported("-Wpointer-arith")
enable_c_compiler_flag_if_supported("-Wcast-qual")
enable_c_compiler_flag_if_supported("-Wcast-align")
enable_c_compiler_flag_if_supported("-Wconversion")
enable_c_compiler_flag_if_supported("-Wshadow")
enable_c_compiler_flag_if_supported("-Wreduntant-decls")
enable_c_compiler_flag_if_supported("-Wdouble-promotion")
enable_c_compiler_flag_if_supported("-Winit-self")
enable_c_compiler_flag_if_supported("-Wswitch-default")
enable_c_compiler_flag_if_supported("-Wswitch-enum")
enable_c_compiler_flag_if_supported("-Wundef")
enable_c_compiler_flag_if_supported("-Winline")
enable_c_compiler_flag_if_supported("-Wpedantic")
enable_c_compiler_flag_if_supported("-Wsign-conversion")
enable_c_compiler_flag_if_supported("-Wnull-dereference")
enable_c_compiler_flag_if_supported("-Wuseless-cast")
enable_c_compiler_flag_if_supported("-Wformat=2")
enable_c_compiler_flag_if_supported("-Wlifetime")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
enable_c_compiler_flag_if_supported("-g")
else()
enable_c_compiler_flag_if_supported("-O3")
enable_c_compiler_flag_if_supported("-flto")
endif()
# include_directories(<PUBLIC HEADER DIRECTORIES>)
# Main software
set(TGT PROJECTNAME)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/bin)
add_executable(${TGT} ${SRC_FILES})
target_compile_features(${TGT} PRIVATE c_std_11)
target_include_directories(${TGT} PRIVATE include/PROJECTNAME)
#target_link_libraries(${TGT})
# Tests, -DTESTS=True to activate
if(TESTS)
set(TESTTGT PROJECTNAME-tests)
file(GLOB TEST_FILES "tests/tests.c")
add_executable(${TESTTGT} ${TEST_FILES})
set_property(TARGET ${TESTTGT} PROPERTY C_STANDARD 11)
target_include_directories(${TESTTGT} PRIVATE include/PROJECTNAME)
endif()
# OS specific instructions.
if(APPLE)
elseif(WIN32)
# Windows developer environment specific instructions.
if(MINGW)
elseif(MSYS)
elseif(CYGWIN)
endif()
elseif(UNIX)
else()
endif()

View File

@@ -1,12 +0,0 @@
release:
@mkdir -p build bin
@cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make
debug:
@mkdir -p build debug
@cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make
clean:
@rm -rf bin
@rm -rf build
@rm -rf debug

View File

@@ -1,14 +0,0 @@
[[http://spacemacs.org][file:https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg]]
* PROJECTNAME
PROJECTNAME is a C11 project written for and built with CMake.
* How to build PROJECTNAME
You can directly run either ~make~ or ~make release~ to compile the release
version of the binaries which will be generated in ~bin/~. If you wish to
compile its debug version instead, run ~make debug~ to generate the binaries in
the ~debug/~ directory. Once you have ran ~make~ at the root of the project, you
can recompile the project from the ~build/~ directory if you wish to avoid to
re-run CMake.

View File

@@ -1,12 +0,0 @@
INCLUDE(CheckCCompilerFlag)
function(enable_c_compiler_flag_if_supported flag)
string(FIND "${CMAKE_C_FLAGS}" "${flag}" flag_already_set)
if(flag_already_set EQUAL -1)
check_c_compiler_flag("${flag}" flag_supported)
if(flag_supported)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}" PARENT_SCOPE)
endif()
unset(flag_supported CACHE)
endif()
endfunction()

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +0,0 @@
#include <stdio.h>
int main(int argc, char* argv[]) {
printf("Hello World!\n");
return 0;
}

View File

@@ -1,30 +0,0 @@
#!/usr/bin/env -S emacs -Q --script
(require 'package)
(require 'org)
(require 'ox-html)
(setq package-archives '(("melpa" . "https://melpa.org/packages/")))
(package-initialize)
(package-refresh-contents)
(package-install 'htmlize)
(setq org-confirm-babel-evaluate nil
org-html-validation-link nil)
(defun export-and-clean (directory)
(progn (mapc (lambda (file)
(progn (message (concat "====================\n"
"Exporting "
file
"\n"
"====================\n"))
(with-current-buffer (find-file file)
(org-html-export-to-html))))
(directory-files directory t (regexp-quote ".org")))
(mapc (lambda (file)
(delete-file file nil))
(directory-files directory t (regexp-quote "html~")))))
(dolist (dir '("org/config/" "org/config/Deprecated/" "org/config/WIP"))
(export-and-clean dir))

View File

@@ -1,3 +0,0 @@
((org-mode . ((org-confirm-babel-evaluate . nil)
(eval . (writeroom-mode 1))
(org-latex-reference-command . "\\ref{%s}"))))

File diff suppressed because it is too large Load Diff

View File

@@ -1,827 +0,0 @@
#+TITLE: i3 config
#+setupfile: ../headers
#+OPTIONS: auto-id:t
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's i3 config" />
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's i3 config" />
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the i3 config file of Phundrak" />
#+PROPERTY: header-args :noweb yes :exports code :tangle ~/.config/i3/config
#+PROPERTY: header-args:emacs-lisp :exports none :tangle no
* Presentation
:PROPERTIES:
:CUSTOM_ID: Presentation-9c7a53bf
:END:
#+begin_center
*Before proceeding, be aware that I deprecated this i3 config on August 22nd, 2020, meaning I wont update it anymore unless I use it again some day in the future. I will keep it on my website though.*
#+end_center
=i3= is a window manager for GNU/Linux which automatically tiles windows in workspaces. This configuration was ade to automatically handle some tasks such as which software allowed where, autostart, and launching software with shortcuts.
It is to be noted I am using [[https://github.com/Airblader/i3][Airbladers fork of i3]], =i3-gaps=. Some configuration will not work with =i3=.
#+BEGIN_SRC conf :exports none
# -*- mode: conf -*-
#+END_SRC
* Screenshots
:PROPERTIES:
:CUSTOM_ID: Screenshots-51f1cef3
:END:
#+CAPTION: Desktop with Neofetch in the terminal
[[./img/neofetch.png.webp]]
#+CAPTION: Desktop with Emacs opened
[[./img/emacs.png.webp]]
#+CAPTION: Desktop with Rofi
[[./img/rofi.png.webp]]
* Variables declaration
:PROPERTIES:
:CUSTOM_ID: Variables_declaration-0ebc9a21
:END:
** Global
:PROPERTIES:
:CUSTOM_ID: Variables_declaration-Global-1cf1bfe4
:END:
The first I do is declaring the modifier key and the alt key —I dont find the names =Mod1= and =Mod4= to be explicit enough. This will map =$mod= to the Super key (or as some people unfortunately call it, the /Windows/ key) and =$alt= to the Alt key.
Lets also bind the =$up=, =$down=, =$left= and =$right= variables to respectively the up, down, left, and right arrows on the keyboard. Why bind them to variables? If I ever want to modify the arrow keys to some other keys, like =é=, =a=, =u=, and =i= (the equivalent of =wqsd= on the bépo layout) or =c=, =t=, =s=, and =r= (the equivalent of =hjkl= on the bépo layout), I will just have to modify these four lines.
Ill also set the =$term= variable. A lot of shortcuts in my i3 config rely on the terminal emulator itself to launch commands in the terminal, and thus call the terminal itself. If I ever need to move from my current terminal, I will just have to change the name of the executable here.
#+NAME: variable-table
| variable | value |
|----------+-------|
| $mod | Mod4 |
| $alt | Mod1 |
| $up | Up |
| $down | Down |
| $left | Left |
| $right | Right |
| $term | st |
#+NAME: variable-sh
| variable | value |
|-------------+--------------------------------------------------------------------------|
| $exiti3 | i3-nagbar -t warning -m 'Leave i3?' -b 'Yes' 'i3-msg exit' |
| $lockscreen | Lucien Cartier-Tilet\n(Phuntsok Drak-pa)\n+33 (0)6 83 90 56 89 |
| $rofiexec | rofi -combi-modi 'window,drun' -show combi -mohh combi -m -1 -show-icons |
| $mail | emacsclient -c -e '(mu4e)' -n |
| $ec | emacsclient -c -n |
| $walset | wal -i ~/Pictures/Wallpapers -o wal-set |
Variables will be set like so.
#+BEGIN_SRC conf :tangle no
set $term st
#+END_SRC
#+NAME: generate-variables
#+BEGIN_SRC emacs-lisp :var variables=variable-table :cache yes
(mapconcat (lambda (x) (format "set %s %s" (car x) (cadr x)))
variables
"\n")
#+END_SRC
#+RESULTS[48079cbd7e6dbf2003fe5ae87216bd38f638b6f8]: generate-variables
: set $mod Mod4
: set $alt Mod1
: set $up Up
: set $down Down
: set $left Left
: set $right Right
: set $term st
Finally, some variables hold some long strings for commands I dont want to have to type multiple times.
#+NAME: generate-variables2
#+BEGIN_SRC emacs-lisp :var variables=variable-sh :cache yes
(mapconcat (lambda (x) (format "set %s \"%s\"" (car x) (cadr x)))
variables
"\n")
#+END_SRC
#+RESULTS[c901e3e31c500859661650e86a6b63aef286acbe]: generate-variables2
: set $exiti3 "i3-nagbar -t warning -m 'Leave i3?' -b 'Yes' 'i3-msg exit'"
: set $lockscreen "Lucien Cartier-Tilet\n(Phuntsok Drak-pa)\n+33 (0)6 83 90 56 89"
: set $rofiexec "rofi -combi-modi 'window,drun' -show combi -mohh combi -m -1 -show-icons"
: set $mail "emacsclient -c -e '(mu4e)' -n"
: set $ec "emacsclient -c -n"
: set $walset "wal -i ~/Pictures/Wallpapers -o wal-set"
Here is the configuration:
#+BEGIN_SRC conf :noweb yes
<<generate-variables()>>
<<generate-variables2()>>
#+END_SRC
Now comes the font for the window tiles. Honestly, this setting is useless since we do not see it, but lets set it anyway.
#+BEGIN_SRC conf
font Fira Sans Book:style=Book:pixelsize=10
#+END_SRC
** Floating windows
:PROPERTIES:
:CUSTOM_ID: Variables_declaration-Floating_windows-897d0c3b
:END:
Floating windows are windows that are not tiled with other windows, but rather are free to go anywhere on your screen, with any size. A bit like what you would get with any other non-tiling window manager or desktop environment (though most of them support minimal tiling features).
Lets declare our floading modyfier. With floating windows, you can move them around by clicking on the windows borders; but since we dont have any with this config, we will have instead to press the floating modifier while clicking on the window (anywhere on the window is fine) to move them around.
Here is the configuration:
#+BEGIN_SRC conf
floating_modifier $mod
#+END_SRC
* i3 global settings
:PROPERTIES:
:CUSTOM_ID: i3_global_settings-1b863d93
:END:
Some settings affect i3 globally, such as its aspect or how it handles the mouse. Hence, here are some settings I set in my configuration.
** Mouse settings
:PROPERTIES:
:CUSTOM_ID: i3_global_settings-Mouse_settings-4630241d
:END:
First of all, I do not want i3 to warp my mouse each time I change windows; my mouse stays where it is.
#+BEGIN_SRC conf
mouse_warping none
#+END_SRC
I also to not want the window focus to follow my mouse, because sometimes I will just knock my physical mouse out of the way of my hand, and when I do that the software mouse will most likely end up in another window I do not want to focus.
#+BEGIN_SRC conf
focus_follows_mouse no
#+END_SRC
** Popup handling
:PROPERTIES:
:CUSTOM_ID: i3_global_settings-Popup_handling-51b6ed8d
:END:
While in fullscreen, some software might generate a popup. In that case, I want to be aware of that, and any popup will make me leave fullscreen in order to be presented with said popup.
#+BEGIN_SRC conf
popup_during_fullscreen leave_fullscreen
#+END_SRC
** Behavior of workspace changes
:PROPERTIES:
:CUSTOM_ID: i3_global_settings-Behavior_of_workspace_changes-00202985
:END:
When changing workspace as described below, we often want to go back to the previous workspace we were working on, but we might not remember immediately which one it was, or we might still have our fingers ready to fire the shortcut which made us make the first workspace change. Hence, if we type the same workspace change shortcut, instead of doing nothing it will bring us back to the previous workspace we were on.
#+BEGIN_SRC conf
workspace_auto_back_and_forth yes
#+END_SRC
** Gaps and window appearance
:PROPERTIES:
:CUSTOM_ID: i3_global_settings-Gaps_and_window_appearance-749e9f7b
:END:
As mentioned in at the beginning of this document, I am using i3-gaps, which brings spacing (gaps) between windows to i3.
First, I want space around my windows only when there are several containers on the same screen, otherwise they will be maximized.
#+BEGIN_SRC conf
smart_gaps on
#+END_SRC
I also do not want to see any window border, so I will be turning this setting off.
#+BEGIN_SRC conf
smart_borders on
#+END_SRC
By the way, the default border is invisible, since it is zero pixels wide.
#+BEGIN_SRC conf
default_border pixel 0
#+END_SRC
Then comes the size of these gaps. I made the outer gap negative so the space between my windows and the border of my screens is smaller than the gap between my containers.
#+BEGIN_SRC conf
gaps inner 20
gaps outer -10
#+END_SRC
Some parameters are also available when it comes to the colors i3 uses. Honestly, we wont see these colors much, so lets simply keep the default values.
#+BEGIN_SRC conf
set_from_resource $fg i3wm.color7 #f0f0f0
set_from_resource $bg i3wm.color2 #f0f0f0
# class border backgr. text indicator child_border
client.focused $bg $bg $fg $bg $bg
client.focused_inactive $bg $bg $fg $bg $bg
client.unfocused $bg $bg $fg $bg $bg
client.urgent $bg $bg $fg $bg $bg
client.placeholder $bg $bg $fg $bg $bg
#+END_SRC
* Assigning windows to workspaces
:PROPERTIES:
:CUSTOM_ID: Assigning_windows_to_workspaces-e59f61e5
:END:
I decided to bind some windows to some workspaces in order to have a better organization of my desktop.
#+NAME: assignment-table
| Application | Class | Workspace |
|-------------+-------------+-----------|
| Emacs | Emacs | 2 |
| Chromium | Chromium | 3 |
| Firefox | firefox | 3 |
| Nemo | Nemo | 4 |
| Wonderdraft | Godot | 5 |
| Gimp | Gimp* | 6 |
| Gnome Boxes | gnome-boxes | 8 |
| Steam | Steam | 9 |
| Discord | discord | 10 |
The class table is used in the assignment in the i3 config file. For instance, Gimps assignment will look like this:
#+BEGIN_SRC conf :tangle no
assign [class="Gimp*"] 6
#+END_SRC
#+NAME: generate-workspaces
#+BEGIN_SRC emacs-lisp :var workspaces=assignment-table :cache yes
(mapconcat (lambda (x) (format "assign [class=\"%s\"] %s" (cadr x) (caddr x)))
workspaces
"\n")
#+END_SRC
#+RESULTS[0995341b013e50227edf78257ab502e46a30bc9a]: generate-workspaces
: assign [class="Emacs"] 2
: assign [class="Chromium"] 3
: assign [class="firefox"] 3
: assign [class="Nemo"] 4
: assign [class="Godot"] 5
: assign [class="Gimp*"] 6
: assign [class="gnome-boxes"] 8
: assign [class="Steam"] 9
: assign [class="discord"] 10
Here is the configuration:
#+BEGIN_SRC conf :noweb yes
<<generate-workspaces()>>
#+END_SRC
And although this is not specifically assigning a window to a workspace, I also want to have the tenth workspace assigned to a specific output in case I have two screens — and since this is the case when I am using only one computer, Marpa, I will be using some EmacsLisp in order to generate a different configuration file from this org file depending on the name of the machine.
#+NAME: ws10-output-edp1
#+BEGIN_SRC emacs-lisp
(if (string= system-name "Marpa")
"workspace 10 output eDP-1"
"")
#+END_SRC
Now Ill call the above code as a noweb reference that should be executed.
#+BEGIN_SRC conf
<<ws10-output-edp1()>>
#+END_SRC
* Shortcuts
:PROPERTIES:
:CUSTOM_ID: Shortcuts-9c7074d3
:END:
I use *A LOT* of shortcuts when it comes to my workflow. Like, all the time. So, expect this chapter to be a bit long, and Ill try to make it readable still.
Shortcuts are set like so:
#+BEGIN_SRC conf :tangle no
bindsym shortcut command
#+END_SRC
#+NAME: generate-shortcuts
#+BEGIN_SRC emacs-lisp :exports none :var table=[] :tangle no
(mapconcat (lambda (x) (format "bindsym %s %s" (car x) (cadr x)))
table
"\n")
#+END_SRC
** Terminal shortcuts
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Terminal_shortcuts-514ecdbe
:END:
I have a couple of shortcuts which are related to my terminal. For instance, ~$mod+Return~ opens a regular terminal instance while ~$mod+$alt+M~ opens an SSH instance on my Mila host.
#+NAME: terminal-shortcuts
| shortcut | command | What it does |
|-------------------+----------------------+--------------------------------------------------|
| $mod+Return | exec $term | Opens a regular terminal console |
| $mod+$alt+Return | split h;; exec $term | Opens a terminal console below the current one |
| $mod+Shift+Return | split v;; exec $term | Opens a terminal on the right of the current one |
| $mod+$alt+m | exec $term ssh Mila | Opens an SSH instance in my Mila host |
| $mod+$alt+n | exec $term ssh Naro | Opens an SSH instance in my Naro host |
| $mod+Shift+h | exec $term htop | Opens a terminal with ~htop~ |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=terminal-shortcuts)>>
#+END_SRC
** i3 shortcuts
:PROPERTIES:
:CUSTOM_ID: Shortcuts-i3_shortcuts-369039ae
:END:
A couple of shortcuts are dedicated to i3 itself.
#+NAME: i3-sh
| shortcut | command | what it does |
|--------------+---------------------------------+----------------------------------|
| $mod+Shift+c | exec yadm alt && i3-msg reload | Reload the i3 configuration file |
| $mod+Shift+r | exec yadm alt && i3-msg restart | Restart i3 inplace |
| $mod+Shift+e | exec $exiti3 | Quit i3 |
And although this is not really an i3 shortcut per se, I add here the shortcut for launching pywal, which will set one of my wallpapers as the wallpaper and will generate my systems color configuration from it.
#+NAME: wal-sh
| shortcut | command | what it does |
|----------+--------------+--------------------------------------------------------------|
| $mod+w | exec $walset | Set a random wallpaper and generates a color profile from it |
We also have some shortcuts to lock our screen, sleep, hibernate and shut down our computer.
#+NAME: computer-sh
| shortcut | command | what it does |
|---------------+----------------------------+------------------------|
| $mod+l | exec i3lock -fol | Lock the screen |
| $mod+$alt+h | exec "systemctl suspend" | Suspend the computer |
| $mod+Ctrl+h | exec "systemctl hibernate" | Hibernate the computer |
| $mod+Shift+F4 | exec poweroff | Power off the computer |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=i3-sh)>>
<<generate-shortcuts(table=wal-sh)>>
<<generate-shortcuts(table=computer-sh)>>
#+END_SRC
** Window and workspace management
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-a384b8f8
:END:
*** Managing how windows will split
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Managing_how_windows_will_split-5a22ae31
:END:
It is possible to indicate to i3 how windows interact with one another, and especially how they are organized by spawning new windows either to the right or below the current window.
#+NAME: split-win-sh
| shortcuts | command | what it does |
|-----------+---------+--------------------------------------------------------|
| $mod+h | split h | Next window to spawn will spawn below the current one |
| $mod+v | split v | Next window to spawn will spawn beside the current one |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=split-win-sh)>>
#+END_SRC
*** Focus windows
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Focus_windows-69a00ae9
:END:
To change window focus, you can use one of the following shortcuts:
#+NAME: window-focus-sh
| shortcut | command | what it does |
|-------------+-------------+-------------------------------------------|
| $mod+$left | focus left | Focus the window left of the current one |
| $mod+$down | focus down | Focus the window down of the current one |
| $mod+$up | focus up | Focus the window up of the current one |
| $mod+$right | focus right | Focus the windof right of the current one |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=window-focus-sh)>>
#+END_SRC
*** Focus workspaces
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Focus_workspaces-9f4bee74
:END:
Just like windows, it is also possible to change focus between workspaces, because lets be honest, most people wont have ten screens to display all ten workspaces at the same time, and frankly that would be impractical.
#+NAME: ws-focus-sh
| shortcut | window | what it does |
|----------+--------------+-------------------------|
| $mod+1 | workspace 1 | Focus first workspace |
| $mod+2 | workspace 2 | Focus second workspace |
| $mod+3 | workspace 3 | Focus third workspace |
| $mod+4 | workspace 4 | Focus fourth workspace |
| $mod+5 | workspace 5 | Focus fifth workspace |
| $mod+6 | workspace 6 | Focus sixth workspace |
| $mod+7 | workspace 7 | Focus seventh workspace |
| $mod+8 | workspace 8 | Focus eighth workspace |
| $mod+9 | workspace 9 | Focus ninth workspace |
| $mod+0 | workspace 10 | Focus tenth workspace |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=ws-focus-sh)>>
#+END_SRC
*** Moving windows
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Moving_windows-d8c90ac2
:END:
To move windows, a couple of shortcuts are available:
#+NAME: window-move-sh
| shortcut | command | what it does |
|-------------------+------------+-------------------------------|
| $mod+Shift+$left | move left | Move the focused window left |
| $mod+Shift+$down | move down | Move the focused window down |
| $mod+Shift+$up | move up | Move the focused window up |
| $mod+Shift+$right | move right | Move the focused window right |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=window-move-sh)>>
#+END_SRC
*** Moving containers
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Moving_containers-b97cf4ae
:END:
To move containers between the available screens, you have the following shortcuts:
#+NAME: containers-move-sh
| shortcut | command | what it does |
|------------------+--------------------------------+------------------------------------------------------------|
| $mod+Ctrl+$left | move container to output left | Moves the container to the screen left of the current one |
| $mod+Ctrl+$down | move container to output down | Moves the container to the screen down of the current one |
| $mod+Ctrl+$up | move container to output up | Moves the container to the screen above the current one |
| $mod+Ctrl+$right | move container to output right | Moves the container to the screen right of the current one |
You can also send containers to other workspaces by their number.
#+NAME: containers-ws-sh
| shortcut | command | what it does |
|--------------+--------------------------------+--------------------------------------------|
| $mod+Shift+1 | move container to workspace 1 | Move current container to the workspace 1 |
| $mod+Shift+2 | move container to workspace 2 | Move current container to the workspace 2 |
| $mod+Shift+3 | move container to workspace 3 | Move current container to the workspace 3 |
| $mod+Shift+4 | move container to workspace 4 | Move current container to the workspace 4 |
| $mod+Shift+5 | move container to workspace 5 | Move current container to the workspace 5 |
| $mod+Shift+6 | move container to workspace 6 | Move current container to the workspace 6 |
| $mod+Shift+7 | move container to workspace 7 | Move current container to the workspace 7 |
| $mod+Shift+8 | move container to workspace 8 | Move current container to the workspace 8 |
| $mod+Shift+9 | move container to workspace 9 | Move current container to the workspace 9 |
| $mod+Shift+0 | move container to workspace 10 | Move current container to the workspace 10 |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=containers-move-sh)>>
<<generate-shortcuts(table=containers-ws-sh)>>
#+END_SRC
*** Moving workspaces
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Moving_workspaces-a71d7b54
:END:
It is also possible to move workspaces. The related shortcuts available are the following:
#+NAME: workspace-move-sh
| shortcut | command | what it does |
|------------------------+--------------------------------+------------------------------------------------------------|
| $mod+Ctrl+Shift+$left | move workspace to output left | Moves the workspace to the screen left of the current one |
| $mod+Ctrl+Shift+$down | move workspace to output down | Moves the workspace to the screen down of the current one |
| $mod+Ctrl+Shift+$up | move workspace to output up | Moves the workspace to the screen above the current one |
| $mod+Ctrl+Shift+$right | move workspace to output right | Moves the workspace to the screen right of the current one |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=workspace-move-sh)>>
#+END_SRC
*** Close windows
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Close_windows-5e521a48
:END:
To close windows, we have two main shortcuts: Alt+F4 and mod+q. The first one is here due to habits, but I dont really use it anymore due to my main keyboard which doesnt have any easy access to the functions keys, hence mod+q.
#+NAME: close-win-sh
| shortcut | command | what it does |
|----------+---------+-------------------------|
| $mod+q | kill | kill the current window |
| $alt+F4 | kill | kill the current window |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=close-win-sh)>>
#+END_SRC
*** Manage the size of the current window
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Manage_the_size_of_the_current_window-11afa914
:END:
It is possible to change the size of the current window, even if it is a floating one. The first shortcut that might interest you is $mod+f which switches your current window to fullscreen. But to resize a window, you will need to enter the ~resize~ mode.
#+NAME: size-win-sh
| shortcut | command | what it does |
|----------+-------------------+---------------------------------------------------|
| $mod+f | fullscreen toggle | Puts the current window in fullscreen or exits it |
| $mod+r | mode "resize" | Enter resize mode |
When it comes to modes, they are defined as follows:
#+BEGIN_SRC conf :tangle no
mode "nameofyourmode" {
here go your shortcuts
}
#+END_SRC
So, all the following shortcuts will be inserted in a mode called ~resize~. Note that not only are the resizing shortcuts bound to the arrow keys, they are also bound to ~ctsr~, which is the bépo equivalent of ~hjkl~.
#+NAME: resize-win-sh
| shortcut | command | what it does |
|----------+-------------------------------------+-------------------------------------------|
| $right | resize grow width 20 px or 10 ppt | Increase the width of the current window |
| r | resize grow width 20 px or 10 ppt | Increase the width of the current window |
| $left | resize shrink width 10 px or 5 ppt | Decrease the width of the current window |
| c | resize shrink width 10 px or 5 ppt | Decrease the width of the current window |
| $down | resize grow height 10 px or 5 ppt | Increase the height of the current window |
| t | resize grow height 10 px or 5 ppt | Increase the height of the current window |
| $up | resize shrink height 10 px or 5 ppt | Decrease the height of the current window |
| s | resize shrink height 10 px or 5 ppt | Decrease the height of the current window |
| Return | mode "default" | Return to the default mode |
| Escape | mode "default" | Return to the default mode |
If you prefer, you can think of these shortcuts not as increasing or decreasing the width or height of the current window, but rather as how the bottom or right limit of the windows will be moved relative to the top left corner.
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=size-win-sh)>>
mode "resize" {
<<generate-shortcuts(table=resize-win-sh)>>
}
#+END_SRC
*** Manage floating windows
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Manage_floating_windows-9206f4da
:END:
As said above, your windows can be floating windows instead of being tiled like they are by default. For this too we have a couple of shortcuts:
#+NAME: float-win-sh
| shortcut | command | what it does |
|------------------+----------------------+------------------------------------------------------|
| $mod+Shift+space | floating toggle | Toggles the window between tiled and floating mode |
| $mod+space | focus mode_toggle | Toggles the focus between tiled and floating windows |
| $mod+Ctrl+c | move position center | Centers the focused floating window |
If you want to move around your floating window, you can do it with your mouse while holding down the floating modifier declared [[#Variables_declaration-Floating_windows-897d0c3b][here]].
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=float-win-sh)>>
#+END_SRC
*** Scratchpad and window display
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Scratchpad_and_window_display-10d8d1f4
:END:
You can think of i3s scratchpad as some sort of extra workspace in which you can hide your windows you are not using, or as if you want to reduce a window to the taskbar of other window managers or desktop environments. You have basically two shortcuts for the scratchpad: one that sends the current window to the scratchpad, and one that cicles through the windows sent to the scratchpad and shows them to you sequencially. If you go through all of them, they will be hidden again. You can get a window out of the scratchpad by tiling it to the current workspace with the shortcut described above.
You also have the possibility of making a floating window a sticky window. This means not only will it show on all workspaces, it will also be on top of every other window. It can be useful if you have some notes you want to keep an eye on for instance.
#+NAME: scratchpad-sh
| shortcut | command | what it does |
|--------------+-----------------+------------------------------------------------------|
| $mod+Shift+s | move scratchpad | Sends the current window to the scratchpad |
| $mod+s | scratchpad show | Shows and cycles through windows from the scratchpad |
| $mod+Ctrl+s | sticky toggle | Toggles sticky mode on current window |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=scratchpad-sh)>>
#+END_SRC
*** Gaps management
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Window_and_workspace_management-Gaps_management-33979213
:END:
It is possible to dynamically change the gaps between containers if we want to change a bit the appearance of i3. For that, we obviously have some shortcuts.
#+NAME: gaps-resize-sh
| shortcut | command | what it does |
|-------------------+-----------------------------------------------+-----------------------------|
| $mod+g | gaps inner current plus 5 | Increase the inner gap size |
| $mod+Shift+g | gaps inner current minus 5 | Decrease the inner gap size |
| $mod+Ctrl+g | gaps outer current plus 5 | Increase the outer gap size |
| $mod+Ctrl+Shift+g | gaps outer current minus 5 | Decrease the outer gap size |
| $mod+$alt+g | gaps inner all set 20; gaps outer all set -10 | Reset gaps |
Here is the corresponding configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=gaps-resize-sh)>>
#+END_SRC
** Launching software
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-0e088e69
:END:
A big part of my i3 shortcuts though are related to launching various software. Ill try to sort them by category here, but do take a look even at categories which you might not be interested in, they might actually have something useful for you.
*** Software and command launcher
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Software_and_command_launcher-a3f5863e
:END:
These commands will allow the user to launch applications which provide ~.desktop~ files or user-defined ~.desktop~ files, as well as commands with the help of rofi.
#+NAME: launcher-sh
| shortcut | command | what it does |
|--------------+---------------------------------------+-------------------------------------------------------|
| $mod+Shift+d | exec --no-startup-id j4-dmenu-desktop | Launch a registered application |
| $mod+d | exec --no-startup-id $rofiexec | Launch a terminal command or a registered application |
Here is the configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=launcher-sh)>>
#+END_SRC
*** Internet software
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Internet_software-a0524cd8
:END:
I have a couple of Internet-related software I can launch easily.
#+NAME: internet-sh
| shortcut | command | what it does |
|--------------+---------------------+-----------------------------|
| $mod+b | exec firefox | Launch browser |
| $mod+m | exec $mail | Launch Gnus, my mail client |
| Ctrl+Shift+d | exec discord-canary | Launch Discord |
Hence this configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=internet-sh)>>
#+END_SRC
*** Screenshots
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Screenshots-41e41c88
:END:
A couple of shortcuts are available for taking screenshots.
#+NAME: screenshot-sh
| shortcut | command | what it does |
|-------------+-----------------------------------+----------------------------------------------------------|
| Print | exec --no-startup-id scrot | Takes a screenshot of the entire desktop |
| Ctrl+Print | exec --no-startup-id "scrot -s" | Takes a screenshot of a region or the selected window |
| Shift+Print | exec --no-startup-id "scrot -d 3" | takes a screenshot of the desktop three in three seconds |
This gives us this configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=screenshot-sh)>>
#+END_SRC
*** Screen brightness
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Screen_brightness-6855d53f
:END:
Here we have four commands for managing our screens brightness (this is useful for laptops, not so much with desktops), and two of them are actually duplicates of the other two in case a laptop doesnt have dedicated keys or we are using a keyboard which doesnt provide them.
#+NAME: brightness-sh
| shortcut | command | what it does |
|-----------------------+------------------------+---------------------------------------|
| XF86MonBrightnessUp | exec xbacklight -inc 5 | Increase the brightness of the screen |
| $mod+$alt+Next | exec xbacklight -inc 5 | Increase the brightness of the screen |
| XF86MonBrightnessDown | exec xbacklight -dec 5 | Decrease the brightness of the screen |
| $mod+$alt+Prev | exec xbacklight -dec 5 | Decrease the brightness of the screen |
This gives us this configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=brightness-sh)>>
#+END_SRC
*** Media control
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Media_control-18ad2815
:END:
Some shortcuts are dedicated to media control, especially when it comes to controlling music. All of these media control shortcuts will be calls to ~mpc~ which will in turn send commands to ~mpd~, which is the music server I use on my computers.
#+NAME: media-sh
| shortcut | command | what it does |
|---------------------------+--------------------+--------------------------------|
| XF86AudioNext | exec mpc next | Forward to the next track |
| $alt+XF86AudioRaiseVolume | exec mpc next | Forward to the next track |
| $mod+Next | exec mpc next | Forward to the next track |
| XF86AudioPrev | exec mpc prev | Backward to the previous track |
| $alt+XF86AudioLowerVolume | exec mpc prev | Backward to the previous track |
| $mod+Prior | exec mpc prev | Backward to the previous track |
| XF86AudioPlay | exec mpc toggle | Play or pause the music |
| $mod+p | exec mpc toggle | Play or pause the music |
| $mod+$alt+p | exec mpc stop | Completely stop the music |
| XF86AudioStop | exec mpc stop | Completely stop the music |
| $alt+XF86AudioPlay | exec mpc stop | Completely stop the music |
| $mod+$alt+7 | exec mpc volume +5 | Increase the volume from mpd |
| $mod+$alt+8 | exec mpc volume -5 | Decrease the volume from mpd |
We also have two shortcuts for launching ncmpcpp, my mpd frontend, either with the playlist open by default, or the visualizes open.
#+NAME: ncmpcpp-sh
| shortcut | command | what it does |
|--------------+-----------------------------------+----------------------------------|
| $mod+Shift+n | exec $term ncmpcpp -q | Launch ncmpcpps playlist editor |
| $mod+Shift+v | exec $term ncmpcpp -qs visualizer | Launch ncmpcpps visualizer |
We also have more general shortcuts, like how to manipulate the general volume level.
#+NAME: volume-sh
| shortcut | command | what it does |
|----------------------+----------------------------------------+----------------------|
| XF86AudioMute | exec "amixer set Master 1+ toggle" | Mute or unmute audio |
| Ctrl+$mod+Prior | exec "amixer -q set Master 2%+ unmute" | Raise volume |
| XF86AudioRaiseVolume | exec "amixer -q set Master 2%+ unmute" | Raise volume |
| Ctrl+$mod+Next | exec "amixer -q set Master 2%- unmute" | Reduce volume |
| XF86AudioLowerVolume | exec "amixer -q set Master 2%- unmute" | Reduce volume |
This gives us this configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=media-sh)>>
<<generate-shortcuts(table=ncmpcpp-sh)>>
<<generate-shortcuts(table=volume-sh)>>
#+END_SRC
*** Rofi utilities
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Rofi_utilities-b8eb5b95
:END:
We also have some utilities Ive written and which are interfaced with rofi. Here are said shortcuts.
#+NAME: rofi-sh
| shortcut | command | what it does |
|-------------------+-----------------------+-----------------------------------------------------------------------|
| $mod+Shift+p | exec rofi-pass --type | Types the selected password available from ~pass~ where the cursor is |
| $mod+Ctrl+Shift+p | exec rofi-pass | Copies in the clipboard the selected password from ~pass~ for 45 sec |
| $mod+Ctrl+m | exec rofi-mount | Volume mounting helper |
| $mod+Ctrl+u | exec rofi-umount | Volume unmounting helper |
| $mod+$alt+e | exec rofi-emoji | Emoji picker, copies it in the clipboard |
| $mod+Ctrl+w | exec wacom-setup | Sets my Wacom Bamboo tablet as being active on the selected screen |
| $mod+Shift+w | exec connect-wifi | Connect to an available WiFi network |
This gives us the following configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=rofi-sh)>>
#+END_SRC
*** Miscellaneous
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Miscellaneous-7ec80fea
:END:
And last but not least, I have some other shortcuts for various software, some of them which I use quite a lot like the shortcut for launching Emacs.
#+NAME: misc-sh
| shortcut | command | what it does |
|-------------+------------------+---------------------------------|
| $mod+e | exec $ec | Launch Emacs client |
| $mod+n | exec nemo | Launch Nemo (file manager) |
| $mod+$alt+c | exec speedcrunch | Launch Speedcrunch (calculator) |
| $mod+F3 | exec arandr | Launch arandr |
This gives us the following configuration:
#+BEGIN_SRC conf
<<generate-shortcuts(table=misc-sh)>>
#+END_SRC
*** Screen management
:PROPERTIES:
:CUSTOM_ID: Shortcuts-Launching_software-Screen_management-f9b35bf2
:END:
Additionally, we have a shortcut for entering presentation mode on the additional screen of the computer; on my main computer, Mila, the additional screen is HDMI-1, while it is VGA1 on my travel laptop. Well use some Emacs Lisp to determine on the configuration file export which screens names to use.
#+NAME: hostname-screen-management
#+BEGIN_SRC emacs-lisp
(cond ((string= system-name "Marpa") "bindsym $mod+Ctrl+p xrandr --output HDMI-1 --mode 1024x768 --right-of eDP-1")
((string= system-name "gampo") "bindsym $mod+Ctrl+p xrandr --output VGA1 --mode 1024x768 --right-of LVDS1"))
#+END_SRC
Now, we just have to call this Emacs Lisp code as a noweb reference and execute it.
#+BEGIN_SRC conf :noweb yes
<<hostname-screen-management()>>
#+END_SRC
* Software autolaunch
:PROPERTIES:
:CUSTOM_ID: Software_autolaunch-ccee82f6
:END:
When i3 is launched, I want it to also launch some software automatically. Here is what we will launch:
#+NAME: autolaunch
| always execute it? | command | what it is |
|--------------------+-------------------------------------------+----------------------------------------|
| no | /usr/lib/xfce-polkit/xfce-polkit | Launch the XFCE Polkit |
| no | picom --experimental-backends -e 1 | Launch picom |
| no | xss-lock -- lock | Launch power management |
| no | numlockx on | Activate NumLock |
| no | dunst -config ~/.config/dunst/dunstrc | Launch notification manager |
| no | nm-applet | NetworkManager system tray |
| yes | wal -i "$(< "${HOME}/.cache/wal/wal")" | Sets the wallpaper from last session |
| no | xrdb $HOME/.Xresources | Load Xresources files |
| yes | polybar-launch | Launch polybar |
| no | mpc stop | Stop music from mpd |
| no | mpd_discord_richpresence --no-idle --fork | Launch mpd status sharing with Discord |
#+NAME: generate-autolaunch
#+BEGIN_SRC emacs-lisp :exports none :cache yes :var table=autolaunch
(mapconcat (lambda (x)
(format (concat (if (string= (car x)
"yes")
"exec_always"
"exec")
" --no-startup-id %s")
(cadr x)))
table
"\n")
#+END_SRC
#+RESULTS[283577fe2e66b30c936b7fcf142713d285db8da6]: generate-autolaunch
#+begin_example
exec_always --no-startup-id wal -i "$(< "${HOME}/.cache/wal/wal")"
exec --no-startup-id xss-lock -- i3lock -fol
exec --no-startup-id dunst -config ~/.config/dunst/dunstrc
exec --no-startup-id xrdb $HOME/.Xresources
exec --no-startup-id compton -F --opengl --config ~/.config/compton.conf -e 1
exec_always --no-startup-id polybar-launch
exec_always --no-startup-id enable_touch
exec --no-startup-id syndaemon -i 1.0 -t -k
exec --no-startup-id mpc stop
exec --no-startup-id mpd_discord_richpresence --no-idle --fork
exec --no-startup-id nm-applet
exec --no-startup-id numlockx on
#+end_example
My travel laptop has a fingerprint reader which can be used as an authentification method when the root password is asked. Lets launch our policy kit manager if that is the case:
#+NAME: fingerprint-thinkpad
#+BEGIN_SRC emacs-lisp
(if (string= system-name "gampo")
"exec --no-startup-id /usr/lib/mate-polkit/polkit-mate-authentication-agent-1"
"")
#+END_SRC
#+BEGIN_SRC conf
<<fingerprint-thinkpad()>>
<<generate-autolaunch()>>
#+END_SRC

Binary file not shown.

Before

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

View File

@@ -1,117 +0,0 @@
#+TITLE: Nano configuration
#+setupfile: ../headers
#+OPTIONS: auto-id:t
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's nano configuration" />
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's nano configuration" />
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the nano configuration of Phundrak" />
#+PROPERTY: header-args :tangle ~/.config/nano/nanorc
* Introduction
:PROPERTIES:
:CUSTOM_ID: Introduction-7e535842
:END:
#+begin_center
*Before proceeding, be aware that I deprecated this nano config on August 28th, 2020, meaning I wont update it anymore unless I use it again some day in the future. I will keep it on my website though.*
#+end_center
I nowadays rarely use Nano as a text editor, since I mainly rely on Emacs for all sorts of tasks, including quick file editing. However, at times, Emacs wont work or wont be available, and I therefore need a lightweight, fast and reliable text editor: Nano. And despite Nano being a simple piece of software, it does offer some customization I cannot refuse. Here is how I configured it:
* Configuration
:PROPERTIES:
:CUSTOM_ID: Configuration-b55668a7
:END:
When saving a file, create a backup file by adding a tilde (=~=) to the file's name. And make and keep not just one backup file, but make and keep a uniquely numbered one every time a file is saved — when backups are enabled with =set backup= or =--backup= or =-B=. The uniquely numbered files are stored in the directory =~/.cache/nano/backups/=.
#+BEGIN_SRC conf
set backup
set backupdir /home/phundrak/.cache/nano/backups/
#+END_SRC
Save a file by default in Unix format. This overrides nano's default behavior of saving a file in the format that it had. (This option has no effect when you also use =set noconvert=.)
#+BEGIN_SRC conf
set unix
#+END_SRC
** Keys behavior
:PROPERTIES:
:CUSTOM_ID: Configuration-Keys_behavior-c665fa36
:END:
Make the Home key smarter. When Home is pressed anywhere but at the very beginning of non-whitespace characters on a line, the cursor will jump to that beginning (either forwards or backwards). If the cursor is already at that position, it will jump to the true beginning of the line.
#+BEGIN_SRC conf
set smarthome
#+END_SRC
** Search
:PROPERTIES:
:CUSTOM_ID: Configuration-Search-6e458076
:END:
Do case-unsensitive searches by default.
#+BEGIN_SRC conf
unset casesensitive
#+END_SRC
Do regular-expression searches by default. Regular expressions in =nano= are of the extended type (ERE).
#+BEGIN_SRC conf
set regexp
#+END_SRC
** Visual settings
:PROPERTIES:
:CUSTOM_ID: Configuration-Visual_settings-9952f2ae
:END:
Use bold instead of reverse video for the title bar, status bar, key combos, function tags, line numbers, and selected text. This can be overridden by setting the options =titlecolor=, =statuscolor=, =keycolor=, =functioncolor=, =numbercolor=, and =selectedcolor=.
#+BEGIN_SRC conf
set boldtext
#+END_SRC
Enable soft line wrapping for easier viewing of very long lines.
#+BEGIN_SRC conf
set softwrap
#+END_SRC
When soft line wrapping is enabled, make it wrap lines at blank characters (tabs and spaces) instead of always at the edge of the screen.
#+BEGIN_SRC conf
set atblanks
#+END_SRC
Display line numbers to the left of the text area.
#+BEGIN_SRC conf
set linenumbers
#+END_SRC
Constantly display the cursor position in the status bar. This overrides the option =quickblank=.
#+BEGIN_SRC conf
set constantshow
#+END_SRC
** Whitespace settings
:PROPERTIES:
:CUSTOM_ID: Configuration-Whitespace_settings-8cef9cd7
:END:
Convert typed tabs to spaces. Sue me.
#+BEGIN_SRC conf
set tabstospaces
#+END_SRC
Use a tab size of a certain amount of columns. The value of number must be greater than 0. The default value is 8.
#+BEGIN_SRC conf
set tabsize 2
#+END_SRC
Automatically indent a newly created line to the same number of tabs and/or spaces as the previous line (or as the next line if the previous line is the beginning of a paragraph).
#+BEGIN_SRC conf
set autoindent
#+END_SRC
Remove trailing whitespace from wrapped lines when automatic hard-wrapping occurs or when text is justified.
#+BEGIN_SRC conf
set trimblanks
#+END_SRC
** Included configuration file
:PROPERTIES:
:CUSTOM_ID: Configuration-Included_configuration_file-70b0f35b
:END:
Nano gives the opportunity to include some files located elsewhere. This is why I added [[https://github.com/scopatz/nanorc][this repo]] as a submodule of my dotfiles so I can access a lot of them at the same time. Since the submodule is cloned in =~/.config/nanorc=, we can add only one line to include all of the =.nanorc= files.
#+BEGIN_SRC conf
include ~/.config/nano/nano-syntax/*.nanorc
#+END_SRC

View File

@@ -1,858 +0,0 @@
#+TITLE: Polybar config
#+setupfile: ../headers
#+OPTIONS: auto-id:t
#+HTML_HEAD_EXTRA: <meta name="description" content="Phundrak's polybar config" />
#+HTML_HEAD_EXTRA: <meta property="og:title" content="Phundrak's polybar config" />
#+HTML_HEAD_EXTRA: <meta property="og:description" content="Description of the polybar config file of Phundrak" />
#+PROPERTY: header-args :exports none
#+PROPERTY: header-args:emacs-lisp :tangle no :exports none
#+PROPERTY: header-args:conf-windows :tangle ~/.config/polybar/config :noweb yes :exports code :mkdirp yes
* Presentation
:PROPERTIES:
:CUSTOM_ID: Presentation-4e723f32
:END:
#+begin_center
*Before proceeding, be aware that I deprecated this polybar config on August 22nd, 2020, meaning I wont update it anymore unless I use it again some day in the future. I will keep it on my website though.*
#+end_center
Polybar is a desktop utility for displaying various information in form of bars for GNU/Linux systems. It is often used as a replacement for native bars available in window managers, such as i3. In my case, I use two instances of polybar in order to get two bars displayed on each screen. The information displayed is either related to i3 itself, or it is system information, such as CPU or disk usage. More information will be given and explained below.
If you want to learn more about how to configure Polybar, you can go to its [[https://github.com/jaagr/polybar][official repository on Github]].
#+BEGIN_EXPORT latex
Be aware that this PDF documents suffers from a couple of issues with some characters such as emojis. If you wish to see everything correctly, I would suggest you to take a look at the online HTML version of this document.
#+END_EXPORT
* General settings
:PROPERTIES:
:CUSTOM_ID: General_settings-e02fb78c
:END:
Some general settings are available for Polybar, and they are declared under
the ~[settings]~ section.
#+BEGIN_SRC conf-windows
[settings]
#+END_SRC
Only one setting is used in this configuration though: the ability to relauch
polybar on a configuration file rewrite.
#+BEGIN_SRC conf-windows
screenchange-reload = true
#+END_SRC
Some global settings are also available in order to adjust the
~_NET_WM_STRUT_PARTIAL~ top and bottom values:
#+BEGIN_SRC conf-windows
[global/wm]
margin-top = 32
margin-bottom = 22
#+END_SRC
* Colors declaration for polybar
:PROPERTIES:
:CUSTOM_ID: Colors_declaration_for_polybar-75ee0b65
:END:
#+BEGIN_SRC conf-windows :exports none
; -*- mode: conf-windows -*-
#+END_SRC
Like most status bars available, we can declare custom colors to be used in polybar. This part of the configuration file is declared with the following header:
#+BEGIN_SRC conf-windows
[colors]
#+END_SRC
As I use pywal as a color scheme generator based on the color of my wallpaper, I need to tell polybar to fetch the colors it will use from xrdb. If such color cannot be used, other colors will be used as fallback colors. First, lets declare our default background and foreground colors with their alternative option.
#+BEGIN_SRC conf-windows
background = ${xrdb:color1:#50000000}
background-alt = ${xrdb:color2:#444}
foreground = ${xrdb:color7:#dfdfdf}
foreground-alt = ${xrdb:color6:#555}
#+END_SRC
Now, we can also declare our primary and secondary colors.
#+BEGIN_SRC conf-windows
primary = #ffb52a
secondary = #e60053
#+END_SRC
Polybar is also aware of alerts sent by window managers such as i3 when a window opens in an unfocused workspace. For that, lets declare an alert color.
#+BEGIN_SRC conf-windows
alert = #bd2c40
#+END_SRC
* Declaration of the bars
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-a95135a3
:END:
It is possible in i3 to declare as many bars as we wish, and each of these bars will be named. Naming the bar is done in its module declaration like so:
#+BEGIN_SRC conf-windows :tangle no
[bar/nameofthebar]
#+END_SRC
In my configuration, I use two of such bars, one atop of my screen, and one at the bottom.
** Top bar declaration
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Top_bar_declaration-fc0cd977
:END:
As unimaginative as it might seem, I went for a rather explicit name for my bars. The top one is simply named ~top~, as shown below.
#+BEGIN_SRC conf-windows
[bar/top]
#+END_SRC
*** Positioning
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Top_bar_declaration-Positioning-2505760c
:END:
We need to set on which screen the bar is to be displayed. Indeed, it is possible to display a bar on only one specific screen if we wish to. Actually, it is even the default behavior of polybar, but as we will see later with the launching script, it is possible to launch bars on multiple outputs at the same time. Here, we simply get the value of the variable ~monitor~ from the launch environment.
#+NAME: monitor-bar
#+BEGIN_SRC conf-windows
monitor = ${env:MONITOR}
#+END_SRC
We have a few position-related variables that need to be set. We can specify whether or not we want our bar at the bottom of the screen —which is the default behavior of polybar—, its width, its height, the radius for the rounding of its corners and whether the bar should be centered or not. In my case, my bars are rather small height-wise, and it occupies most of the width of my screens. There is some gaps between this bar and the border of the screen, but this is due to a border around the bar itself which acts not only on the width of the bar itself, but also on its height.
#+BEGIN_SRC conf-windows
bottom = false
border-size = 5
<<position-bar-top>>
#+END_SRC
#+NAME: position-bar-top
#+BEGIN_SRC conf-windows :exports none :tangle no
width = 100%
height = 22
radius = 10.0
fixed-center = true
#+END_SRC
We also want to add some padding to our bar so our modules are not too close to its edges, especially due to the rounding of the top bar.
#+NAME: padding-bar
#+BEGIN_SRC conf-windows
padding-left = 2
padding-right = 4
#+END_SRC
Each module will have some padding around it, so that modules arent glued together and instead have some room to breathe. The padding on the left is a bit less than the padding on the right for aesthetic reasons.
#+NAME: module-margin-bar
#+BEGIN_SRC conf-windows
module-margin-left = 1
module-margin-right = 2
#+END_SRC
The top bar doesnt include any system tray, so lets disable that.
#+BEGIN_SRC conf-windows
tray-position = none
#+END_SRC
*** Colors and display
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Top_bar_declaration-Colors_and_display-30f12652
:END:
As explained above, we declared some global variables when it comes to colors, and this is where they will be used. The bars background will be of the same color as the main background color declared earlier, and the same goes for the foreground.
#+NAME: bar-colors
#+BEGIN_SRC conf-windows
background = ${colors.background}
foreground = ${colors.foreground}
#+END_SRC
If we wanted, we could also declare a default color for the underlines under the various modules that will be included in the bar, but in our case this variable is unused. So we will simply add this commented line as a memento this is possible, but it wont have any effect with this current configuration of polybar. Same goes for the border around the bar, it is a useless variable in this configuration since we want the border to be transparent.
#+NAME: line-border-color
#+BEGIN_SRC conf-windows
line-color = #f00
; border-color = #00000000
#+END_SRC
Although the variable for the default line color is not used, we still have to set the default width of the underline of our modules. By default, their underline will be three pixels thick.
#+NAME: line-size-bar
#+BEGIN_SRC conf-windows
line-size = 3
#+END_SRC
*** Fonts and locale
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Top_bar_declaration-Fonts_and_locale-70a25466
:END:
Now we can chose which font fill be used in order to display text in this bar, as well as the locale we want. The locale will be useful for displaying information such as date and time, which is a module we will have in this top bar. First, the declaration of the locale is done like so:
#+NAME: locale-bar
#+BEGIN_SRC conf-windows
locale = ja_JP.UTF-8
#+END_SRC
Now, we can declare the fonts we want to use in Polybar. It is possible to declare several of them, the first one is the one which gets the absolute priority, and the next ones with a larger index are fallback fonts. Font declaration accepts the fontconfig format as well as possible offset[fn:1]. Five fonts are used in my polybar config:
#+NAME: fonts-polybar
| Font | fontconfig | Vertical offset | Why its used |
|--------------+----------------------------------------------------+-----------------+-----------------------|
| Fira Sans | Fira Sans Book:style=Book:pixelsize=10 | 1 | Text display |
| IPA Mincho | IPAMincho:style=regular:pixelsize=6 | 0 | Japanese text display |
| Unifont | unifont:fontformat=truetype:size=6:antialias=false | 0 | Fallback font |
| NotoEmoji | NotoEmoji:style=Book:scale=16 | 0 | Emoji display |
| Siji | Siji:pixelsize=8 | 0 | Symbol display |
| Default font | fixed:pixelsize=8 | 0 | Fallback font |
#+NAME: font-ws-config
#+HEADER: :var text="font"
#+BEGIN_SRC emacs-lisp :var table=fonts-polybar[,1:2] :cache yes
(setq counter 0)
(mapconcat (lambda (font)
(setq counter (+ 1 counter))
(format "%s-%d = %s;%s"
text
(- counter 1)
(nth 0 font)
(nth 1 font)))
table
"\n")
#+END_SRC
#+RESULTS[53fd99d75f6b08e96288fd2a62b455d7ef8b1754]: font-ws-config
: font-0 = Fira Sans Book:style=Book:pixelsize=10;1
: font-1 = IPAMincho:style=regular:pixelsize=6;0
: font-2 = unifont:fontformat=truetype:size=6:antialias=false;0
: font-3 = NotoEmoji:style=Book:scale=16;0
: font-4 = Siji:pixelsize=8;0
: font-5 = fixed:pixelsize=8;0
Heres the font configuration:
#+BEGIN_SRC conf-windows
<<font-ws-config(text="font",table=fonts-polybar)>>
#+END_SRC
Note that only Fira Sans get a small offset due to the size of the font and the height of the bar itself.
*** Modules
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Top_bar_declaration-Modules-18979638
:END:
Finally, arguably one of the most important parts of our bar configuration: the module selection. Modules can be positioned in three different parts of our bar: to the right, in middle or to the left. On the left, we want our workspace indicator for i3. In the middle, well get the title of the focused window, and to the left well have the date and time.
#+NAME: modules-generate
#+BEGIN_SRC emacs-lisp :var table=top-modules :results value :cache yes
(setq right '()
center '()
left '())
(dolist (module table)
(let* ((module-name (nth 0 module))
(module-layout (nth 1 module)))
(message "%S" module-layout)
(add-to-list (cond
((string= "left" module-layout) 'left)
((string= "center" module-layout) 'center)
(t 'right))
module-name)))
(concat (concat "modules-left = "
(mapconcat #'identity left " ")
"\n")
(concat "modules-center = "
(mapconcat #'identity center " ")
"\n")
(concat "modules-right = "
(mapconcat #'identity right " ")
"\n"))
#+END_SRC
#+RESULTS[90b932dc0fd32501e1513f14059b92de09a7b59e]: modules-generate
: modules-left = i3
: modules-center = xwindow
: modules-right = date
Here is the list of modules used:
#+NAME: top-modules
| Module name | Position | Brief description |
|-------------+----------+----------------------------|
| i3 | left | i3 workspace indicator |
| xwindow | center | Name of the focused window |
| date | right | Date and time |
#+BEGIN_SRC conf-windows :cache yes
<<modules-generate(table=top-modules)>>
#+END_SRC
Each module will be described in details later in this document.
** Bottom bar declaration
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Bottom_bar_declaration-8504b5ec
:END:
As described above, we will once again have to declare our bar with an equally unimaginative but explicit name.
#+BEGIN_SRC conf-windows
[bar/bottom]
#+END_SRC
*** Positioning
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Bottom_bar_declaration-Positioning-b1883756
:END:
The variables are the same as above, but two of them will be slightly modified:
#+BEGIN_SRC conf-windows
bottom = true
border-size = 0
<<position-bar-bottom>>
#+END_SRC
#+NAME: position-bar-bottom
#+BEGIN_SRC conf-windows :exports none :tangle no
width = 100%
height = 22
radius = 0.0
fixed-center = true
#+END_SRC
When it comes to the bottom bar, I prefer to have it fit my outputs, without any margin around it. And of course, I have to declare it as being at the bottom of the screen, hence these modifications. As regards the padding of our modules, their own margins, and the screen output, they arent modified.
#+BEGIN_SRC conf-windows
<<padding-bar>>
<<module-margin-bar>>
<<monitor-bar>>
#+END_SRC
However, we do display the system tray on this bottom bar at its right. It has no padding and it is not detached from the bar (this allows the bar to be displayed under the icons of the system tray), and their maximum size was chosen so they are well visible without being too big.
#+BEGIN_SRC conf-windows
tray-position = right
tray-padding = 0
tray-detached = false
tray-maxsize = 15
#+END_SRC
*** Colors and display
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Bottom_bar_declaration-Colors_and_display-854aae82
:END:
Nothing changes from the top bar, all the variables stay with the same values. See [[#Declaration_of_the_bars-Bottom_bar_declaration-Colors_and_display-854aae82][Colors and display]] of the top bar for more information.
#+BEGIN_SRC conf-windows
<<bar-colors>>
<<line-border-color>>
<<line-size-bar>>
#+END_SRC
*** Fonts and locale
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Bottom_bar_declaration-Fonts_and_locale-67459d62
:END:
Again, nothing changes from the top bar, so for more info on whats going on, see [[#Declaration_of_the_bars-Top_bar_declaration-Fonts_and_locale-70a25466][Fonts and locale]] of the top bar.
#+BEGIN_SRC conf-windows
<<locale-bar>>
<<font-ws-config(text="font",table=fonts-polybar)>>
#+END_SRC
*** Modules
:PROPERTIES:
:CUSTOM_ID: Declaration_of_the_bars-Bottom_bar_declaration-Modules-702b21fc
:END:
Now, we can get to something interesting again: modules. This bar has a lot more modules than the top bar. Here is the list of the modules we have on the bottom bar:
#+NAME: table-modules-bottom
| Module name | Position | Brief description |
|----------------+----------+---------------------------------|
| mpd | left | MPD status indicator |
| filesystem | right | Free storage in our filesystem |
| wlan | right | Name of the active WiFi network |
| eth | right | Local address on Ethernet |
| volume | right | System volume |
| backlight-acpi | right | Screen backlight |
| cpu | right | CPU usage |
| memory | right | RAM usage |
| temperature | right | CPU temperature |
| custom-battery | right | Battery usage |
Heres the corresponding configuration:
#+ATTR_LATEX: :options breaklines
#+BEGIN_SRC conf-windows
<<modules-generate(table=table-modules-bottom)>>
#+END_SRC
All these modules will be explained below.
As you may have noticed, no modules will be displayed in the middle of this bar.
* Modules
:PROPERTIES:
:CUSTOM_ID: Modules-2e1a51bc
:END:
Before we begin to describe the different modules, I would like to point out something that will be repeated multiple times if I dont talk about it right now: for each module, it is possible to declare the foreground and background color of the prefix of the modules, as well as the underline color and the padding of the module. I like these parameters to be rather consistent, so the code block you will see below will often be reused. The colors refer to the colors declared earlier, and the padding is minimal.
#+NAME: mod-prefix-col
#+BEGIN_SRC conf-windows :tangle no
format-prefix-foreground = ${colors.foreground-alt}
format-prefix-underline = ${colors.secondary}
format-underline = ${colors.secondary}
format-padding = 1
#+END_SRC
** Hardware
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-26426ebd
:END:
*** Battery
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Battery-299f2e42
:END:
This module allows the user to get a battery widget among the polybar modules that will also send a notification to the user if the battery level drops below a certain value. This module relies on ~polybar-another-battery~ ([[https://github.com/drdeimos/polybar_another_battery][link]]) and its generated binary ~polybar-ab~ which should be in the ~$PATH~.
The first line of the module declaration lets the user name the module however they want. In this case, the name is ~custom-battery~.
#+BEGIN_SRC conf-windows
[module/custom-battery]
#+END_SRC
Since it is not a core module, we have to declare it as a custom script so polybar knows what to do with it.
#+BEGIN_SRC conf-windows
type = custom/script
#+END_SRC
We now can specify the script execution, and whether or not the script will be continuously outputting something. In our case, the answer to this last question is yes.
#+BEGIN_SRC conf-windows
exec = polybar-ab -polybar -thr 10
tail = true
#+END_SRC
The ~-thr 10~ specifies the threshold for polybar-ab at which it should warn the user about the battery level of the computer.
Of course, users on desktop computers wont need this module which is aimed at laptop users. Feel free to remove it if you do not need it.
*** Filesystem
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Filesystem-26f0a3c6
:END:
This module allows to display information about our filesystem, including (and this is what I use this module for) displaying the used space and remaining space on different mount points. This module is an internal module to polybar, so lets declare it as such:
#+BEGIN_SRC conf-windows
[module/filesystem]
type = internal/fs
#+END_SRC
We can specify how often the filesystem is to be checked with the variable ~interval~. I prefer it not to check it too often in order to not ping too often my drives, but I want it to be often enough so it is somewhat responsive. This is why I settled on a 20 seconds interval.
#+BEGIN_SRC conf-windows
interval = 20
#+END_SRC
We now have to indicate where our different filesystems are mounted. In the case of my main computer /Marpa/, I have two partitions, the root partition and the home partition. But on my travel laptop, I only have the root partition, hence the usage of the below Elisp code that determines based on the computer it is running whether or not the second mount point to my home partition should be included.
#+NAME: include-home-partition
#+BEGIN_SRC emacs-lisp :tangle no :exports code
(if (string= system-name "Marpa")
"mount-1 = /home")
#+END_SRC
#+BEGIN_SRC conf-windows
mount-0 = /
<<include-home-partition()>>
#+END_SRC
Now we can set the format of our module. There are two mains formats, one for mounted and one for unmounted mountpoints. For both, well simply use their label.
#+BEGIN_SRC conf-windows
format-mounted = <label-mounted>
format-unmounted = <label-unmounted>
#+END_SRC
When it comes to the mounted partition, we want to display the name of the mountpoint and how used it is, both in terms of gigabytes and percentage.
#+BEGIN_SRC conf-windows
label-mounted = 💽 %mountpoint%: %used%/%total% (%percentage_used%%)
label-mounted-foreground = ${colors.foreground}
label-mounted-underline = ${colors.secondary}
#+END_SRC
If the volume is unmounted (which should be worrying considering the mountpoints chosen), then well simply have a message telling us about that, and the foreground color will use the alternative foreground color described earlier.
#+BEGIN_SRC conf-windows
label-unmounted = %mountpoint% not mounted
label-unmounted-foreground = ${colors.foreground-alt}
#+END_SRC
*** Xbacklight
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Xbacklight-2901c504
:END:
This module is used in order to display the level of brightness of a screen. It is not used by itself, but rather by other modules, such as [[#Modules-Hardware-ACPI_backlight-9eaeaa79][ACPI backlight]]. First of all, this module is an internal module for xbacklight. It will also display the brightness percentage, prefixed by a sun emoji. Lastly, it will be underlined by a green line.
#+BEGIN_SRC conf-windows
[module/xbacklight]
type = internal/xbacklight
format = <label>
label = %percentage%%
format-prefix = "🌞 "
format-underline = #9f78e1
#+END_SRC
*** ACPI backlight
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-ACPI_backlight-9eaeaa79
:END:
This module indicates the backlight level of a screen thanks to the ACPI Linux module. There isnt much to tell about the module itself other than it inherits the module described above, [[#Modules-Hardware-Xbacklight-2901c504][xbacklight]]. It also sets which driver should be used, in this case the ~intel_backlight~ driver.
#+BEGIN_SRC conf-windows
[module/backlight-acpi]
inherit = module/xbacklight
type = internal/backlight
card = intel_backlight
#+END_SRC
*** CPU
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-CPU-365dcb98
:END:
This module indicates how much of the CPU is being used. As shown below, I made it so we can see the load on each core. The first thing to do is to declare the module as an internal module dedicated to the CPU.
#+BEGIN_SRC conf-windows
[module/cpu]
type = internal/cpu
#+END_SRC
Now, we can set the refresh rate in seconds of the module. I like it at two seconds:
#+BEGIN_SRC conf-windows
interval = 2
#+END_SRC
Now, lets declare what will be displayed. The format will be a computer emoji followed by ramp characters.
#+BEGIN_SRC conf-windows
format = <label> <ramp-coreload>
format-prefix = "💻 "
label = %percentage%%
ramp-coreload-0 = ▁
ramp-coreload-1 = ▂
ramp-coreload-2 = ▃
ramp-coreload-3 = ▄
ramp-coreload-4 = ▅
ramp-coreload-5 = ▆
ramp-coreload-6 = ▇
ramp-coreload-7 = █
#+END_SRC
Finally, this module will be underlined in red.
#+BEGIN_SRC conf-windows
format-underline = #f90000
#+END_SRC
*** Memory
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Memory-2f2f9475
:END:
Similarly to the CPU module, it is possible for Polybar to display the RAM load of the computer. As above, lets declare this module as an internal module to Polybar:
#+BEGIN_SRC conf-windows
[module/memory]
type = internal/memory
#+END_SRC
As the CPU module still, the refresh rate will be of two seconds.
#+BEGIN_SRC conf-windows
interval = 2
#+END_SRC
Its format will be the percentage of used RAM, prefixed by a disk emoji.
#+BEGIN_SRC conf-windows
format = <label>
format-prefix = "💿 "
label = %gb_used%
#+END_SRC
Lastly, it will be underlined in green.
#+BEGIN_SRC conf-windows
format-underline = #4bffdc
#+END_SRC
*** Wlan
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Wlan-3457f36b
:END:
It is possible for Polybar to display the name of the current WiFi network the computer is connected to. For that, we first need to declare the Wlan module as an internal module of Polybar.
#+BEGIN_SRC conf-windows
[module/wlan]
type = internal/network
#+END_SRC
Now, we should set the name of the interface. As this depends on the hardware I am using, I am going to rely on the machines hostname and on some Elisp code to get this setting right.
#+NAME: name-wlan-interface
#+BEGIN_SRC emacs-lisp :exports code :tangle no
(cond ((string= system-name "Marpa") "wlp8s0")
((string= system-name "gampo") "wlp3s0"))
#+END_SRC
#+BEGIN_SRC conf-windows
interface = <<name-wlan-interface()>>
#+END_SRC
The name of the current WiFi network will be refreshed every three seconds.
#+BEGIN_SRC conf-windows
interval = 3.0
#+END_SRC
The format of the module when connected to a network will the the display of the antenna emoji, followed by the name of the network. When disconnected, the module will simply be empty.
#+BEGIN_SRC conf-windows
format-connected = <label-connected>
format-connected-prefix = "📶 "
label-connected = %essid%
#+END_SRC
*** Ethernet
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Ethernet-dc749304
:END:
Just like any other module, the ethernet module has to be declared as an internal module.
#+BEGIN_SRC conf-windows
[module/eth]
type = internal/network
#+END_SRC
And just like the Wlan module, it requires an interface which can vary depending on the machine I am using, hence this piece of Elisp:
#+NAME: name-eth-interface
#+BEGIN_SRC emacs-lisp :exports code :tangle no
(cond ((string= system-name "Marpa") "enp9s0")
((string= system-name "gampo") "enp0s25"))
#+END_SRC
#+BEGIN_SRC conf-windows
interface = <<name-eth-interface()>>
#+END_SRC
The format of this module will be the local address of the computer on the network, and it will be prefixed by a desktop computer emoji. Meanwhile, when disconnected, the module wont be visible.
#+BEGIN_SRC conf-windows
format-connected = <<label-connected>>
format-connected-prefix = "🖥 "
label-connected = %local_ip%
format-disconnected =
#+END_SRC
The module will be underlined in green.
#+BEGIN_SRC conf-windows
format-connected-underline = #55aa55
#+END_SRC
*** Volume
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Volume-ebf9f7a4
:END:
The volume module in Polybar is linked to its internal bindings to ALSA. Lets declare it accordingly.
#+BEGIN_SRC conf-windows
[module/volume]
type = internal/alsa
#+END_SRC
Its format is quite simple: if the audio is not muted, it is then prefixed with a speaker emoji, followed by the volume percentage.
#+BEGIN_SRC conf-windows
format-volume = <label-volume>
format-volume-prefix = "🔈 "
label-volume = %percentage%%
#+END_SRC
If the audio is muted, then the only thing the user will see is the muted speaker emoji followed by the text “muted”.
#+BEGIN_SRC conf-windows
format-muted-prefix = "🔇 "
label-muted = muted
#+END_SRC
In any case, it will be underlined in green.
#+BEGIN_SRC conf-windows
format-volume-underline = #55aa55
#+END_SRC
*** Temperature
:PROPERTIES:
:CUSTOM_ID: Modules-Hardware-Temperature-a9f08cde
:END:
The temperature module checks the temperature of the CPU, and warns the user above a certain threshold of heat, in my case if my CPU is above 60°C.
#+BEGIN_SRC conf-windows
[module/temperature]
type = internal/temperature
thermal-zone = 0
warn-temperature = 60
#+END_SRC
The format of the module is the thermometer emoji followed by the temperature of the CPU. If the CPU becomes too hot, the text will change color for the secondary foreground color.
#+BEGIN_SRC conf-windows
format = <label>
format-underline = #f50a4d
format-warn = <label-warn>
format-warn-underline = ${self.format-underline}
format-prefix = "🌡 "
format-warn-prefix = "🌡 "
label = %temperature-c%
label-warn = %temperature-c%
label-warn-foreground = ${colors.secondary}
#+END_SRC
** Software
:PROPERTIES:
:CUSTOM_ID: Modules-Software-f6529189
:END:
*** Window title
:PROPERTIES:
:CUSTOM_ID: Modules-Software-Window_title-3f931641
:END:
This modules aim is to simply provide the name of the currently focused window given by Xorg. This module is an internal module to polybar, that is to say it is built-in, and is of the type ~xwindow~. So, lets declare the module accordingly, including the piece of common code declared at the beginning of the chapter:
#+BEGIN_SRC conf-windows
[module/xwindow]
type = internal/xwindow
<<mod-prefix-col>>
#+END_SRC
Now we can take care of the label, which is the actual text that will be displayed. In our case, we want the label to be the title of the current X window, hence the value of ~label~, and we dont want it to be too long, though Im not sure Ive often seen window titles longer than 70 characters.
#+BEGIN_SRC conf-windows
label = %title%
label-maxlen = 70
#+END_SRC
*** i3
:PROPERTIES:
:CUSTOM_ID: Modules-Software-i3-db36ddfb
:END:
Now comes the module for i3 interaction. Thanks to this module, it is possible to show which workspaces are active and focused, and it is possible to change workspaces by clicking on the ones displayed in the bar. First, lets declare it; it is an internal module by the way.
#+BEGIN_SRC conf-windows
[module/i3]
type = internal/i3
#+END_SRC
Now, lets display only the workspaces that are on the current output. This means if a workspace is either inactive or on another screen or output, it wont be displayed.
#+BEGIN_SRC conf-windows
pin-workspaces = true
#+END_SRC
We also want our workspaces to be sorted by number rather than by output.
#+BEGIN_SRC conf-windows
index-sort = true
#+END_SRC
I dont want to be able to scroll through the workspaces when my mouse is hovering the module: when it happens, most of the time it was done accidentally. So lets deactivate that. However, I sometimes like to click on them to switch from one another, so well keep that activated.
#+BEGIN_SRC conf-windows
enable-scroll = false
wrapping-scroll = false
reverse-scroll = false
enable-click = true
#+END_SRC
This parameters splits the workspaces name on ~:~. Lets deactivate that.
#+BEGIN_SRC conf-windows
strip-wsnumbers = false
#+END_SRC
An on the topic of workspaces name, ~fuzzy-match~ allows the user to use fuzzy search for workspaces name when we will be applying custom names below. Not really useful since I only use the default workspaces name, but its good to have it enabled by default.
#+BEGIN_SRC conf-windows
fuzzy-match = true
#+END_SRC
The label format is described first by its label, but also by one of its three possible modes: focused, visible or unfocused. These will be discussed later, but for now lets simply set our format.
#+begin_src conf-windows
format = <label-state> <label-mode>
#+end_src
We also wand to set the label mode to be whichever mode the workspace described by polybar is in. This label will also have a padding of 2 pixels, and the text will be written in white.
#+begin_src conf-windows
label-mode = %mode%
label-mode-padding = 2
label-mode-foreground = #000
#+end_src
**** Workspace icons
:PROPERTIES:
:CUSTOM_ID: Modules-Software-i3-Workspace_icons-89237191
:END:
Now, lets name our workspaces. We can give them whatever name we want them to have, but I just like the aesthetics of Japanese characters, so lets go with the kanji equivalent of the number of the workspaces.
#+NAME: ws-names
| workspace number | name |
|------------------+------|
| 1 | 一 |
| 2 | 二 |
| 3 | 三 |
| 4 | 四 |
| 5 | 五 |
| 6 | 六 |
| 7 | 七 |
| 8 | 八 |
| 9 | 九 |
| 0 | 十 |
Here are the corresponding configuration lines:
#+BEGIN_SRC conf-windows
<<font-ws-config(text="ws",table=ws-names)>>
#+END_SRC
In case we create a workspace which isnt named from ~0~ to ~9~, I want it to appear as is.
#+begin_src conf-windows
ws-icon-default = %index%
#+end_src
**** Focused workspaces
:PROPERTIES:
:CUSTOM_ID: Modules-Software-i3-Focused_workspaces-0ca3b93d
:END:
Now we can define the label itself. First, we will need to define the label when the workspace is focused. Well simply take the alternative background for the focused label, and the underline will be defined from Xrdbs 8th color, with yellow as the fallback color. It will also have a two pixels padding. The text itself will be the dynamic icons declared above.
#+begin_src conf-windows
label-focused = %icon%
label-focused-background = ${colors.background-alt}
label-focused-underline = ${xrdb:color8:#ffff00}
label-focused-padding = 2
#+end_src
**** Visible workspaces
:PROPERTIES:
:CUSTOM_ID: Modules-Software-i3-Visible_workspaces-4be78e50
:END:
The ~visible~ label is related to the ~focused~ labels since it is describing workspaces that can be seen, but are not currently focused, i.e. a workspace that appears on another screen than the one currently used so it is visible, but it isnt focused. The difference with the ~unfocused~ workspaces is that the latter are neither focused nor visible. As you can see, we are simply using all of the declarations from above for the focused labels so we can ensure they appear the same way the focused labels do.
#+begin_src conf-windows
label-visible = ${self.label-focused}
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-underline}
label-visible-padding = ${self.label-focused-padding}
#+end_src
**** Unfocused workspaces
:PROPERTIES:
:CUSTOM_ID: Modules-Software-i3-Unfocused_workspaces-13063042
:END:
When it comes to the unfocused label, there wont be any custom background or underline, so well just copy the two remaining lines from the focused labels for unfocused labels.
#+begin_src conf-windows
label-unfocused = %icon%
label-unfocused-padding = 2
#+end_src
**** Urgent workspaces
:PROPERTIES:
:CUSTOM_ID: Modules-Software-i3-Urgent_workspaces-ed2bd93c
:END:
Lastly, we get our urgent workspaces: workspaces in which most of the time its just a popup that appeared or a software that finally launched itself while working on something else on another workspace. To make it a bit more unique, lets declare its background as being the color 0 from xrdb, with some dark red as the fallback color. And as the other labels, the text will be the icon and it will have a two pixels padding.
#+begin_src conf-windows
label-urgent = %icon%
label-urgent-background = ${xrdb:color0:#bd2c40}
label-urgent-padding = 2
#+end_src
*** Mpd
:PROPERTIES:
:CUSTOM_ID: Modules-Software-Mpd-4b1ec78e
:END:
Mpd is a music server for GNU/Linux systems that interfaces will several front-ends, including ncmpcpp (the main one I use), ncmpcpp and mpc. It also interfaces with polybar thanks to some built in commands.
First, lets declare our module as an internal module.
#+BEGIN_SRC conf-windows
[module/mpd]
type = internal/mpd
#+END_SRC
The next thing we want to do is set the label for the module: we will display both the title and the name of the artist of the song playing. The maximum length will be 70 characters.
#+BEGIN_SRC conf-windows
label-song = %title% - %artist%
label-song-maxlen = 70
label-song-ellipsis = true
#+END_SRC
While Mpd is online, the format of the module should be the control icons and then the song label.
#+BEGIN_SRC conf-windows
format-online = <icon-prev> <toggle> <icon-next> <label-song>
icon-prev = ⏭
icon-stop = ⏹
icon-play = ▶
icon-pause = ⏸
icon-next = ⏭
#+END_SRC
If Mpd is offline, then I would like to display a short messages that tells the user so.
#+BEGIN_SRC conf-windows
format-offline = <label-offline>
label-offline = 🎵 mpd is offline
#+END_SRC
*** Date
:PROPERTIES:
:CUSTOM_ID: Modules-Software-Date-f7338626
:END:
This module is really simple: it gives the current date. It is an internal module, and as declared below, it updates every second:
#+BEGIN_SRC conf-windows
[module/date]
type = internal/date
interval = 1
#+END_SRC
The main date and time format is the standard one, following the ISO-8601 standard.
#+BEGIN_SRC conf-windows
date = %Y-%m-%d
time = %H-%M-%S
#+END_SRC
It also has an alternative format which I occasionally use, which displays the date and time in the Japanese format.
#+BEGIN_SRC conf-windows
date-alt = %A %d, %B
time-alt = %H:%M:%S
#+END_SRC
The format is quite simple: a clock emoji preceding the date and time.
#+BEGIN_SRC conf-windows
format-prefix = "🕑 "
label = %date% %time%
#+END_SRC
This module is underlined in blue:
#+BEGIN_SRC conf-windows
format-underline = #0a6cf5
#+END_SRC
* Footnotes
:PROPERTIES:
:CUSTOM_ID: Footnotes-62d05520
:END:
[fn:1] [[https://github.com/polybar/polybar/wiki/Fonts][https://github.com/polybar/polybar/wiki/Fonts]]
# LocalWords: Siji pixelsize Fira Mincho IPAMincho Unifont unifont fontformat
# LocalWords: truetype antialias xwindow wlan eth acpi cpu

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
/home/phundrak/LICENSE.md

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Some files were not shown because too many files have changed in this diff Show More