make analysedoes not exit with non-zero code even if some analyses fail.- Analyse target on GitHub does not work correctly.
- Make the interfaces of
std::*(mostly) compliant with those of C++, even if it duplicates current interfaces. - Make
std::*easier to use in shells with aliases similar toensure. - Support printing all vectors, unordered maps, etc. with only program hash
given. In other words,
[SYNTAX]should be[SYNTAX]?, and aforementioned action should occur if no syntax is given. - Support globbing and regex in
exif-filter. - Support mounting/unmounting Android devices in
mountsel/umountsel. exif-filter: support custom filter functions in place of the default[ -n "$val" ] && [ "$flval" != "$val" ].termctl: include commands, subcommands, etc. in help dialog (or add a (command & subcommand)/flag for it)- Support stdin in
gcc-otg. - Add support for arbitrary precision computation in
numsh.- First create
linalg_mp.hpp, then use it.
- First create
tabutils:- Replace last tab if it is
about:blankwhen pasting to the end. - Replace current tab if it is
about:blankwhen pasting inline.
- Replace last tab if it is
- Add alternate workflow targets for macOS on GitHub.
- https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
- https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md
- https://github.com/actions/runner-images/blob/main/images/macos/macos-13-arm64-Readme.md
- Support
std::vector,std::unordered_mapand other futurestd::s innumsh.
- Write a C program that takes in argv through argv and parsing configuration
through stdin and outputs shell
evalable code, then replace all applicable existing argument parsing in shell scripts with this program. - Merge
*mapsinto a single C/C++ program. - Write an audio waveform visualisation extension (in Lua) for
mpv. - Write a script similar to
getpath, but interactive.fzfcould probably work well here.- Should support early-out, similar to most LaTeX compilers.
- If the only key starting with
abcisabcd,abcshould be enough to selectabcd.
- If the only key starting with
- Should support filter & select without confirmation, similar to
lf's mapping system.
- Other
stdutilities:std::unordered_setstd::mapstd::set
- Create two logging libraries that support colors (with automatic
isattydetection) for C and C++ separately, using C and C++ streams respectively. - Create a shell header, that, if included, makes the current script reload if
the script file is touched.
- Similar to
polybar,picom, etc. - Use this header in daemons like
headsetcontrol2mpris.
- Similar to
- Write a script that is key based like
tglappthat caches the output of a command with the given key and re-uses the output.- Support output invalidation after a set (per key or global default) amount of time.
- Maybe add implicit support for caching in
tglappor with pads (weather, etc.)?
- Rewrite
ffmw.- Make it saner.
- Share default options between subcommands.
- Perhaps use C/C++/Python?
- Use
std::vectorif using sh. - Use
-nostdinandfile:forffmpeg. - Make
ffmpegless verbose. - Use segments (
-f segment,-segment_time TIME, -segment_listFILENAME.csv). - Use
parallelwith verbose progress & running commands.
- Optimise
breadth-findto not search the same initial depths multiple times. - Rewrite the pathfinding suite with
std::unordered_map, or with the to-be-implemented C/C++stdbase library. - Create a base C (or C++, depending on what features are required or heavily
used (though C is preferred for future-compatibility)) library for creating
other
stdutilities such asstd::vectorandstd::unordered_map, then refactorstd::vectorandstd::unordered_mapusing that library. - Rewrite
tglappin C++, Go or Rust.- Much easier to support the other to-dos regarding
tglappin one of these languages rather than in shell.
- Much easier to support the other to-dos regarding
- Export
align()fromstd::stringtostrutil.hand use it from the header. prefix.sh: don't query paths at runtime, make.makeinsert them in viam4during installation instead.- Consider porting all execline scripts to shell for less dependencies.
- Add support for installing single programs, plugins, etc.
- Add documentation:
- Online documentation via
github.io&codeberg.page. - Offline documentation via man pages.
-hand/or--helpflags.- For interpreted stuff and config files, brief explanation as comment at the beginning of the file.
- Install man pages as compressed with
gzip.
- Online documentation via
- At this point perhaps rename the repository from
scriptstoutils? - Consider changing the extension of shell headers from
.shto.shh,.hshor something similar. - Consider integrating
cpplint.
ffmw decatdoes not work as expected. When the time is in formatHH:MM:SS, it seems to work. Maybe it requires this format? If so, add it in the help menu.- In
tglapp,--list=compactprints stdout and stderr. .make:.installedgrows indefinitely unlessuninstallis issued, fix.std::stringsegfaults if given alignment is not contained in the input.
- In
contexec, show the execution count in the header. - In
steammgr, keep a database of application IDs scraped from steamdb and present the user with relevant options. This could be done in two ways: either show the relevant options by being command-aware, or first show a meta prompt for all, installed and in-library games, and then show the IDs (or show the meta options in the installed prompt, and show another prompt with the selected if all or in-library is selected). - Integrate
fzfpofstpvintofand_fd. - In C
get*, add diagnostic error messages. - In
fmaps, implement options similar to that ofafgrep's-aexbi.- Maybe make these options specific to each given mapping? If so, also have the ability to globally define these options.
- In
stdutil.h, min/max/minmax clamped versions addastrto*functions. - In
sandwichline, add-s, --same-doughoption to make the top and bottom of the sandwich the same when randomised. - Alternative to
make statsthat lists individual file statistics.
- Rewrite
elnusingmapexec. This will allow the name to be arbitrary (except containing a newline). - Rewrite
kaselusingpgrepandkill --timeout. - Use
inotifywaitinwaitfl. - Merge
repeat{line,null,str}intorepeatstr.
- Rename
ffmwsubcommands to more sensible ones. For instance, the current name of the crop subcommand is very counter-intuitive. - In scripts that acquire locks, release them with a trap in case the script is interrupted, killed, etc.
- Use
basenameanddirnameinstead of parameter expansions as they correctly deal with edge cases. If these edge cases are known not to be present, do use parameter expansions. - Replace applicable
printfinvocations withprintf --. - In all scripts that parse arguments, ensure that help printing and other actions are done after validating the arguments. If the arguments could not be validated, exit with a non-zero code (after printing help if it is given). This way, the scripts can be integrated more easily with or within other scripts by allowing the arguments to be immediately validated without executing the script (like kdialog, which wraps the real kdialog, validating the arguments without doing the action).
- Scripts that do not require parameters from the invoking user should not use
sudoand should require the script to be run as root (by asserting it actively if necessary). - Scripts that use
sudoshould usesudo/sudo -Aif it has a CLI/GUI. - Register a tray icon using
yadin applicable scripts.- Daemons could benefit well from this.
tglappcould benefit from this. A single tray icon when right clicked should show alltglappapplications. For this, a subscription and a server (likelf's) system should be implemented.
- The following
stestusages yield different results. They should not. The second one yields the correct results. There might be some cache corruption or clean-up issue related to thelibmagicorfile(viafork/execlp) usages.find . -print0 | sort -z | xargs -r0 stest -z -m video -- | sort -zfind . -print0 | sort -z | xargs -r0 -n 1 stest -z -m video -- | sort -z
- Update: They now yield the same result. Maybe there is some sort of race condition in the first case?
- Implement for/while-else construct of Python in C++. This could be used as a starting point.
- Integrate synctex in
latexd. See this and this.
- In all C files (except, perhaps, those under
*/include/*), move variable declarations as close as possible to the first usage, i.e. reduce their scope as much as possible. Still use C89 style declarations. - Optimise
database.hto do less allocations.- Reuse built paths.
- Automate PulseAudio/PipeWire-Pulse network
streaming
with optional pair configuration over
ssh.
- Do not
evalthe output ofheadsetcontrolinpolybar-headsetcontrolin case the interface changes.- Maybe send a PR for an
-e(for eval) flag toheadsetcontrol?
- Maybe send a PR for an
evalinggetpath,xdotooland other programs can lead to security problems if the scripts are run with elevated permissions. Warn the user and, for programs local to this repository, always install theevaled programs as root to prevent tinkering.
acpihandlerdoes not handle already-off keyboard/touchpad correctly on PROG1 event.latexddoes not work with files containing', fix.
- In
bspwmpad, if a slot is requested and the requested slot is occupied, check if the occupier is alive. If a slot is not requested and all slots are occupied, check all of the slots for whether each occupier is alive. - In
bspwmpad, add an option to start in some desktop. - In
bspwmpad, support non-automated non-incrementing keycodes in addition to numbers. - Support anonymous (non-numbered) pads in
bspwmpad.- In
latexd, if$TABBED_XIDis set and non-empty, use request an anonymous pad.
- In
- In
bspwmpad, allow setting the font size (not the whole font). This would be useful in scripts/programs likeweather,neomutt, etc. - Add options in
latexdto not open the source/output files. - Add an option in
bspwmpadthat would skip the acquisition of a lock if all locks are occupied. This could have two behaviours: open up a normal st session or execute the command without st. This could be made into two more options that would determine the behaviour. - In
bspwmpad, add an option to usetglapp. - In
tglapp, add an option to usebspwmpad. If this option is given, when toggling the application, toggle the hidden status of the pad if it is on. - In
latexd, allow passing arguments tobspwmpad. - In
bspwmpad, support killing the command running in the given pad number. - In
bspwmpad, support killing the command running in the given pad number and replacing it. This function should require a valid and non-zero-nto be passed. - In
bright*, fade the brightness. - Make the
kdialogwrapper cross-compatible with other dialogue applications such as Zenity. Create wrappers for these newly supported applications thatexecthekdialogwrapper.- Or, create a generic base file dialogue application that uses
lfand create wrappers for other file dialogue applications thatexecthis generic base application.
- Or, create a generic base file dialogue application that uses
- Support
fzfinselfl.- By default, automatically determine whether to use
fzfor$MENUdepending on[ -t 0 ].
- By default, automatically determine whether to use
- Add adequate padding in
genrc. (GNU?)printfhas a padding parameter. - In
pathfinding/v, if the file is not found, try finding the file in a few depths. - Show errors with
rofi -e "$message"in applicable headless scripts.- Maybe create a helper script for this?
- In
contexec, show the output in a$PADand open the editor in the initialised terminal. - In
tglapp, support terminating the X window instead of the run process. - Currently, if
filllineis included in an on-terminal-initialisation pipeline, the line might not be filled fully. This is not per se a bug on thefilllineend, but it would be nice to mitigate it. Add an option to wait a tiny bit to allow for the terminal window to initialise and settle to its permanent/semi-permanent row/column configuration. Add another option to wait for the terminal row/column values to change. Add another option to limit the waiting time of the previous action, so it does not end up waiting indefinitely. - Add an option to override or append to the default clean-up process on
toggling off in
tglapp.- This would be useful for double-forking programs and or those that have weird process trees like Steam.
- Add the ability to have default arguments via environment variables in
tglapp. - Support custom lock directory prefix in
dbutil.h. - Support custom lock directory prefix in
lck. tglapp: run applications in atmuxsession.- Still capture stdout/stderr to temporary files.
- Or, don't capture them, but query them from
tmuxif it is supported.
- Or, don't capture them, but query them from
- Still capture stdout/stderr to temporary files.
- In
tglapp, add support for different commands depending on whether the application is open or not. This would be useful in many scenarios, including toggling an application wrapped withscreen. - In
tglapp, add support for force restarting applications via only a keycode. To do this, read the command to start from*/cmd. - In
tglapp, addby-cmd,by-kc(by-keycode),by-hashandby-pidsub-directories like/dev/*/by-*. - In
tglappadd an option to auto-restart the application when it exits. Make this behaviour togglable between only non-zero codes and all codes. - In
bspwm-show, show thumbnails. To do this, userofiinstead ofexecmenu. - Do not assume a font size in
rofifit. The new calculation should still be generous such that it would not make the same mistake asrofitrimming very short. - In
tglapp, add an option that disables auto-unlocking, allowing the user to review the stdout/stderr of the command. - In
polybar-headsetcontrol, keep track of the last known battery percentage. If battery is charging, show that it is charging, but also estimate a battery percentage. - In
polybar-headsetcontrol, make the battery icon's fill follow the percentage. - Generalise
vector:- From
1D->1DtoND->MD.- Maybe even support variadic vectors like:
{{1, 2}, {3}, {4, 5, 6}}. Values can remain as strings.
- Maybe even support variadic vectors like:
- Support
key->valueandindex->valueat the same time. Key can just be strings.
- From
- Optimise
kmcycleandsetxkb. - Use
xselinstead ofxclip. - Consider
scrotincpscr.
- Migrate
dotfilesbak{,-sensitive}into this repository, and simply symlink them to the original locations.- Support multiple systems:
- Support non-shared and shared files.
- Support "static" files, where those files are owned by a system and may not be shared.
- If we do not support static files, or more than two systems with partial
sharing, these should be easily achievable with git branches. Otherwise,
possible implementations could be:
- A directory structure with a flags hashmap,
- A directory structure with the shared files being symlinked,
- Etc.
- Easiest solution that would support multiple systems, synchronous usage
across multiple systems and static & shared files is most likely either
multiple repositories or multiple copies of the same repository with
distinct branches checked-out.
- Have a root directory with necessary configuration files.
- This would also make it easy to support public/private dotfiles more easily.
- Have a root directory with necessary configuration files.
- Support multiple systems:
- Create a script for enabling/disabling/toggling/querying xinput devices. Use
this script in
acpihandler,maptouch,tpcycle, and other applicable scripts. - Write a script that converts CBR to PDF and uses a PDF viewer to open the temporary file.