├── .conkyrc ├── .conkyrc_console ├── .easystroke ├── actions ├── actions-0.4.1 ├── preferences ├── preferences-0.4.0 └── preferences-0.4.1 ├── .fakevimrc ├── .gitignore ├── .mplayer ├── config ├── gui.conf ├── input.conf └── registry ├── .p10k.zsh ├── .tint2rc ├── .vimrc ├── .zshrc ├── .zshrc.root ├── EFI └── boot │ ├── startup-fallback.nsh │ ├── startup-single.nsh │ └── startup.nsh ├── LIST ├── Materia-gtk-3.0.css.patch ├── NetworkManager └── conf.d │ └── 00-iwd.conf ├── README ├── _update.awk ├── alacritty.yml ├── ansible-review └── config.ini ├── awesome ├── rc.lua └── theme.lua ├── bin ├── android-disable-apps.sh ├── ansible-template.sh ├── awesome_moc.sh ├── backup.sh ├── bluetooth.sh ├── brave.sh ├── browser.sh ├── calc.sh ├── chromium.sh ├── chroot-wheezy.sh ├── clipboard.sh ├── command_popup.py ├── console.sh ├── coverity.sh ├── cppcheck.sh ├── dependabot.sh ├── docker-x11.sh ├── docker.sh ├── editor.sh ├── feb.sh ├── file_manager.sh ├── fint_iptv.py ├── fix_kde_bold_fonts.sh ├── flamegraph.sh ├── flash.sh ├── gconf-shortcut.sh ├── git-drop-merged-branches.sh ├── github_download_count.py ├── gup ├── hotspot.sh ├── hw.mak ├── idle.sh ├── imagequick.sh ├── img │ ├── newimages.sh │ └── quality_test.sh ├── invert_colors.sh ├── j2 ├── kbd.sh ├── keyboard.sh ├── konsole-theme-to-foot.py ├── konsoleColorsXrdb.pl ├── lastfm_wallpaper.sh ├── launch.sh ├── lock.sh ├── lyrics.py ├── maybe_poweroff.py ├── mkbackup.sh ├── mkgallery.sh ├── modifiers.sh ├── monitors.sh ├── mount_iso.sh ├── move_music.sh ├── mute.sh ├── notifications.sh ├── pacman-disowned.sh ├── pause-media-when-lockscreen.sh ├── pavolume.sh ├── pch.sh ├── pynotebook.sh ├── qtcreator-android.sh ├── qtcreator.sh ├── red.sh ├── red_down.sh ├── red_up.sh ├── red_watch.sh ├── scan-build.sh ├── screen.sh ├── screenshot.sh ├── set_wallpaper.sh ├── sh-light.sh ├── shortcut_center.py ├── simian.sh ├── slack.sh ├── spotify.sh ├── status.sh ├── strace-execs.sh ├── sunset.sh ├── suspend.sh ├── svim.sh ├── sway_run.sh ├── sway_windows.sh ├── tags.sh ├── tidal.sh ├── toggle-console-background.sh ├── togglemute.sh ├── toggleplay.sh ├── truecolor-test.sh ├── tv_grab_cz ├── unpack.sh ├── update_qtc.sh ├── uzbl.sh ├── virtualbox.sh ├── volume.sh ├── volume_down.sh ├── volume_up.sh ├── vsync.sh ├── waybar.sh ├── wayland.sh ├── wm ├── xfceTerminalColorsXrdb.pl ├── xitomatl.sh ├── xnest.sh └── zoom.sh ├── fd └── ignore ├── firefox └── userChrome.css ├── fish ├── config.fish └── functions │ ├── cheat.fish │ ├── e.fish │ ├── gl.fish │ ├── prompt_login.fish │ ├── reflog.fish │ └── tigg.fish ├── fonts.conf ├── foot.ini ├── gdbinit ├── git ├── attributes ├── config └── ignore ├── gtk-3.0 └── settings.ini ├── helix └── config.toml ├── hypr ├── hyprland.conf ├── hyprlock.conf └── hyprpaper.conf ├── install.yml ├── kakrc ├── kitty.conf ├── konsole └── Screen.profile ├── kwin-rules.kwinrule ├── kwinrc ├── mako └── config ├── nvim ├── .neoconf.json ├── .stylua.toml ├── README.md ├── init.lua ├── lua │ ├── community.lua │ ├── lazy_setup.lua │ ├── plugins │ │ ├── astrocore.lua │ │ ├── astrolsp.lua │ │ ├── astroui.lua │ │ ├── mappings.lua │ │ ├── none-ls.lua │ │ ├── treesitter.lua │ │ └── user.lua │ └── polish.lua ├── neovim.yml └── selene.toml ├── openbox ├── autostart ├── environment ├── menu.xml └── rc.xml ├── profile.d └── less-improved.sh ├── qt5ct ├── qss │ └── scrollbar-color.qss └── qt5ct.conf ├── qutebrowser ├── autoconfig.yml └── greasemonkey │ └── darkmode.js ├── ripgreprc ├── sway ├── config.j2 ├── status.conf ├── status.toml └── templates │ └── shortcuts ├── swaync ├── config.json └── style.css ├── tig └── config ├── tmux.conf ├── udev ├── keymaps │ └── microsoft-ergonomic-keyboard │ │ └── microsoft-ergonomic-keyboard └── rules.d │ └── 95-keymap.rules │ └── 95-keymap.rules ├── update.sh ├── update_configs.sh ├── waybar ├── config └── style.css ├── xitomatl.ini ├── xkb └── symbols │ └── custom └── yamllint └── config /.conkyrc: -------------------------------------------------------------------------------- 1 | # vim: set commentstring="# %s" 2 | double_buffer yes 3 | 4 | draw_shades no 5 | draw_outline yes 6 | draw_borders no 7 | 8 | gap_x 0 9 | gap_y 0 10 | #alignment top_left 11 | alignment bottom_left 12 | #alignment bottom_right 13 | border_inner_margin 0 14 | border_outer_margin 0 15 | border_width 0 16 | draw_graph_borders no 17 | maximum_width 520 18 | minimum_size 520 19 | 20 | #update_interval 1 21 | update_interval 4 22 | update_interval_on_battery 6 23 | 24 | #default_color 888888 25 | #color0 66bbff 26 | #color1 cccccc 27 | #color2 888888 28 | #default_outline_color 202020 29 | #own_window_colour 2060a0 30 | 31 | default_color 000000 32 | default_outline_color 000000 33 | color0 0099bb 34 | color1 aaaaaa 35 | color2 777777 36 | color3 dd3300 37 | color4 0066dd 38 | own_window_colour 303030 39 | 40 | own_window yes 41 | #own_window_class Conky 42 | #own_window_type panel 43 | #own_window_type dock 44 | own_window_type desktop 45 | #own_window_type override 46 | #own_window_type normal 47 | own_window_hints undecorated,above,sticky,skip_taskbar,skip_pager 48 | #own_window_transparent yes 49 | #own_window_argb_visual yes 50 | #own_window_argb_value 215 51 | own_window_hints sticky 52 | 53 | use_xft no 54 | font -misc-envy code r-medium-r-normal--12-0-0-0-m-0-*-* 55 | #use_xft yes 56 | #xftfont Aller:pixelsize=13:bold 57 | #xftfont Aller:size=9:bold 58 | #xftfont URW Gothic L:size=11:bold 59 | #xftfont Linux Libertine C:size=12:bold 60 | #xftfont Quicksand:size=12:bold 61 | #xftfont Fertigo Pro:size=8:bold 62 | #xftfont Terminus:size=5 63 | #xftfont Aller Display:size=14 64 | #xftfont Anivers:size=12:bold 65 | #xftfont Juicy Hunt:size=18 66 | #xftfont Tenderness:size=12.5:bold 67 | #xftfont Yanone Kaffeesatz:size=10 68 | #xftfont Diavlo:size=13:bold 69 | #xftfont Gayatri:size=8 70 | #xftfont Envy Code R:size=8:bold 71 | #xftfont Andale Mono:size=8:bold 72 | #xftfont DejaVu Sans Mono:size=8:bold 73 | #xftfont Nimbus:size=7:bold 74 | #xftfont Inconsolata:size=9:bold 75 | #xftfont Droid Sans:size=11:bold 76 | 77 | template0 ${offset 398}${\1graph \2 12,120}${offset -516} 78 | 79 | TEXT 80 | ${color4}${template0 diskio /dev/sda}${color0}ROOT ${color1}${fs_free /} ${if_up eth0}${color0}DOWN ${color1}${downspeedf eth0} ${color0}UP ${color1}${upspeedf eth0}${else}${if_up wlan0}${color0}WIFI DOWN ${color1}${downspeedf wlan0} ${color0}UP ${color1}${upspeedf wlan0}${else}OFFLINE${endif}${endif} ${color0}MEM ${color1}${mem} ${color0}SWAP ${color1}${swap} 81 | ${color3}${template0 cpu cpu0}${color0}BAT ${color1}${battery_percent} ${color2}% ${color0}TEMP ${color1}${hwmon temp 1}$color ${color0}LOAD ${color1}${loadavg} ${color0}CPU ${color1}${cpu cpu1} ${color2}% ${color1}${cpu cpu2} 82 | -------------------------------------------------------------------------------- /.conkyrc_console: -------------------------------------------------------------------------------- 1 | # vim: set commentstring="# %s" 2 | out_to_console yes 3 | out_to_x no 4 | background no 5 | total_run_times 0 6 | use_spacer none 7 | 8 | update_interval 4 9 | update_interval_on_battery 8 10 | 11 | if_up_strictness link 12 | 13 | TEXT 14 | CPU:${cpu cpu1}%${cpu cpu2} MEM:${mem} LOAD:${loadavg} ROOT:${fs_free /}/${fs_size /} BAT:${battery_percent} TEMP:${hwmon temp 1}°${hddtemp /dev/sda} NET:${if_up eth0}${downspeedf eth0} ${upspeedf eth0}${else}${if_up wlan0}WIFI ${downspeedf wlan0} ${upspeedf wlan0}${else}OFFLINE${endif}${endif} $kernel ${time %a %d %b %H:%M} 15 | 16 | -------------------------------------------------------------------------------- /.easystroke/actions-0.4.1: -------------------------------------------------------------------------------- 1 | 22 serialization::archive 9 0 3 0 1 0 0 0 0 0 0 4 0 0 0 5 1 0 2 | 0 0 1 1 0 3 | 1 0 0 1 1 0 1 10 1 4 4 | 2 0 0 16 1 0 1 0.5078765385462064 1 0.50515242971752672 0.98910356468528104 0.50515242971752672 0.97275891171320239 0.50515242971752672 0.95096604108376437 0.50515242971752672 0.92917317045432624 0.5021963792496863 0.90109094040945426 0.5021963792496863 0.85144146325080095 0.5021963792496863 0.79382499861998879 0.49739826324760861 0.72425115272500662 0.49739826324760861 0.64581131688980731 0.49212346145379354 0.55877650535943135 0.49212346145379354 0.46472425381298754 0.49212346145379354 0.36750113559956665 0.49212346145379354 0.22882514160909967 0.49212346145379354 0.089895591346432047 0.49212346145379354 0 0 0 0 0 1 14 7 SendKey 1 1 5 | 3 1 0 6 | 4 0 0 4 116 0 7 new tab 5 7 | 5 8 | 6 1 1 10 9 | 7 21 1 0.50375454239546169 0 0.50375454239546169 0.023022142137820334 0.50375454239546169 0.051655458434702262 0.50375454239546169 0.086220318773766902 0.50125518336455499 0.12996032489221249 0.50125518336455499 0.18131001393238244 0.49875032048454665 0.23015484009254417 0.49875032048454665 0.27649480337269761 0.49875032048454665 0.32784441597051894 0.49875032048454665 0.38169896789069724 0.49875032048454665 0.4405632455708921 0.49875032048454665 0.50443724901110354 0.49875032048454665 0.56956368389131917 0.49624545760453836 0.63594255021153889 0.49624545760453836 0.70232141653175861 0.49624545760453836 0.76369055709196187 0.49624545760453836 0.82255483477215674 0.49624545760453836 0.89394342685239303 0.49624545760453836 0.95531256741259618 0.49624545760453836 0.98411849053269163 0.49624545760453836 1 0 0 0 14 10 | 8 11 | 9 4 119 0 12 close window 5 12 | 10 13 | 11 1 1 10 14 | 12 15 1 1 0.50123477082694146 0.98518275007670209 0.50123477082694146 0.95992662217602887 0.50123477082694146 0.92785453519402084 0.50123477082694146 0.88398083060495258 0.50123477082694146 0.8310008418960515 0.50123477082694146 0.76308844641426976 0.50123477082694146 0.68035865028032927 0.50123477082694146 0.59022037991360077 0.50123477082694146 0.49514302623910617 0.49876522917305849 0.39512658925684568 0.49876522917305849 0.2926406859851326 0.49876522917305849 0.19015470734898909 0.49876522917305849 0.09260781202061158 0.49876522917305849 0 0.49876522917305849 0 0 0 14 15 | 13 16 | 14 5 65289 0 12 previous tab 5 17 | 15 18 | 16 1 1 10 19 | 17 22 1 0 0.5033355301738871 0.03183448562807617 0.5033355301738871 0.068684142560573258 0.50110215144767611 0.10558669566423395 0.50110215144767611 0.1413709895829352 0.50110215144767611 0.18274657942643352 0.50110215144767611 0.22859527426289356 0.50110215144767611 0.27668041921614839 0.50110215144767611 0.32923860090924084 0.50110215144767611 0.41534455815111571 0.50110215144767611 0.50368703376290935 0.50110215144767611 0.56742780730559594 0.49886563307775722 0.6300503216633232 0.49886563307775722 0.6915545768360909 0.49886563307775722 0.74858579526902103 0.49886563307775722 0.80114397696211359 0.49886563307775722 0.84922912191536826 0.49886563307775722 0.89284123012878547 0.49886563307775722 0.93198030160236489 0.49886563307775722 0.96440981796618797 0.49886563307775722 0.98789326085033569 0.49886563307775722 1 0.4966644698261129 0 0 0 14 20 | 18 21 | 19 4 65289 0 8 next tab 7 Default 0 0 0 1 0 0 0 4 0 5 5 5 0 5 15 5 10 -------------------------------------------------------------------------------- /.easystroke/preferences: -------------------------------------------------------------------------------- 1 | 22 serialization::archive 4 0 12 0 0 1 0 0 0 5 opera 0 1 -1 0.5 1 2 2 | 0 3 0 0 0 16 0 0 0 0 192 0 0 0 0 0 0 0 1 0 0 0 0 0 0 26214 48059 17476 65535 5 3 | -------------------------------------------------------------------------------- /.easystroke/preferences-0.4.0: -------------------------------------------------------------------------------- 1 | 22 serialization::archive 4 0 13 0 0 2 0 0 0 7 Blender 0 1 -1 5 opera -1 0.5 1 3 2 | 0 3 0 0 0 0 16 0 0 0 0 192 0 0 0 0 0 0 0 1 0 0 0 0 0 0 26214 48059 17476 65535 5 0 0 0 3 1 3 | -------------------------------------------------------------------------------- /.easystroke/preferences-0.4.1: -------------------------------------------------------------------------------- 1 | 22 serialization::archive 4 0 15 0 0 3 0 0 0 7 Blender 0 1 -1 5 opera -1 10 xnview.exe -1 1 4 2 | 0 3 0 0 0 0 0 16 0 0 0 0 192 0 0 0 0 0 0 0 1 0 0 0 0 0 0 26214 48059 17476 65535 5 0 0 0 4 1 1 2 0 1 -------------------------------------------------------------------------------- /.fakevimrc: -------------------------------------------------------------------------------- 1 | " highlight matched 2 | set hlsearch 3 | " command history size 4 | set history=512 5 | " case insensitive search 6 | set ignorecase 7 | set smartcase 8 | " search while typing 9 | set incsearch 10 | " show numbers 11 | set number 12 | " automatic indentation 13 | set autoindent 14 | filetype plugin indent on 15 | " cursor show next/prev parenthesis 16 | set showmatch 17 | " completion menu 18 | set wildmode=longest:full,full 19 | " tab -> spaces 20 | set expandtab 21 | set shiftwidth=4 22 | set tabstop=4 23 | " keep a 5 line buffer for the cursor from top/bottom of window 24 | set scrolloff=5 25 | " X11 clipboard 26 | set clipboard=unnamedplus 27 | " use ~ with movement 28 | set tildeop 29 | 30 | " clear highlighted search term on space 31 | noremap :nohlsearch 32 | 33 | " faster commands 34 | "nnoremap ; : 35 | "nnoremap : ; 36 | 37 | " typos 38 | command! Q :q 39 | command! Qa :qa 40 | command! W :w 41 | command! Wq :wq 42 | command! WQ :wq 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /nvim/lazy-lock.json 2 | /nvim/lua/plugins/example.lua 3 | /fish/completions 4 | /fish/fish_variables 5 | /sway/config 6 | *.bak 7 | -------------------------------------------------------------------------------- /.mplayer/config: -------------------------------------------------------------------------------- 1 | [default] 2 | ### audio/video output 3 | #ao=alsa #,sdl,pulse,oss,arts 4 | #ao=alsa:device=hw=0.0 5 | ao=alsa 6 | #ao=pulse 7 | #ao=oss 8 | 9 | #vo=xv:adaptor=0 10 | #vo=vaapi:gl 11 | #vo=vaapi 12 | #va=vaapi 13 | 14 | #vo=vdpau, 15 | #vc=ffh264vdpau,ffmpeg12vdpau,ffodivxvdpau,ffwmv3vdpau,ffvc1vdpau, 16 | 17 | vo=vdpau, 18 | vc=ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau,ffodivxvdpau, 19 | 20 | #zoom=yes 21 | 22 | 23 | ### VIDEO 24 | #vf=screenshot 25 | #vf=eq2 26 | # deinterlance 27 | #vf=kerndeint 28 | #vf=yadif 29 | # direct rendering 30 | #dr=0 31 | # double buffering 32 | double=1 33 | #full screen 34 | fs=1 35 | #autosync=30 36 | framedrop=1 37 | #lavdopts=skiploopfilter=all:threads=2 38 | lavdopts=threads=4 39 | #noslices=1 40 | #stop-xscreensaver=1 41 | 42 | 43 | ### AUDIO 44 | # reduce noise, volume normalization 45 | #af=sinesuppress=1:volnorm=2 46 | #af=volnorm=1,scaletempo 47 | af=scaletempo 48 | channels=2 49 | 50 | 51 | ### OSD/FONT 52 | #osdlevel=1 53 | ass=1 54 | embeddedfonts=1 55 | #ass-color=ffe68200 56 | #ass-border-color=40404000 57 | #ass-force-style=Outline=1 58 | #fontconfig=1 59 | font=Aller 60 | #subfont-autoscale=3 61 | subfont-osd-scale=2.5 62 | #ass-font-scale=1 63 | subcp=CP1250 64 | subpos=100 65 | 66 | 67 | # MISC 68 | #cache=70000 69 | #cache-min=1 70 | 71 | #cache=4096 72 | #nocache=1 73 | #idx=1 74 | 75 | [gnome-mplayer] 76 | msglevel=all=5 77 | -------------------------------------------------------------------------------- /.mplayer/gui.conf: -------------------------------------------------------------------------------- 1 | enable_audio_equ = "no" 2 | vo_driver = "xv" 3 | vo_panscan = "0,000000" 4 | vo_doublebuffering = "yes" 5 | vo_direct_render = "no" 6 | v_framedrop = "0" 7 | v_flip = "0" 8 | v_ni = "no" 9 | v_idx = "-1" 10 | vf_pp = "no" 11 | vf_autoq = "0" 12 | vf_lavc = "no" 13 | ao_driver = "sdl" 14 | ao_volnorm = "no" 15 | softvol = "no" 16 | ao_surround = "no" 17 | ao_extra_stereo = "no" 18 | ao_extra_stereo_coefficient = "1,000000" 19 | dvd_device = "/dev/dvd" 20 | cdrom_device = "/dev/cdrom" 21 | osd_level = "1" 22 | sub_auto_load = "yes" 23 | sub_unicode = "no" 24 | sub_pos = "100" 25 | sub_overlap = "no" 26 | sub_cp = enca:cs:latin2 27 | font_factor = "0,750000" 28 | font_name = "/usr/share/fonts/corefonts/arial.ttf" 29 | font_encoding = "unicode" 30 | font_text_scale = "6,000000" 31 | font_osd_scale = "5,000000" 32 | font_blur = "2,000000" 33 | font_outline = "2,000000" 34 | font_autoscale = "3" 35 | cache = "yes" 36 | cache_size = "256" 37 | playbar = "yes" 38 | load_fullscreen = "no" 39 | show_videowin = "yes" 40 | stopxscreensaver = "no" 41 | autosync = "no" 42 | autosync_size = "0" 43 | gui_skin = "default" 44 | gui_save_pos = "yes" 45 | gui_main_pos_x = "839" 46 | gui_main_pos_y = "903" 47 | gui_video_out_pos_x = "0" 48 | gui_video_out_pos_y = "0" 49 | equ_band_00 = "0,000000" 50 | equ_band_01 = "0,000000" 51 | equ_band_02 = "0,000000" 52 | equ_band_03 = "0,000000" 53 | equ_band_04 = "0,000000" 54 | equ_band_05 = "0,000000" 55 | equ_band_06 = "0,000000" 56 | equ_band_07 = "0,000000" 57 | equ_band_08 = "0,000000" 58 | equ_band_09 = "0,000000" 59 | equ_band_10 = "0,000000" 60 | equ_band_11 = "0,000000" 61 | equ_band_12 = "0,000000" 62 | equ_band_13 = "0,000000" 63 | equ_band_14 = "0,000000" 64 | equ_band_15 = "0,000000" 65 | equ_band_16 = "0,000000" 66 | equ_band_17 = "0,000000" 67 | equ_band_18 = "0,000000" 68 | equ_band_19 = "0,000000" 69 | equ_band_20 = "0,000000" 70 | equ_band_21 = "0,000000" 71 | equ_band_22 = "0,000000" 72 | equ_band_23 = "0,000000" 73 | equ_band_24 = "0,000000" 74 | equ_band_25 = "0,000000" 75 | equ_band_26 = "0,000000" 76 | equ_band_27 = "0,000000" 77 | equ_band_28 = "0,000000" 78 | equ_band_29 = "0,000000" 79 | equ_band_30 = "0,000000" 80 | equ_band_31 = "0,000000" 81 | equ_band_32 = "0,000000" 82 | equ_band_33 = "0,000000" 83 | equ_band_34 = "0,000000" 84 | equ_band_35 = "0,000000" 85 | equ_band_36 = "0,000000" 86 | equ_band_37 = "0,000000" 87 | equ_band_38 = "0,000000" 88 | equ_band_39 = "0,000000" 89 | equ_band_40 = "0,000000" 90 | equ_band_41 = "0,000000" 91 | equ_band_42 = "0,000000" 92 | equ_band_43 = "0,000000" 93 | equ_band_44 = "0,000000" 94 | equ_band_45 = "0,000000" 95 | equ_band_46 = "0,000000" 96 | equ_band_47 = "0,000000" 97 | equ_band_48 = "0,000000" 98 | equ_band_49 = "0,000000" 99 | equ_band_50 = "0,000000" 100 | equ_band_51 = "0,000000" 101 | equ_band_52 = "0,000000" 102 | equ_band_53 = "0,000000" 103 | equ_band_54 = "0,000000" 104 | equ_band_55 = "0,000000" 105 | equ_band_56 = "0,000000" 106 | equ_band_57 = "0,000000" 107 | equ_band_58 = "0,000000" 108 | equ_band_59 = "0,000000" 109 | -------------------------------------------------------------------------------- /.mplayer/input.conf: -------------------------------------------------------------------------------- 1 | ## 2 | ## MPlayer input control file 3 | ## 4 | ## You are able to redefine default keyboard/joystick/mouse/LIRC bindings, or 5 | ## add new ones here. 6 | ## 7 | ## The file should be placed in the $HOME/.mplayer directory. 8 | ## 9 | 10 | RIGHT seek +5 11 | LEFT seek -5 12 | DOWN seek -30 13 | UP seek +30 14 | PGUP seek +300 15 | PGDWN seek -300 16 | - audio_delay 0.100 17 | + audio_delay -0.100 18 | q quit 19 | ESC quit 20 | ENTER pt_step 1 1 21 | p pause 22 | SPACE pause 23 | HOME pt_up_step 1 24 | END pt_up_step -1 25 | > pt_step 1 26 | < pt_step -1 27 | INS alt_src_step 1 28 | DEL alt_src_step -1 29 | #o osd 30 | y sub_delay -0.1 31 | x sub_delay +0.1 32 | 9 volume -1 33 | / volume -1 34 | 0 volume 1 35 | * volume 1 36 | 1 contrast -1 37 | 2 contrast 1 38 | 3 brightness -1 39 | 4 brightness 1 40 | 5 hue -1 41 | 6 hue 1 42 | 7 saturation -1 43 | 8 saturation 1 44 | d frame_drop 45 | r sub_pos -1 46 | t sub_pos +1 47 | u sub_step +1 # immediately display next subtitle 48 | z sub_step -1 # previous 49 | f vo_fullscreen 50 | T vo_ontop 51 | w panscan -0.1 52 | e panscan +0.1 53 | 54 | h tv_step_channel 1 55 | l tv_step_channel -1 56 | n tv_step_norm 57 | b tv_step_chanlist 58 | 59 | . frame_step # advance one frame and pause 60 | s screenshot # take a png screenshot with -vf screenshot 61 | # S will take a png screenshot of every frame 62 | ( balance -0.1 # adjust audio balance in favor of left 63 | ) balance +0.1 # right 64 | 65 | MOUSE_BTN0 pause 66 | MOUSE_BTN2 vo_fullscreen 67 | 68 | i osd_show_property_text "${filename}" 69 | o osd_show_progression 70 | O osd 71 | k osd_show_progression 72 | 73 | -------------------------------------------------------------------------------- /.mplayer/registry: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hluk/config/3d8d34160d15d0c2d5ee82e202bcd82448103822/.mplayer/registry -------------------------------------------------------------------------------- /.tint2rc: -------------------------------------------------------------------------------- 1 | #--------------------------------------------- 2 | # TINT2 CONFIG FILE 3 | #--------------------------------------------- 4 | 5 | #--------------------------------------------- 6 | # BACKGROUND AND BORDER 7 | #--------------------------------------------- 8 | rounded = 0 9 | border_width = 0 10 | background_color = #000000 60 11 | border_color = #ffffff 0 12 | 13 | rounded = 3 14 | border_width = 0 15 | background_color = #eeeeee 100 16 | border_color = #000000 0 17 | 18 | rounded = 0 19 | border_width = 0 20 | background_color = #000000 60 21 | border_color = #ffffff 70 22 | 23 | rounded = 0 24 | border_width = 0 25 | background_color = #000000 60 26 | border_color = #ffffff 0 27 | 28 | #--------------------------------------------- 29 | # PANEL 30 | #--------------------------------------------- 31 | panel_monitor = all 32 | #panel_position = bottom right 33 | panel_position = top left 34 | panel_size = 100% 16 35 | panel_margin = 0 0 36 | panel_padding = 0 0 37 | font_shadow = 0 38 | panel_dock = 0 39 | panel_background_id = 4 40 | wm_menu = 0 41 | panel_layer = bottom 42 | 43 | # Panel Autohide 44 | autohide = 0 45 | autohide_show_timeout = 0.3 46 | autohide_hide_timeout = 2 47 | autohide_height = 2 48 | strut_policy = follow_size 49 | 50 | #--------------------------------------------- 51 | # TASKBAR 52 | #--------------------------------------------- 53 | #taskbar_mode = multi_desktop 54 | taskbar_mode = single_desktop 55 | taskbar_padding = 0 0 0 56 | taskbar_background_id = 0 57 | #taskbar_active_background_id = 0 58 | 59 | #--------------------------------------------- 60 | # TASKS 61 | urgent_nb_of_blink = 8 62 | #--------------------------------------------- 63 | task_icon = 1 64 | task_text = 1 65 | task_maximum_size = 2048 16 66 | task_centered = 1 67 | task_padding = 0 0 68 | #task_font = Forgotten Futurist 11 69 | #task_font = Kleptocracy 11 70 | #task_font = Libel Suit 12 71 | #task_font = Envy Code R bold 10 72 | #task_font = Terminus 8 73 | #task_font = SF Atarian System 12 74 | #task_font = League Gotic 8 75 | #task_font = Yanone Kaffeesatz 11 76 | #task_font = Droid Sans Mono 8 77 | task_font = Aller 10 78 | #task_font = Inconsolata Bold 11 79 | task_font_color = #eeeeee 100 80 | task_active_font_color = #000000 100 81 | task_background_id = 3 82 | task_active_background_id = 2 83 | 84 | # Task Icons 85 | task_icon_asb = 70 0 0 86 | task_active_icon_asb = 100 0 0 87 | task_urgent_icon_asb = 100 0 0 88 | task_iconified_icon_asb = 70 0 0 89 | 90 | # System Tray 91 | systray = 1 92 | systray_padding = 0 0 5 93 | systray_sort = ascending 94 | systray_background_id = 1 95 | systray_icon_size = 24 96 | systray_icon_asb = 100 0 0 97 | 98 | # Clock 99 | #time1_format = %H:%M 100 | #time1_font = Dream Orphans bold 16 101 | #time1_font = Effloresce bold 16 102 | #time1_font = Kimberley 14 103 | #time1_font = Nasalization 12 104 | #time1_font = Oliver's Barney 14 105 | #time1_font = New Brilliant 18 106 | #time1_font = Univox bold 16 107 | #time1_font = Aller Display 10 108 | #time2_format = %a %d %b 109 | #time2_font = Aller 7 110 | #clock_font_color = #ffffff 100 111 | #clock_padding = 4 0 112 | #clock_background_id = 1 113 | #clock_lclick_command = xterm -title Calendar -geometry 20x9-0-0 -e sh -c 'export cmd="wmctrl -r :ACTIVE:"; $cmd -e 9,1366,748,-1,-1;$cmd -b add,above;$cmd -b add,sticky;$cmd -b add,skip_taskbar;$cmd -b add,skip_pager;cal;sleep 2' 114 | #clock_rclick_command = orage 115 | #clock_tooltip = %A %d %B 116 | 117 | # Tooltips 118 | tooltip = 0 119 | tooltip_padding = 2 2 120 | tooltip_show_timeout = 0.7 121 | tooltip_hide_timeout = 0.3 122 | tooltip_background_id = 1 123 | tooltip_font = sans 10 124 | tooltip_font_color = #000000 80 125 | 126 | # Mouse 127 | mouse_middle = none 128 | mouse_right = close 129 | mouse_scroll_up = toggle 130 | mouse_scroll_down = iconify 131 | 132 | # Battery 133 | #battery = 1 134 | #battery_low_status = 8 135 | #battery_hide = 96 136 | #battery_low_cmd = notify-send "battery low" 137 | #bat1_font = Gayatri 9 138 | #bat2_font = Gayatri 6 139 | #battery_font_color = #aaaaaa 100 140 | #battery_padding = 2 0 141 | #battery_background_id = 1 142 | 143 | -------------------------------------------------------------------------------- /.vimrc: -------------------------------------------------------------------------------- 1 | " USAGE: 2 | " :h index 3 | " :options 4 | " :read -- open file read only 5 | " :setl ar -- automatically reload file if changed 6 | " q/ -- search history 7 | " q: -- command history 8 | " gf -- open file which filename is under cursor 9 | " gi -- go to last insert mode place 10 | " g; -- go to last change 11 | " g, -- go to next change 12 | " ~ -- change case of letter 13 | " gq -- reformat 14 | " 15 | " :g/PATTERN/norm ... -- do something with each matched line (e.g. delete with dd) 16 | 17 | " http://vimbits.com/bits?sort=top 18 | " https://www.reddit.com/r/vim/wiki/vimrctips 19 | 20 | " OPTIONS {{{ 21 | set mouse=a 22 | " highlight matched 23 | set hlsearch 24 | " command history size 25 | set history=512 26 | " case insensitive search 27 | set ignorecase 28 | set smartcase 29 | " search while typing 30 | set incsearch 31 | " show numbers 32 | set number 33 | " automatic indentation 34 | set autoindent 35 | filetype plugin indent on 36 | " cursor show next/prev parenthesis 37 | set showmatch 38 | " completion menu 39 | set wildmenu 40 | set wildmode=longest:full,full 41 | " tab -> spaces 42 | set expandtab 43 | set shiftwidth=4 44 | " keep a 5 line buffer for the cursor from top/bottom of window 45 | set scrolloff=5 46 | " X11 clipboard 47 | set clipboard=unnamedplus 48 | " use ~ with movement 49 | set tildeop 50 | " persistent undo history 51 | call system('mkdir -p ~/.vim/undofiles/') 52 | set undodir=~/.vim/undofiles/ 53 | set undofile 54 | " 256 and more colors 55 | set termguicolors 56 | let &t_8f = "\[38;2;%lu;%lu;%lum" 57 | let &t_8b = "\[48;2;%lu;%lu;%lum" 58 | " diff 59 | set diffopt+=algorithm:patience 60 | set diffopt+=indent-heuristic 61 | " always show status line 62 | set laststatus=2 63 | " }}} 64 | 65 | " PLUGINS {{{ 66 | " https://github.com/junegunn/vim-plug 67 | " curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ 68 | " https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim 69 | " :PlugInstall to install new plugins 70 | " :PlugUpdate to update plugins 71 | " :PlugUpgrade to upgrade vim-plug 72 | call plug#begin('~/.vim/plugged') 73 | 74 | " doxygen 75 | autocmd BufNewFile,BufReadPost *.cpp,*.c,*.h set syntax+=.doxygen 76 | 77 | " qml 78 | autocmd BufRead,BufNewFile *.qml setfiletype javascript 79 | 80 | " Jenkinsfile 81 | autocmd BufRead,BufNewFile Jenkinsfile,*.Jenkinsfile setfiletype groovy 82 | 83 | " git commit message 84 | autocmd FileType gitcommit au! BufEnter COMMIT_EDITMSG call setpos('.', [0, 1, 1, 0])|set spell|set nosmartindent|set noautoindent|set nocindent 85 | 86 | " yaml 87 | autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab 88 | autocmd BufRead,BufNewFile ~/.config/yamllint/config setfiletype yaml 89 | autocmd BufRead,BufNewFile */ansible/inventory/* setfiletype yaml 90 | 91 | " ruby 92 | autocmd FileType ruby setlocal ts=2 sts=2 sw=2 expandtab 93 | autocmd FileType eruby setlocal ts=2 sts=2 sw=2 expandtab 94 | 95 | " meson 96 | autocmd BufRead,BufNewFile meson.build setlocal ts=2 sts=2 sw=2 expandtab 97 | 98 | "" toggle comment (NERD commenter) 99 | Plug 'scrooloose/nerdcommenter' 100 | map cj 101 | imap c 102 | 103 | "" taglist 104 | "Plug 'vim-scripts/taglist.vim' 105 | "noremap tt :TlistToggle 106 | 107 | " Asynchronous Lint Engine 108 | Plug 'w0rp/ale' 109 | let g:ale_linters = { 110 | \ 'python': ['flake8',], 111 | \} 112 | autocmd BufEnter schema.rb ALEDisable 113 | 114 | " snippets 115 | Plug 'SirVer/ultisnips' 116 | Plug 'honza/vim-snippets' 117 | let g:UltiSnipsExpandTrigger="" 118 | 119 | " fugitive (git) 120 | Plug 'tpope/vim-fugitive' 121 | no gitd :Gd master 122 | 123 | " asynchronous build and test dispatcher 124 | Plug 'tpope/vim-dispatch' 125 | 126 | " file helpers: 127 | " - :Mkdir, :Rename, :SudoWrite, ... 128 | " - automatic chmod +x for new scripts 129 | Plug 'tpope/vim-eunuch' 130 | 131 | " Perform all your vim insert mode completions with Tab 132 | Plug 'ervandew/supertab' 133 | let g:SuperTabDefaultCompletionType = 'context' 134 | let g:SuperTabContextDefaultCompletionType = "" 135 | let g:SuperTabDefaultCompletionTypeDiscovery = ["&omnifunc:","&completefunc:"] 136 | let g:SuperTabClosePreviewOnPopupClose = 1 137 | 138 | " Python 139 | " PEP 8 140 | Plug 'nvie/vim-flake8' 141 | " :Black 142 | Plug 'python/black' 143 | 144 | " Rust syntax 145 | Plug 'rust-lang/rust.vim' 146 | 147 | " Ruby on Rails 148 | Plug 'tpope/vim-rails' 149 | 150 | " Jinja2 151 | Plug 'Glench/Vim-Jinja2-Syntax' 152 | 153 | " meson 154 | Plug 'igankevich/mesonic' 155 | 156 | " fzf 157 | Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } 158 | Plug 'junegunn/fzf.vim' 159 | let g:fzf_layout = { 'right': '~70%' } 160 | let g:fzf_history_dir = '~/.local/share/fzf-history' 161 | imap (fzf-complete-path) 162 | command! -bang -nargs=* Rg 163 | \ call fzf#vim#grep( 164 | \ 'rg --column --line-number --no-heading --color=always '.shellescape(), 1, 165 | \ 0 ? fzf#vim#with_preview('up:60%') 166 | \ : fzf#vim#with_preview('right:50%:hidden', '?'), 167 | \ 0) 168 | " Files command with preview window 169 | command! -bang -nargs=? -complete=dir Files 170 | \ call fzf#vim#files(, fzf#vim#with_preview(), 0) 171 | map :Files 172 | map :Files 173 | map :Rg 174 | " Insert mode completion 175 | imap (fzf-complete-word) 176 | imap (fzf-complete-path) 177 | imap (fzf-complete-file-ag) 178 | imap (fzf-complete-line) 179 | 180 | " grammar checker 181 | Plug 'rhysd/vim-grammarous' 182 | 183 | " Color schemes 184 | Plug 'sjl/badwolf' 185 | Plug 'morhetz/gruvbox' 186 | 187 | " reopen files at your last edit position 188 | Plug 'farmergreg/vim-lastplace' 189 | 190 | call plug#end() 191 | " }}} 192 | 193 | " KEYS {{{ 194 | " faster commands 195 | nnoremap ; : 196 | 197 | " typos 198 | command! Q :q 199 | command! Qa :qa 200 | command! W :w 201 | command! Wq :wq 202 | command! WQ :wq 203 | 204 | " edit/source configuration 205 | noremap e :split ~/.vimrc 206 | noremap r :source ~/.vimrc 207 | 208 | " clear highlighted search term on space 209 | noremap :nohlsearch 210 | 211 | " reselect visual block after indent 212 | vnoremap < >gv 214 | 215 | inoremap jj 216 | " }}} 217 | 218 | " COMPLETION {{{ 219 | " don't complete some filenames 220 | set wildignore+=.hg,.git,.svn " Version control 221 | set wildignore+=*.aux,*.out,*.toc " LaTeX intermediate files 222 | set wildignore+=*.o,*.obj,*.exe,*.dll " compiled object files 223 | set wildignore+=*.spl " compiled spelling word lists 224 | set wildignore+=*.sw? " Vim swap files 225 | set wildignore+=*.pyc " python binaries 226 | set wildignore+=*.luac " Lua byte code 227 | " don't complete multimedia binary files 228 | set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg 229 | set wildignore+=*.flv,.*mp4,*.mp3,*.wav,*.wmv,*.avi,*.mkv,*.mov 230 | 231 | "set completeopt=longest,menuone,preview 232 | "set completeopt=longest,menuone,menu 233 | "}}} 234 | 235 | " DICTIONARY (C-x C-k) {{{ 236 | "set dictionary+=/usr/share/dict/words 237 | "set spelllang=cs 238 | map :set spell! 239 | set spell 240 | "}}} 241 | 242 | " FOLDS {{{ 243 | set foldmethod=marker 244 | set foldnestmax=2 245 | "}}} 246 | 247 | " TABS {{{ 248 | noremap tn :tabnew 249 | noremap td :tabclose 250 | noremap :tabnext 251 | noremap :tabprev 252 | inoremap :tabnext 253 | inoremap :tabprev 254 | "}}} 255 | 256 | " HEX {{{ 257 | command! Xxd :%!xxd 258 | command! Xxdr :%!xxd -r 259 | "}}} 260 | 261 | " APPEARANCE {{{ 262 | set bg=dark 263 | "colorscheme badwolf 264 | "colorscheme zenburn 265 | "colorscheme mustang 266 | "colorscheme desert 267 | "colorscheme wombat 268 | "colorscheme onedark 269 | "colorscheme molokai 270 | colorscheme gruvbox 271 | "}}} 272 | -------------------------------------------------------------------------------- /.zshrc: -------------------------------------------------------------------------------- 1 | # ALT-H is command help 2 | # edit command line on C-x C-e 3 | 4 | # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc. 5 | # if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then 6 | # source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" 7 | # fi 8 | 9 | # env# {{{ 10 | export EDITOR="$HOME/dev/bin/editor.sh" 11 | export PAGER=less 12 | export LESS="--RAW-CONTROL-CHARS --ignore-case --quit-if-one-screen --LONG-PROMPT --shift=5" 13 | export SYSTEMD_LESS=$LESS 14 | 15 | # support colors in less 16 | # export LESS_TERMCAP_mb=$'\E[01;31m' 17 | # export LESS_TERMCAP_md=$'\E[01;33m' 18 | # export LESS_TERMCAP_me=$'\E[0m' 19 | # export LESS_TERMCAP_se=$'\E[0m' 20 | # export LESS_TERMCAP_so=$'\E[01;44;33m' 21 | # export LESS_TERMCAP_ue=$'\E[0m' 22 | # export LESS_TERMCAP_us=$'\E[01;32m' 23 | 24 | export PATH="$HOME/.local/bin:$PATH" 25 | export PATH="$HOME/.cargo/bin:$PATH" 26 | export PATH="$HOME/dev/Nim/bin:$PATH" 27 | export PATH="$HOME/dev/bin:$PATH" 28 | export PATH="$HOME/dev/scripts:$PATH" 29 | 30 | export GOPATH="$HOME/go" 31 | export PATH="$GOPATH/bin:$PATH" 32 | # }}} 33 | 34 | # basic configuration# {{{ 35 | HISTFILE=~/.histfile 36 | HISTSIZE=10000 37 | SAVEHIST=10000 38 | setopt hist_ignore_dups 39 | setopt hist_ignore_all_dups 40 | setopt hist_expire_dups_first 41 | setopt inc_append_history 42 | bindkey -e 43 | 44 | # keys 45 | bindkey '^[[1~' beginning-of-line 46 | bindkey '^[[4~' end-of-line 47 | bindkey '^[[3~' delete-char 48 | bindkey '^[[P' delete-char 49 | bindkey '^[[Z' reverse-menu-complete 50 | bindkey "^[OD" backward-word 51 | bindkey "^[OC" forward-word 52 | 53 | # tmux 54 | bindkey -v '^[OH' beginning-of-line 55 | bindkey -v '^[OF' end-of-line 56 | 57 | # kitty terminal 58 | bindkey -v '\e[H' beginning-of-line 59 | bindkey -v '\e[F' end-of-line 60 | bindkey -v '\e[3~' delete-char 61 | 62 | autoload edit-command-line 63 | zle -N edit-command-line 64 | bindkey '^Xe' edit-command-line 65 | bindkey '^X^e' edit-command-line 66 | 67 | # no CTRL-S 68 | setopt NO_FLOW_CONTROL 69 | # }}} 70 | 71 | # completion# {{{ 72 | autoload -Uz compinit 73 | compinit 74 | 75 | zstyle ':completion:*' list-colors '' 76 | zstyle :compinstall filename "$HOME/.zshrc" 77 | 78 | # case insensitive completion 79 | zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 80 | 81 | zstyle ':completion:*' verbose yes 82 | zstyle ':completion:*:descriptions' format '%B%d%b' 83 | zstyle ':completion:*:messages' format '%d' 84 | zstyle ':completion:*:warnings' format 'No matches for: %d' 85 | zstyle ':completion:*' group-name '' 86 | zstyle ':completion:*' completer _expand _complete _approximate _ignored 87 | 88 | # generate descriptions with magic. 89 | zstyle ':completion:*' auto-description 'specify: %d' 90 | 91 | ## Don't prompt for a huge list, page it! 92 | zstyle ':completion:*:default' list-prompt '%S%M matches%s' 93 | 94 | ## Don't prompt for a huge list, menu it! 95 | zstyle ':completion:*:default' menu 'select=0' 96 | 97 | ## Have the newer files last so I see them first 98 | #zstyle ':completion:*' file-sort modification reverse 99 | 100 | #unsetopt LIST_AMBIGUOUS 101 | setopt COMPLETE_IN_WORD 102 | 103 | # Separate man page sections. Neat. 104 | zstyle ':completion:*:manuals' separate-sections true 105 | 106 | # complete with a menu for xwindow ids 107 | zstyle ':completion:*:windows' menu on=0 108 | zstyle ':completion:*:expand:*' tag-order all-expansions 109 | 110 | # more errors allowed for large words and fewer for small words 111 | zstyle ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) )' 112 | 113 | # Errors format 114 | zstyle ':completion:*:corrections' format '%B%d (errors %e)%b' 115 | 116 | # Don't complete stuff already on the line 117 | zstyle ':completion::*:(rm|cp|mv|e):*' ignore-line true 118 | 119 | # Don't complete directory we are already in (../here) 120 | zstyle ':completion:*' ignore-parents parent pwd 121 | 122 | zstyle ':completion::approximate*:*' prefix-needed false 123 | # }}} 124 | 125 | # aliases {{{ 126 | alias rm="rm -vI" 127 | alias cp="cp -v" 128 | alias mv="mv -v" 129 | alias ls="ls --color=auto -h" 130 | alias ll="ls -lA" 131 | alias l="ls -lAtr" 132 | alias grep="grep --colour=auto" 133 | alias man="LESS='' LANG=C man" 134 | alias ssh="env TERM=xterm ssh" 135 | alias unpack="~/dev/bin/unpack.sh" 136 | alias natsort=~/dev/natsort/natsort 137 | alias m="QT_SCREEN_SCALE_FACTORS=1 smplayer" 138 | alias venv='python3 -m venv .venv && source .venv/bin/activate && pip install --upgrade pip setuptools -q' 139 | alias copyq="$HOME/dev/build/copyq/release/copyq" 140 | alias :q="exit" 141 | 142 | alias open="xdg-open" 143 | 144 | alias g="git" 145 | alias gc="git co" 146 | alias gd="git d" 147 | alias gf="git f" 148 | alias gs="git show" 149 | alias gst="git st" 150 | alias gu="git up" 151 | # alias gg="lazygit" 152 | alias gg="gitui" 153 | # alias gg="flatpak run com.github.Murmele.Gittyup" 154 | alias gpr="git pr" 155 | 156 | gl() { 157 | git la --color -$LINES | head -$((LINES - 8)) 158 | } 159 | 160 | tigg() { 161 | git log --pretty='format:commit %h %s' -G "$@" | tig 162 | } 163 | 164 | # package manager 165 | source /etc/os-release 166 | if [[ $NAME =~ "Fedora" ]]; then 167 | alias q="dnf" 168 | alias s="q search --cacheonly --all" 169 | alias i="sudo dnf install" 170 | alias u="sudo dnf remove" 171 | alias up="sudo dnf upgrade" 172 | elif [[ $NAME =~ "Arch Linux" ]]; then 173 | #alias q="pacaur" 174 | #alias q="trizen" 175 | alias q="yay" 176 | alias s="q -Ss" 177 | alias i="q -S" 178 | alias u="sudo pacman -Rs" 179 | alias up="q -Syu --devel --needed" 180 | alias Up="q -Qe|awk -F'[/ ]' '/^local/{if(\$2~/-(git|svn|bzr|hg|nightly)$/)print\$2}'" 181 | alias qdiff="sudo pacdiff" 182 | #alias up="q -Syu --aur" 183 | alias clean="q -Qdt" 184 | elif [[ $NAME =~ "Ubuntu" ]]; then 185 | alias q="apt" 186 | alias s="q search" 187 | alias i="sudo apt install" 188 | alias u="sudo apt remove" 189 | alias up="sudo apt update && sudo apt upgrade" 190 | fi 191 | 192 | alias b0="~/dev/scripts/bluetooth.sh off" 193 | alias b1="~/dev/scripts/bluetooth.sh on" 194 | alias w0="~/dev/scripts/work.sh off" 195 | alias w1="~/dev/scripts/work.sh on" 196 | 197 | # cd ~d 198 | d=~/Downloads 199 | b=~/dev/bin 200 | f=~/dev/factory 201 | # }}} 202 | 203 | # open editor in tmux in new window 204 | e() { 205 | if [[ -n $TMUX ]]; then 206 | tmux new-window $EDITOR "$@" 207 | else 208 | $EDITOR "$@" 209 | fi 210 | } 211 | 212 | # A-c: cd 213 | # C-t: complete path 214 | # C-r: history 215 | export RIPGREP_CONFIG_PATH=$HOME/.config/ripgreprc 216 | if [ -d ~/.fzf ]; then 217 | export PATH="$HOME/.fzf/bin:$PATH" 218 | export FZF_DEFAULT_COMMAND='rg --files' 219 | #export FZF_DEFAULT_COMMAND='fd --type f' 220 | export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" 221 | export FZF_DEFAULT_OPTS="--history=$HOME/.local/share/fzf_history" 222 | export FZF_ALT_C_COMMAND='fd --type directory' 223 | 224 | source ~/.fzf.zsh 225 | source "$HOME/.fzf/shell/completion.zsh" 226 | source "$HOME/.fzf/shell/key-bindings.zsh" 227 | fi 228 | 229 | # plugins {{{ 230 | source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 231 | ZSH_HIGHLIGHT_HIGHLIGHTERS=( main brackets ) 232 | ZSH_HIGHLIGHT_STYLES+=( 233 | alias 'fg=magenta,bold' 234 | path 'fg=cyan' 235 | globbing 'fg=yellow' 236 | single-hyphen-option 'bold' 237 | double-hyphen-option 'bold' 238 | ) 239 | ZSH_HIGHLIGHT_STYLES[bracket-level-1]='fg=green,bold' 240 | ZSH_HIGHLIGHT_STYLES[bracket-level-2]='fg=red,bold' 241 | ZSH_HIGHLIGHT_STYLES[bracket-level-3]='fg=yellow,bold' 242 | ZSH_HIGHLIGHT_STYLES[bracket-level-4]='fg=magenta,bold' 243 | 244 | source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh 245 | 246 | # https://github.com/ajeetdsouza/zoxide 247 | #eval "$(zoxide init zsh --cmd j)" 248 | 249 | # https://github.com/romkatv/powerlevel10k 250 | # source ~/dev/powerlevel10k/powerlevel10k.zsh-theme 251 | # }}} 252 | 253 | # ccache {{{ 254 | PATH=/usr/lib/ccache/bin:$PATH 255 | ccache --max-size=8G >/dev/null 256 | # }}} 257 | 258 | # Use vi mode 259 | bindkey -v 260 | bindkey -M vicmd v edit-command-line 261 | bindkey -v '^?' backward-delete-char 262 | export KEYTIMEOUT=1 263 | # Override PageUp/Down in vi mode 264 | bindkey -v '^[[5~' backward-word 265 | bindkey -v '^[[6~' forward-word 266 | 267 | # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh. 268 | # [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh 269 | -------------------------------------------------------------------------------- /.zshrc.root: -------------------------------------------------------------------------------- 1 | # Lines configured by zsh-newuser-install 2 | HISTFILE=~/.histfile 3 | HISTSIZE=1000000 4 | SAVEHIST=1000000 5 | bindkey -e 6 | # End of lines configured by zsh-newuser-install 7 | # The following lines were added by compinstall 8 | 9 | zstyle ':completion:*' list-colors '' 10 | zstyle :compinstall filename '/home/lukas/.zshrc' 11 | 12 | autoload -Uz compinit promptinit 13 | compinit 14 | promptinit 15 | # End of lines added by compinstall 16 | 17 | # /usr/share/zsh/4.3.4/functions/Prompts/ 18 | prompt zefram 19 | export PS1='%B%F{blue}%n%(2v.%B@%b.@)%f%(!.%F{red}.%F{green})%m%f:%~%(?..%F{red}[%v]%f)%(!.#.>)%b ' 20 | 21 | # keys 22 | bindkey '\e[1~' beginning-of-line 23 | bindkey '\e[4~' end-of-line 24 | bindkey '\e[3~' delete-char 25 | 26 | # env 27 | export CFLAGS="-pipe -O2 -march=pentium4 -msse2 -mfpmath=sse -fomit-frame-pointer" 28 | export CHOST="i686-pc-linux-gnu" 29 | export CXXFLAGS="${CFLAGS}" 30 | export MAKEOPTS="-j2" 31 | 32 | export MANPAGER=vimmanpager 33 | export EDITOR=gvim 34 | 35 | # aliases 36 | alias ..="cd .." 37 | alias ls="ls --color=auto" 38 | alias ll="ls --color=auto -la" 39 | alias grep="grep --colour=auto" 40 | alias fgrep="fgrep --colour=auto" 41 | alias man="LANG=C man" 42 | alias ri="ri -Tf ansi" 43 | alias s="screen" 44 | alias irb="irb --readline -r irb/completion" 45 | alias e="$EDITOR" 46 | alias up="paludis --dl-downgrade as-needed --show-reasons full -i --continue-on-failure if-satisfied --dl-reinstall if-use-changed --dl-reinstall-scm weekly world" 47 | 48 | -------------------------------------------------------------------------------- /EFI/boot/startup-fallback.nsh: -------------------------------------------------------------------------------- 1 | startup.nsh -fallback 2 | 3 | -------------------------------------------------------------------------------- /EFI/boot/startup-single.nsh: -------------------------------------------------------------------------------- 1 | startup.nsh "" single 2 | -------------------------------------------------------------------------------- /EFI/boot/startup.nsh: -------------------------------------------------------------------------------- 1 | # arguments 2 | # %1: use vmlinuz-linux%1 image 3 | # %2...: kernel arguments 4 | @echo -off 5 | 6 | set fs fs0 7 | set root UUID=7d9e23a7-593b-40d2-a628-8e9874c7a3b0 8 | set args "usbcore.autosuspend=5 i915.modeset=1 quiet init=/usr/lib/systemd/systemd initrd=\initramfs-linux%1.img %2 %3 %4 %5 %6 %7 %8 %9" 9 | 10 | %fs%: 11 | cd %fs%:\ 12 | 13 | if exist vmlinuz-linux then 14 | echo "Updating Linux Kernel from %fs%:\vmlinuz-linux%1" 15 | rm vmlinuz-linux%1.efi 16 | mv vmlinuz-linux%1 vmlinuz-linux%1.efi 17 | endif 18 | 19 | echo "Launching Linux Kernel %fs%:\vmlinuz-linux%1.efi" 20 | vmlinuz-linux%1.efi root=%root% ro %args% 21 | 22 | -------------------------------------------------------------------------------- /LIST: -------------------------------------------------------------------------------- 1 | ~/.ansible.cfg 2 | ~/.config/alacritty.yml 3 | ~/.config/ansible-review/ 4 | ~/.config/fd/ 5 | ~/.config/fish 6 | ~/.config/fontconfig/fonts.conf 7 | ~/.config/foot/foot.ini 8 | ~/.config/gdb/gdbinit 9 | ~/.config/git/ 10 | ~/.config/gtk-3.0/settings.ini gtk-3.0/ 11 | ~/.config/helix/ 12 | ~/.config/hypr/ 13 | ~/.config/kitty/kitty.conf 14 | ~/.config/kwinrc 15 | ~/.config/nvim/ 16 | ~/.config/mako/config mako/ 17 | ~/.config/openbox/ 18 | ~/.config/qt5ct/ 19 | ~/.config/ripgreprc 20 | ~/.config/sway/ 21 | ~/.config/swaync/ 22 | ~/.config/tig/ 23 | ~/.config/tmux/tmux.conf 24 | ~/.config/waybar/ 25 | ~/.config/xitomatl/xitomatl.ini 26 | ~/.config/xkb/ 27 | ~/.config/qutebrowser/autoconfig.yml qutebrowser/ 28 | ~/.config/qutebrowser/greasemonkey/ qutebrowser/ 29 | ~/.config/yamllint/ 30 | ~/.fakevimrc 31 | ~/.local/share/konsole/Screen.profile konsole 32 | ~/.mozilla/firefox/*/chrome/userChrome.css firefox 33 | ~/.p10k.zsh 34 | ~/.vimrc 35 | ~/.zshrc 36 | ~/dev/bin/ 37 | ~/dev/colors/ 38 | ~/dev/menus/*.sh menus/ 39 | /usr/lib/udev/keymaps/microsoft-ergonomic-keyboard udev/keymaps/microsoft-ergonomic-keyboard 40 | /usr/lib/udev/rules.d/95-keymap.rules udev/rules.d/95-keymap.rules 41 | -------------------------------------------------------------------------------- /Materia-gtk-3.0.css.patch: -------------------------------------------------------------------------------- 1 | --- /usr/share/themes/Materia/gtk-3.0/gtk.css 2020-09-16 21:20:46.000000000 +0200 2 | +++ Materia-gtk-3.0.css 2020-11-16 19:16:53.950819795 +0100 3 | @@ -1,3 +1,8 @@ 4 | +/** 5 | + * Contains some scrollbar fixes for Firefox. 6 | + * 7 | + * The original scrollbar has low contrast and is too bright on dark pages. 8 | + */ 9 | @keyframes ripple { 10 | to { 11 | background-size: 1000% 1000%; 12 | @@ -2384,7 +2389,7 @@ 13 | */ 14 | scrollbar { 15 | transition: all 75ms cubic-bezier(0, 0, 0.2, 1); 16 | - background-color: #fff; 17 | + background-color: #333; 18 | } 19 | 20 | * { 21 | @@ -2393,19 +2398,19 @@ 22 | } 23 | 24 | scrollbar.top { 25 | - border-bottom: 1px solid rgba(0, 0, 0, 0.12); 26 | + border-bottom: 0px solid rgba(0, 0, 0, 0.12); 27 | } 28 | 29 | scrollbar.bottom { 30 | - border-top: 1px solid rgba(0, 0, 0, 0.12); 31 | + border-top: 0px solid rgba(0, 0, 0, 0.12); 32 | } 33 | 34 | scrollbar.left { 35 | - border-right: 1px solid rgba(0, 0, 0, 0.12); 36 | + border-right: 0px solid rgba(0, 0, 0, 0.12); 37 | } 38 | 39 | scrollbar.right { 40 | - border-left: 1px solid rgba(0, 0, 0, 0.12); 41 | + border-left: 0px solid rgba(0, 0, 0, 0.12); 42 | } 43 | 44 | scrollbar slider { 45 | @@ -2415,15 +2420,15 @@ 46 | border: 4px solid transparent; 47 | border-radius: 9999px; 48 | background-clip: padding-box; 49 | - background-color: rgba(0, 0, 0, 0.38); 50 | + background-color: rgba(0, 150, 255, 0.8); 51 | } 52 | 53 | scrollbar slider:hover { 54 | - background-color: rgba(0, 0, 0, 0.6); 55 | + background-color: rgba(255, 0, 0, 1.0); 56 | } 57 | 58 | scrollbar slider:active { 59 | - background-color: rgba(0, 0, 0, 0.87); 60 | + background-color: rgba(255, 0, 0, 1.0); 61 | } 62 | 63 | scrollbar slider:disabled { 64 | -------------------------------------------------------------------------------- /NetworkManager/conf.d/00-iwd.conf: -------------------------------------------------------------------------------- 1 | # https://iwd.wiki.kernel.org/networkmanager 2 | [device] 3 | wifi.backend=iwd 4 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hluk/config/3d8d34160d15d0c2d5ee82e202bcd82448103822/README -------------------------------------------------------------------------------- /_update.awk: -------------------------------------------------------------------------------- 1 | #!/bin/awk -f 2 | # update all files from LIST 3 | BEGIN { 4 | gitpath = ENVIRON["PWD"] 5 | } 6 | 7 | { 8 | from = $1 9 | to = gitpath 10 | if( $2 ){ 11 | to = to "/" $2 12 | system("mkdir -p " to) 13 | } 14 | system("cp --verbose --update --recursive --dereference " from " " to) 15 | } 16 | 17 | -------------------------------------------------------------------------------- /ansible-review/config.ini: -------------------------------------------------------------------------------- 1 | [rules] 2 | standards = /home/lholecek/dev/ansible/ansible-review-redhat 3 | lint = ansible-lint 4 | -------------------------------------------------------------------------------- /awesome/theme.lua: -------------------------------------------------------------------------------- 1 | --------------------------- 2 | -- Default awesome theme -- 3 | --------------------------- 4 | 5 | theme = {} 6 | 7 | theme.font = "Ubuntu 9" 8 | --theme.font = "Aller bold 9.2" 9 | --theme.font = "Envy Code R 9" 10 | --theme.font = "Yanone Kaffeesatz 10" 11 | --theme.font = "Forgotten Futurist bold 8" 12 | 13 | theme.bg_normal = "#333333" 14 | theme.bg_focus = "#00aaff" 15 | theme.bg_urgent = "#ff0000" 16 | theme.bg_minimize = "#444444" 17 | 18 | theme.fg_normal = "#ffffff" 19 | theme.fg_focus = "#000000" 20 | theme.fg_urgent = "#ffffff" 21 | theme.fg_minimize = "#ffffff" 22 | 23 | theme.border_width = "3" 24 | theme.border_normal = "#000000" 25 | theme.border_focus = "#00aaff" 26 | theme.border_marked = "#ff0000" 27 | 28 | -- There are other variable sets 29 | -- overriding the default one when 30 | -- defined, the sets are: 31 | -- [taglist|tasklist]_[bg|fg]_[focus|urgent] 32 | -- titlebar_[bg|fg]_[normal|focus] 33 | -- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color] 34 | -- mouse_finder_[color|timeout|animate_timeout|radius|factor] 35 | -- Example: 36 | --theme.taglist_bg_focus = "#ff0000" 37 | 38 | -- Display the taglist squares 39 | theme.taglist_squares_sel = "/usr/share/awesome/themes/default/taglist/squarefw.png" 40 | theme.taglist_squares_unsel = "/usr/share/awesome/themes/default/taglist/squarew.png" 41 | 42 | theme.tasklist_floating_icon = "/usr/share/awesome/themes/default/tasklist/floatingw.png" 43 | 44 | -- Variables set for theming the menu: 45 | -- menu_[bg|fg]_[normal|focus] 46 | -- menu_[border_color|border_width] 47 | theme.menu_submenu_icon = "/usr/share/awesome/themes/default/submenu.png" 48 | theme.menu_height = "10" 49 | theme.menu_width = "100" 50 | 51 | -- You can add as many variables as 52 | -- you wish and access them by using 53 | -- beautiful.variable in your rc.lua 54 | --theme.bg_widget = "#cc0000" 55 | 56 | -- Define the image to load 57 | theme.titlebar_close_button_normal = "/usr/share/awesome/themes/default/titlebar/close_normal.png" 58 | theme.titlebar_close_button_focus = "/usr/share/awesome/themes/default/titlebar/close_focus.png" 59 | 60 | theme.titlebar_ontop_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/ontop_normal_inactive.png" 61 | theme.titlebar_ontop_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/ontop_focus_inactive.png" 62 | theme.titlebar_ontop_button_normal_active = "/usr/share/awesome/themes/default/titlebar/ontop_normal_active.png" 63 | theme.titlebar_ontop_button_focus_active = "/usr/share/awesome/themes/default/titlebar/ontop_focus_active.png" 64 | 65 | theme.titlebar_sticky_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/sticky_normal_inactive.png" 66 | theme.titlebar_sticky_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/sticky_focus_inactive.png" 67 | theme.titlebar_sticky_button_normal_active = "/usr/share/awesome/themes/default/titlebar/sticky_normal_active.png" 68 | theme.titlebar_sticky_button_focus_active = "/usr/share/awesome/themes/default/titlebar/sticky_focus_active.png" 69 | 70 | theme.titlebar_floating_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/floating_normal_inactive.png" 71 | theme.titlebar_floating_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/floating_focus_inactive.png" 72 | theme.titlebar_floating_button_normal_active = "/usr/share/awesome/themes/default/titlebar/floating_normal_active.png" 73 | theme.titlebar_floating_button_focus_active = "/usr/share/awesome/themes/default/titlebar/floating_focus_active.png" 74 | 75 | theme.titlebar_maximized_button_normal_inactive = "/usr/share/awesome/themes/default/titlebar/maximized_normal_inactive.png" 76 | theme.titlebar_maximized_button_focus_inactive = "/usr/share/awesome/themes/default/titlebar/maximized_focus_inactive.png" 77 | theme.titlebar_maximized_button_normal_active = "/usr/share/awesome/themes/default/titlebar/maximized_normal_active.png" 78 | theme.titlebar_maximized_button_focus_active = "/usr/share/awesome/themes/default/titlebar/maximized_focus_active.png" 79 | 80 | -- You can use your own command to set your wallpaper 81 | theme.wallpaper_cmd = { "sh -c 'sleep 5 && /home/lukas/dev/bin/set_wallpaper.sh'" } 82 | 83 | -- You can use your own layout icons like this: 84 | theme.layout_fairh = "/usr/share/awesome/themes/default/layouts/fairhw.png" 85 | theme.layout_fairv = "/usr/share/awesome/themes/default/layouts/fairvw.png" 86 | theme.layout_floating = "/usr/share/awesome/themes/default/layouts/floatingw.png" 87 | theme.layout_magnifier = "/usr/share/awesome/themes/default/layouts/magnifierw.png" 88 | theme.layout_max = "/usr/share/awesome/themes/default/layouts/maxw.png" 89 | theme.layout_fullscreen = "/usr/share/awesome/themes/default/layouts/fullscreenw.png" 90 | theme.layout_tilebottom = "/usr/share/awesome/themes/default/layouts/tilebottomw.png" 91 | theme.layout_tileleft = "/usr/share/awesome/themes/default/layouts/tileleftw.png" 92 | theme.layout_tile = "/usr/share/awesome/themes/default/layouts/tilew.png" 93 | theme.layout_tiletop = "/usr/share/awesome/themes/default/layouts/tiletopw.png" 94 | theme.layout_spiral = "/usr/share/awesome/themes/default/layouts/spiralw.png" 95 | theme.layout_dwindle = "/usr/share/awesome/themes/default/layouts/dwindlew.png" 96 | 97 | theme.awesome_icon = "/usr/share/awesome/icons/awesome16.png" 98 | 99 | return theme 100 | 101 | -------------------------------------------------------------------------------- /bin/android-disable-apps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # A nicer and more thorough alternative is: 3 | # https://github.com/0x192/universal-android-debloater 4 | # 5 | # $ sudo dnf install android-tools 6 | # 7 | # Click 7 times on Build Number under About. 8 | # 9 | # Enable "Wireless debugging" in Developer options. 10 | # 11 | # Select option "Pair device with pairing code". 12 | # 13 | # Run following commands (note that the ports will change on the phone): 14 | # 15 | # adb pair ipaddr:port1 code 16 | # adb connect ipaddr:port2 17 | # 18 | # List user installed packages: 19 | # 20 | # adb shell cmd package list packages -3 21 | # 22 | # Print help: 23 | # 24 | # adb shell cmd package help 25 | set -ex 26 | 27 | disable=( 28 | com.android.chrome 29 | 30 | com.facebook.appmanager 31 | com.facebook.katana 32 | com.facebook.services 33 | com.facebook.system 34 | 35 | com.samsung.android.bixby.service 36 | com.samsung.android.app.settings.bixby 37 | 38 | com.microsoft.appmanager 39 | com.microsoft.skydrive 40 | ) 41 | 42 | for app in "${disable[@]}"; do 43 | adb shell pm disable-user $app || true 44 | done 45 | -------------------------------------------------------------------------------- /bin/ansible-template.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Usage: ansible-template.sh -e '{var: value}' < template.j2 3 | set -euo pipefail 4 | 5 | playbook=$(cat <%artist %song') 4 | 5 | echo "naughty.notify({ text = '$TEXT', icon=\"/usr/share/icons/gnome/48x48/apps/gnome-audio.png\", icon_size=48 })" | awesome-client 6 | 7 | -------------------------------------------------------------------------------- /bin/backup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -exuo pipefail 3 | 4 | files=( 5 | ~/.config/copyq 6 | ~/.local/share/copyq/copyq/items 7 | ~/.config/keepassxc.kdbx 8 | ~/.gmailctl/config.jsonnet 9 | ~/.gnupg 10 | ~/.ssh 11 | ) 12 | 13 | date=$(date --iso-8601) 14 | output=~/Documents/backup/backup-$date.7z 15 | 16 | 7z a -p "$output" "${files[@]}" 17 | 18 | echo "Backup: $output" 19 | -------------------------------------------------------------------------------- /bin/bluetooth.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -exuo pipefail 3 | 4 | if [[ ${1:-} == 0 ]]; then 5 | echo "Blocking bluetooth" 6 | command=block 7 | else 8 | echo "Unblocking bluetooth" 9 | command=unblock 10 | fi 11 | 12 | ids=$( 13 | rfkill -J -o ID,TYPE list | 14 | jq -r '.rfkilldevices[] | select(.type=="bluetooth") | .id' 15 | ) 16 | 17 | rfkill $command $ids 18 | -------------------------------------------------------------------------------- /bin/brave.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #chromium --proxy-server=localhost:8118 --enable-greasemonkey --enable-user-scripts --enable-extensions --enable-plugins --enable-sync "$@" 3 | #chromium --enable-greasemonkey --enable-user-scripts --enable-extensions --enable-plugins --enable-sync "$@" 4 | #chromium "$@" 5 | 6 | export LIBVA_DRIVER_NAME=iHD 7 | export SDL_VIDEODRIVER=wayland 8 | args=( 9 | #--enable-features=UseOzonePlatform 10 | --ozone-platform=wayland 11 | #--ozone-platform=x11 12 | #--ozone-platform-hint=auto 13 | 14 | --ignore-gpu-blocklist 15 | --enable-gpu-rasterization 16 | --enable-zero-copy 17 | --disable-gpu-driver-bug-workarounds 18 | --enable-accelerated-video-decode 19 | --enable-features=VaapiVideoDecoder 20 | # --use-gl=egl 21 | --use-gl=angle 22 | 23 | --enable-gpu 24 | --enable-gpu-memory-buffer-video-frames 25 | --enable-accelerated-2d-canvas 26 | --enable-accelerated-vpx-decode 27 | --enable-native-gpu-memory-buffers 28 | --gpu-no-context-lost 29 | # --in-process-gpu 30 | ) 31 | exec flatpak run com.brave.Browser "${args[@]}" 32 | -------------------------------------------------------------------------------- /bin/browser.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # exec firefox "$@" &>/dev/null 3 | exec flatpak run io.gitlab.librewolf-community "$@" &>/dev/null 4 | -------------------------------------------------------------------------------- /bin/calc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export EDITOR="gvim -f" 3 | /usr/bin/ipython -pylab -noconfirm_exit -nobanner -cache_size 10000 4 | #cd ~/dev/calc && R --save 5 | 6 | -------------------------------------------------------------------------------- /bin/chromium.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #chromium --proxy-server=localhost:8118 --enable-greasemonkey --enable-user-scripts --enable-extensions --enable-plugins --enable-sync "$@" 3 | #chromium --enable-greasemonkey --enable-user-scripts --enable-extensions --enable-plugins --enable-sync "$@" 4 | #chromium "$@" 5 | 6 | export PROFILE=${PROFILE:-} 7 | export LIBVA_DRIVER_NAME=iHD 8 | export SDL_VIDEODRIVER=wayland 9 | args=( 10 | --enable-features=UseOzonePlatform 11 | --ozone-platform=wayland 12 | #--ozone-platform=x11 13 | #--ozone-platform-hint=auto 14 | 15 | # --user-data-dir="$HOME/work/chromium-profile$PROFILE" 16 | --ignore-gpu-blocklist 17 | --enable-gpu-rasterization 18 | --enable-zero-copy 19 | --disable-gpu-driver-bug-workarounds 20 | --enable-accelerated-video-decode 21 | --enable-features=VaapiVideoDecoder 22 | --use-gl=egl 23 | 24 | --enable-gpu 25 | --enable-gpu-memory-buffer-video-frames 26 | --enable-accelerated-2d-canvas 27 | --enable-accelerated-vpx-decode 28 | --enable-native-gpu-memory-buffers 29 | --gpu-no-context-lost 30 | --disable-infobars 31 | # --no-sandbox 32 | --window-position="0,0" 33 | --no-first-run 34 | # --in-process-gpu 35 | --fullscreen 36 | # --kiosk 37 | 38 | --disable-features=UserAgentClientHint 39 | 40 | # "https://play.geforcenow.com/mall/#/layout/games/gameSectionGrid?search=false" 41 | #https://www.netflix.com/browse/my-list 42 | ) 43 | #exec gamemoderun chromium-freeworld "${args[@]}" "$@" 44 | #exec gamescope -r 60 -w 1920 -h 1080 -f -- chromium-freeworld "${args[@]}" "$@" 45 | # chromium-browser "${args[@]}" "$@" 46 | flatpak run com.brave.Browser "${args[@]}" "$@" 47 | -------------------------------------------------------------------------------- /bin/chroot-wheezy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # right way for export Xauthority file 3 | xauth extract /srv/chroot/wheezy/$HOME/.Xauthority $DISPLAY 4 | # run your command 5 | schroot -c wheezy 6 | # remove the Xauthority 7 | rm -f /srv/chroot/wheezy/$HOME/.Xauthority 8 | 9 | -------------------------------------------------------------------------------- /bin/clipboard.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | version=release 5 | rundir=~/dev/build/copyq 6 | cmd=$rundir/$version/copyq 7 | # if [[ ! -f "$cmd" ]]; then 8 | # cmd=/usr/bin/copyq 9 | # fi 10 | 11 | # Workaround for bug in Qt 5.14.2. 12 | # https://bugreports.qt.io/browse/QTBUG-84363 13 | #export QV4_FORCE_INTERPRETER=1 14 | 15 | export QT_LOGGING_RULES="*.debug=true;qt.*.debug=false" 16 | export COPYQ_LOG_LEVEL=debug 17 | export COPYQ_DEFAULT_ICON=1 18 | 19 | #export QT_QPA_PLATFORMTHEME=qt5ct 20 | #export QT_STYLE_OVERRIDE=kvantum 21 | 22 | [ "$version" = "debug" ] && ulimit -c unlimited 23 | 24 | if [ $# -gt 1 ]; then 25 | exec "$cmd" "$@" 26 | else 27 | cd "$rundir" 28 | "$cmd" toggle || "$cmd" --start-server show 29 | fi &>/dev/null 30 | 31 | -------------------------------------------------------------------------------- /bin/command_popup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | Shows simple popup for focusing windows. 4 | """ 5 | import os 6 | import sys 7 | 8 | from pathlib import Path 9 | 10 | from PySide2.QtCore import ( 11 | QEvent, 12 | Qt, 13 | QThread, 14 | Signal, 15 | ) 16 | from PySide2.QtWidgets import ( 17 | QApplication, 18 | QLabel, 19 | QStyle, 20 | ) 21 | 22 | import focus 23 | 24 | STYLE_SHEET = """ 25 | background-color: black; 26 | color: white; 27 | padding: 1em; 28 | font-size: 14pt; 29 | """ 30 | 31 | TEXT = """ 32 | Q - Terminal 33 | W - Web Browser 34 | E - IDE 35 | X - EXIT 36 | ESC - Hide 37 | """ 38 | 39 | FIFO = f"{Path.home()}/.command_popup" 40 | 41 | 42 | class Popup(QLabel): 43 | def __init__(self, parent=None): 44 | super().__init__(parent) 45 | self.setWindowFlag(Qt.FramelessWindowHint) 46 | self.setWindowFlag(Qt.WindowStaysOnTopHint) 47 | 48 | self.setStyleSheet(STYLE_SHEET) 49 | self.setText(TEXT) 50 | self.adjustSize() 51 | 52 | self.setGeometry( 53 | QStyle.alignedRect( 54 | Qt.LeftToRight, 55 | Qt.AlignCenter, 56 | self.size(), 57 | self.screen().availableGeometry() 58 | ) 59 | ) 60 | 61 | def popup(self): 62 | self.show() 63 | self.raise_() 64 | self.activateWindow() 65 | QApplication.setActiveWindow(self) 66 | 67 | def keyPressEvent(self, ev): 68 | if ev.modifiers() == Qt.NoModifier: 69 | if ev.key() == Qt.Key_Q: 70 | focus.open_terminal(desktop=1) 71 | elif ev.key() == Qt.Key_W: 72 | focus.open_web(desktop=1) 73 | elif ev.key() == Qt.Key_E: 74 | focus.open_devel(desktop=1) 75 | elif ev.key() == Qt.Key_X: 76 | QApplication.exit() 77 | 78 | self.hide() 79 | return 80 | 81 | return super().keyPressEvent(ev) 82 | 83 | def mousePressEvent(self, ev): 84 | QApplication.exit() 85 | return super().mousePressEvent(ev) 86 | 87 | def event(self, ev): 88 | if ev.type() == QEvent.WindowDeactivate: 89 | self.hide() 90 | 91 | return super().event(ev) 92 | 93 | 94 | class PipeReader(QThread): 95 | line = Signal(str) 96 | 97 | def run(self): 98 | while True: 99 | print("Waiting for command...") 100 | with open(FIFO, "r") as fifo: 101 | cmd = fifo.readline().strip() 102 | print(f"Received command: {cmd!r}") 103 | if cmd == "focus": 104 | self.line.emit(cmd) 105 | elif cmd == "exit": 106 | break 107 | 108 | 109 | def send_command(cmd): 110 | print(f"Sending command: {cmd}") 111 | with open(FIFO, "w") as fifo: 112 | fifo.write(f"{cmd}\n") 113 | 114 | 115 | def main(): 116 | want_focus = len(sys.argv) == 1 117 | if want_focus and Path(FIFO).is_fifo(): 118 | send_command("focus") 119 | sys.exit() 120 | 121 | try: 122 | os.mkfifo(FIFO) 123 | except FileExistsError: 124 | pass 125 | 126 | try: 127 | app = QApplication(sys.argv) 128 | app.setApplicationName("command_window") 129 | app.setQuitOnLastWindowClosed(False) 130 | 131 | popup = Popup() 132 | 133 | pipe = PipeReader() 134 | pipe.line.connect(popup.popup) 135 | pipe.start() 136 | 137 | if want_focus: 138 | popup.popup() 139 | 140 | exit_code = app.exec_() 141 | send_command("exit") 142 | pipe.wait() 143 | sys.exit(exit_code) 144 | except BaseException: 145 | os.unlink(FIFO) 146 | raise 147 | 148 | 149 | if __name__ == '__main__': 150 | main() 151 | -------------------------------------------------------------------------------- /bin/console.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec kitty --start-as=maximized -- "$@" 3 | #exec gnome-terminal --wait --maximize --hide-menubar -- "$@" 4 | #exec foot --maximized "$@" 5 | #exec konsole --hide-tabbar --hide-menubar --profile Screen -e "$@" 6 | #exec st -f 'Fira Mono:size=11' -g 200x200 -e "$*" 7 | #exec xfce4-terminal --hide-menubar --hide-borders --hide-scrollbar --maximize -e "$*" 8 | #exec urxvt -icon /usr/share/icons/Tango/scalable/apps/terminal.svg -tn rxvt-256color -e "$*" 9 | #exec sakura -e "$*" 10 | #exec xterm -e "$*" 11 | #exec Terminal -e "$*" 12 | #exec alacritty -e bash -c "$*" 13 | -------------------------------------------------------------------------------- /bin/coverity.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | coverity_path=$HOME/apps/cov-analysis-linux64-7.5.0/bin 3 | export PATH=$coverity_path:$PATH 4 | 5 | set -e 6 | cov-build --dir cov-int "$@" 7 | tar czvf myproject.tgz cov-int 8 | -------------------------------------------------------------------------------- /bin/cppcheck.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cppcheck --enable=all --force --inline-suppr -q -I include "$@" . 3 | -------------------------------------------------------------------------------- /bin/dependabot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Helps to merge all dependabot commits into a single one in git repository 3 | # cloned in the current directory. 4 | set -euo pipefail 5 | 6 | branch="update-dependencies" 7 | 8 | update_dependencies() { 9 | if ! poetry update; then 10 | echo "Warning: Replacing lock file" 11 | rm -f poetry.lock 12 | poetry lock 13 | fi 14 | poetry install --no-root 15 | } 16 | 17 | cherry_pick() { 18 | git cherry-pick "$1" || { 19 | git checkout HEAD^ poetry.lock 20 | git mergetool 21 | git cherry-pick --continue --no-edit || git cherry-pick --skip 22 | } 23 | git checkout HEAD^ poetry.lock 24 | update_dependencies 25 | git add poetry.lock 26 | git commit --squash=HEAD^ --amend --no-edit --allow-empty 27 | } 28 | 29 | get_main_branch() { 30 | if git branch | grep -qw main; then 31 | echo main 32 | elif git branch | grep -qw develop; then 33 | echo develop 34 | else 35 | echo master 36 | fi 37 | } 38 | 39 | get_upstream_remote_name() { 40 | if git remote | grep -qw upstream; then 41 | echo upstream 42 | else 43 | echo origin 44 | fi 45 | } 46 | 47 | main=$(get_main_branch) 48 | remote=$(get_upstream_remote_name) 49 | 50 | git fetch --prune "$remote" 51 | git checkout "$remote/$main" 52 | git checkout -b "$branch" 53 | 54 | poetry install --no-root 55 | git commit --allow-empty --message "Update dependencies" 56 | 57 | for branch in $(git branch --remote --list "$remote/dependabot/*" "$remote/pre-commit-ci-update-config"); do 58 | cherry_pick "$branch" 59 | done 60 | 61 | git rebase --interactive --autosquash "$remote/$main" 62 | -------------------------------------------------------------------------------- /bin/docker-x11.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Runs docker image with access to current X11 session 3 | # allowing to run GUI apps from docker. 4 | xsock=/tmp/.X11-unix 5 | xauth=/tmp/.docker.xauth 6 | 7 | touch "$xauth" 8 | xauth nlist :0 | sed -e 's/^..../ffff/' | xauth -f "$xauth" nmerge - 9 | 10 | docker run -it --rm \ 11 | -e DISPLAY=$DISPLAY \ 12 | -e XAUTHORITY=$xauth \ 13 | -v "$xsock:$xsock" \ 14 | -v "$xauth:$xauth" \ 15 | "$@" 16 | -------------------------------------------------------------------------------- /bin/docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | distro=${1:-"ubuntu:14.04"} 3 | shift 4 | 5 | sudo docker run -t -i "$distro" "$@" 6 | -------------------------------------------------------------------------------- /bin/editor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [[ -f poetry.lock ]]; then 3 | export PATH="$HOME/.local/bin:$PATH" 4 | cmd="poetry run" 5 | fi 6 | 7 | #exec $cmd hx "$@" 8 | exec $cmd nvim "$@" 9 | #exec $cmd zed --foreground "$@" 10 | #exec $cmd ~/.local/bin/lvim "$@" 11 | -------------------------------------------------------------------------------- /bin/feb.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # browse images given as parameter or images in current directory 3 | test $# -eq 0 && ARGS=. || ARGS=("$@") 4 | 5 | # THUMBS != "" => thumbnail mode 6 | THUMBS=${THUMBS:-} 7 | FONT="$HOME/dev/magic/font/ --font MatrixB_cs/13" 8 | #FONT="$HOME/.fonts/ --font Fertigo_PRO.otf/11" 9 | 10 | if [ -n "$THUMBS" ] 11 | then 12 | ARG="--fontpath $FONT -t -y 320 -E 320 -W 1950" 13 | else 14 | ARG="-F" 15 | fi 16 | 17 | # ACTIONS 18 | # 1) move to selected picture directory 19 | ACTION1=' 20 | PIC_ROOT=$HOME/Pictures 21 | DEST=$($HOME/dev/menus/imgmenu.sh) || exit 1 22 | test -n "$DEST" && mv "%f" "$PIC_ROOT/$DEST/" 23 | ' 24 | # 2) open with firefox (for animated gif) 25 | ACTION2=' 26 | firefox "%f" 27 | ' 28 | # 3) det as wallpaper 29 | ACTION3=' 30 | $HOME/dev/img/set_wallpaper.sh "%f" 31 | ' 32 | # 9) delete file 33 | ACTION9=' 34 | (echo -e "yes\nno" | ~/dev/menus/menu.sh "DELETE \"%f\"?" | xargs test yes \=) && rm -f "%f" 35 | ' 36 | 37 | # COMMAND LINE 38 | feh $ARG -S filename --action1 "$ACTION1" --action2 "$ACTION2" --action3 "$ACTION3" --action9 "$ACTION9" "${ARGS[@]}" > /dev/null 2>&1 & 39 | 40 | -------------------------------------------------------------------------------- /bin/file_manager.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec nemo --no-desktop "$@" 3 | -------------------------------------------------------------------------------- /bin/fint_iptv.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | ''' 3 | File: find_iptv.py 4 | Author: Lukas Holecek (hluk@email.cz) 5 | Description: 6 | Find IPTV channel name (using VLC finds "Digital television service" 7 | stream name) for given URLs. 8 | ''' 9 | 10 | import sys 11 | import subprocess 12 | import re 13 | import select 14 | 15 | secs_wait = 10 16 | command = ''' 17 | cvlc --no-audio --no-video -vv 18 | --udp-caching 0 --http-caching 0 --mms-caching 0 --file-caching 0 --network-caching 0 --rtp-caching 0 --tcp-caching 0 19 | %s vlc://quit 20 | ''' 21 | 22 | re_channel = re.compile(r'^\[[^]]+\] ts demux debug:\s*- type=1 .*name=(.*)') 23 | 24 | def main(): 25 | for url in sys.argv[1:]: 26 | cmd = command % (url) 27 | name = None 28 | 29 | print(url, end="") 30 | sys.stdout.flush() 31 | 32 | p = subprocess.Popen(cmd.split(), stdout=None, stderr=subprocess.PIPE) 33 | while p.poll() is None and select.select([p.stderr], [], [], secs_wait)[0]: 34 | line = p.stderr.readline() 35 | m = re_channel.match(line.decode()) 36 | if m: 37 | name = m.group(1) 38 | break 39 | if p.poll() is None: 40 | p.kill() 41 | 42 | if name: 43 | print(" "+name) 44 | else: 45 | print() 46 | 47 | if __name__ == '__main__': 48 | main() 49 | 50 | -------------------------------------------------------------------------------- /bin/fix_kde_bold_fonts.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Fixes bold fonts in KDE. 3 | # See: https://bugs.kde.org/show_bug.cgi?id=378523 4 | sed -i 's/,Regular//' \ 5 | ~/.config/kdeglobals \ 6 | ~/.config/kateschemarc \ 7 | ~/.config/konsolerc \ 8 | ~/.local/share/konsole/*.profile 9 | -------------------------------------------------------------------------------- /bin/flamegraph.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Creates flamegraph from perf profile. 3 | # Uses https://github.com/brendangregg/FlameGraph 4 | set -exuo pipefail 5 | 6 | flamegraph=${FLAMEGRAPH:-~/dev/FlameGraph/} 7 | browser=${BROWSER:-firefox} 8 | frequency=${FREQUENCY:-99} 9 | width=${WIDTH:-2000} 10 | 11 | perf_samples="perf_samples.svg" 12 | 13 | record() { 14 | perf record -g --call-graph dwarf -F "$frequency" -- "$@" 15 | } 16 | 17 | create_flamegraph() { 18 | perf script | 19 | "$flamegraph/stackcollapse-perf.pl" | 20 | "$flamegraph/flamegraph.pl" --width "$width" > "$perf_samples" 21 | } 22 | 23 | show_flamegraph() { 24 | "$browser" "$perf_samples" 25 | } 26 | 27 | if [[ $# -gt 1 ]]; then 28 | record "$@" 29 | fi 30 | 31 | create_flamegraph 32 | show_flamegraph 33 | 34 | -------------------------------------------------------------------------------- /bin/flash.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | HELP="Download flash videos from specified URLs or from URLs in clipboard.\n" 3 | #CMD=youtube-dl 4 | CMD=~/apps/get-flash-videos/get_flash_videos 5 | #CMD2=~/apps/get-flash-videos/list_flash_videos 6 | DIR=~/down/_flash 7 | CURLLIMIT="" 8 | CURLARGS="--silent" 9 | 10 | # default {VARIABLE} [value] 11 | # set default value of variable (do not override if exists) 12 | default () { 13 | eval "$1=\${$1:-'$2'}" 14 | HELP="$HELP $1 = $2\n$(cat)\n" 15 | } 16 | 17 | default PLAY 1 <<. 18 | play video 19 | . 20 | default PLAYER smplayer <<. 21 | video player command 22 | . 23 | default PLAYLIST 0 <<. 24 | download all items in youtube playlist 25 | if ends with .m3u then items are saved to m3u file 26 | . 27 | default SKIP 0 <<. 28 | number of items to skip in playlist 29 | . 30 | default M3U "" <<. 31 | M3U playlist filename 32 | . 33 | 34 | is_running () { 35 | #ps -ho '%c' | grep -q "$1" 36 | pgrep "$1" >/dev/null 37 | } 38 | 39 | if [[ "$1" =~ ^(|-|--)(h|help|\?)$ ]] 40 | then 41 | exec printf "$HELP" 42 | fi 43 | 44 | # URLS (or search terms) from arguments or X11 clipboard 45 | if [ -n "$1" ] 46 | then 47 | URLS=$@ 48 | else 49 | #URLS=`xclip -o` 50 | URLS=`~/dev/build/copyq/debug/copyq read` 51 | fi 52 | 53 | if [[ "$PLAYLIST" = "1" || -n "$M3U" ]] 54 | then 55 | PLAY=0 56 | if [ -n "$CURLLIMIT" ] 57 | then 58 | CURLARGS="$CURLARGS --limit-rate $CURLLIMIT" 59 | fi 60 | URLS=`curl $CURLARGS $URLS | sed -rn '/data-video-ids=/{s/.*data-video-ids="/,/;s/".*//;s_,([^,]*)_http://www.youtube.com/watch?v=\1 _g;p}' | tail -1 | tr ' ' \\\\n | tail -n +$((SKIP+1))` 61 | fi 62 | 63 | if [ -n "$M3U" ] 64 | then 65 | #"$CMD2" $URLS 66 | #mv playlist.m3u "$M3U" 67 | echo "$URLS" > "$M3U" 68 | exit 69 | fi 70 | 71 | mkdir -p "$DIR" || exit 1 72 | while [ $? -eq 0 ]; do 73 | args="$ARGS" 74 | if [ "$PLAY" = "1" ] && ! is_running "$PLAYER"; then 75 | PLAY=0 76 | args="$args --player '$PLAYER' --subtitles --play" 77 | fi 78 | 79 | ( 80 | cd "$DIR" && 81 | "$CMD" $args $URLS 82 | ) 83 | done 84 | 85 | -------------------------------------------------------------------------------- /bin/gconf-shortcut.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # sed -n 's/^##/.\/gconf-shortcut.sh /p' gconf-shortcut.sh|sh 3 | ## 1 /home/lukas/dev/bin/console.sh 'Q' 4 | ## 2 /home/lukas/dev/bin/browser.sh 'W' 5 | ## 3 "/home/lukas/dev/bin/red.sh +100" 'Right' 6 | ## 4 "/home/lukas/dev/bin/red.sh -100" 'Left' 7 | ## 5 "nautilus" 'E' 8 | 9 | if [ $# -eq 3 ]; then 10 | gconftool-2 \ 11 | -s /apps/metacity/keybinding_commands/command_"$1" --type=string "$2" \ 12 | -s /apps/metacity/global_keybindings/run_command_"$1" --type=string "$3" \ 13 | -s /desktop/gnome/keybindings/custom"$1"/action --type=string "${2/Mod4/Super}" \ 14 | -s /desktop/gnome/keybindings/custom"$1"/binding --type=string "${3/Mod4/Super}" 15 | elif [ $# -eq 2 ]; then 16 | gconftool-2 \ 17 | -u /apps/metacity/keybinding_commands/command_"$1" \ 18 | -u /apps/metacity/global_keybindings/run_command_"$1" \ 19 | -s /desktop/gnome/keybindings/custom"$1"/action \ 20 | -s /desktop/gnome/keybindings/custom"$1"/binding 21 | elif [ $# -eq 1 ]; then 22 | gconftool-2 \ 23 | -g /apps/metacity/keybinding_commands/command_"$1" \ 24 | -g /apps/metacity/global_keybindings/run_command_"$1" \ 25 | -g /desktop/gnome/keybindings/custom"$1"/action \ 26 | -g /desktop/gnome/keybindings/custom"$1"/binding 27 | else 28 | gconftool-2 -R /apps/metacity/keybinding_commands|sed -n '/^ command_.* = ./{s/ command_//p}' 29 | fi 30 | 31 | -------------------------------------------------------------------------------- /bin/git-drop-merged-branches.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Drops local git branches that have been merged. 3 | set -euo pipefail 4 | 5 | branches=$(git branch --merged | grep -Ev "(^\*|master|main|dev)") 6 | if [[ -z "$branches" ]]; then 7 | exit 0 8 | fi 9 | 10 | echo "Removing branches:" 11 | echo "$branches" 12 | 13 | echo 14 | read -p "Are you sure? [y/N] " -n 1 -r 15 | echo 16 | 17 | if [[ ! $REPLY =~ ^[Yy]$ ]] 18 | then 19 | exit 1 20 | fi 21 | 22 | xargs git branch -d <<< "$branches" 23 | -------------------------------------------------------------------------------- /bin/github_download_count.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import json 3 | import urllib.request 4 | 5 | user = 'hluk' 6 | repo = 'CopyQ' 7 | url = 'https://api.github.com/repos/{user}/{repo}/releases'.format(user=user, repo=repo) 8 | 9 | response = urllib.request.urlopen(url) 10 | data = response.read().decode('utf-8') 11 | 12 | releases = json.loads(data) 13 | for release in reversed(releases): 14 | release_name = release.get('name', '') 15 | print('{} {}'.format(repo, release_name)) 16 | assets = release['assets'] 17 | total = 0 18 | for asset in assets: 19 | asset_name = asset['name'] 20 | count = asset['download_count'] 21 | total += count 22 | print(' {:>8} {}'.format(count, asset_name)) 23 | print(' {:>8} (total)'.format(total)) 24 | -------------------------------------------------------------------------------- /bin/gup: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | if git branch --list main|grep -q .; then 5 | branch=main 6 | elif git branch --list develop|grep -q .; then 7 | branch=develop 8 | elif git branch --list master|grep -q .; then 9 | branch=master 10 | else 11 | branch=devel 12 | fi 13 | 14 | git checkout $branch && 15 | if git remote | grep -qw upstream; then 16 | git pull --rebase upstream $branch 17 | else 18 | git pull --rebase origin $branch 19 | fi 20 | -------------------------------------------------------------------------------- /bin/hotspot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu 3 | 4 | ssid=MagicWand2 5 | 6 | read -rp Password: -s password 7 | 8 | config=( 9 | autoconnect yes 10 | ssid "$ssid" 11 | ipv4.method shared 12 | 802-11-wireless.mode ap 13 | 14 | 802-11-wireless.band bg 15 | 16 | # 802-11-wireless.band a 17 | # 802-11-wireless.channel 149 18 | 19 | 802-11-wireless-security.key-mgmt wpa-psk 20 | 802-11-wireless-security.psk "$password" 21 | 802-11-wireless-security.proto rsn 22 | 802-11-wireless-security.group ccmp 23 | 802-11-wireless-security.pairwise ccmp 24 | ) 25 | 26 | nmcli connection delete "$ssid" || true 27 | 28 | nmcli connection add type wifi con-name "$ssid" "${config[@]}" 29 | 30 | nmcli con up "$ssid" 31 | -------------------------------------------------------------------------------- /bin/hw.mak: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | MOUSE_ID = "Genius Ergo Mouse" 3 | TOUCHPAD_ID = "ImPS/2 Generic Wheel Mouse" 4 | MONITORS = LVDS1 --mode 1366x768; HDMI1 --left-of LVDS1; HDMI1 --mode 1920x1080 --primary 5 | #MONITORS = LVDS1 --off; HDMI --primary 6 | # TODO: check if HDMI monitor is present 7 | 8 | LABEL = @printf '\n%s\n' 9 | 10 | all: keyboard mouse touchpad monitor 11 | 12 | start: 13 | $(LABEL) "Hardware setup script" 14 | @date 15 | 16 | monitor: start layout tray 17 | 18 | layout: start 19 | $(LABEL) "** setting monitor layout" 20 | -[ -n "$(MONITORS)" ] && \ 21 | $(subst ;,; xrandr --output ,xrandr --output $(MONITORS)) 22 | 23 | keyboard: start 24 | $(LABEL) "** setting keyboard" 25 | setxkbmap -model evdev us 26 | #xmodmap ~/.Xmodmap 27 | numlockx & 28 | xset r rate 200 40 29 | # menu key without autorepeat 30 | xset -r 135 31 | 32 | mouse: start 33 | $(LABEL) "** setting mouse" 34 | xinput set-prop $(MOUSE_ID) "Device Accel Constant Deceleration" 1 35 | 36 | touchpad: start 37 | $(LABEL) "** setting touchpad" 38 | xinput set-prop $(TOUCHPAD_ID) "Device Accel Profile" 3 39 | xinput set-prop $(TOUCHPAD_ID) "Device Accel Constant Deceleration" 1 40 | xinput set-prop $(TOUCHPAD_ID) "Device Accel Velocity Scaling" 20 41 | 42 | xbindkeys: start keyboard 43 | $(LABEL) "** restarting xbindkeys" 44 | killall -q xbindkeys; xbindkeys & 45 | 46 | wallpaper: start 47 | $(LABEL) "** setting wallpaper" 48 | ~/dev/bin/set_wallpaper.sh & 49 | 50 | tray: start 51 | #-killall -q stalonetray 52 | #~/apps/stalonetray/src/stalonetray -i 16 --background '#06a' & 53 | #~/apps/stalonetray/src/stalonetray -i 16 --background '#06a' --geometry 1x1-0+0 --grow-gravity E & 54 | #~/apps/stalonetray/src/stalonetray -i 16 --background black & 55 | 56 | 57 | -------------------------------------------------------------------------------- /bin/idle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | lock_after_minutes=20 3 | screen_off_after_minutes=25 4 | # https://github.com/swaywm/swayidle/blob/master/swayidle.1.scd 5 | pkill swayidle 6 | exec swayidle -w \ 7 | timeout $((lock_after_minutes * 60)) ~/dev/bin/lock.sh \ 8 | timeout $((screen_off_after_minutes * 60)) 'swaymsg "output * dpms off"' \ 9 | resume 'swaymsg "output * dpms on"' \ 10 | before-sleep ~/dev/bin/lock.sh 11 | -------------------------------------------------------------------------------- /bin/imagequick.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec ~/dev/imagequick/build/install/bin/imagequick "$@" 3 | -------------------------------------------------------------------------------- /bin/img/newimages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ $# -eq 0 ] 3 | then 4 | echo "Create zip file with pictures at most NUM days old." 5 | echo "USAGE: $0 NUM" 6 | exit 1 7 | fi 8 | 9 | (rm -f obrazky.zip && 10 | cd $HOME/Pictures && 11 | find . -cmin -$((60*24*$1)) -and -not \( \ 12 | -wholename './anime/*' -or -wholename './Magic the Gathering/*' -or -name obrazky.sh \) \ 13 | -and -not -type d -print0 | xargs -0 zip images.zip) || exit 2 14 | 15 | -------------------------------------------------------------------------------- /bin/img/quality_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | IMG="/home/lukas/wallpapers/Briefing_by_tsutsu_di.jpg" 3 | 4 | echo "--- Testing quality for \"$IMG\" ---" 5 | echo "* Input ... "$(/usr/bin/identify "$IMG") 6 | echo "* Resizing ..." 7 | 8 | # imagemagick 9 | /usr/bin/convert -resize 1280x1024^ "$IMG" "/home/lukas/dev/img/_test1.png" || exit 1 10 | 11 | # PIL 12 | python -c " 13 | import Image 14 | im = Image.open('$IMG') 15 | # strech 16 | #out = im.resize((1280,int(float(1280*im.size[1])/float(im.size[0]))),Image.BICUBIC) 17 | # fill 18 | out = im.resize((int(float(1024*im.size[0])/float(im.size[1])), 1024),Image.BICUBIC) 19 | out.save('/home/lukas/dev/img/_test2.png', 'PNG')" || exit 1 20 | 21 | /usr/bin/feh /home/lukas/dev/img/_test*.png 22 | rm /home/lukas/dev/img/_test*.png 23 | 24 | -------------------------------------------------------------------------------- /bin/invert_colors.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # switch between redshift and invert 3 | DIR=`dirname "$0"` 4 | killall redshift && sleep 0.5 && ~/dev/colors/invert || "$DIR/redshift.sh" 5 | 6 | -------------------------------------------------------------------------------- /bin/j2: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import yaml 3 | import os 4 | import sys 5 | 6 | import jinja2 7 | try: 8 | from ansible.template import AnsibleEnvironment as Environment 9 | except ImportError: 10 | Environment = jinja2.Environment 11 | 12 | template_dir = os.environ.get('TEMPLATES', 'templates') 13 | 14 | values = {} 15 | for arg in sys.argv[1:]: 16 | values.update(yaml.safe_load(arg)) 17 | 18 | loader = jinja2.FileSystemLoader(template_dir) 19 | env = Environment( 20 | loader=loader, 21 | undefined=jinja2.StrictUndefined, 22 | ) 23 | input = sys.stdin.read() 24 | template = env.from_string(input) 25 | template.stream(values).dump(sys.stdout) 26 | -------------------------------------------------------------------------------- /bin/kbd.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #setxkbmap -print|grep -q cz && setxkbmap us || setxkbmap cz 3 | # [shift + left alt] to toggle layout (alternative layout shown with 'scroll lock' LED) 4 | setxkbmap -layout us,cz -variant ,qwerty -option 'grp:alt_shift_toggle,grp_led:scroll' 5 | 6 | -------------------------------------------------------------------------------- /bin/keyboard.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eu 3 | 4 | # man 7 xkeyboard-config 5 | # ~/.config/xkb/symbols/custom 6 | msg=$(sed 's/^/input type:keyboard /' <) { 13 | if (/^Rxvt.(?[a-z]*)(?\d*)\s*:\s*rgb:(?..)\/(?..)\/(?..)/) { 14 | my $r = hex($+{r}); 15 | my $g = hex($+{g}); 16 | my $b = hex($+{b}); 17 | my $color="Color=$r,$g,$b\n\n"; 18 | if ($+{id} =~ /foreground/i) { 19 | print "[ForegroundIntense]\nColor=".intense($r,$g,$b)."\n\n"; 20 | print "[Foreground]\n"; 21 | } elsif ($+{id} =~ /background/i) { 22 | print "[BackgroundIntense]\nColor=".intense($r,$g,$b)."\n\n"; 23 | print "[Background]\n"; 24 | } elsif ($+{n} !~ "") { 25 | if ($+{n} > 7) { 26 | print "[Color" . ($+{n} - 8) . "Intense]\n" . (($+{n} == 15) ? "" : "Bold=true\n"); 27 | } else { 28 | print "[Color" . $+{n} . "]\n"; 29 | } 30 | } else { 31 | print "# unknown id: " . $+{id} . $+{n} . " "; 32 | } 33 | print $color; 34 | } 35 | } 36 | 37 | print "[General] 38 | Description=User 39 | Opacity=0.90 40 | Wallpaper= 41 | 42 | "; 43 | 44 | -------------------------------------------------------------------------------- /bin/lastfm_wallpaper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | cd ~/dev/lastfm_wallpaper/ 4 | exec poetry run lastfm_wallpaper --days=60 --count=12 --space=24 "$@" 5 | -------------------------------------------------------------------------------- /bin/launch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | [ $# -eq 0 ] && exit 1 3 | 4 | # safely launch application and keep it running 5 | pidof $1 && killall $1 6 | pidof $1 && killall -9 $1 7 | 8 | while : 9 | do 10 | $@ 11 | if [ $? -eq 127 ] 12 | then 13 | break; 14 | fi 15 | 16 | if [ -n "$LAUNCH_CONDITION" ] 17 | then 18 | eval $LAUCH_CONDITION || break 19 | fi 20 | done 21 | 22 | -------------------------------------------------------------------------------- /bin/lock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # wallpaper=~/Pictures/wallpapers/current.jpg 3 | # args=( 4 | # --daemonize 5 | # --indicator-radius=100 6 | # --indicator-thickness=20 7 | # --image="$wallpaper" 8 | # # --color=000000 9 | # ) 10 | 11 | playerctl pause --all-players & disown 12 | 13 | # exec swaylock "${args[@]}" 14 | hyprlock --immediate --immediate-render & sleep 1 15 | -------------------------------------------------------------------------------- /bin/lyrics.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import argparse 3 | import logging 4 | import os 5 | import subprocess 6 | 7 | from metallum import album_search 8 | 9 | logger = logging.getLogger(__name__) 10 | 11 | DEFAULT_CONFIG_FILE_PATH = os.path.expanduser('~/.config/lastfm_wallpaper.ini') 12 | 13 | 14 | def run(*cmd): 15 | with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as p: 16 | out, err = p.communicate() 17 | if err: 18 | logger.warning('Non-empty stderr "%s": %s', ' '.join(cmd), err) 19 | if p.returncode != 0: 20 | raise RuntimeError('Non-zero exit code "{}": {}'.format(' '.join(cmd), p.returncode)) 21 | return out.decode('utf-8').strip() 22 | 23 | 24 | def currently_playing(): 25 | import configparser 26 | import pylast 27 | 28 | config = configparser.ConfigParser() 29 | config.read(DEFAULT_CONFIG_FILE_PATH) 30 | config = config["default"] 31 | 32 | network = pylast.LastFMNetwork( 33 | api_key=config["api_key"], 34 | api_secret=config["api_secret"], 35 | username=config["user"] 36 | ) 37 | 38 | user = network.get_user(config["user"]) 39 | track = user.get_now_playing() 40 | artist = track.get_artist() 41 | album = track.get_album() 42 | album_tracks = album.get_tracks() 43 | track_number = album_tracks.index(track) + 1 44 | 45 | return artist.get_name(), album.get_title(), track_number 46 | 47 | 48 | def parse_args(): 49 | parser = argparse.ArgumentParser( 50 | description=__doc__, 51 | formatter_class=argparse.ArgumentDefaultsHelpFormatter) 52 | 53 | parser.add_argument('--artist', help='artist name') 54 | parser.add_argument('--album', help='album name') 55 | parser.add_argument('--track', type=int, help='track number') 56 | 57 | return parser.parse_args() 58 | 59 | 60 | def print_album(album): 61 | print('- Album: {}'.format(album.title)) 62 | 63 | 64 | def print_track(track): 65 | print('--- Track: {}. {}'.format(track.number, track.title)) 66 | lyrics = str(track.lyrics) 67 | if lyrics: 68 | print(lyrics) 69 | 70 | 71 | def print_artists(artists): 72 | for artist in artists: 73 | print('- Artist: {}'.format(artist.name)) 74 | print(' - Location: {} ({})'.format(artist.country, artist.location)) 75 | print(' - Genres: {}'.format(', '.join(artist.genres))) 76 | print(' - Themes: {}'.format(', '.join(artist.themes))) 77 | 78 | 79 | def main(): 80 | args = parse_args() 81 | artist_name = args.artist 82 | album_name = args.album 83 | track_number = args.track 84 | 85 | if not album_name or not artist_name: 86 | artist_name, album_name, track_number = currently_playing() 87 | 88 | if not album_name or not artist_name: 89 | raise RuntimeError('Album and artist name are required') 90 | 91 | albums = album_search( 92 | album_name, 93 | band=artist_name, 94 | strict=False, 95 | band_strict=False, 96 | ) 97 | 98 | album = albums[0].get() 99 | print_album(album) 100 | print_artists(album.bands) 101 | print() 102 | 103 | if track_number: 104 | print_track(album.tracks[track_number - 1]) 105 | else: 106 | for track in album.tracks: 107 | print_track(track) 108 | print() 109 | print() 110 | 111 | 112 | if __name__ == "__main__": 113 | main() 114 | -------------------------------------------------------------------------------- /bin/maybe_poweroff.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import pynotify 3 | import gtk 4 | from os import execvp, system 5 | from datetime import datetime 6 | 7 | # timeout in seconds 8 | timeout = 60 9 | cmd = ["sudo", "/sbin/shutdown", "-h", "now"] 10 | #cmd = ["echo", "SHUTDOWN"] 11 | # do not shutdown if these apps are running 12 | apps = ["mplayer", "vlc"] 13 | pidcmd = "pidof -s %s >/dev/null" 14 | 15 | def log(msg): 16 | print( datetime.today().strftime("[%Y-%m-%d %H:%M:%S] ")+msg ) 17 | 18 | def poweroff(): 19 | log("Vypinam") 20 | execvp(cmd[0], cmd) 21 | 22 | def destroy(n): 23 | n.close() 24 | gtk.main_quit() 25 | 26 | def timed_out(n): 27 | n.close() 28 | gtk.main_quit() 29 | poweroff() 30 | return False 31 | 32 | def closed(n): 33 | destroy(n) 34 | exit(1) 35 | 36 | def action(n, answer): 37 | destroy(n) 38 | if answer == "vypnout": 39 | poweroff() 40 | else: 41 | log("Nevypinam - preruseno uzivatelem") 42 | exit(1) 43 | 44 | def main(): 45 | for app in apps: 46 | if system( pidcmd%(app) ) == 0: 47 | log( "Nevypinam - applikace \"%s\" stale bezi"%(app) ) 48 | exit(1) 49 | if not pynotify.init("Vypnout?"): 50 | poweroff(); 51 | 52 | n = pynotify.Notification("Vypnuti Systemu", "System bude vypnut za "+str(timeout)+" sekund!", gtk.STOCK_DIALOG_WARNING) 53 | n.set_urgency(pynotify.URGENCY_CRITICAL) 54 | n.connect('closed', closed) 55 | n.add_action('vypnout', 'Vypnout', action) 56 | n.add_action('nevypinat', 'Nevypinat', action) 57 | 58 | n.show() 59 | gtk.timeout_add(timeout*1000, timed_out, n) 60 | gtk.main() 61 | 62 | if __name__ == '__main__': 63 | main() 64 | 65 | -------------------------------------------------------------------------------- /bin/mkbackup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # backup files or directories into BACKUP_ROOT directory 3 | BACKUP_ROOT="${0%/*}" 4 | DATE=$(date "+%Y%m%d") 5 | 6 | for FILE in "$@" 7 | do 8 | if [ -f "$FILE" ] 9 | then 10 | echo "Backing up file \"$FILE\"..." 11 | FILENAME="${FILE##*/}" 12 | DIR="${FILE%/*}" 13 | elif [ -d "$FILE" ] 14 | then 15 | echo "Backing up directory \"$FILE\"..." 16 | FILENAME=$(/bin/ls -d "$FILE" | sed 's_.*/__') 17 | DIR="$FILE/.." 18 | else 19 | echo "File \"$FILE\" doesn't exist!" 1>&2 20 | exit 1; 21 | fi 22 | 23 | tar -C "$DIR" -zcf "${BACKUP_ROOT}/${FILENAME}_${DATE}.tgz" "$FILENAME" 24 | 25 | echo "Backup \"${BACKUP_ROOT}/${FILENAME}_${DATE}.tgz\" created." 26 | echo "DONE" 27 | done 28 | echo "ALL DONE" 29 | 30 | -------------------------------------------------------------------------------- /bin/mkgallery.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # view archive contents (images, videos, fonts) 3 | # use G variable to set gallery name 4 | #G=${G:-default} 5 | G=`zenity --title "New gallery" --entry --text "Gallery name:" --entry-text default` || exit 1 6 | DIR=~/.archives/$G 7 | #MKGALLERY=${MKGALLERY:-~/dev/moka/mkgallery/mkgallery.py} 8 | MKGALLERY=${MKGALLERY:-~/dev/imagepeek/peeks} 9 | ARGS=${ARGS:-""} 10 | 11 | # unpack or mount archives 12 | UNPACK=`dirname "$0"`/unpack.sh 13 | RM="rm -r" 14 | #UNPACK="archivemount -o readonly" 15 | #RM="fusermount -u" 16 | 17 | if [ -d "$DIR" ] 18 | then 19 | zenity --question --text \ 20 | "Gallery in \"$DIR\" already exists. Remove it?" && 21 | rm -r "$DIR" || exit 1 22 | fi 23 | 24 | FILES=() 25 | TMPDIRS=() 26 | i=0 27 | j=0 28 | for file in "$@" 29 | do 30 | if file -b "$file"|grep -q archive 31 | then 32 | DEST=$DIR/`basename "$file"` 33 | mkdir -p "$DEST" 34 | $UNPACK "$file" "$DEST" || exit 1 35 | TMPDIRS[$((j++))]=$DEST 36 | FILES[$((i++))]=$DEST 37 | else 38 | FILES[$((i++))]=$file 39 | fi 40 | done 41 | [ -n "$FILES" ] || FILES=(.) 42 | 43 | #"$MKGALLERY" -u http://localhost:8080/Galleries/%s/ \ 44 | #-t ${G:-default} -fp-1 $ARGS \ 45 | #"${FILES[@]}" 46 | "$MKGALLERY" "${G:-default}" "${FILES[@]}" 47 | 48 | if [ -n "$TMPDIRS" ] 49 | then 50 | zenity --question --text "Remove gallery \"$G\"?" && 51 | $RM "${TMPDIRS[@]}" && echo "Gallery was removed." && rmdir "$DIR" 52 | fi 53 | 54 | -------------------------------------------------------------------------------- /bin/modifiers.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Enables emulating key modifiers with other keys. 3 | set -exuo pipefail 4 | 5 | if [[ ! -f /usr/bin/udevmon ]]; then 6 | sudo dnf -y copr enable fszymanski/interception-tools 7 | sudo dnf -y install interception-tools 8 | fi 9 | 10 | cd ~/dev/ 11 | test -d space2meta || 12 | git clone git@gitlab.com:lholecek/space2meta.git 13 | cd space2meta 14 | git checkout custom-keys 15 | 16 | build() { 17 | set -ex 18 | 19 | exe_name=$1 20 | key_src=$2 21 | key_tgt=$3 22 | 23 | dir=build-$exe_name 24 | 25 | cmake -B"$dir" \ 26 | -DEXE_NAME="$exe_name" \ 27 | -DKEY_SRC="$key_src" \ 28 | -DKEY_TGT="$key_tgt" 29 | cmake --build "$dir" 30 | sudo cmake --build build --target install 31 | } 32 | 33 | build space2ctrl KEY_SPACE KEY_LEFTCTRL 34 | 35 | sudo systemctl enable --now udevmon 36 | sudo tee /etc/interception/udevmon.d/modifiers.yaml <&1 > /dev/null & 3 | disown 4 | -------------------------------------------------------------------------------- /bin/move_music.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | music_dir=${TARGET_DIR:-$HOME/Music/disk} 5 | 6 | echo "$# files to unpack into $music_dir" 7 | du --total --human-readable "$@" 8 | 9 | for zip in "$@"; do 10 | dir="${zip%.*}" 11 | unzip -d "$music_dir/$dir" "$zip" || exit $? 12 | rm -v "$zip" 13 | done 14 | -------------------------------------------------------------------------------- /bin/mute.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec amixer set Master toggle 3 | -------------------------------------------------------------------------------- /bin/notifications.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | if pkill 'dunst|mako|swaync'; then 5 | sleep 0.2 6 | fi 7 | 8 | # exec /usr/bin/dunst 9 | 10 | exec /usr/bin/swaync 11 | 12 | mako_args=( 13 | --width=320 14 | --height=240 15 | #--border-radius=8 16 | --font "Noto Sans Medium 9" 17 | --margin="4,4,4,4" 18 | --padding="4,4,4,4" 19 | #--anchor="top-center" 20 | 21 | # swaymsg -t get_outputs 22 | #--output="eDP-1" 23 | --output="DP-4" 24 | 25 | --actions=1 26 | 27 | --max-visible=5 28 | --max-history=100 29 | ) 30 | pkill mako || true 31 | exec mako "${mako_args[@]}" 32 | #exec ~/dev/mako/build/mako "${mako_args[@]}" 33 | -------------------------------------------------------------------------------- /bin/pacman-disowned.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$ 4 | db=$tmp/db 5 | fs=$tmp/fs 6 | 7 | mkdir "$tmp" 8 | trap 'rm -rf "$tmp"' EXIT 9 | 10 | pacman -Qlq | sort -u > "$db" 11 | 12 | find /bin /etc /lib /sbin /usr \ 13 | ! -name lost+found \ 14 | \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" 15 | 16 | # foreign files 17 | comm -23 "$fs" "$db" 18 | # missing files 19 | cat "$db"|while read x; do [ -e "$x" ] || echo " $x"; done 20 | 21 | -------------------------------------------------------------------------------- /bin/pause-media-when-lockscreen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Pause music if screen is lock. 3 | # See: https://blog.holms.place/2022/11/08/pausing-resuming-media-playback-on-lock-under-gnome.html 4 | # Add desktop file ~/.config/systemd/user/pause-media-when-lockscreen.service: 5 | # 6 | # [Unit] 7 | # Description=Pause all media when screen is locked 8 | # After=graphical.target 9 | # 10 | # [Service] 11 | # Type=simple 12 | # ExecStart=%h/bin/pause-media-when-lockscreen.sh 13 | # Restart=on-abort 14 | # 15 | # [Install] 16 | # WantedBy=default.target 17 | # 18 | # Install: 19 | # 20 | # systemctl enable --now --user pause-media-when-lockscreen 21 | # 22 | set -euo pipefail 23 | 24 | /usr/bin/dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | 25 | while read x; do 26 | case "$x" in 27 | *"boolean true"*) 28 | # Lock and unlock signal are getting sent twice for some reason. So be sure that we test only once. 29 | playerctl pause --all-players & disown 30 | esac 31 | done 32 | 33 | -------------------------------------------------------------------------------- /bin/pavolume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec pactl set-sink-volume @DEFAULT_SINK@ "$1" 3 | -------------------------------------------------------------------------------- /bin/pch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # generate pch/ dir with clang 3 | pch_path="pch" 4 | 5 | set -e 6 | 7 | mkdir -p "$pch_path" 8 | 9 | dir=$1 10 | shift 11 | 12 | base="$pch_path/`basename $dir`" 13 | pch="$base.pch" 14 | header="$base.h" 15 | find "$dir" -name "*.h" | sed 's/.*/#include <&>/' > "$header" 16 | clang "$@" -I . -x c++-header "$header" -fno-exceptions -fgnu-runtime -o "$pch" 17 | 18 | -------------------------------------------------------------------------------- /bin/pynotebook.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export PYTHONPATH=$HOME/apps/fakevim/build:$PYTHONPATH 3 | 4 | set -e 5 | cd ~/dev 6 | exec ipython notebook 7 | -------------------------------------------------------------------------------- /bin/qtcreator-android.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #bin=qtcreator 3 | #bin=~/apps/qtcreator-build-release/bin/qtcreator.sh 4 | bin=~/apps/Qt5.2.0/Tools/QtCreator/bin/qtcreator.sh 5 | 6 | PATH=/usr/lib/ccache/bin:$PATH 7 | ccache --max-size=8G 8 | 9 | ulimit -c unlimited 10 | [ "`ulimit -c`" = "unlimited" ] || { echo "Core files cannot be generated!"; exit 1; } 11 | 12 | source /etc/profile 13 | #export ANDROID_NDK_HOST=linux-x86_64 14 | #export ANDROID_NDK_ROOT=$ANDROID_NDK 15 | #export ANDROID_NDK_HOST=linux-x86 16 | #export ANDROID_NDK_ROOT=/home/lukas/apps/necessitas/android-ndk 17 | export ANDROID_NDK_HOST=linux-x86_64 18 | export ANDROID_NDK_ROOT=/home/lukas/apps/android/android-ndk-r9b 19 | "$bin" -lastsession 20 | 21 | -------------------------------------------------------------------------------- /bin/qtcreator.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | bin=qtcreator 3 | #bin=~/apps/qtcreator-test/bin/qtcreator.sh 4 | 5 | PATH=/usr/lib/ccache/bin:$PATH 6 | ccache --max-size=8G 7 | 8 | ulimit -c unlimited 9 | [ "`ulimit -c`" = "unlimited" ] || { echo "Core files cannot be generated!"; exit 1; } 10 | 11 | export LLVM_INSTALL_DIR="/usr" 12 | 13 | source /etc/profile 14 | exec "$bin" -theme dark -lastsession 15 | -------------------------------------------------------------------------------- /bin/red.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | config=/tmp/redshift-$USER 5 | min_amount=2000 6 | max_amount=6500 7 | 8 | pkill redshift || true 9 | pkill wlsunset || true 10 | 11 | diff=$1 12 | amount=$(cat "$config" || echo $max_amount) 13 | new_amount=$((amount + diff)) 14 | 15 | if [[ $new_amount < $min_amount ]]; then 16 | new_amount=$min_amount 17 | elif [[ $new_amount > $max_amount ]]; then 18 | new_amount=$max_amount 19 | fi 20 | 21 | echo "$new_amount" > "$config" 22 | 23 | if [[ $XDG_SESSION_TYPE == "x11" ]]; then 24 | exec redshift -P -O "$new_amount" 25 | else 26 | exec wlsunset -t "$new_amount" -T "$((new_amount + 1))" 27 | fi 28 | -------------------------------------------------------------------------------- /bin/red_down.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | "`dirname $0`/red.sh" -250 3 | -------------------------------------------------------------------------------- /bin/red_up.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | "`dirname $0`/red.sh" 250 3 | -------------------------------------------------------------------------------- /bin/red_watch.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | watch_file=/tmp/redshift-$USER 5 | 6 | if [[ ! -f "$watch_file" ]]; then 7 | script_root="$(dirname "$(readlink -f "$0")")" 8 | "$script_root/sunset.sh" 9 | fi 10 | 11 | cat "$watch_file"; 12 | while inotifywait -qq -e modify "$watch_file"; do 13 | cat "$watch_file"; 14 | done 15 | -------------------------------------------------------------------------------- /bin/scan-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | checkers=( 3 | alpha.core.BoolAssignment 4 | alpha.core.CastSize 5 | alpha.core.CastToStruct 6 | alpha.core.FixedAddr 7 | alpha.core.IdenticalExpr 8 | alpha.core.PointerArithm 9 | alpha.core.PointerSub 10 | alpha.core.SizeofPtr 11 | 12 | alpha.cplusplus.NewDeleteLeaks 13 | alpha.cplusplus.VirtualCall 14 | 15 | alpha.deadcode.IdempotentOperations 16 | alpha.deadcode.UnreachableCode 17 | 18 | alpha.security.ArrayBound 19 | alpha.security.ArrayBoundV2 20 | alpha.security.MallocOverflow 21 | alpha.security.ReturnPtrRange 22 | alpha.security.taint.TaintPropagation 23 | 24 | alpha.unix.Chroot 25 | alpha.unix.MallocWithAnnotations 26 | alpha.unix.PthreadLock 27 | alpha.unix.SimpleStream 28 | alpha.unix.Stream 29 | alpha.unix.cstring.BufferOverlap 30 | alpha.unix.cstring.NotNullTerminated 31 | alpha.unix.cstring.OutOfBounds 32 | 33 | debug.ConfigDumper 34 | debug.DumpCFG 35 | debug.DumpCallGraph 36 | debug.DumpCalls 37 | debug.DumpDominators 38 | debug.DumpLiveVars 39 | debug.DumpTraversal 40 | debug.ExprInspection 41 | debug.Stats 42 | debug.TaintTest 43 | 44 | #debug.ViewCFG 45 | #debug.ViewCallGraph 46 | #debug.ViewExplodedGraph 47 | 48 | security.FloatLoopCounter 49 | security.insecureAPI.rand 50 | security.insecureAPI.strcpy 51 | ) 52 | 53 | args=( 54 | -analyze-headers 55 | -o "$PWD/report" 56 | --keep-going 57 | --use-c++=clang++ 58 | --use-analyzer=clang 59 | ) 60 | 61 | get_checkers() 62 | { 63 | for checker in "${checkers[@]}"; do 64 | printf " -enable-checker %s\n" "$checker" 65 | done 66 | } 67 | 68 | main() 69 | { 70 | scan-build "${args[@]}" $(get_checkers) "$@" 71 | } 72 | 73 | main "$@" 74 | -------------------------------------------------------------------------------- /bin/screen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | cd ~ 4 | export TMUX="" 5 | if tmux list-sessions > /dev/null; then 6 | tmux attach -d 7 | else 8 | exec tmux -2 9 | fi 10 | -------------------------------------------------------------------------------- /bin/screenshot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | image=$(mktemp "/tmp/screenshot-$USER-XXX.png") 5 | cleanup() { 6 | rm -rf -- "$image" 7 | } 8 | trap cleanup QUIT TERM INT HUP EXIT 9 | grim -t png -c "$image" 10 | krita "$image" 11 | -------------------------------------------------------------------------------- /bin/set_wallpaper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # usage: 3 | # ./set_wallpaper.sh # sets random wallpaper from WALLPATH env or ~/wallpapers 4 | # ./set_wallpaper.sh image_file 5 | set -o errexit 6 | set -o nounset 7 | set -o pipefail 8 | 9 | # redirect output to LOGFILE 10 | exec 1> ~/wallpaper.log 11 | 12 | WALLPATH=${WALLPATH:-"$HOME/Pictures/wallpapers"} 13 | 14 | # screen resolution 15 | #RES=(1920 1080) 16 | RES=(3840 2160) 17 | 18 | CACHE_PATH="$WALLPATH/.tmp" 19 | TMP="$HOME/.wallpaper.tmp.jpg" 20 | 21 | if [[ ! -d "$WALLPATH" ]]; then 22 | echo "Wallpaper directory \"$WALLPATH\" does not exist. Setting empty wallpaper." 23 | feh --bg-fill "/usr/share/wallpapers/Next/contents/images/${RES[0]}x${RES[1]}.png" 24 | exit 25 | fi 26 | 27 | remove_tmp() { 28 | rm -rf "$TMP" 29 | } 30 | trap remove_tmp EXIT 31 | 32 | trap 'echo "FAILED!"; exit 1' TERM QUIT INT 33 | 34 | # take image as parameter or random image from WALLPATH 35 | IMG="${1:-}" 36 | if [ -n "$IMG" ]; then 37 | echo "$(date -R): Setting wallpaper \"$IMG\"" 38 | if /usr/bin/curl -s -o "$TMP" "$1"; then 39 | IMG="$TMP" 40 | fi 41 | else 42 | IMG="$(find -L "$WALLPATH"/* -type f | shuf | head -1)" 43 | echo "$(date -R): Setting random wallpaper \"$IMG\"" 44 | fi 45 | 46 | CACHE_PATH="$CACHE_PATH/${RES[0]}x${RES[1]}" 47 | # create wallapaper if it doesn't exist for current resolution 48 | WALL="$CACHE_PATH/$(basename "$IMG").png" 49 | if [ ! -f "$WALL" ]; then 50 | echo -e " Resizing..." 51 | SIZE=($(/usr/bin/identify -format "%w %h" "$IMG")) 52 | X=$((SIZE[0]*RES[1])) 53 | Y=$((SIZE[1]*RES[0])) 54 | 55 | # calc wallpaper size and area to cut 56 | if [[ $X > $Y ]]; then 57 | W=$((X/SIZE[1])) 58 | H=${RES[1]} 59 | WCUT=$(((W-RES[0])/2)) 60 | HCUT=0 61 | else 62 | W=${RES[0]} 63 | H=$((Y/SIZE[0])) 64 | WCUT=0 65 | HCUT=$(((H-RES[1])/2)) 66 | fi 67 | 68 | # create wallpaper 69 | mkdir -p "$CACHE_PATH" 70 | MAGICK_OCL_DEVICE=OFF convert "$IMG" -resize "${W}x${H}" -shave "${WCUT}x${HCUT}" "$WALL" 71 | fi 72 | 73 | # set wallpaper 74 | if pgrep xfdesktop >/dev/null; then 75 | PROPERTY="/backdrop/screen0/monitor0/image-path" 76 | xfconf-query -c xfce4-desktop -p $PROPERTY -s "$WALL" 77 | # for terminal fake transparency 78 | /usr/bin/feh --bg-fill "$WALL" || 79 | /usr/bin/xv -root -quit "$WALL" 80 | else 81 | /usr/bin/feh --bg-fill "$WALL" || 82 | /usr/bin/xv -root -quit "$WALL" 83 | fi 84 | 85 | ln -sf "$WALL" ~/wallpaper.png 86 | 87 | -------------------------------------------------------------------------------- /bin/sh-light.sh: -------------------------------------------------------------------------------- 1 | echo -e "\033[0;37m-- Enter command --\033[0m" 2 | #export PROMPT="> " 3 | #/bin/zsh -f 4 | export PS1="> " 5 | /bin/sh --norc --noprofile 6 | -------------------------------------------------------------------------------- /bin/shortcut_center.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | """ 3 | Simple GUI application that runs a command when a shortcut is typed. 4 | """ 5 | import os 6 | import socket 7 | from tkinter import StringVar, Tk, ttk 8 | from threading import Thread 9 | 10 | SERVER = ("localhost", 8889) 11 | TITLE = "Shortcut Center" 12 | WINDOW_CLASS_NAME = "Shortcut_center" 13 | WIDTH = 180 14 | HEIGHT = 320 15 | 16 | COMMAND_FORMAT = "{} & disown" 17 | DEFAULT_ACTION = 'swaymsg "workspace back_and_forth"' 18 | MAPPING = { 19 | "p": "~/bin/toggleplay.sh", 20 | "t": "~/bin/tidal.sh", 21 | "e": "dolphin", 22 | "Q": ":quit", 23 | "a": 'swaymsg "workspace 1"', 24 | "s": 'swaymsg "workspace 2"', 25 | "d": 'swaymsg "workspace 3"', 26 | "f": 'swaymsg "workspace 4"', 27 | "g": 'swaymsg "workspace 4"', 28 | "1": 'swaymsg "workspace 1"', 29 | "2": 'swaymsg "workspace 2"', 30 | "3": 'swaymsg "workspace 3"', 31 | "4": 'swaymsg "workspace 4"', 32 | "5": 'swaymsg "workspace 5"', 33 | "6": 'swaymsg "workspace 6"', 34 | "7": 'swaymsg "workspace 7"', 35 | "8": 'swaymsg "workspace 8"', 36 | "9": 'swaymsg "workspace 9"', 37 | "0": 'swaymsg "workspace 10"', 38 | } 39 | 40 | 41 | class App: 42 | def __init__(self): 43 | self.root = Tk(className=WINDOW_CLASS_NAME) 44 | self.root.title(TITLE) 45 | self.root.minsize(width=WIDTH, height=HEIGHT) 46 | self.root.maxsize(width=WIDTH, height=HEIGHT) 47 | self.root.bind("", lambda _: self.close()) 48 | self.root.bind("", lambda _: self.close()) 49 | self.root.bind("<>", lambda _: self.toggle_focus()) 50 | 51 | mainframe = ttk.Frame(self.root) 52 | mainframe.grid() 53 | 54 | self.shortcut = StringVar() 55 | self.shortcut.trace_add("write", lambda *_: self.trigger(self.shortcut.get())) 56 | entry = ttk.Entry(mainframe, textvariable=self.shortcut) 57 | entry.grid(column=0, row=0, sticky="w") 58 | entry.focus() 59 | 60 | help = "\n".join(f"{k}: {v}" for k, v in MAPPING.items()) 61 | ttk.Label(mainframe, text=help).grid(column=0, row=1, sticky="w") 62 | 63 | def mainloop(self): 64 | self.root.mainloop() 65 | 66 | def run(self, command): 67 | if command == ":quit": 68 | self.root.quit() 69 | return 70 | 71 | os.system(COMMAND_FORMAT.format(command)) 72 | self.close() 73 | 74 | def trigger(self, value): 75 | map = MAPPING.get(value) 76 | if map: 77 | self.run(map) 78 | 79 | def quit(self): 80 | self.root.quit() 81 | 82 | def close(self): 83 | self.root.withdraw() 84 | self.shortcut.set("") 85 | 86 | def open(self): 87 | self.root.deiconify() 88 | 89 | def has_focus(self): 90 | return self.root.focus_get() is not None 91 | 92 | def send_toggle_focus(self): 93 | self.root.event_generate("<>") 94 | 95 | def toggle_focus(self): 96 | if self.has_focus(): 97 | self.run(DEFAULT_ACTION) 98 | else: 99 | self.open() 100 | 101 | 102 | def run_server(callback): 103 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 104 | sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 105 | sock.bind(SERVER) 106 | sock.listen(1) 107 | 108 | try: 109 | while True: 110 | client, _ = sock.accept() 111 | data = client.recv(1) 112 | client.close() 113 | if data: 114 | break 115 | callback() 116 | finally: 117 | sock.close() 118 | 119 | def send(data): 120 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 121 | try: 122 | sock.connect(SERVER) 123 | sock.send(data) 124 | return True 125 | except ConnectionRefusedError: 126 | return False 127 | 128 | 129 | def main(): 130 | if send(b""): 131 | return 132 | 133 | app = App() 134 | Thread(target=run_server, args=(app.send_toggle_focus,)).start() 135 | app.mainloop() 136 | send(b"0") 137 | 138 | 139 | if __name__ == "__main__": 140 | main() 141 | -------------------------------------------------------------------------------- /bin/simian.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | options=( 3 | -ignoreCharacters 4 | -ignoreCurlyBraces 5 | -ignoreLiterals 6 | -ignoreModifiers 7 | -ignoreNumbers 8 | -ignoreOverlappingBlocks 9 | -ignoreRegions 10 | -ignoreStrings 11 | -ignoreSubtypeNames 12 | -ignoreVariableNames 13 | -language=C++ 14 | -reportDuplicateText 15 | -threshold=5 16 | ) 17 | 18 | run () { 19 | for dir in "$@"; do 20 | ( cd "$dir" && simian "${options[@]}" **/*.cpp ) 21 | done 22 | } 23 | 24 | if [ $# -eq 0 ]; then 25 | run . 26 | else 27 | run "$@" 28 | fi 29 | 30 | -------------------------------------------------------------------------------- /bin/slack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec slack --enable-features=UseOzonePlatform --ozone-platform=wayland 3 | -------------------------------------------------------------------------------- /bin/spotify.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # Collect DBUS_SESSION_BUS_ADDRESS from running process 5 | set_dbus_adress() 6 | { 7 | USER=$1 8 | PROCESS=$2 9 | PID=$(pgrep -o -u "$USER" "$PROCESS") 10 | ENVIRON=/proc/$PID/environ 11 | 12 | if [ -e "$ENVIRON" ]; then 13 | export $(grep -z DBUS_SESSION_BUS_ADDRESS "$ENVIRON") 14 | else 15 | echo "Unable to set DBUS_SESSION_BUS_ADDRESS." 16 | exit 1 17 | fi 18 | } 19 | 20 | # Check if DBUS_SESSION is set 21 | if [ -z $DBUS_SESSION_BUS_ADDRESS ]; then 22 | #echo "DBUS_SESSION_BUS_ADDRESS not set. Guessing." 23 | set_dbus_adress `whoami` spotify 24 | fi 25 | 26 | cmd="${1:-PlayPause}" 27 | dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 "org.mpris.MediaPlayer2.Player.$cmd" 28 | 29 | -------------------------------------------------------------------------------- /bin/status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | conky & 3 | sleep 12 4 | kill $! 5 | 6 | -------------------------------------------------------------------------------- /bin/strace-execs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | strace \ 3 | --follow-forks \ 4 | --string-limit=1024 \ 5 | --trace=execve \ 6 | "$@" 7 | -------------------------------------------------------------------------------- /bin/sunset.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | pkill redshift || true 5 | pkill wlsunset || true 6 | 7 | lat=48.2 8 | lon=16.67 9 | min_temp=4500 10 | max_temp=6500 11 | config=/tmp/redshift-$USER 12 | 13 | if [[ $XDG_SESSION_TYPE == "x11" ]]; then 14 | exec redshift -l "$lat:$lon" -t "$max_temp:$min_temp" -r 15 | else 16 | wlsunset -l "$lat" -L "$lon" -t "$min_temp" -T "$max_temp" 2>&1 | { 17 | while read -r line; do 18 | temperature=$(grep -Eo '[0-9]{4}' <<< "$line") || continue 19 | echo "$temperature" > "$config" 20 | done 21 | } 22 | fi 23 | -------------------------------------------------------------------------------- /bin/suspend.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | lock.sh 4 | exec systemctl suspend 5 | -------------------------------------------------------------------------------- /bin/svim.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | screen -t "VIM:$@" vim "$@" 3 | -------------------------------------------------------------------------------- /bin/sway_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Run an app or command in Sway Wayland compositor. 3 | set -eo pipefail 4 | 5 | export QT_QPA_PLATFORMTHEME=kde 6 | export QT_STYLE_OVERRIDE=kde 7 | 8 | # ulauncher-toggle 9 | 10 | # Qt 6 version of krunner does not handle focus properly on Wayland 11 | # export QT_QPA_PLATFORM=xcb 12 | exec krunner 13 | -------------------------------------------------------------------------------- /bin/sway_windows.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Show window selection in Sway Wayland compositor. 3 | # 4 | # Install dependencies: 5 | # cargo install swayr 6 | # 7 | # Update dependencies: 8 | # cargo install install-update 9 | # cargo install-update -- swayr 10 | # 11 | 12 | set -eo pipefail 13 | 14 | export PATH=$HOME/.cargo/bin:$PATH 15 | 16 | if [[ $# -gt 0 ]]; then 17 | exec swayr "$@" 18 | else 19 | if ! pidof -q swayrd; then 20 | exec swayrd 21 | fi 22 | fi 23 | -------------------------------------------------------------------------------- /bin/tags.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # generate tags file for C and C++ 3 | find "$@" -regex ".*\.\(c\|h\|hpp\|cc\|cpp\)" | 4 | ctags --totals -R \ 5 | --fields=+il --c-kinds=+p --c++-kinds=+p --extra=+q \ 6 | -L - 7 | 8 | -------------------------------------------------------------------------------- /bin/tidal.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install tidal-hifi: 3 | # 4 | # git clone https://github.com/Mastermindzh/tidal-hifi.git 5 | # cd tidal-hifi 6 | # npm run build-unpacked 7 | # 8 | # exec ~/dev/tidal-hifi/dist/linux-unpacked/tidal-hifi \ 9 | exec flatpak run com.mastermindzh.tidal-hifi \ 10 | --enable-features=UseOzonePlatform \ 11 | --ozone-platform-hint=auto \ 12 | --enable-features=WaylandWindowDecorations 13 | -------------------------------------------------------------------------------- /bin/toggle-console-background.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Toggles between light and dark console background. 3 | set -euo pipefail 4 | 5 | konsole_profile_dir=~/.local/share/konsole 6 | konsole_color_scheme_light=BlackOnLightYellow 7 | konsole_color_scheme_dark=DarkPastels 8 | 9 | vimrc=~/.vimrc 10 | nvimrc=~/.config/nvim/init.vim 11 | 12 | is_light() { 13 | grep -q "^set bg=light" "$vimrc" 14 | } 15 | 16 | if is_light; then 17 | bgcolor=dark 18 | konsole_color_scheme=$konsole_color_scheme_dark 19 | else 20 | bgcolor=light 21 | konsole_color_scheme=$konsole_color_scheme_light 22 | fi 23 | 24 | echo "Switching to $bgcolor background" 25 | 26 | sed -i 's/^\(set bg=\).*/\1'"$bgcolor/" "$vimrc" "$nvimrc" 27 | 28 | sed -i 's/^\(ColorScheme=\).*/\1'"$konsole_color_scheme/" "$konsole_profile_dir"/*.profile 29 | -------------------------------------------------------------------------------- /bin/togglemute.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | amixer get Master | grep -q '\[on\]' && 3 | amixer set Master mute || 4 | amixer set Master unmute 5 | 6 | -------------------------------------------------------------------------------- /bin/toggleplay.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | #exec clementine --play-pause 3 | #exec quodlibet --play-pause 4 | exec playerctl play-pause 5 | -------------------------------------------------------------------------------- /bin/truecolor-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo -e "\e[1mbold\e[0m" 4 | echo -e "\e[3mitalic\e[0m" 5 | echo -e "\e[3m\e[1mbold italic\e[0m" 6 | echo -e "\e[4munderline\e[0m" 7 | echo -e "\e[9mstrikethrough\e[0m" 8 | echo -e '\e[4:3m\e[58:2::240:143:104mundercurl\e[59m\e[4:0m' 9 | 10 | # Tests support for truecolor on terminal. 11 | # https://gist.github.com/XVilka/8346728 12 | exec awk 'BEGIN{ 13 | s="/\\/\\/\\/\\/\\"; s=s s s s s s s s; 14 | for (colnum = 0; colnum<77; colnum++) { 15 | r = 255-(colnum*255/76); 16 | g = (colnum*510/76); 17 | b = (colnum*255/76); 18 | if (g>255) g = 510-g; 19 | printf "\033[48;2;%d;%d;%dm", r,g,b; 20 | printf "\033[38;2;%d;%d;%dm", 255-r,255-g,255-b; 21 | printf "%s\033[0m", substr(s,colnum+1,1); 22 | } 23 | printf "\n"; 24 | }' 25 | -------------------------------------------------------------------------------- /bin/tv_grab_cz: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Prints Czech and Slovak TV channels in XMLTV format. 3 | URL='http://tvpc.cz/xmltv.xml' 4 | # http://frantisheq.sk/xmltv-page/ 5 | #URL='http://dl.dropbox.com/u/441189/tv/xmltv/sk/sk.xmltv' 6 | 7 | if [ "$1" == "--description" ]; then 8 | echo "Czech Republic" 9 | elif [ $# -eq 0 ]; then 10 | wget -O - "$URL" | sed \ 11 | -e 's/ lang="sk"/ lang="cz"/g' \ 12 | -e 's/_sk">/" >/g' \ 13 | -e 's/\/logo\/tv\/\([^.]\+\).jpg/\/hires\/\1.png/g' \ 14 | || exit 1 15 | else 16 | exit 1 17 | fi 18 | 19 | -------------------------------------------------------------------------------- /bin/unpack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # usage: unpack file ... [dir] 3 | # info: Unpack file in dir. 4 | USAGE=$(cat < /dev/null 40 | then 41 | echo "$USAGE" 42 | exit 1 43 | fi 44 | 45 | f=`readlink -f "$f"` 46 | if [ -f "$f" ] 47 | then 48 | mime=`file --brief --mime-type "$f"` 49 | case "$mime" in 50 | application/zip) CMD="unzip" ;; 51 | application/x-rar) CMD="unrar x" ;; 52 | application/x-xz) CMD="tar xJvf" ;; 53 | application/x-tar | application/x-gzip | application/x-bzip2) 54 | CMD="tar xvf" ;; 55 | application/x-7z-compressed|application/octet-stream) CMD="7z x" ;; 56 | *) 57 | echo "File '$f' cannot be extracted! (mime: '$mime')" 58 | exit 1 ;; 59 | esac 60 | 61 | # filename with full path 62 | FILE=`readlink -f "$f"` 63 | 64 | # unpack 65 | ( 66 | echo "$CMD \"$FILE\"" 67 | cd "$d" && eval "$CMD \"$FILE\"" || exit 2 68 | ) 69 | else 70 | echo "'$f' is not a valid file!" 71 | exit 3 72 | fi 73 | done 74 | 75 | -------------------------------------------------------------------------------- /bin/update_qtc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | build_dir=${1:-"$HOME/apps/build/qtcreator-Qt_5-Debug"} 5 | dst=${2:-"$HOME/apps/qtcreator-test"} 6 | 7 | #rm -rf -- "$dst" 8 | #mkdir -p "$dst" 9 | #cp -r -- "$build_dir"/{bin,lib,share} "$dst" 10 | rsync --recursive --links --delete -- "$build_dir"/{bin,lib,share} "$dst"/ 11 | 12 | -------------------------------------------------------------------------------- /bin/uzbl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | export XDG_DATA_HOME="$HOME/.config" 3 | /usr/bin/uzbl $@ 4 | 5 | -------------------------------------------------------------------------------- /bin/virtualbox.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export QT_SCREEN_SCALE_FACTORS=1 3 | export QT_SCALE_FACTOR=1 4 | export QT_AUTO_SCREEN_SCALE_FACTOR=0 5 | #export QT_SCREEN_SCALE_FACTORS='HDMI-0=1;DP-1=2;' 6 | 7 | exec virtualbox 8 | -------------------------------------------------------------------------------- /bin/volume.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # print usage 3 | if [ $# == 0 ] 4 | then 5 | echo \ 6 | "Usage: $0 N%[+-] 7 | $0 5%+ # Volume up 5% 8 | $0 5%- # Volume down 5%" 9 | exit 1 10 | fi 11 | 12 | # view changed volume 13 | amixer set Master $1 14 | #amixer set Headphone $1 15 | #amixer set Speaker $1 16 | #amixer set PCM $1 17 | 18 | #VOL=`amixer sget Master|sed -n '/^ \(Front\|Mono\)/{s/.*\[\([0-9]\+\)%\].*/\1/p;q}'` 19 | 20 | # show osd 21 | #killall -q osd_cat 22 | #osd_cat -c white -O 1 -d 1 -A center -p middle -b percentage -P "$VOL" -T "volume $VOL%" & 23 | 24 | -------------------------------------------------------------------------------- /bin/volume_down.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | script_root="$(dirname "$(readlink -f "$0")")" 3 | exec "$script_root/pavolume.sh" -3000 4 | #exec "$script_root/volume.sh" 1%- 5 | -------------------------------------------------------------------------------- /bin/volume_up.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | script_root="$(dirname "$(readlink -f "$0")")" 3 | exec "$script_root/pavolume.sh" +3000 4 | #exec "$script_root/volume.sh" 1%+ 5 | -------------------------------------------------------------------------------- /bin/vsync.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Fixes vsync on nvidia. 3 | options=( 4 | --backend glx 5 | 6 | # This solves problems with videos getting stuck momentarily. 7 | # See https://github.com/chjj/compton/issues/494 8 | #--backend xr_glx_hybrid 9 | 10 | --vsync 11 | --unredir-if-possible 12 | 13 | # Minimize flicker when switching windows. 14 | "--fade-in-step=0.07" 15 | "--fade-out-step=0.01" 16 | "--fade-exclude" 'I3_FLOATING_WINDOW@:32c = 1' 17 | "--fading" 18 | 19 | #--sw-opti 20 | --glx-no-stencil 21 | --glx-no-rebind-pixmap 22 | 23 | #--glx-copy-from-front 24 | #--glx-use-copysubbuffermesa 25 | ) 26 | pkill compton 27 | #exec ~/dev/compton/build/src/compton "${options[@]}" 28 | exec compton --backend glx --vsync opengl-swc 29 | -------------------------------------------------------------------------------- /bin/waybar.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -exuo pipefail 3 | 4 | pkill -f 'waybar -b bar-0' || true 5 | pkill -f pomodoro.py || true 6 | pkill -f 'inotifywait .* /tmp/redshift' || true 7 | 8 | # exec waybar -b bar-0 -l trace 9 | waybar -b bar-0 > /dev/null & 10 | disown 11 | -------------------------------------------------------------------------------- /bin/wayland.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -xeuo pipefail 3 | 4 | export KWIN_OPENGL_INTERFACE=egl_wayland 5 | export QT_QPA_PLATFORM=wayland 6 | 7 | if [[ -n $DISPLAY ]]; then 8 | #weston & 9 | #kwin_wayland & 10 | #mutter --nested & 11 | gnome-shell --nested & 12 | #sway & 13 | else 14 | weston-launch -- --socket=wayland-system-0 & 15 | fi 16 | 17 | sleep 2 18 | if [[ $# -gt 0 ]]; then 19 | "$@" 20 | fi 21 | wait 22 | -------------------------------------------------------------------------------- /bin/wm: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export QT_GRAPHICSSYSTEM=raster 3 | 4 | # XFCE 5 | echo ".xinit: starting desktop environment" 6 | gconftool-2 --type boolean --set /desktop/gnome/interface/buttons_have_icons true 7 | gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true 8 | exec ck-launch-session startxfce4 9 | 10 | # KDE 11 | #plasma-desktop & 12 | #exec kwin --replace 13 | #exec ck-launch-session startkde 14 | 15 | ## WMFS 16 | #WMFS=~/apps/tiling/wmfs/wmfs 17 | #killall -q stalonetray trayer systeminfo systeminfo_wmf wmfs dwm 18 | #( 19 | #sleep 2 20 | #~/dev/systeminfo/systeminfo_wmfs | while read -r; do "$WMFS" -s "$REPLY"; done 21 | #"$WMFS" -s "" 22 | #) & 23 | #"$WMFS" 24 | # fallback 25 | #killall -q $! systeminfo_wmfs wmfs 26 | 27 | ## DWM 28 | #killall -q systeminfo_dwm 29 | #( 30 | #~/dev/systeminfo/systeminfo_dwm 31 | #xsetroot -name "" 32 | #) & 33 | #exec ~/apps/tiling/dwm/dwm 34 | 35 | ## ratpoison 36 | #exec ~/apps/tiling/ratpoison/bin/ratpoison.sh 37 | 38 | ## musca 39 | #exec musca 40 | 41 | ## evilwm 42 | #exec ~/apps/evilwm/evilwm 43 | 44 | ## Xmonad 45 | #exec xmonad 46 | 47 | ## i3 48 | #killall -q i3bar dzen2 systeminfo_dzen2 49 | #~/apps/tiling/i3/i3bar/i3bar -d & 50 | #(sleep 1; ~/dev/systeminfo/systeminfo_dzen2 | ~/apps/dzen/dzen2 -bg black -fn "-misc-envy code r-medium-r-normal--12-0-0-0-m-0-*-*" -expand left -y -1) & 51 | #exec ~/apps/tiling/i3/i3 52 | 53 | ## openbox 54 | #(sleep 3; exec python2 ~/apps/tiling/pytyle/pytyle2) & 55 | #(killall -q conky; exec conky) & 56 | #exec openbox --sm-disable 57 | 58 | -------------------------------------------------------------------------------- /bin/xfceTerminalColorsXrdb.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | # Parses "xrdb -query" or .Xresources on input and outputs xfce4-terminal (~/.config/xfce4/terminal/terminalrc) 3 | use strict; 4 | use warnings; 5 | 6 | my @colors = (1 .. 8); 7 | 8 | while (<>) { 9 | if (/^Rxvt.(?[a-z]*)(?\d*)\s*:\s*rgb:(?..)\/(?..)\/(?..)/) { 10 | my $r = hex($+{r}); 11 | my $g = hex($+{g}); 12 | my $b = hex($+{b}); 13 | 14 | my $color = sprintf("#%2x%2x%2x", $r, $g, $b); 15 | 16 | if ($+{id} =~ /foreground/i) { 17 | print "ColorForeground=".$color."\n"; 18 | } elsif ($+{id} =~ /background/i) { 19 | print "ColorBackground=".$color."\n"; 20 | } elsif ($+{n} !~ "") { 21 | @colors[$+{n}] = $color; 22 | } 23 | } 24 | } 25 | 26 | print "ColorPalette=".join(";", @colors)."\n"; 27 | 28 | -------------------------------------------------------------------------------- /bin/xitomatl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | # Qt framework has problems showing tray icon when desktop environment starts. 5 | sleep "${1:-5}" 6 | 7 | cd ~/dev/xitomatl 8 | exec poetry run xitomatl 2> .xitomatl.log 9 | -------------------------------------------------------------------------------- /bin/xnest.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | D=:${D:-"9"} 5 | #Xnest $D -geometry 800x600 & 6 | #Xnest $D -scrns 2 -geometry 800x600 & 7 | #Xephyr $D -ac -br -reset -terminate +iglx +extension Composite +xinerama -screen 800x600+0+0 -screen 800x600+0+800 & 8 | #Xephyr $D -ac -br -reset -terminate +iglx +extension Composite +extension RANDR -screen 800x600+0+0 -screen 800x600+0+800 & 9 | #Xephyr $D -ac -br -reset -terminate +iglx +extension Composite -screen 5120x1440 & 10 | #Xephyr $D -ac -br -reset -terminate +iglx +extension Composite -screen 640x480 & 11 | Xephyr $D -ac -br -reset -terminate +iglx +extension Composite -screen 1600x900 & 12 | export DISPLAY=$D 13 | export WAYLAND_DISPLAY= 14 | sleep 1 15 | 16 | export QT_QPA_PLATFORM=xcb 17 | 18 | #herbstluftwm & 19 | openbox & 20 | #awesome & 21 | #xfwm4 & 22 | #i3 & 23 | #mutter --x11 & 24 | #startplasma-x11 & 25 | sleep 1 26 | 27 | /usr/libexec/gsd-xsettings & 28 | settings_pid=$! 29 | 30 | #xfce4-terminal 31 | #~/dev/build/copyq/debug/install/bin/copyq -s test1 32 | #~/dev/build/copyq/debug/install/bin/copyq & 33 | #~/dev/build/copyq/Qt_5-Debug/copyq tests "$@" 34 | "$@" 35 | 36 | kill "$settings_pid" 37 | 38 | #cinnamon-settings & 39 | #cinnamon-session 40 | #cinnamon 41 | #lxsession 42 | #xfce4-session 43 | #sleep 3 44 | #"${@:-xterm}" 45 | 46 | exit_code=$? 47 | 48 | echo "Press Enter to continue..." 49 | read 50 | 51 | killall Xnest 52 | killall Xephyr 53 | wait 54 | 55 | exit $exit_code 56 | 57 | -------------------------------------------------------------------------------- /bin/zoom.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Scales text in desktop environment (work in Firefox). 3 | set -euo pipefail 4 | 5 | default_scale=1.5 6 | 7 | zoom() { 8 | echo "Zooming to $1" 9 | gsettings set org.gnome.desktop.interface text-scaling-factor "$1" 10 | } 11 | 12 | if [[ $# -gt 0 ]]; then 13 | zoom "$1" 14 | exit 15 | fi 16 | 17 | current_scale=$(gsettings get org.gnome.desktop.interface text-scaling-factor) 18 | 19 | if [[ $current_scale == 1.0 ]]; then 20 | zoom $default_scale 21 | else 22 | zoom 1 23 | fi 24 | -------------------------------------------------------------------------------- /fd/ignore: -------------------------------------------------------------------------------- 1 | .mypy_cache 2 | .tox 3 | .venv 4 | tags 5 | venv 6 | -------------------------------------------------------------------------------- /firefox/userChrome.css: -------------------------------------------------------------------------------- 1 | /* Hide title for tab tree sidebar. */ 2 | #sidebar-header { 3 | display: none; 4 | } 5 | 6 | #sidebar-splitter { 7 | background-color: black !important; 8 | border: none !important; 9 | } 10 | 11 | /* Hide top toolbar with tabs. */ 12 | #TabsToolbar { 13 | visibility: collapse !important; 14 | } 15 | -------------------------------------------------------------------------------- /fish/config.fish: -------------------------------------------------------------------------------- 1 | # Shortcuts: https://fishshell.com/docs/current/#shared-bindings 2 | # Alt-e ... edit command line in an editor 3 | fish_vi_key_bindings 4 | bind U redo 5 | 6 | set PATH ~/go/bin $PATH 7 | set PATH ~/.local/bin $PATH 8 | set PATH ~/bin $PATH 9 | set PATH ~/dev/scripts $PATH 10 | 11 | set -gx EDITOR $HOME/bin/editor.sh 12 | 13 | set -gx PAGER less 14 | set -gx LESS "--RAW-CONTROL-CHARS --ignore-case --quit-if-one-screen --LONG-PROMPT --shift=5" 15 | set -gx SYSTEMD_LESS $LESS 16 | 17 | set -gx REQUESTS_CA_BUNDLE /etc/pki/tls/certs/ca-bundle.crt 18 | set -gx K8S_AUTH_SSL_CA_CERT /etc/pki/tls/cert.pem 19 | 20 | set __fish_machine "" 21 | set fish_prompt_pwd_dir_length 40 22 | 23 | alias copyq="~/dev/build/copyq/release/copyq" 24 | 25 | alias rm="rm -vI" 26 | alias cp="cp -v" 27 | alias mv="mv -v" 28 | alias ls="ls --color=auto -h" 29 | alias ll="ls -lA" 30 | alias grep="grep --colour=auto" 31 | alias ssh="env TERM=xterm ssh" 32 | 33 | # package manager 34 | alias q="dnf" 35 | alias s="q search --cacheonly --all" 36 | alias i="sudo dnf install" 37 | alias u="sudo dnf remove" 38 | alias up="sudo dnf upgrade" 39 | 40 | alias w0="~/dev/scripts/work.sh off" 41 | alias w1="~/dev/scripts/work.sh on" 42 | 43 | alias g="git" 44 | alias gc="git co" 45 | alias gd="git d" 46 | alias gf="git f" 47 | alias gs="git show" 48 | alias gst="git st" 49 | alias gu="git up" 50 | # alias gg="lazygit" 51 | alias gg="gitui" 52 | # alias gg="flatpak run com.github.Murmele.Gittyup" 53 | alias gpr="git pr" 54 | 55 | set fish_greeting 56 | 57 | # https://carapace-sh.github.io/carapace-bin/setup.html 58 | set -Ux CARAPACE_BRIDGES 'zsh,fish,bash,inshellisense' # optional 59 | carapace _carapace | source 60 | # workaround for fish <4.0b1 61 | if test ! -f ~/.config/fish/completions/git.fish 62 | mkdir -p ~/.config/fish/completions 63 | carapace --list | awk '{print $1}' | xargs -I{} touch ~/.config/fish/completions/{}.fish # disable auto-loaded completions (#185) 64 | end 65 | 66 | if test -f /usr/bin/zoxide 67 | zoxide init --cmd j fish | source 68 | end 69 | 70 | # A-c: cd 71 | # C-t: complete path 72 | # C-r: history 73 | export RIPGREP_CONFIG_PATH=$HOME/.config/ripgreprc 74 | export FZF_DEFAULT_COMMAND='rg --files' 75 | #export FZF_DEFAULT_COMMAND='fd --type f' 76 | export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" 77 | export FZF_DEFAULT_OPTS="--history=$HOME/.local/share/fzf_history" 78 | 79 | if test -f /usr/share/fzf/shell/key-bindings.fish 80 | source /usr/share/fzf/shell/key-bindings.fish 81 | fzf_key_bindings 82 | end 83 | 84 | alias rg="rg --max-columns 999" 85 | -------------------------------------------------------------------------------- /fish/functions/cheat.fish: -------------------------------------------------------------------------------- 1 | function cheat 2 | set query (string replace --all --regex "[^\w\d._-]+" "+" "$argv") 3 | curl --silent "https://cheat.sh/$query" 4 | end 5 | -------------------------------------------------------------------------------- /fish/functions/e.fish: -------------------------------------------------------------------------------- 1 | function e 2 | if test $TERM = xterm-kitty 3 | kitty @ launch --type tab --cwd current $EDITOR $argv 4 | else if test -n $TMUX 5 | tmux new-window $EDITOR $argv 6 | else 7 | $EDITOR $argv 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /fish/functions/gl.fish: -------------------------------------------------------------------------------- 1 | function gl 2 | git la --color -$LINES | head -$(math $LINES - 5) 3 | end 4 | -------------------------------------------------------------------------------- /fish/functions/prompt_login.fish: -------------------------------------------------------------------------------- 1 | function prompt_login --description "display user name for the prompt" 2 | end 3 | -------------------------------------------------------------------------------- /fish/functions/reflog.fish: -------------------------------------------------------------------------------- 1 | function reflog -a i 2 | set prev (math $i - 1) 3 | git diff "HEAD@{$i}".."HEAD@{$prev}" 4 | end 5 | -------------------------------------------------------------------------------- /fish/functions/tigg.fish: -------------------------------------------------------------------------------- 1 | function tigg 2 | git log --pretty='format:commit %h %s' -G $argv | tig 3 | end 4 | -------------------------------------------------------------------------------- /fonts.conf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | copyq 11 | 12 | 13 | Noto Color Emoji 14 | 15 | 16 | 19 | 20 | 21 | 22 | roman 23 | 24 | 25 | 26 | roman 27 | 28 | 29 | 30 | 31 | matrix 32 | 33 | 1 34 | 0.2 35 | 0 36 | 1 37 | 38 | 39 | 40 | 41 | 42 | oblique 43 | 44 | 45 | 46 | false 47 | 48 | 49 | 52 | 53 | 54 | 55 | medium 56 | 57 | 58 | 59 | bold 60 | 61 | 65 | 66 | true 67 | 68 | 72 | 73 | bold 74 | 75 | 76 | 77 | 78 | true 79 | 80 | 81 | 82 | 83 | hintslight 84 | 85 | 86 | 87 | 88 | rgb 89 | 90 | 91 | ~/.fonts 92 | 93 | 94 | true 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /foot.ini: -------------------------------------------------------------------------------- 1 | font=JetBrains Mono NL:size=11 2 | selection-target=both 3 | 4 | [mouse] 5 | hide-when-typing=yes 6 | 7 | [key-bindings] 8 | primary-paste= 9 | clipboard-paste=Shift+Insert 10 | 11 | [colors] 12 | #background=282828 13 | #foreground=edf0f5 14 | #regular0=282828 15 | #regular1=e64e42 16 | #regular2=48d684 17 | #regular3=f9a55b 18 | #regular4=00ad9f 19 | #regular5=9059c8 20 | #regular6=6699ee 21 | #regular7=edf0f5 22 | #bright0=7f8c8d 23 | #bright1=e7564b 24 | #bright2=5dda92 25 | #bright3=f99948 26 | #bright4=00c7b6 27 | #bright5=884cc3 28 | #bright6=4785eb 29 | #bright7=fbfcfc 30 | -------------------------------------------------------------------------------- /gdbinit: -------------------------------------------------------------------------------- 1 | set history save on 2 | set history size 10000 3 | set history remove-duplicates 1 4 | set history filename ~/.config/gdb/gdb_history 5 | 6 | set debuginfod enabled off 7 | 8 | # Do not stop on SIGPIPE 9 | handle SIGPIPE nostop noprint pass 10 | 11 | python import sys, types 12 | python module = types.ModuleType('~/dev/qt/qt-creator/share/qtcreator/debugger/gdbbridge.py') 13 | -------------------------------------------------------------------------------- /git/attributes: -------------------------------------------------------------------------------- 1 | *.c diff=cpp 2 | *.h diff=cpp 3 | *.c++ diff=cpp 4 | *.h++ diff=cpp 5 | *.cpp diff=cpp 6 | *.hpp diff=cpp 7 | *.cc diff=cpp 8 | *.hh diff=cpp 9 | *.m diff=objc 10 | *.mm diff=objc 11 | *.cs diff=csharp 12 | *.css diff=css 13 | *.html diff=html 14 | *.xhtml diff=html 15 | *.ex diff=elixir 16 | *.exs diff=elixir 17 | *.go diff=golang 18 | *.php diff=php 19 | *.pl diff=perl 20 | *.py diff=python 21 | *.md diff=markdown 22 | *.rb diff=ruby 23 | *.rake diff=ruby 24 | *.rs diff=rust 25 | *.lisp diff=lisp 26 | *.el diff=lisp 27 | -------------------------------------------------------------------------------- /git/config: -------------------------------------------------------------------------------- 1 | [user] 2 | name = Lukas Holecek 3 | email = hluk@email.cz 4 | [color] 5 | ui = auto 6 | [column] 7 | ui = auto 8 | [branch] 9 | sort = -committerdate 10 | [tag] 11 | sort = version:refname 12 | [alias] 13 | co = checkout 14 | st = status --branch --short 15 | d = diff 16 | la = log --date-order --oneline --all --graph --decorate --branches --tags -20 17 | c = commit --allow-empty #--signoff 18 | pr = pull --rebase 19 | f = fetch --all --tags 20 | ca = commit --all --amend --no-edit 21 | cn = commit --amend --no-edit 22 | rmb = "!f() { git branch -D $*; git push --delete origin $*; }; f" 23 | [pull] 24 | rebase = true 25 | [fetch] 26 | prune = true 27 | pruneTags = true 28 | all = true 29 | [core] 30 | whitespace = cr-at-eol 31 | autocrlf = input 32 | pager = bat 33 | editor = nvim 34 | trustctime = false 35 | [push] 36 | default = simple 37 | autoSetupRemote = true 38 | [rerere] 39 | enabled = true 40 | autoupdate = true 41 | [rebase] 42 | autosquash = true 43 | autoStash = true 44 | updateRefs = true 45 | stat = true 46 | [diff] 47 | algorithm = histogram 48 | tool = vimdiff 49 | colorMoved = true 50 | colorMovedWS = allow-indentation-change 51 | # This removes "a/", "b/" prefix from paths in diff, making it easy to copy 52 | # path, but it breaks creating diff files. 53 | noprefix = true 54 | renames = true 55 | [color "diff"] 56 | whitespace = red reverse 57 | [difftool] 58 | prompt = false 59 | trustExitCode = true # :cq in Vim to abort opening next diffs 60 | [merge] 61 | tool = vimdiff 62 | [mergetool] 63 | keepBackup = false 64 | trustExitCode = true 65 | [mergetool "vimdiff"] 66 | cmd = nvim -d $BASE $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J' 67 | [init] 68 | defaultBranch = main 69 | 70 | [diff "ansible-vault"] 71 | textconv = env ANSIBLE_VAULT_PASSWORD_FILE=vault-password-file.sh ansible-vault view 72 | 73 | # Delta - nicer diffs 74 | [core] 75 | pager = delta 76 | [interactive] 77 | diffFilter = delta --color-only 78 | [delta] 79 | navigate = true # use n and N to move between diff sections 80 | side-by-side = true 81 | [merge] 82 | conflictstyle = zdiff3 83 | [diff] 84 | colorMoved = default 85 | [credential "https://github.com"] 86 | helper = 87 | helper = !/usr/bin/gh auth git-credential 88 | [credential "https://gist.github.com"] 89 | helper = 90 | helper = !/usr/bin/gh auth git-credential 91 | [maintenance] 92 | repo = /home/lholecek/.cache/catalog/git/plm-playbooks-97d338ba 93 | repo = /home/lholecek/.cache/catalog/git/bst.git-16ee258c 94 | repo = /home/lholecek/.cache/catalog/git/errata-tool-playbooks-28ce0c0e 95 | -------------------------------------------------------------------------------- /git/ignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | __pycache__/ 3 | .cache/ 4 | -------------------------------------------------------------------------------- /gtk-3.0/settings.ini: -------------------------------------------------------------------------------- 1 | [Settings] 2 | gtk-application-prefer-dark-theme=false 3 | gtk-button-images=true 4 | gtk-cursor-theme-name=breeze_cursors 5 | gtk-cursor-theme-size=24 6 | gtk-decoration-layout=icon:minimize,maximize,close 7 | gtk-enable-animations=false 8 | gtk-enable-event-sounds=false 9 | gtk-enable-input-feedback-sounds=false 10 | gtk-font-name=Noto Sans, 10 11 | gtk-icon-theme-name=breeze 12 | gtk-menu-images=true 13 | gtk-modules=colorreload-gtk-module 14 | gtk-primary-button-warps-slider=true 15 | gtk-sound-theme-name=ocean 16 | gtk-theme-name=Adwaita 17 | gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR 18 | gtk-toolbar-style=3 19 | gtk-xft-dpi=196608 20 | -------------------------------------------------------------------------------- /helix/config.toml: -------------------------------------------------------------------------------- 1 | theme = "gruvbox" 2 | 3 | [editor] 4 | #line-number = "relative" 5 | mouse = false 6 | bufferline = "multiple" 7 | 8 | [editor.cursor-shape] 9 | insert = "bar" 10 | normal = "block" 11 | select = "underline" 12 | 13 | [editor.file-picker] 14 | hidden = false 15 | 16 | [editor.indent-guides] 17 | render = true 18 | 19 | [keys.normal] 20 | #";" = "command_mode" 21 | D = "kill_to_line_end" 22 | C-space = "command_palette" 23 | y = "yank_joined_to_clipboard" 24 | p = "paste_clipboard_after" 25 | 26 | [keys.select] 27 | y = "yank_joined_to_clipboard" 28 | -------------------------------------------------------------------------------- /hypr/hyprlock.conf: -------------------------------------------------------------------------------- 1 | input-field { 2 | monitor = 3 | fade_on_empty = false 4 | hide_input = true 5 | size = 200, 200 6 | placeholder_text = 7 | outline_thickness = 20 8 | outer_color = rgba(0, 0, 0, 0) 9 | inner_color = rgba(0, 0, 0, 0) 10 | font_color = rgb(150, 150, 150) 11 | } 12 | label { 13 | monitor = 14 | text = $TIME 15 | text_align = center 16 | color = rgba(255, 255, 255, 0.5) 17 | font_size = 120 18 | font_family = Noto Sans Black 19 | position = 0, 500 20 | halign = center 21 | valign = center 22 | } 23 | background { 24 | path = ~/Pictures/wallpapers/current.png 25 | color = rgb(0, 0, 0) 26 | } 27 | -------------------------------------------------------------------------------- /hypr/hyprpaper.conf: -------------------------------------------------------------------------------- 1 | preload = ~/Pictures/wallpapers/current.jpg 2 | wallpaper = , ~/Pictures/wallpapers/current.jpg 3 | splash = false 4 | -------------------------------------------------------------------------------- /install.yml: -------------------------------------------------------------------------------- 1 | # ansible-playbook --ask-become-pass install.yml 2 | --- 3 | - name: Install and configure Fedora 4 | hosts: localhost 5 | tasks: 6 | - name: Install packages 7 | become: true 8 | dnf: 9 | state: present 10 | name: 11 | # Apps/Utilities 12 | - chromium-freeworld 13 | - dolphin 14 | - firefox-wayland 15 | - keepassxc 16 | - kitty 17 | - neovim 18 | - neovim-python 19 | - pavucontrol 20 | - pinentry-qt 21 | 22 | - ShellCheck 23 | - zoxide 24 | - autojump-zsh 25 | - bat 26 | - bolt 27 | - fd-find 28 | - htop 29 | - httpie 30 | - inotify-tools 31 | - marked 32 | - p7zip-plugins 33 | - playerctl 34 | - pulseaudio-utils 35 | - ripgrep 36 | 37 | - sddm 38 | - sddm-breeze 39 | 40 | # Qt theme manager 41 | - kvantum 42 | 43 | - ffmpeg 44 | - gstreamer1-vaapi 45 | - intel-media-driver 46 | - libva-intel-driver 47 | - libva-intel-hybrid-driver 48 | - libva-utils 49 | 50 | - copyq 51 | - GraphicsMagick 52 | - python3-pygments 53 | - wl-clipboard 54 | - xclip 55 | 56 | # Python 57 | - black 58 | - ipython 59 | - poetry 60 | - python3-rich 61 | 62 | # Sway 63 | # - grim 64 | # - mako 65 | # - slurp 66 | # - swappy 67 | # - sway 68 | # - ulauncher 69 | # - waybar 70 | # - xdg-desktop-portal-wlr 71 | 72 | # fonts 73 | - google-noto-sans-fonts 74 | - google-roboto-fonts 75 | - jetbrains-mono-nl-fonts 76 | - overpass-fonts 77 | - overpass-mono-fonts 78 | 79 | # work 80 | - buildah 81 | - fedora-packager-kerberos 82 | - flatpak-builder 83 | - freeipa-client 84 | - freeipa-selinux 85 | - ipa-admintools 86 | - ipa-client 87 | - krb5-workstation 88 | - openldap-clients 89 | - origin-clients 90 | - postgresql 91 | - python3-kubernetes 92 | - python3-libselinux 93 | - python3-openshift 94 | - skopeo 95 | - sssd-ipa 96 | 97 | # CopyQ development 98 | - appstream-qt-devel 99 | - desktop-file-utils 100 | - extra-cmake-modules 101 | - gcc-c++ 102 | - kf5-knotifications-devel 103 | - kf5-rpm-macros 104 | - libXfixes-devel 105 | - libXtst-devel 106 | - libappstream-glib 107 | - libstdc++-devel 108 | - ninja-build 109 | - qt-creator 110 | - qt5-assistant 111 | - qt5-doc 112 | - qt5-qtbase-devel 113 | - qt5-qtbase-private-devel 114 | - qt5-qtscript-devel 115 | - qt5-qtsvg-devel 116 | - qt5-qttools-devel 117 | - qt5-qtwayland-devel 118 | - qt5-qtx11extras-devel 119 | - qwt-qt5-devel 120 | - wayland-devel 121 | 122 | - python3-fonttools 123 | 124 | - qt6-linguist 125 | - qt6-qtbase-devel 126 | - qt6-qtbase-gui 127 | - qt6-qtbase-private-devel 128 | - qt6-qtsvg-devel 129 | - qt6-qttools-devel 130 | - qt6-qtwayland 131 | - qt6-qtwayland-devel 132 | 133 | - openbox 134 | - xorg-x11-server-Xephyr 135 | 136 | # wifi deamon 137 | - iwd 138 | tags: install 139 | 140 | - name: Disable fingerprint delay on authentication 141 | command: sudo authselect disable-feature with-fingerprint 142 | tags: config 143 | 144 | - name: Disable automatic suspend/sleep on inactivity on AC (GNOME) 145 | command: >- 146 | gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type nothing 147 | tags: config 148 | 149 | - name: Use better pager 150 | become: true 151 | ansible.builtin.copy: 152 | src: profile.d/less-improved.sh 153 | dest: /etc/profile.d/less-improved.sh 154 | owner: root 155 | group: root 156 | mode: u=rw,g=r,o=r 157 | tags: 158 | - config 159 | - root 160 | 161 | - name: Use iwd instead of wpa_supplicant for wifi hotspot 162 | become: true 163 | ansible.builtin.copy: 164 | src: NetworkManager/conf.d/00-iwd.conf 165 | dest: /etc/NetworkManager/conf.d/00-iwd.conf 166 | owner: root 167 | group: root 168 | mode: u=rw,g=r,o=r 169 | tags: 170 | - config 171 | - root 172 | notify: 173 | - restart NetworkManager 174 | 175 | handlers: 176 | - name: restart NetworkManager 177 | become: true 178 | ansible.builtin.systemd: 179 | state: restarted 180 | name: NetworkManager 181 | -------------------------------------------------------------------------------- /kakrc: -------------------------------------------------------------------------------- 1 | set-option global scrolloff 5,5 2 | 3 | source "%val{config}/plugins/plug.kak/rc/plug.kak" 4 | plug "lePerdu/kakboard" %{ 5 | hook global WinCreate .* %{ kakboard-enable } 6 | } 7 | -------------------------------------------------------------------------------- /kitty.conf: -------------------------------------------------------------------------------- 1 | # https://sw.kovidgoyal.net/kitty/conf.html 2 | 3 | shell /usr/bin/fish 4 | 5 | font_family JetBrainsMonoNL Nerd Font 6 | 7 | #font_family Overpass Mono 8 | #bold_font auto 9 | #italic_font auto 10 | #bold_italic_font auto 11 | 12 | #font_family Fira Code Retina 13 | #font_features FiraCode-Retina +zero +onum 14 | #bold_font Fira Code Bold Extended 15 | #italic_font Fira Code Italic 16 | #bold_italic_font Fira Code Bold Italic 17 | 18 | #font_family Iosevka Term Extended 19 | #bold_font Iosevka Term Bold Extended 20 | #italic_font Iosevka Term Extended Italic 21 | #bold_italic_font Iosevka Term Bold Extended Italic 22 | 23 | #font_family Iosevka Term Slab Extended 24 | #bold_font Iosevka Term Slab Extended Bold 25 | #italic_font Iosevka Term Slab Extended Italic 26 | #bold_italic_font Iosevka Term Slab Extended Bold Italic 27 | 28 | font_size 11.0 29 | 30 | disable_ligatures always 31 | 32 | cursor_blink_interval 0 33 | 34 | mouse_hide_wait 1.0 35 | copy_on_select clipboard 36 | strip_trailing_spaces always 37 | select_by_word_characters @-./_~?&=%+#: 38 | 39 | scrollback_lines 10000 40 | window_padding_width 4 41 | hide_window_decorations yes 42 | 43 | enable_audio_bell no 44 | 45 | # kitty @ set-colors -a ~/.config/kitty/kitty-themes/themes/xyz.conf 46 | # https://github.com/dexpota/kitty-themes 47 | #include ./kitty-themes/themes/SeaShells.conf 48 | #include ./kitty-themes/themes/Blazer.conf 49 | #include ./kitty-themes/themes/Broadcast.conf 50 | #include ./kitty-themes/themes/Cobalt2.conf 51 | #include ./kitty-themes/themes/ayu.conf 52 | include ./kitty-themes/themes/Monokai.conf 53 | #include ./kitty-themes/themes/Monokai_Pro_(Filter_Spectrum).conf 54 | #include ./kitty-themes/themes/Jellybeans.conf 55 | 56 | # https://github.com/catppuccin/kitty 57 | #include ./catppuccin/catppuccin.conf 58 | 59 | # https://github.com/rose-pine/kitty 60 | #include ./rose-pine/dist/rose-pine.conf 61 | 62 | map shift+insert paste_from_clipboard 63 | map menu discard_event 64 | 65 | #symbol_map U+23FB-U+23FE,U+2665,U+26A1,U+2B58,U+E000-U+E00A,U+E0A0-U+E0A3,U+E0B0-U+E0C8,U+E0CA,U+E0CC-U+E0D2,U+E0D4,U+E200-U+E2A9,U+E300-U+E3E3,U+E5FA-U+E62F,U+E700-U+E7C5,U+F000-U+F2E0,U+F300-U+F31C,U+F400-U+F4A9,U+F500-U+F8FF Symbols Nerd Font 66 | 67 | kitty_mod ctrl+alt 68 | 69 | map --new-mode cmd grave 70 | map --mode cmd esc pop_keyboard_mode 71 | map --mode cmd c combine | launch --cwd=oldest --type=tab | pop_keyboard_mode 72 | map --mode cmd n combine | next_tab | pop_keyboard_mode 73 | map --mode cmd p combine | previous_tab | pop_keyboard_mode 74 | map --mode cmd grave combine | goto_tab -1 | pop_keyboard_mode 75 | map --mode cmd 1 combine | goto_tab 1 | pop_keyboard_mode 76 | map --mode cmd 2 combine | goto_tab 2 | pop_keyboard_mode 77 | map --mode cmd 3 combine | goto_tab 3 | pop_keyboard_mode 78 | map --mode cmd 4 combine | goto_tab 4 | pop_keyboard_mode 79 | map --mode cmd 5 combine | goto_tab 5 | pop_keyboard_mode 80 | map --mode cmd 6 combine | goto_tab 6 | pop_keyboard_mode 81 | map --mode cmd 7 combine | goto_tab 7 | pop_keyboard_mode 82 | map --mode cmd 8 combine | goto_tab 8 | pop_keyboard_mode 83 | map --mode cmd 9 combine | goto_tab 9 | pop_keyboard_mode 84 | map --mode cmd a combine | send_key grave | pop_keyboard_mode 85 | map --mode cmd pageup combine | show_scrollback | pop_keyboard_mode 86 | map --mode cmd e combine | launch --stdin-source=@screen_scrollback lvim -R - | pop_keyboard_mode 87 | map ctrl+shift+v paste_from_clipboard 88 | 89 | tab_bar_style powerline 90 | tab_bar_min_tabs 1 91 | tab_title_template "{fmt.fg.red}{keyboard_mode + ' ' if index == 1 else ' '}{bell_symbol}{activity_symbol}{fmt.fg._00aaaa}{index} {fmt.fg.tab}{title}" 92 | active_tab_foreground #000 93 | active_tab_background #ddd 94 | inactive_tab_foreground #aaa 95 | inactive_tab_background #000 96 | 97 | allow_remote_control yes 98 | 99 | # allow closing terminal after "disown" or with background processes 100 | close_on_child_death yes 101 | 102 | scrollback_pager less --RAW-CONTROL-CHARS --ignore-case --quit-if-one-screen --LONG-PROMPT --shift=5 +INPUT_LINE_NUMBER 103 | -------------------------------------------------------------------------------- /konsole/Screen.profile: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | ColorScheme=Gruvbox 3 | Font=JetBrains Mono NL,11,-1,5,50,0,0,0,0,0 4 | LineSpacing=1 5 | UseFontLineChararacters=false 6 | 7 | [General] 8 | DimWhenInactive=false 9 | Name=Screen 10 | Parent=FALLBACK/ 11 | TerminalCenter=false 12 | TerminalMargin=14 13 | 14 | [Interaction Options] 15 | AutoCopySelectedText=true 16 | CopyTextAsHTML=false 17 | MiddleClickPasteMode=1 18 | 19 | [Scrolling] 20 | HistoryMode=0 21 | ScrollBarPosition=2 22 | -------------------------------------------------------------------------------- /kwin-rules.kwinrule: -------------------------------------------------------------------------------- 1 | [Window settings for copyq] 2 | Description=Window settings for copyq 3 | position=1164,376 4 | positionrule=4 5 | size=701,680 6 | sizerule=4 7 | title=CopyQ 8 | titlematch=1 9 | types=1 10 | wmclass=copyq copyq 11 | wmclasscomplete=true 12 | wmclassmatch=1 13 | 14 | [Window settings for copyq action dialog] 15 | Description=Window settings for copyq action dialog 16 | position=98,101 17 | positionrule=4 18 | size=942,840 19 | sizerule=4 20 | title=Action Dialog — CopyQ 21 | titlematch=1 22 | types=1 23 | wmclass=copyq 24 | wmclassmatch=1 25 | 26 | [Window settings for copyq commands] 27 | Description=Window settings for copyq commands 28 | position=98,101 29 | positionrule=4 30 | size=942,840 31 | sizerule=4 32 | title=Commands — CopyQ 33 | titlematch=1 34 | types=1 35 | wmclass=copyq 36 | wmclassmatch=1 37 | 38 | [Window settings for copyq log] 39 | Description=Window settings for copyq log 40 | position=98,101 41 | positionrule=4 42 | size=1357,899 43 | sizerule=4 44 | title=Log — CopyQ 45 | titlematch=1 46 | types=1 47 | wmclass=copyq 48 | wmclassmatch=1 49 | 50 | [Window settings for copyq preferences] 51 | Description=Window settings for copyq preferences 52 | position=98,101 53 | positionrule=4 54 | size=942,840 55 | sizerule=4 56 | title=Preferences — CopyQ 57 | titlematch=1 58 | types=1 59 | wmclass=copyq 60 | wmclassmatch=1 61 | 62 | [Window settings for copyq select icon] 63 | Description=Window settings for copyq select icon 64 | position=220,154 65 | positionrule=4 66 | size=942,840 67 | sizerule=4 68 | title=Select Icon — CopyQ 69 | titlematch=1 70 | types=1 71 | wmclass=copyq 72 | wmclassmatch=1 73 | 74 | [Window settings for firefox] 75 | Description=Window settings for firefox 76 | clientmachine=localhost 77 | maximizehoriz=true 78 | maximizehorizrule=3 79 | maximizevert=true 80 | maximizevertrule=3 81 | title="_MENTIONS" (23) - lholecek@redhat.com - Red Hat Mail - Mozilla Firefox 82 | types=1 83 | windowrole=browser 84 | windowrolematch=1 85 | wmclass=navigator firefox 86 | wmclasscomplete=true 87 | wmclassmatch=1 88 | 89 | [Window settings for konsole] 90 | Description=Window settings for konsole 91 | clientmachine=localhost 92 | maximizehoriz=true 93 | maximizehorizrule=3 94 | maximizevert=true 95 | maximizevertrule=3 96 | noborder=true 97 | noborderrule=3 98 | title=~ : screen.sh — Konsole 99 | types=1 100 | windowrole=mainwindow#1 101 | windowrolematch=1 102 | wmclass=konsole 103 | wmclassmatch=1 104 | -------------------------------------------------------------------------------- /kwinrc: -------------------------------------------------------------------------------- 1 | [Desktops] 2 | Id_1=600e6e29-bef0-4b42-aa27-93f09a4a581a 3 | Number=1 4 | Rows=1 5 | 6 | [EdgeBarrier] 7 | EdgeBarrier=0 8 | 9 | [NightColor] 10 | Active=true 11 | LatitudeAuto=49.68 12 | LongitudeAuto=18.67 13 | 14 | [Plugins] 15 | fadingpopupsEnabled=false 16 | fullscreenEnabled=false 17 | loginEnabled=false 18 | logoutEnabled=false 19 | maximizeEnabled=false 20 | screenedgeEnabled=false 21 | slidingpopupsEnabled=false 22 | 23 | [Tiling] 24 | padding=4 25 | 26 | [Tiling][1a13b187-8f4a-5b7e-86bf-2cd7b7389c34] 27 | tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} 28 | 29 | [Tiling][2194a96c-548c-5b33-a588-3090cf8f27f0] 30 | tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} 31 | 32 | [Tiling][8e6f9fcb-5067-518b-ab39-85716fd3002e] 33 | tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} 34 | 35 | [Tiling][c2812a18-44df-5a50-a08b-db74d969e888] 36 | tiles={"layoutDirection":"horizontal","tiles":[{"width":0.25},{"width":0.5},{"width":0.25}]} 37 | 38 | [Windows] 39 | BorderlessMaximizedWindows=true 40 | 41 | [Xwayland] 42 | Scale=2 43 | -------------------------------------------------------------------------------- /mako/config: -------------------------------------------------------------------------------- 1 | on-button-middle=exec makoctl menu -n "$id" rofi -dmenu -p 'Select action: ' 2 | -------------------------------------------------------------------------------- /nvim/.neoconf.json: -------------------------------------------------------------------------------- 1 | { 2 | "neodev": { 3 | "library": { 4 | "enabled": true, 5 | "plugins": true 6 | } 7 | }, 8 | "neoconf": { 9 | "plugins": { 10 | "lua_ls": { 11 | "enabled": true 12 | } 13 | } 14 | }, 15 | "lspconfig": { 16 | "lua_ls": { 17 | "Lua.format.enable": false 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /nvim/.stylua.toml: -------------------------------------------------------------------------------- 1 | column_width = 120 2 | line_endings = "Unix" 3 | indent_type = "Spaces" 4 | indent_width = 2 5 | quote_style = "AutoPreferDouble" 6 | call_parentheses = "None" 7 | collapse_simple_statement = "Always" 8 | -------------------------------------------------------------------------------- /nvim/README.md: -------------------------------------------------------------------------------- 1 | # AstroNvim Template 2 | 3 | **NOTE:** This is for AstroNvim v4+ 4 | 5 | A template for getting started with [AstroNvim](https://github.com/AstroNvim/AstroNvim) 6 | 7 | ## 🛠️ Installation 8 | 9 | #### Make a backup of your current nvim and shared folder 10 | 11 | ```shell 12 | mv ~/.config/nvim ~/.config/nvim.bak 13 | mv ~/.local/share/nvim ~/.local/share/nvim.bak 14 | mv ~/.local/state/nvim ~/.local/state/nvim.bak 15 | mv ~/.cache/nvim ~/.cache/nvim.bak 16 | ``` 17 | 18 | #### Create a new user repository from this template 19 | 20 | Press the "Use this template" button above to create a new repository to store your user configuration. 21 | 22 | You can also just clone this repository directly if you do not want to track your user configuration in GitHub. 23 | 24 | #### Clone the repository 25 | 26 | ```shell 27 | git clone https://github.com// ~/.config/nvim 28 | ``` 29 | 30 | #### Start Neovim 31 | 32 | ```shell 33 | nvim 34 | ``` 35 | -------------------------------------------------------------------------------- /nvim/init.lua: -------------------------------------------------------------------------------- 1 | -- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution 2 | -- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk. 3 | local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim" 4 | if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then 5 | -- stylua: ignore 6 | vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) 7 | end 8 | vim.opt.rtp:prepend(lazypath) 9 | 10 | -- validate that lazy is available 11 | if not pcall(require, "lazy") then 12 | -- stylua: ignore 13 | vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {}) 14 | vim.fn.getchar() 15 | vim.cmd.quit() 16 | end 17 | 18 | require "lazy_setup" 19 | require "polish" 20 | -------------------------------------------------------------------------------- /nvim/lua/community.lua: -------------------------------------------------------------------------------- 1 | ---@type LazySpec 2 | return { 3 | "AstroNvim/astrocommunity", 4 | -- available plugins can be found at https://github.com/AstroNvim/astrocommunity 5 | { import = "astrocommunity.recipes.heirline-nvchad-statusline" }, 6 | { import = "astrocommunity.pack.cpp" }, 7 | { import = "astrocommunity.pack.python-ruff" }, 8 | { import = "astrocommunity.colorscheme.catppuccin" }, 9 | } 10 | -------------------------------------------------------------------------------- /nvim/lua/lazy_setup.lua: -------------------------------------------------------------------------------- 1 | require("lazy").setup({ 2 | { 3 | "AstroNvim/AstroNvim", 4 | version = "^4", -- Remove version tracking to elect for nighly AstroNvim 5 | import = "astronvim.plugins", 6 | colorscheme = "catppuccin-mocha", 7 | opts = { -- AstroNvim options must be set here with the `import` key 8 | mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up 9 | maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up 10 | icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available) 11 | pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override 12 | update_notifications = true, -- Enable/disable notification about running `:Lazy update` twice to update pinned plugins 13 | }, 14 | }, 15 | { import = "community" }, 16 | { import = "plugins" }, 17 | } --[[@as LazySpec]], { 18 | -- Configure any other `lazy.nvim` configuration options here 19 | install = { colorscheme = { "astrotheme", "habamax" } }, 20 | ui = { backdrop = 100 }, 21 | performance = { 22 | rtp = { 23 | -- disable some rtp plugins, add more to your liking 24 | disabled_plugins = { 25 | "gzip", 26 | "netrwPlugin", 27 | "tarPlugin", 28 | "tohtml", 29 | "zipPlugin", 30 | }, 31 | }, 32 | }, 33 | } --[[@as LazyConfig]]) 34 | -------------------------------------------------------------------------------- /nvim/lua/plugins/astrocore.lua: -------------------------------------------------------------------------------- 1 | -- AstroCore provides a central place to modify mappings, vim options, autocommands, and more! 2 | -- Configuration documentation can be found with `:h astrocore` 3 | -- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) 4 | -- as this provides autocomplete and documentation while editing 5 | 6 | ---@type LazySpec 7 | return { 8 | "AstroNvim/astrocore", 9 | ---@type AstroCoreOpts 10 | opts = { 11 | -- Configure core features of AstroNvim 12 | features = { 13 | large_buf = { size = 1024 * 256, lines = 10000 }, -- set global limits for large files for disabling features like treesitter 14 | autopairs = false, -- enable autopairs at start 15 | cmp = true, -- enable completion at start 16 | diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on) 17 | highlighturl = true, -- highlight URLs at start 18 | notifications = true, -- enable notifications at start 19 | }, 20 | -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on 21 | diagnostics = { 22 | virtual_text = true, 23 | underline = true, 24 | }, 25 | -- vim options can be configured here 26 | options = { 27 | opt = { -- vim.opt. 28 | relativenumber = true, -- sets vim.opt.relativenumber 29 | number = true, -- sets vim.opt.number 30 | spell = false, -- sets vim.opt.spell 31 | signcolumn = "yes", -- sets vim.opt.signcolumn to yes 32 | wrap = false, -- sets vim.opt.wrap 33 | }, 34 | g = { -- vim.g. 35 | -- configure global vim variables (vim.g) 36 | -- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup` 37 | -- This can be found in the `lua/lazy_setup.lua` file 38 | }, 39 | }, 40 | -- Mappings can be configured through AstroCore as well. 41 | -- NOTE: keycodes follow the casing in the vimdocs. For example, `` must be capitalized 42 | mappings = { 43 | -- first key is the mode 44 | n = { 45 | -- second key is the lefthand side of the map 46 | 47 | -- navigate buffer tabs 48 | ["]b"] = { function() require("astrocore.buffer").nav(vim.v.count1) end, desc = "Next buffer" }, 49 | ["[b"] = { function() require("astrocore.buffer").nav(-vim.v.count1) end, desc = "Previous buffer" }, 50 | 51 | -- mappings seen under group name "Buffer" 52 | ["bd"] = { 53 | function() 54 | require("astroui.status.heirline").buffer_picker( 55 | function(bufnr) require("astrocore.buffer").close(bufnr) end 56 | ) 57 | end, 58 | desc = "Close buffer from tabline", 59 | }, 60 | 61 | -- tables with just a `desc` key will be registered with which-key if it's installed 62 | -- this is useful for naming menus 63 | -- ["b"] = { desc = "Buffers" }, 64 | 65 | -- setting a mapping to false will disable it 66 | -- [""] = false, 67 | }, 68 | }, 69 | }, 70 | } 71 | -------------------------------------------------------------------------------- /nvim/lua/plugins/astrolsp.lua: -------------------------------------------------------------------------------- 1 | -- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine 2 | -- Configuration documentation can be found with `:h astrolsp` 3 | -- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) 4 | -- as this provides autocomplete and documentation while editing 5 | 6 | ---@type LazySpec 7 | return { 8 | "AstroNvim/astrolsp", 9 | ---@type AstroLSPOpts 10 | opts = { 11 | -- Configuration table of features provided by AstroLSP 12 | features = { 13 | codelens = true, -- enable/disable codelens refresh on start 14 | inlay_hints = false, -- enable/disable inlay hints on start 15 | semantic_tokens = true, -- enable/disable semantic token highlighting 16 | }, 17 | -- customize lsp formatting options 18 | formatting = { 19 | -- control auto formatting on save 20 | format_on_save = { 21 | enabled = false, -- enable or disable format on save globally 22 | allow_filetypes = { -- enable format on save for specified filetypes only 23 | "go", 24 | }, 25 | ignore_filetypes = { -- disable format on save for specified filetypes 26 | "python", 27 | }, 28 | }, 29 | disabled = { -- disable formatting capabilities for the listed language servers 30 | -- disable lua_ls formatting capability if you want to use StyLua to format your lua code 31 | -- "lua_ls", 32 | }, 33 | timeout_ms = 1000, -- default format timeout 34 | -- filter = function(client) -- fully override the default formatting function 35 | -- return true 36 | -- end 37 | }, 38 | -- enable servers that you already have installed without mason 39 | servers = { 40 | -- "pyright" 41 | }, 42 | -- customize language server configuration options passed to `lspconfig` 43 | ---@diagnostic disable: missing-fields 44 | config = { 45 | -- clangd = { capabilities = { offsetEncoding = "utf-8" } }, 46 | }, 47 | -- customize how language servers are attached 48 | handlers = { 49 | -- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server 50 | -- function(server, opts) require("lspconfig")[server].setup(opts) end 51 | 52 | -- the key is the server that is being setup with `lspconfig` 53 | -- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server 54 | -- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed 55 | }, 56 | -- Configure buffer local auto commands to add when attaching a language server 57 | autocmds = { 58 | -- first key is the `augroup` to add the auto commands to (:h augroup) 59 | lsp_codelens_refresh = { 60 | -- Optional condition to create/delete auto command group 61 | -- can either be a string of a client capability or a function of `fun(client, bufnr): boolean` 62 | -- condition will be resolved for each client on each execution and if it ever fails for all clients, 63 | -- the auto commands will be deleted for that buffer 64 | cond = "textDocument/codeLens", 65 | -- cond = function(client, bufnr) return client.name == "lua_ls" end, 66 | -- list of auto commands to set 67 | { 68 | -- events to trigger 69 | event = { "InsertLeave", "BufEnter" }, 70 | -- the rest of the autocmd options (:h nvim_create_autocmd) 71 | desc = "Refresh codelens (buffer)", 72 | callback = function(args) 73 | if require("astrolsp").config.features.codelens then vim.lsp.codelens.refresh { bufnr = args.buf } end 74 | end, 75 | }, 76 | }, 77 | }, 78 | -- mappings to be set up on attaching of a language server 79 | mappings = { 80 | n = { 81 | -- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean 82 | gD = { 83 | function() vim.lsp.buf.declaration() end, 84 | desc = "Declaration of current symbol", 85 | cond = "textDocument/declaration", 86 | }, 87 | ["uY"] = { 88 | function() require("astrolsp.toggles").buffer_semantic_tokens() end, 89 | desc = "Toggle LSP semantic highlight (buffer)", 90 | cond = function(client) 91 | return client.supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens ~= nil 92 | end, 93 | }, 94 | }, 95 | }, 96 | -- A custom `on_attach` function to be run after the default `on_attach` function 97 | -- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`) 98 | on_attach = function(client, bufnr) 99 | -- this would disable semanticTokensProvider for all clients 100 | -- client.server_capabilities.semanticTokensProvider = nil 101 | end, 102 | }, 103 | } 104 | -------------------------------------------------------------------------------- /nvim/lua/plugins/astroui.lua: -------------------------------------------------------------------------------- 1 | -- AstroUI provides the basis for configuring the AstroNvim User Interface 2 | -- Configuration documentation can be found with `:h astroui` 3 | -- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) 4 | -- as this provides autocomplete and documentation while editing 5 | 6 | ---@type LazySpec 7 | return { 8 | "AstroNvim/astroui", 9 | ---@type AstroUIOpts 10 | opts = { 11 | -- change colorscheme 12 | -- colorscheme = "astrodark", 13 | colorscheme = "catppuccin-mocha", 14 | -- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes 15 | highlights = { 16 | init = { -- this table overrides highlights in all themes 17 | -- Normal = { bg = "#000000" }, 18 | }, 19 | astrodark = { -- a table of overrides/changes when applying the astrotheme theme 20 | -- Normal = { bg = "#000000" }, 21 | }, 22 | }, 23 | -- Icons can be configured throughout the interface 24 | icons = { 25 | -- configure the loading of the lsp in the status line 26 | LSPLoading1 = "⠋", 27 | LSPLoading2 = "⠙", 28 | LSPLoading3 = "⠹", 29 | LSPLoading4 = "⠸", 30 | LSPLoading5 = "⠼", 31 | LSPLoading6 = "⠴", 32 | LSPLoading7 = "⠦", 33 | LSPLoading8 = "⠧", 34 | LSPLoading9 = "⠇", 35 | LSPLoading10 = "⠏", 36 | }, 37 | }, 38 | } 39 | -------------------------------------------------------------------------------- /nvim/lua/plugins/mappings.lua: -------------------------------------------------------------------------------- 1 | return { 2 | { 3 | "AstroNvim/astrocore", 4 | ---@type AstroCoreOpts 5 | opts = { 6 | mappings = { 7 | -- first key is the mode 8 | n = { 9 | -- second key is the lefthand side of the map 10 | -- mappings seen under group name "Buffer" 11 | -- 12 | [""] = {":lua require('telescope.builtin').find_files { shorten_path = true }", desc = "Find Files"}, 13 | ["j"] = {"Telescope grep_string search=", desc = "Grep Files"}, 14 | }, 15 | t = { 16 | -- setting a mapping to false will disable it 17 | -- [""] = false, 18 | }, 19 | }, 20 | }, 21 | }, 22 | } 23 | -------------------------------------------------------------------------------- /nvim/lua/plugins/none-ls.lua: -------------------------------------------------------------------------------- 1 | if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE 2 | 3 | -- Customize None-ls sources 4 | 5 | ---@type LazySpec 6 | return { 7 | "nvimtools/none-ls.nvim", 8 | opts = function(_, opts) 9 | -- opts variable is the default configuration table for the setup function call 10 | -- local null_ls = require "null-ls" 11 | 12 | -- Check supported formatters and linters 13 | -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting 14 | -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics 15 | 16 | -- Only insert new sources, do not replace the existing ones 17 | -- (If you wish to replace, use `opts.sources = {}` instead of the `list_insert_unique` function) 18 | opts.sources = require("astrocore").list_insert_unique(opts.sources, { 19 | -- Set a formatter 20 | -- null_ls.builtins.formatting.stylua, 21 | -- null_ls.builtins.formatting.prettier, 22 | }) 23 | end, 24 | } 25 | -------------------------------------------------------------------------------- /nvim/lua/plugins/treesitter.lua: -------------------------------------------------------------------------------- 1 | ---@type LazySpec 2 | return { 3 | "nvim-treesitter/nvim-treesitter", 4 | opts = { 5 | ensure_installed = { 6 | "python", 7 | "lua", 8 | "vim", 9 | }, 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /nvim/lua/plugins/user.lua: -------------------------------------------------------------------------------- 1 | ---@type LazySpec 2 | return { 3 | -- Git 4 | { 5 | "tpope/vim-fugitive", 6 | config = function(_, opts) 7 | vim.api.nvim_create_user_command('Gbl', 'Git blame', {}) 8 | end, 9 | }, 10 | 11 | -- cycle through diffs 12 | -- :DiffviewFileHistory % 13 | { "sindrets/diffview.nvim" }, 14 | 15 | -- handle line and column numbers in file names 16 | { "wsdjeg/vim-fetch" }, 17 | 18 | -- file helpers: 19 | -- - :Mkdir, :Rename, :SudoWrite, ... 20 | -- - automatic chmod +x for new scripts 21 | { "tpope/vim-eunuch" }, 22 | 23 | -- colorscheme 24 | { "EdenEast/nightfox.nvim" }, 25 | { "ellisonleao/gruvbox.nvim" }, 26 | { "catppuccin/nvim" }, 27 | 28 | -- -- Structural search and replace 29 | -- { 30 | -- "cshuaimin/ssr.nvim", 31 | -- lazy = true, 32 | -- -- Calling setup is optional. 33 | -- config = function() 34 | -- require("ssr").setup { 35 | -- border = "rounded", 36 | -- min_width = 50, 37 | -- min_height = 5, 38 | -- max_width = 120, 39 | -- max_height = 25, 40 | -- adjust_window = true, 41 | -- keymaps = { 42 | -- close = "q", 43 | -- next_match = "n", 44 | -- prev_match = "N", 45 | -- replace_confirm = "", 46 | -- replace_all = "", 47 | -- }, 48 | -- } 49 | -- end 50 | -- }, 51 | 52 | -- { 53 | -- "mfussenegger/nvim-dap", 54 | -- lazy = true, 55 | -- config = function() 56 | -- local dap = require('dap') 57 | -- -- https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation 58 | -- dap.adapters.gdb = { 59 | -- type = 'executable', 60 | -- command = 'gdb', 61 | -- args = { '--quiet', '--interpreter=dap' }, 62 | -- } 63 | -- dap.adapters.lldb = { 64 | -- type = 'executable', 65 | -- command = 'lldb-vscode', 66 | -- } 67 | -- dap.configurations.cpp = { 68 | -- { 69 | -- name = 'Run', 70 | -- type = 'lldb', 71 | -- request = 'launch', 72 | -- program = function() 73 | -- local path = vim.fn.input({ 74 | -- prompt = 'Path to executable: ', 75 | -- default = vim.fn.getcwd() .. '/', 76 | -- completion = 'file', 77 | -- }) 78 | -- return (path and path ~= "") and path or dap.ABORT 79 | -- end, 80 | -- args = function() 81 | -- local args = vim.fn.input({ 82 | -- prompt = 'Arguments: ', 83 | -- default = '', 84 | -- }) 85 | -- return vim.split(args, ' ') 86 | -- end, 87 | -- }, 88 | -- { 89 | -- name = 'Attach', 90 | -- type = 'lldb', 91 | -- request = 'attach', 92 | -- processId = require('dap.utils').pick_process, 93 | -- }, 94 | -- } 95 | -- end 96 | -- }, 97 | } 98 | -------------------------------------------------------------------------------- /nvim/lua/polish.lua: -------------------------------------------------------------------------------- 1 | vim.opt.mouse = "" 2 | vim.opt.wrap = true 3 | vim.opt.spell = true 4 | 5 | vim.opt.shiftwidth = 4 6 | vim.opt.tabstop = 4 7 | vim.opt.softtabstop = 4 8 | 9 | vim.opt.scrolloff=5 10 | 11 | vim.opt.relativenumber = false 12 | 13 | -- Always show command line and suppress "Press ENTER or type command to 14 | -- continue" messages 15 | vim.opt.cmdheight = 1 16 | 17 | vim.api.nvim_create_autocmd({ "FileType" }, { 18 | pattern = { "yaml", "json", "jsonnet" }, 19 | callback = function() 20 | vim.opt.shiftwidth = 2 21 | vim.opt.tabstop = 2 22 | vim.opt.softtabstop = 2 23 | end, 24 | }) 25 | 26 | vim.api.nvim_create_autocmd({ "FileType" }, { 27 | pattern = { "go" }, 28 | callback = function() 29 | vim.opt.expandtab = false 30 | end, 31 | }) 32 | 33 | vim.env.RIPGREP_CONFIG_PATH = vim.env.HOME .. "/.config/ripgreprc" 34 | 35 | local actions = require "telescope.actions" 36 | require("telescope").setup { 37 | pickers = { 38 | find_files = { 39 | hidden = true, 40 | file_ignore_patterns = { 41 | "^.git/", 42 | "^.mypy_cache/", 43 | "^.tox/", 44 | "^.venv/", 45 | "^tags$", 46 | "^venv/", 47 | }, 48 | }, 49 | }, 50 | defaults = { 51 | mappings = { 52 | i = { 53 | [""] = actions.cycle_history_next, 54 | [""] = actions.cycle_history_prev, 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /nvim/neovim.yml: -------------------------------------------------------------------------------- 1 | --- 2 | base: lua51 3 | 4 | globals: 5 | vim: 6 | any: true 7 | -------------------------------------------------------------------------------- /nvim/selene.toml: -------------------------------------------------------------------------------- 1 | std = "neovim" 2 | 3 | [rules] 4 | global_usage = "allow" 5 | if_same_then_else = "allow" 6 | incorrect_standard_library_use = "allow" 7 | mixed_table = "allow" 8 | multiple_statements = "allow" 9 | -------------------------------------------------------------------------------- /openbox/autostart: -------------------------------------------------------------------------------- 1 | # 2 | # These things are run when an Openbox X Session is started. 3 | # You may place a similar script in $HOME/.config/openbox/autostart 4 | # to run user-specific things. 5 | # 6 | 7 | # If you want to use GNOME config tools... 8 | # 9 | #if test -x /usr/libexec/gnome-settings-daemon >/dev/null; then 10 | # /usr/libexec/gnome-settings-daemon & 11 | #elif which gnome-settings-daemon >/dev/null; then 12 | # gnome-settings-daemon & 13 | #fi 14 | 15 | # If you want to use XFCE config tools... 16 | # 17 | #xfce-mcs-manager & 18 | -------------------------------------------------------------------------------- /openbox/environment: -------------------------------------------------------------------------------- 1 | # 2 | # Set system-wide environment variables here for Openbox 3 | # User-specific variables should be placed in $HOME/.config/openbox/environment 4 | # 5 | 6 | # To set your language for displaying messages and time/date formats, use the following: 7 | #LANG=en_CA.UTF8 8 | 9 | # To set your keyboard layout, you need to modify your X config: 10 | # http://www.google.com/search?q=how+to+set+keyboard+layout+xorg 11 | -------------------------------------------------------------------------------- /openbox/menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | yes 24 | 25 | 26 | 27 | 28 | 29 | yes 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /profile.d/less-improved.sh: -------------------------------------------------------------------------------- 1 | export LESS="$LESS --raw-control-chars --ignore-case --quit-if-one-screen --LONG-PROMPT --shift=5" 2 | export SYSTEMD_LESS=$LESS 3 | -------------------------------------------------------------------------------- /qt5ct/qss/scrollbar-color.qss: -------------------------------------------------------------------------------- 1 | /* SCROLLBARS (NOTE: Changing 1 subcontrol means you have to change all of them)*/ 2 | QScrollBar{ 3 | background: palette(alternate-base); 4 | } 5 | QScrollBar:horizontal{ 6 | margin: 0px 0px 0px 0px; 7 | height: 1em; 8 | } 9 | QScrollBar:vertical{ 10 | margin: 0px 0px 0px 0px; 11 | width: 1em; 12 | } 13 | QScrollBar::handle{ 14 | background: #d00; 15 | border: 4px solid transparent; 16 | border-radius: 4px; 17 | } 18 | QScrollBar::handle:horizontal{ 19 | min-width: 2em; 20 | } 21 | QScrollBar::handle:vertical{ 22 | min-height: 2em; 23 | } 24 | QScrollBar::handle:hover, QScrollBar::add-line:hover, QScrollBar::sub-line:hover{ 25 | background: yellow; 26 | } 27 | QScrollBar::add-line{ 28 | subcontrol-origin: none; 29 | } 30 | QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical{ 31 | height: 0px; 32 | } 33 | QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal{ 34 | width: 0px; 35 | } 36 | QScrollBar::sub-line{ 37 | subcontrol-origin: none; 38 | } 39 | -------------------------------------------------------------------------------- /qt5ct/qt5ct.conf: -------------------------------------------------------------------------------- 1 | [Appearance] 2 | color_scheme_path=/usr/share/qt5ct/colors/airy.conf 3 | custom_palette=true 4 | icon_theme=breeze 5 | standard_dialogs=gtk3 6 | style=Breeze 7 | 8 | [Fonts] 9 | fixed=@Variant(\0\0\0@\0\0\0\x10\0O\0v\0\x65\0r\0p\0\x61\0s\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) 10 | general=@Variant(\0\0\0@\0\0\0\x10\0O\0v\0\x65\0r\0p\0\x61\0s\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10) 11 | 12 | [Interface] 13 | activate_item_on_single_click=1 14 | buttonbox_layout=2 15 | cursor_flash_time=1000 16 | dialog_buttons_have_icons=1 17 | double_click_interval=400 18 | gui_effects=@Invalid() 19 | keyboard_scheme=2 20 | menus_have_icons=true 21 | show_shortcuts_in_context_menus=true 22 | stylesheets=@Invalid() 23 | toolbutton_style=4 24 | underline_shortcut=1 25 | wheel_scroll_lines=3 26 | 27 | [QSSEditor] 28 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\t\xaf\0\0\x1L\0\0\f\x19\0\0\x2\xdb\0\0\t\xaf\0\0\x1L\0\0\f\x19\0\0\x2\xdb\0\0\0\0\0\0\0\0\a\x80\0\0\t\xaf\0\0\x1L\0\0\f\x19\0\0\x2\xdb) 29 | 30 | [SettingsWindow] 31 | geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x3\xc0\0\0\0\x14\0\0\v?\0\0\x4$\0\0\x3\xc0\0\0\0\x14\0\0\x6\x9e\0\0\x2\x61\0\0\0\x1\x2\0\0\0\a\x80\0\0\x3\xc0\0\0\0\x14\0\0\v?\0\0\x4$) 32 | -------------------------------------------------------------------------------- /qutebrowser/autoconfig.yml: -------------------------------------------------------------------------------- 1 | # If a config.py file exists, this file is ignored unless it's explicitly loaded 2 | # via config.load_autoconfig(). For more information, see: 3 | # https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml 4 | # DO NOT edit this file by hand, qutebrowser will overwrite it. 5 | # Instead, create a config.py - see :help for details. 6 | 7 | config_version: 2 8 | settings: 9 | auto_save.session: 10 | global: true 11 | bindings.commands: 12 | global: 13 | normal: 14 | ;: 'set-cmd-text :' 15 | colors.tabs.bar.bg: 16 | global: black 17 | colors.tabs.even.bg: 18 | global: '#333' 19 | colors.tabs.odd.bg: 20 | global: black 21 | colors.tabs.selected.even.bg: 22 | global: '#060' 23 | colors.tabs.selected.odd.bg: 24 | global: '#060' 25 | colors.webpage.bg: 26 | global: white 27 | colors.webpage.darkmode.algorithm: 28 | global: lightness-cielab 29 | colors.webpage.darkmode.enabled: 30 | global: false 31 | colors.webpage.darkmode.policy.images: 32 | global: never 33 | colors.webpage.darkmode.policy.page: 34 | global: always 35 | colors.webpage.preferred_color_scheme: 36 | global: light 37 | content.desktop_capture: 38 | https://meet.google.com: true 39 | content.media.audio_capture: 40 | https://meet.google.com: true 41 | content.media.audio_video_capture: 42 | https://meet.google.com: true 43 | content.media.video_capture: 44 | https://meet.google.com: true 45 | content.notifications.enabled: 46 | https://meet.google.com: true 47 | fonts.tabs.selected: 48 | global: 7pt default_family 49 | fonts.tabs.unselected: 50 | global: 7pt default_family 51 | session.lazy_restore: 52 | global: true 53 | tabs.position: 54 | global: left 55 | tabs.width: 56 | global: 200 57 | -------------------------------------------------------------------------------- /qutebrowser/greasemonkey/darkmode.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Dark Mode 3 | // @namespace DarkReader 4 | // @description Inverts the brightness of pages to reduce eye strain 5 | // @version 4.9.43 6 | // @author https://github.com/darkreader/darkreader#contributors 7 | // @homepageURL https://darkreader.org/ | https://github.com/darkreader/darkreader 8 | // @run-at document-end 9 | // @grant none 10 | // @include http* 11 | // @require https://cdn.jsdelivr.net/npm/darkreader/darkreader.min.js 12 | // @noframes 13 | // ==/UserScript== 14 | 15 | DarkReader.enable({ 16 | brightness: 100, 17 | contrast: 90, 18 | sepia: 10 19 | }); 20 | -------------------------------------------------------------------------------- /ripgreprc: -------------------------------------------------------------------------------- 1 | --hidden 2 | --smart-case 3 | --max-columns=10000 4 | --max-columns-preview 5 | 6 | --glob=!.git 7 | --glob=!.mypy_cache* 8 | --glob=!.venv* 9 | --glob=!venv 10 | --glob=!tags 11 | -------------------------------------------------------------------------------- /sway/config.j2: -------------------------------------------------------------------------------- 1 | # Sway Wayland compositor configuration. 2 | # See: sway(5) 3 | output "LG Electronics LG Ultra HD 0x00003617" scale 2 4 | output "LG Electronics LG Ultra HD 0x00003617" pos 1280 0 res 3840x2160 5 | output * bg "~/Pictures/wallpapers/current.jpg" fill 6 | output eDP-1 pos 0 0 res 1920x1080 7 | output eDP-1 scale 1.5 8 | output eDP-1 pos 0 0 res 1920x1080 9 | 10 | exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK 11 | exec hash dbus-update-activation-environment 2>/dev/null && \ 12 | dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK 13 | 14 | # A polkit agent is needed by some apps. 15 | exec lxpolkit 16 | 17 | # Allow screen sharing 18 | exec env XDG_CURRENT_DESKTOP=sway /usr/libexec/xdg-desktop-portal -r 19 | 20 | default_orientation horizontal 21 | #workspace_layout tabbed 22 | 23 | set $mod Mod4 24 | set $alt Mod1 25 | set $ctrl Control 26 | 27 | # Disable annoying focus with mouse. 28 | focus_follows_mouse no 29 | 30 | # use these keys for focus, movement, and resize directions when reaching for 31 | # the arrows is not convenient 32 | set $up k 33 | set $down j 34 | set $left h 35 | set $right l 36 | 37 | # Use Mouse+$mod to drag floating windows to their wanted position 38 | floating_modifier $alt 39 | 40 | # kill focused window 41 | bindsym $alt+F4 kill 42 | 43 | # The middle button over a titlebar kills the window 44 | bindsym --release button2 kill 45 | # The right button toggles floating 46 | bindsym button3 floating toggle 47 | 48 | # resize window (you can also use the mouse for that) 49 | mode "resize" { 50 | # These bindings trigger as soon as you enter the resize mode 51 | 52 | # Pressing left will shrink the window’s width. 53 | # Pressing right will grow the window’s width. 54 | # Pressing up will shrink the window’s height. 55 | # Pressing down will grow the window’s height. 56 | bindsym $left resize shrink width 10 px or 10 ppt 57 | bindsym $down resize grow height 10 px or 10 ppt 58 | bindsym $up resize shrink height 10 px or 10 ppt 59 | bindsym $right resize grow width 10 px or 10 ppt 60 | 61 | # same bindings, but for the arrow keys 62 | bindsym Left resize shrink width 10 px or 10 ppt 63 | bindsym Down resize grow height 10 px or 10 ppt 64 | bindsym Up resize shrink height 10 px or 10 ppt 65 | bindsym Right resize grow width 10 px or 10 ppt 66 | 67 | # back to normal: Enter or Escape 68 | bindsym Return mode "default" 69 | bindsym Escape mode "default" 70 | } 71 | 72 | bar { 73 | #tray_output eDP-1 74 | #tray_output DP-4 75 | #status_command i3status --config ~/.i3/status.conf 76 | #status_command i3status-rs ~/.config/sway/status.toml 77 | swaybar_command sh -c "exec ~/bin/waybar.sh" 78 | colors { 79 | background #282828 80 | statusline #aaaaaa 81 | separator #505050 82 | 83 | focused_workspace #4c7899 #285577 #ffffff 84 | active_workspace #333333 #5f676a #ffffff 85 | inactive_workspace #333333 #222222 #888888 86 | urgent_workspace #2f343a #900000 #ffffff 87 | binding_mode #2f343a #900000 #ffffff 88 | } 89 | } 90 | 91 | default_border pixel 4 92 | default_floating_border normal 93 | hide_edge_borders --i3 smart 94 | 95 | titlebar_padding 2 96 | titlebar_border_thickness 0 97 | font JetBrains Mono NL Medium 10px 98 | 99 | workspace_auto_back_and_forth yes 100 | 101 | # class border backgr. text indicator child_border 102 | client.focused #4c7899 #285577 #aaddff #2e9ef4 #00aaff 103 | client.focused_inactive #333333 #5f676a #aaddff #484e50 #5f676a 104 | client.unfocused #333333 #222222 #888888 #292d2e #222222 105 | client.urgent #2f343a #900000 #ffffff #900000 #900000 106 | client.placeholder #000000 #0c0c0c #ffffff #000000 #0c0c0c 107 | client.background #ffffff 108 | 109 | # Window behavior 110 | #for_window [instance="^copyq$" class="^[Cc]opyq"] floating enable, border normal 111 | #for_window [instance="^xfce4-appfinder$" class="^Xfce4-appfinder$"] floating enable, border normal 112 | #for_window [instance="^xev$"] floating enable, border normal 113 | for_window [app_id="^com.github.hluk.copyq$"] floating enable, border normal 114 | for_window [title="^InfiniteCopy$"] floating enable, border normal 115 | 116 | for_window [app_id="^mpv$"] floating enable, resize set 960 540, border pixel 0 117 | 118 | # for_window [app_id="^org.mozilla.firefox$"] move workspace 2 119 | # for_window [app_id="^firefox-work$"] move workspace 3 120 | for_window [app_id="^firefox$" title="^Picture-in-Picture$"] floating enable 121 | 122 | for_window [title=" - Sharing Indicator$"] floating enable, sticky enable 123 | for_window [title="^Password Required .* Firefox$"] floating enable 124 | 125 | for_window [class="^krunner$"] floating enable, border none 126 | for_window [app_id="^ulauncher$"] floating enable, border none 127 | 128 | for_window [class="^steam_app_"] floating enable, border none 129 | 130 | for_window [class="^Shortcut_center"] floating enable 131 | 132 | # Omit locking when fullscreen window is active 133 | # xwayland version 134 | # for_window [class=".*"] inhibit_idle fullscreen 135 | # wayland vesion 136 | # for_window [app_id=".*"] inhibit_idle fullscreen 137 | # all windows 138 | for_window [class=".*"] inhibit_idle focus 139 | for_window [app_id=".*"] inhibit_idle focus 140 | 141 | # Shortcuts 142 | {% macro bind_(key, cmd, mods, exit_cmd) -%} 143 | {% for mod in mods %} 144 | bindsym --no-repeat {{ mod }}{{ key }} {{ cmd }}; {{ exit_cmd }} 145 | {%- endfor %} 146 | {%- endmacro %} 147 | 148 | {% macro bindexec_(key, cmd, mods, exit_cmd) -%} 149 | {% for mod in mods %} 150 | bindsym --no-repeat {{ mod }}{{ key }} {{ exit_cmd }}; exec '{{ cmd }}' 151 | {%- endfor %} 152 | {%- endmacro %} 153 | 154 | bindsym --no-repeat Super_L mode "shortcut mode" 155 | mode "shortcut mode" { 156 | {% macro bind(key, cmd, mods=("", "$mod+"), exit_cmd="mode default") -%}{{ bind_(key, cmd, mods, exit_cmd) }}{%- endmacro %} 157 | {% macro bindexec(key, cmd, mods=("", "$mod+"), exit_cmd="mode default") -%}{{ bindexec_(key, cmd, mods, exit_cmd) }}{%- endmacro %} 158 | {% include 'shortcuts' %} 159 | 160 | {{ bind('Super_L', 'workspace back_and_forth') }} 161 | {{ bind('Escape', '') }} 162 | } 163 | 164 | {% macro bind(key, cmd, mods=("$mod+",), exit_cmd="") -%}{{ bind_(key, cmd, mods, exit_cmd) }}{%- endmacro %} 165 | {% macro bindexec(key, cmd, mods=("$mod+",), exit_cmd="") -%}{{ bindexec_(key, cmd, mods, exit_cmd) }}{%- endmacro %} 166 | 167 | {% include 'shortcuts' %} 168 | 169 | bindsym $ctrl+$alt+l exec "~/bin/lock.sh" 170 | bindsym $ctrl+$alt+0 exec "~/bin/suspend.sh" 171 | 172 | # Volume 173 | bindsym XF86AudioLowerVolume exec "~/bin/volume_down.sh" 174 | bindsym XF86AudioRaiseVolume exec "~/bin/volume_up.sh" 175 | bindsym XF86AudioMute exec "~/bin/togglemute.sh" 176 | bindsym XF86AudioPlay exec "~/bin/toggleplay.sh" 177 | 178 | bindsym XF86MonBrightnessDown exec "~/bin/brightness_down.sh" 179 | bindsym XF86MonBrightnessUp exec "~/bin/brightness_up.sh" 180 | 181 | # Autostart 182 | exec "~/bin/notifications.sh" 183 | exec "~/bin/sunset.sh" 184 | exec "~/bin/idle.sh" 185 | exec "~/bin/xitomatl.sh" 186 | 187 | # sleep as workaround for big tray icons waybar 0.9.8 bug 188 | # https://github.com/Alexays/Waybar/issues/1212 189 | exec sh -c "sleep 5; exec ~/bin/clipboard.sh" 190 | 191 | # swaymsg -t get_outputs 192 | # exec_always "~/bin/monitors.sh" 193 | 194 | # swaymsg -t get_inputs 195 | #input type:keyboard xkb_numlock enable 196 | exec_always "~/bin/keyboard.sh" 197 | 198 | exec_always sh -c "pkill ulauncher; ulauncher --hide-window" 199 | 200 | exec_always sh -c "exec ~/bin/waybar.sh" 201 | 202 | {% for n in [0,6,7,8,9,10] %} 203 | workspace {{ n }} output eDP-1 204 | {% endfor %} 205 | 206 | {% for n in [1,2,3,4,5] %} 207 | workspace {{ n }} output DP-6 208 | {% endfor %} 209 | 210 | focus output DP-6 211 | -------------------------------------------------------------------------------- /sway/status.conf: -------------------------------------------------------------------------------- 1 | # i3status configuration file. 2 | # see "man i3status" for documentation. 3 | 4 | # It is important that this file is edited as UTF-8. 5 | # The following line should contain a sharp s: 6 | # ß 7 | # If the above line is not correctly displayed, fix your editor first! 8 | 9 | general { 10 | colors = true 11 | interval = 5 12 | 13 | color_good = '#666666' 14 | color_degraded = '#ccdc90' 15 | color_bad = '#e89393' 16 | } 17 | 18 | #order += "ipv6" 19 | #order += "disk /" 20 | #order += "wireless _first_" 21 | #order += "ethernet _first_" 22 | order += "battery all" 23 | order += "load" 24 | order += "volume master" 25 | order += "tztime local" 26 | 27 | wireless _first_ { 28 | format_up = " %essid%quality" 29 | format_down = "" 30 | } 31 | 32 | ethernet _first_ { 33 | # if you use %speed, i3status requires root privileges 34 | format_up = "%speed" 35 | format_down = "" 36 | } 37 | 38 | battery all { 39 | status_chr = "⚡" 40 | status_bat = "🔋" 41 | status_full = "" 42 | status_unk = "" 43 | hide_seconds = true 44 | integer_battery_capacity = true 45 | last_full_capacity = true 46 | format = "%status %percentage %remaining" 47 | } 48 | 49 | tztime local { 50 | format = "%Y-%m-%d %H:%M " 51 | } 52 | 53 | load { 54 | format = "%1min %5min %15min" 55 | } 56 | 57 | volume master { 58 | format = "♪ %volume" 59 | format_muted = "♪ muted (%volume)" 60 | } 61 | -------------------------------------------------------------------------------- /sway/status.toml: -------------------------------------------------------------------------------- 1 | theme = "solarized-dark" 2 | icons = "awesome" 3 | 4 | [[block]] 5 | block = "cpu" 6 | interval = 10 7 | 8 | [[block]] 9 | block = "load" 10 | interval = 10 11 | format = "{1m}" 12 | 13 | [[block]] 14 | block = "sound" 15 | 16 | [[block]] 17 | block = "battery" 18 | interval = 60 19 | 20 | [[block]] 21 | block = "time" 22 | interval = 60 23 | format = "%Y-%m-%d %H:%M" 24 | -------------------------------------------------------------------------------- /sway/templates/shortcuts: -------------------------------------------------------------------------------- 1 | {{ bind('r', 'mode resize', exit_cmd="") }} 2 | 3 | # close window 4 | {{ bind('F4', 'kill') }} 5 | {{ bind('delete', 'kill') }} 6 | 7 | # change focus 8 | {{ bind('$left', 'focus left') }} 9 | {{ bind('$down', 'focus down') }} 10 | {{ bind('$up', 'focus up') }} 11 | {{ bind('$right', 'focus right') }} 12 | 13 | # move focused window 14 | {{ bind('$ctrl+$left', 'move left') }} 15 | {{ bind('$ctrl+$down', 'move down') }} 16 | {{ bind('$ctrl+$up', 'move up') }} 17 | {{ bind('$ctrl+$right', 'move right') }} 18 | 19 | # split in vertical orientation 20 | {{ bind('v', 'split v') }} 21 | 22 | # enter fullscreen mode for the focused container 23 | {{ bind('Shift+f', 'fullscreen toggle') }} 24 | 25 | # change container layout (stacked, tabbed, toggle split) 26 | {{ bind('Shift+t', 'layout tabbed') }} 27 | {{ bind('Shift+s', 'layout toggle split') }} 28 | 29 | # toggle tiling / floating 30 | {{ bind('Shift+Return', 'floating toggle') }} 31 | 32 | # change focus between tiling / floating windows 33 | {{ bind('Return', 'focus mode_toggle') }} 34 | 35 | # switch to workspace 36 | {{ bind('grave', 'workspace 0') }} 37 | {{ bind('equal', 'workspace 0') }} 38 | {% for n in range(0, 10) %} 39 | {{ bind((n|string), 'workspace ' + (10 if n == 0 else n)|string) }} 40 | {% endfor %} 41 | 42 | {% for key in 'asdfg' %} 43 | {{ bind(key, 'workspace ' + loop.index|string) }} 44 | {% endfor %} 45 | 46 | {{ bind('n', 'workspace next') }} 47 | {{ bind('p', 'workspace prev') }} 48 | 49 | # move focused container to workspace 50 | {{ bind('Shift+grave', 'move container to workspace 0') }} 51 | {% for n in "1234567890" %} 52 | {{ bind('Shift+' + n, 'move container to workspace ' + loop.index|string) }} 53 | {% endfor %} 54 | 55 | {{ bind('m', 'move workspace to output right') }} 56 | 57 | {{ bindexec('Shift+q', '~/bin/console.sh') }} 58 | {{ bindexec('Shift+w', '~/bin/browser.sh') }} 59 | {{ bindexec('Shift+e', 'dolphin') }} 60 | 61 | {{ bindexec('q', '~/bin/clipboard.sh') }} 62 | {{ bindexec('z', '~/dev/build/copyq/Desktop-Debug/copyq -s test2 toggle') }} 63 | {{ bindexec('x', '~/dev/config/bin/sway_run.sh') }} 64 | {{ bindexec('$ctrl+t', '~/bin/clipboard.sh triggerGlobalShortcut "Copy Text in Image"') }} 65 | {{ bindexec('$ctrl+s', '~/bin/screenshot.sh') }} 66 | {{ bindexec('Shift+p', 'pavucontrol') }} 67 | {{ bindexec('space', '~/bin/toggleplay.sh') }} 68 | 69 | # Toggle notification center 70 | {{ bindexec('Shift+n', 'swaync-client --toggle-panel --skip-wait') }} 71 | 72 | {{ bindexec('c', 'cd ~/.config/sway && ~/bin/j2 < config.j2 > config && swaymsg reload') }} 73 | -------------------------------------------------------------------------------- /swaync/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "/etc/xdg/swaync/configSchema.json", 3 | "positionX": "right", 4 | "positionY": "bottom", 5 | "layer": "top", 6 | "cssPriority": "application", 7 | "control-center-margin-top": 0, 8 | "control-center-margin-bottom": 0, 9 | "control-center-margin-right": 0, 10 | "control-center-margin-left": 0, 11 | "notification-icon-size": 64, 12 | "notification-body-image-height": 100, 13 | "notification-body-image-width": 200, 14 | "timeout": 10, 15 | "timeout-low": 5, 16 | "timeout-critical": 0, 17 | "fit-to-screen": true, 18 | "control-center-width": 500, 19 | "control-center-height": 600, 20 | "notification-window-width": 500, 21 | "keyboard-shortcuts": true, 22 | "image-visibility": "when-available", 23 | "transition-time": 200, 24 | "hide-on-clear": false, 25 | "hide-on-action": true, 26 | "script-fail-notify": true, 27 | "widgets": [ 28 | "title", 29 | "dnd", 30 | "notifications" 31 | ], 32 | "widget-config": { 33 | "title": { 34 | "text": "Notifications", 35 | "clear-all-button": true, 36 | "button-text": "Clear All" 37 | }, 38 | "dnd": { 39 | "text": "Do Not Disturb" 40 | }, 41 | "label": { 42 | "max-lines": 5, 43 | "text": "Label Text" 44 | }, 45 | "mpris": { 46 | "image-size": 96, 47 | "image-radius": 12 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /tig/config: -------------------------------------------------------------------------------- 1 | set ignore-case = yes 2 | set show-untracked = no 3 | set main-view-author-width = 16 4 | set main-view-id = yes 5 | -------------------------------------------------------------------------------- /tmux.conf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/tmux source 2 | # https://wiki.archlinux.org/index.php/Tmux 3 | set-option -g default-shell /usr/bin/fish 4 | 5 | # 24-bit color support 6 | #set -g default-terminal 'xterm-256color' 7 | #set -ga terminal-overrides ',xterm-256color:Tc' 8 | #set -ga terminal-overrides ',*:Tc' 9 | #set -g default-terminal 'tmux' 10 | set -g default-terminal 'tmux-256color' 11 | #set -ga terminal-overrides ",*256col*:Tc" 12 | 13 | # avoid mouse wheel to accidentally scroll through history 14 | set -ga terminal-overrides 'xterm*:smcup@:rmcup@' 15 | 16 | #set-option -g prefix C-a 17 | set-option -g prefix ` 18 | 19 | set-option -g focus-events on 20 | 21 | unbind-key C-b 22 | unbind-key C-a 23 | bind-key ` last-window 24 | bind-key a send-prefix 25 | 26 | # bind-key -n Home send Escape "OH" 27 | # bind-key -n End send Escape "OF" 28 | 29 | unbind-key h 30 | unbind-key l 31 | bind-key h select-pane -L 32 | bind-key l select-pane -R 33 | 34 | # window switching (-n: no prior escape seq) 35 | bind c new-window -c "#{pane_current_path}" 36 | bind -n S-down new-window -c "#{pane_current_path}" 37 | bind -n C-left prev 38 | bind -n C-right next 39 | #bind left swap-window -t -1 40 | #bind right swap-window -t +3 41 | 42 | set-option -g status-style "fg=white bg=black" 43 | 44 | set-option -g pane-active-border-style "fg=green bg=black" 45 | set-option -g pane-border-style "fg=white bg=black" 46 | 47 | set-option -g message-style "fg=black bg=green" 48 | 49 | setw -g window-status-style "bg=#000000" 50 | setw -g window-status-current-style "fg=brightyellow bg=#332200" 51 | setw -g window-status-last-style "fg=brightblue" 52 | setw -g window-status-bell-style "fg=yellow default" 53 | 54 | # setw -g window-status-current-format "[#I|#{b:pane_current_path}:#W]" 55 | # setw -g window-status-current-format "[#I|#(sed 's|zsh||' <<< '#W')|#{b:pane_current_path}]" 56 | setw -g window-status-current-format "#(sed -E 's|\\[(.*):zsh\\]| \\1 |' <<< '[#I #{b:pane_current_path}:#W]')" 57 | setw -g window-status-format "#(sed -E 's|\\[(.*):zsh\\]| \\1 |' <<< '[#I #{b:pane_current_path}:#W]')" 58 | 59 | set -g status-left " " 60 | set -g status-right "" 61 | set -g status-interval 0 62 | 63 | set -g history-limit 10000 64 | 65 | unbind-key r 66 | bind-key r source-file ~/.config/tmux/tmux.conf 67 | 68 | unbind-key e 69 | bind-key e new-window "nvim ~/.config/tmux/tmux.conf" 70 | 71 | unbind-key q 72 | bind-key q new-window -c "#{pane_current_path}" "nvim $(copyq clipboard)" 73 | 74 | # view current scroll-back buffer 75 | unbind-key z 76 | bind-key z capture-pane -S -10000 \; new-window -n BUFFER "tmux save-buffer - | nvim -c ':set nonumber' -R +\$ -" 77 | 78 | set-window-option -g mode-keys vi 79 | 80 | # remove escape key delay in neovim 81 | set -sg escape-time 0 82 | 83 | # avoid accidentally pasting and executing multiple lines to shell 84 | unbind-key ] 85 | 86 | # Start windows and panes at 1, not 0 87 | set -g base-index 1 88 | set -g pane-base-index 1 89 | set-window-option -g pane-base-index 1 90 | set-option -g renumber-windows on 91 | 92 | # git clone https://github.com/tmux-plugins/tpm ~/.config/tmux/plugins/tpm 93 | set -g @plugin 'tmux-plugins/tpm' 94 | set -g @plugin 'tmux-plugins/tmux-sensible' 95 | # set -g @plugin 'catppuccin/tmux' 96 | # set -g @catppuccin_flavour 'macchiato' 97 | # set -g @catppuccin_window_default_text "#{b:pane_current_path}:#W" 98 | # set -g @catppuccin_window_current_text "#{b:pane_current_path}:#W" 99 | # set -g @catppuccin_status_modules " " 100 | # set -g @catppuccin_window_default_fill "all" 101 | # set -g @catppuccin_window_current_fill "all" 102 | # set -g @catppuccin_window_left_separator "" 103 | # set -g @catppuccin_window_right_separator "" 104 | # set -g @catppuccin_window_middle_separator " " 105 | # set -g @catppuccin_window_number_position "left" 106 | run '~/.config/tmux/plugins/tpm/tpm' 107 | -------------------------------------------------------------------------------- /udev/keymaps/microsoft-ergonomic-keyboard/microsoft-ergonomic-keyboard: -------------------------------------------------------------------------------- 1 | 0xC022D 0xC1 # Zoom In 2 | 0xC022E 0xC2 # Zoom Out 3 | -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -ex 3 | 4 | ./_update.awk LIST 5 | 6 | args=( 7 | --exclude=hotspot.sh 8 | --exclude=update.sh 9 | --exclude=pwned.sh 10 | --exclude=lyrics.py 11 | --exclude-path=git/config 12 | --exclude-dir=.git 13 | -iRE 14 | -e '^P=' 15 | -e '^\s*pass.' 16 | -e 'passw(ord|d).*[:=>]' 17 | -e 'secret' 18 | . 19 | ) 20 | if grep "${args[@]}"; then 21 | echo 'Passwords detected' 22 | exit 1 23 | fi 24 | 25 | git diff 26 | -------------------------------------------------------------------------------- /update_configs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | 4 | shopt -s failglob 5 | 6 | diff=${DIFF:-nvim -d} 7 | 8 | configs=( 9 | openbox/* 10 | ) 11 | 12 | # USAGE: create_or_diff 13 | # Creates config file in destination if it doesn't exist or shows diff. 14 | create_or_diff() { 15 | src=$1 16 | dest=$2 17 | 18 | if [[ -f "$dest" ]]; then 19 | if ! diff --brief -- "$src" "$dest"; then 20 | $diff -- "$src" "$dest" 21 | else 22 | echo "Config '$src' ('$dest') is up to date." 23 | fi 24 | else 25 | dir=$(dirname -- "$dest") 26 | mkdir -vp -- "$dir" 27 | cp -v -- "$src" "$dest" 28 | fi 29 | } 30 | 31 | update_firefox() { 32 | for profile in ~/.mozilla/firefox/*.*/; do 33 | if [[ -d "$profile" ]]; then 34 | create_or_diff "firefox/userChrome.css" "$profile/chrome/userChrome.css" 35 | fi 36 | done 37 | } 38 | 39 | for config in "${configs[@]}"; do 40 | create_or_diff "$config" ~/.config/"$config" 41 | done 42 | 43 | update_firefox 44 | -------------------------------------------------------------------------------- /waybar/config: -------------------------------------------------------------------------------- 1 | { 2 | "layer": "top", 3 | 4 | "position": "top", 5 | 6 | "height": 22, 7 | 8 | "modules-left": [ 9 | "hyprland/workspaces", 10 | "tray", 11 | "hyprland/window", 12 | ], 13 | "modules-center": [ 14 | "hyprland/mode", 15 | ], 16 | "modules-right": [ 17 | //"network", 18 | "custom/notification-swaync", 19 | "custom/redshift", 20 | "pulseaudio", 21 | "cpu", 22 | "battery", 23 | "idle_inhibitor", 24 | "clock#date", 25 | "clock#time" 26 | ], 27 | 28 | "custom/notification-swaync": { 29 | "tooltip": false, 30 | "format": "{icon}", 31 | "format-icons": { 32 | "notification": "", 33 | "none": "", 34 | "dnd-notification": "", 35 | "dnd-none": "" 36 | }, 37 | "return-type": "json", 38 | "exec-if": "which swaync-client", 39 | "exec": "swaync-client --subscribe-waybar", 40 | "restart-interval": 300, 41 | "on-click": "swaync-client --toggle-panel --skip-wait", 42 | "on-click-right": "swaync-client --toggle-dnd --skip-wait", 43 | "on-click-middle": "swaync-client --close-all --skip-wait", 44 | "escape": true 45 | }, 46 | 47 | "custom/redshift": { 48 | "format": "{}°", 49 | "on-click": "~/dev/bin/sunset.sh", 50 | "on-scroll-up": "~/dev/bin/red_up.sh", 51 | "on-scroll-down": "~/dev/bin/red_down.sh", 52 | "exec": "~/dev/bin/red_watch.sh" 53 | }, 54 | 55 | "battery": { 56 | "interval": 60, 57 | "states": { 58 | "warning": 30, 59 | "critical": 15 60 | }, 61 | // Connected to AC 62 | "format": " {icon} {capacity}%", 63 | // Not connected to AC 64 | "format-discharging": "{icon} {capacity}%", 65 | "format-icons": [ 66 | "", 67 | "", 68 | "", 69 | "", 70 | "" 71 | ], 72 | "tooltip": true 73 | }, 74 | 75 | "idle_inhibitor": { 76 | "start-activated": true, 77 | "format": "{icon}", 78 | "format-icons": { 79 | "activated": "󰒳", 80 | "deactivated": "󰒲" 81 | } 82 | }, 83 | 84 | "clock#time": { 85 | "interval": 60, 86 | "format": "{:%H:%M}", 87 | "tooltip": false 88 | }, 89 | 90 | "clock#date": { 91 | "interval": 60, 92 | "format": "{:%e %b %Y %a}", 93 | "tooltip-format": "{:%e %B %Y %A}" 94 | }, 95 | 96 | "cpu": { 97 | "interval": 10, 98 | "format": " {usage}%({load})", 99 | "states": { 100 | "warning": 10, 101 | "critical": 25 102 | } 103 | }, 104 | 105 | "network": { 106 | "interval": 10, 107 | "format-wifi": " {essid} ({signalStrength}%)", 108 | "format-ethernet": "{ifname}", 109 | "format-disconnected": "⚠ Disconnected", 110 | "tooltip-format": "{ifname}: {ipaddr}" 111 | }, 112 | 113 | "pulseaudio": { 114 | "scroll-step": 5, 115 | "format": "{icon} {volume}%", 116 | "format-muted": "🔇 Muted", 117 | "format-icons": { 118 | "headphones": "", 119 | "handsfree": "", 120 | "headset": "", 121 | "phone": "", 122 | "portable": "", 123 | "car": "", 124 | "default": ["", ""] 125 | }, 126 | "on-click": "pavucontrol", 127 | "tooltip": true 128 | }, 129 | 130 | "hyprland/mode": { 131 | "format": " {}", 132 | "tooltip": false 133 | }, 134 | 135 | "hyprland/window": { 136 | "format": "{}", 137 | "max-length": 120 138 | }, 139 | 140 | "hyprland/workspaces": { 141 | "all-outputs": false, 142 | "disable-scroll": true, 143 | "format": "{icon}{name}", 144 | "format-icons": { 145 | "urgent": "", 146 | "focused": "", 147 | "default": "" 148 | } 149 | }, 150 | 151 | "tray": { 152 | "icon-size": 16, 153 | "spacing": 10 154 | } 155 | 156 | } 157 | -------------------------------------------------------------------------------- /waybar/style.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-family: Noto Sans Medium; 3 | font-size: 12px; 4 | } 5 | 6 | window#waybar { 7 | background-color: #282828; 8 | color: #aaa; 9 | transition-property: background-color; 10 | transition-duration: .5s; 11 | } 12 | 13 | window#waybar.hidden { 14 | opacity: 0.2; 15 | } 16 | 17 | /* 18 | window#waybar.empty { 19 | background-color: transparent; 20 | } 21 | window#waybar.solo { 22 | background-color: #FFFFFF; 23 | } 24 | */ 25 | 26 | button { 27 | /* Avoid rounded borders under each button name */ 28 | border: none; 29 | border-radius: 0; 30 | } 31 | 32 | #workspaces button { 33 | min-width: 16px; 34 | padding: 0 5px; 35 | color: #888888; 36 | font-weight: bold; 37 | } 38 | 39 | #workspaces button:hover { 40 | box-shadow: inherit; 41 | text-shadow: inherit; 42 | background: inherit; 43 | border: inherit; 44 | } 45 | 46 | #workspaces button.focused, 47 | #workspaces button.active { 48 | border-color: #4c7899; 49 | color: #aaddff; 50 | background-color: #285577; 51 | } 52 | 53 | #workspaces button.urgent { 54 | border-color: #c9545d; 55 | color: #c9545d; 56 | } 57 | 58 | #mode { 59 | background-color: #c9545d; 60 | color: white; 61 | border-bottom: 3px solid #ffffff; 62 | } 63 | 64 | #custom-notification, 65 | #custom-redshift, 66 | #battery, 67 | #clock, 68 | #cpu, 69 | #mode, 70 | #network, 71 | #pulseaudio, 72 | #tray { 73 | padding: 0 10px; 74 | } 75 | 76 | #window, 77 | #workspaces { 78 | margin: 0 4px; 79 | } 80 | 81 | /* If workspaces is the leftmost module, omit left margin */ 82 | .modules-left > widget:first-child > #workspaces { 83 | margin-left: 0; 84 | } 85 | 86 | /* If workspaces is the rightmost module, omit right margin */ 87 | .modules-right > widget:last-child > #workspaces { 88 | margin-right: 0; 89 | } 90 | 91 | #battery.warning { 92 | color: orange; 93 | } 94 | 95 | #battery.critical { 96 | color: red; 97 | } 98 | 99 | #clock { 100 | } 101 | 102 | #cpu { 103 | } 104 | 105 | #cpu.warning { 106 | color: orange; 107 | } 108 | 109 | #cpu.critical { 110 | color: red; 111 | } 112 | 113 | @keyframes blink { 114 | to { 115 | background-color: #ffffff; 116 | color: #000000; 117 | } 118 | } 119 | 120 | #battery.critical:not(.charging) { 121 | background-color: #f53c3c; 122 | color: #ffffff; 123 | animation-name: blink; 124 | animation-duration: 0.5s; 125 | animation-timing-function: linear; 126 | animation-iteration-count: infinite; 127 | animation-direction: alternate; 128 | } 129 | 130 | label:focus { 131 | background-color: #000000; 132 | } 133 | 134 | #cpu { 135 | } 136 | 137 | #network { 138 | background-color: #2980b9; 139 | } 140 | 141 | #network.disconnected { 142 | background-color: #f53c3c; 143 | } 144 | 145 | #pulseaudio { 146 | } 147 | 148 | #pulseaudio.muted { 149 | } 150 | 151 | #wireplumber { 152 | background-color: #fff0f5; 153 | color: #000000; 154 | } 155 | 156 | #wireplumber.muted { 157 | background-color: #f53c3c; 158 | } 159 | 160 | #custom-media { 161 | background-color: #66cc99; 162 | color: #2a5c45; 163 | min-width: 100px; 164 | } 165 | 166 | #custom-media.custom-spotify { 167 | background-color: #66cc99; 168 | } 169 | 170 | #custom-media.custom-vlc { 171 | background-color: #ffa000; 172 | } 173 | 174 | #temperature { 175 | background-color: #f0932b; 176 | } 177 | 178 | #temperature.critical { 179 | background-color: #eb4d4b; 180 | } 181 | 182 | #tray { 183 | } 184 | 185 | #tray > .passive { 186 | -gtk-icon-effect: dim; 187 | } 188 | 189 | #tray > .needs-attention { 190 | -gtk-icon-effect: highlight; 191 | background-color: #eb4d4b; 192 | } 193 | 194 | #idle_inhibitor { 195 | font-size: 20px; 196 | } 197 | 198 | #idle_inhibitor.activated { 199 | color: #aaddff; 200 | } 201 | 202 | #language { 203 | background: #00b093; 204 | color: #740864; 205 | padding: 0 5px; 206 | margin: 0 5px; 207 | min-width: 16px; 208 | } 209 | 210 | #keyboard-state { 211 | background: #97e1ad; 212 | color: #000000; 213 | padding: 0 0px; 214 | margin: 0 5px; 215 | min-width: 16px; 216 | } 217 | 218 | #keyboard-state > label { 219 | padding: 0 5px; 220 | } 221 | 222 | #keyboard-state > label.locked { 223 | background: rgba(0, 0, 0, 0.2); 224 | } 225 | 226 | #scratchpad { 227 | background: rgba(0, 0, 0, 0.2); 228 | } 229 | 230 | #scratchpad.empty { 231 | background-color: transparent; 232 | } 233 | -------------------------------------------------------------------------------- /xitomatl.ini: -------------------------------------------------------------------------------- 1 | autostart = true 2 | icon_size = 64 3 | 4 | [stopped] 5 | name = stopped 6 | color = transparent 7 | line_color = #dd00e0 8 | line_width = 8 9 | text_color = transparent 10 | animated = true 11 | 12 | [tasks] 13 | 1\name = focus 14 | 1\minutes = 25 15 | 1\animated = true 16 | # Font family name and optional style after semicolon 17 | 1\font = "Noto Sans Mono; SemiBold" 18 | # Options prefixed with "timeout_" change appearance of task that timed out 19 | # (specified number of minutes passed after starting the task). 20 | 1\timeout_font = "Noto Sans Mono; Bold" 21 | # Values are relative percentage of icon size (X * 100 / ICON_SIZE) 22 | 1\text_size = 50 23 | 1\timeout_text_size = 50 24 | 1\color = transparent 25 | 1\line_color = white 26 | 1\line_width = 8 27 | 1\text_color = white 28 | 1\timeout_color = transparent 29 | 1\timeout_line_width = 8 30 | 1\timeout_line_color = #ff0040 31 | 1\timeout_text_color = white 32 | # Icon corner radius 0..100 33 | 1\icon_radius = 30 34 | 1\text_stroke_width = 10 35 | 1\text_stroke_color = black 36 | 1\timeout_color = #ff0040 37 | 1\timeout_text_stroke_width = 10 38 | 1\timeout_text_stroke_color = black 39 | # File path to an image to use instead of rendering simple rounded box. 40 | 1\image = "" 41 | # Commands to execute at when the task is started, stopped/ended (by user) or 42 | # finished (specified number of minutes elapsed). 43 | # Multiple commands can be specified one per line and will be executed in 44 | # parallel. 45 | 1\command_start = "" 46 | 1\command_stop = "" 47 | 1\command_finish = "" 48 | 49 | 2\name = break 50 | 2\minutes = 5 51 | 2\in_menu = true 52 | 2\text_size = 50 53 | 2\color = transparent 54 | 2\line_color = #de3163 55 | 2\line_width = 10 56 | 2\text_color = white 57 | 2\timeout_color = transparent 58 | 2\timeout_line_width = 8 59 | 2\timeout_line_color = #ffbf00 60 | 2\timeout_text_color = #ffbf00 61 | # Icon corner radius 0..100 62 | 2\icon_radius = 100 63 | 2\text_stroke_width = 10 64 | 2\text_stroke_color = black 65 | 2\timeout_text_stroke_width = 10 66 | 2\timeout_text_stroke_color = black 67 | 68 | 3\name = focus 69 | 70 | 4\name = break 71 | 72 | 5\name = focus 73 | 74 | 6\name = break 75 | 76 | 7\name = focus 77 | 78 | 8\name = break 79 | 8\minutes = 30 80 | 8\in_menu = true 81 | -------------------------------------------------------------------------------- /xkb/symbols/custom: -------------------------------------------------------------------------------- 1 | xkb_symbols { 2 | include "pc+us(altgr-intl)+inet(evdev)" 3 | 4 | #modifier_map Mod4 { }; 5 | #key { 6 | # type = "ONE_LEVEL", 7 | # symbols[group1] = [ Super_L ], 8 | # actions[group1] = [ 9 | # LatchMods(modifiers=Mod4) 10 | # ] 11 | #}; 12 | 13 | #key { [ Control_L ] }; 14 | #modifier_map Control { }; 15 | }; 16 | -------------------------------------------------------------------------------- /yamllint/config: -------------------------------------------------------------------------------- 1 | --- 2 | extends: default 3 | rules: 4 | line-length: 5 | level: warning 6 | max: 120 7 | --------------------------------------------------------------------------------