\documentclass[runningheads]{llncs}
%
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage[hyphens]{url}
\usepackage[unicode=true,bookmarks=true,bookmarksnumbered=true,
            bookmarksopen=true,bookmarksopenlevel=1,breaklinks=false,
            pdfborder={0 0 0},backref=false,colorlinks=false]{hyperref}
\usepackage{orcidlink}
\usepackage{varioref}
\usepackage{cleveref}
\usepackage{xcolor}  % more colors
\usepackage[listings,breakable,skins]{tcolorbox}
\definecolor{darkgreen}{rgb}{0.0, 0.5, 0.0}
\definecolor{darkred}{rgb}{0.5, 0, 0.0}
% Colors of the Albert Ludwigs University as in
% https://cd.uni-freiburg.de/farben/
\definecolor{UniBlau}{RGB}{52, 74, 154}
\definecolor{UniGrün}{RGB}{0, 153, 125}
\definecolor{UniBraun}{RGB}{143, 107, 48}
\definecolor{UniGelb}{RGB}{255, 232, 99}
\definecolor{UniRosa}{RGB}{245, 194, 237}
\definecolor{UniRosaStrong}{RGB}{255, 151, 171}
\definecolor{UniSand}{RGB}{246, 241, 227}

\lstset{
    basicstyle=\footnotesize\ttfamily,
    commentstyle=\footnotesize\ttfamily,
    numbers=left,
    numberstyle=\ttfamily\color{gray}\footnotesize,
    stepnumber=1,
    numbersep=7pt,
    showspaces=false,
    showstringspaces=false,
    showtabs=false,
    tabsize=2,
    captionpos=b,
    breaklines=true,
    breakatwhitespace=false,
    keepspaces=true,
    showspaces=false,,
    showstringspaces=false,
    showtabs=false,
    title=\lstname,
}
\newtcblisting[auto counter, list inside=codes,crefname={lst.}{lst.s},Crefname={Listing}{Listings}]{tcbcode}[2][]{%
    skin=enhanced,
    title=Listing~\thetcbcounter:~#2,
    list entry=\thetcbcounter\qquad#2,
    listing only,
    size=small, left=6mm,
    code={\setstretch{1.125}},
    colback=UniSand!50!white,
    colbacktitle=UniBlau,
    colframe=UniBlau,
    breakable,
    lines before break=3,
    #1
}

\graphicspath{ {./img/} }
\newcommand{\smimage}[3][width=1\textwidth]{	%
    \begin{figure}[h]						%
        \centering							%
        \includegraphics[#1]{#2}			%
        \caption{#3}						%
        \label{fig:#2}						%
    \end{figure}							%
}


\begin{document}
%
\title{ddrescue-tui -- A Terminal UI for ddrescue}
%\titlerunning{ddrescue-tui}
\author{Simon Moser \orcidlink{0009-0003-4916-9317}}
\authorrunning{S. Moser}
\institute{University of Freiburg, Freiburg, Germany}
\maketitle

\begin{abstract}
This paper presents ddrescue-tui, a terminal user interface for the data recovery utility ddrescue.
The tool allows users to visualize the status of disk blocks during the rescue process,
as well as to start and control ddrescue from the terminal.
The tool parses the map files generated by ddrescue and plots them as heat maps using matplotlib.
It also uses the textual framework to create an interactive and user-friendly interface.
The paper describes the implementation details, the functionalities, and the project management aspects of the tool.
It concludes with some limitations and future directions for the tool.
\keywords{ddrescue  \and terminal \and parsing \and visualization}
\end{abstract}

\section{Introduction}\label{sec:introduction}
\input{sections/introduction}

\section{Parsing mapfiles}\label{sec:parsing-mapfiles}
\input{sections/parsing-mapfiles}

\section{Plotting parsed block information}\label{sec:plotting-parsed-block-information}
\input{sections/plotting}

\section{Terminal User Interface (TUI)}\label{sec:terminal-user-interface-(tui)}
\input{sections/terminal-ui}

\section{Project management with CI/CD}\label{sec:project-management-with-ci/cd}
\input{sections/project-management}

\section{Conclusion}\label{sec:conclusion}
\input{sections/conclusion}

\bibliographystyle{splncs04}
\bibliography{report}
\nocite{ddrescue}

\newpage
\appendix
    \begin{tabular}{l|p{10cm}}
    \textbf{Topics} & \textbf{Implementation} \\
    \hline
    Linux & The tool is developed for Linux, but apart from the peculiarities of different terminal emulators,
            there were no special problems that were dealt with \\
    Text editor & Text editors and IDEs were used to develop the tool, but not in any special way. \\
    Git & During development, the various possibilities of CI/CD with GitHub were explored, such as GitHub Actions. \\
    Docker & Apart from GitHub Actions, containerization was not used. \\
    Automation & The whole application is written in Python, especially the parsing of mapfiles
                 which is described in \vref{sec:parsing-mapfiles}.\\
    matplotlib & Utilized for the generation of diagrams showing the rescuing status of ddrescue,
                 as described in \vref{sec:plotting-parsed-block-information}.\\
    \latex & The report was composed in \latex, but there are no specific details to mention. \\
    LLM & LLMs were used for selected individual purposes in the preparation of the report,
          see \vref{subsec:writing-process} for details.\\
    \end{tabular}

\end{document}
